/*Detection du navigateur*/
var IE6 = false, IE7 = false,
FIREFOX2 = false, FIREFOX = false,
NETSCAPE7 = false, NETSCAPE = false,
OPERA9 = false, OPERA = false,
AUTRE = false;
var strChUserAgent = navigator.userAgent;
var intSplitStart = strChUserAgent.indexOf("(",0);
var intSplitEnd = strChUserAgent.indexOf(")",0);
var strChStart = strChUserAgent.substring(0,intSplitStart);
var strChMid = strChUserAgent.substring(intSplitStart, intSplitEnd);
var strChEnd = strChUserAgent.substring(strChEnd);

if(strChMid.indexOf("MSIE 7") != -1)
IE7 = true;
 else if(strChMid.indexOf("MSIE 6") != -1)
 IE6 = true;
 else if(strChEnd.indexOf("Firefox/2") != -1)
 FIREFOX2 = true;
 else if(strChEnd.indexOf("Firefox") != -1)
 FIREFOX = true;
 else if(strChEnd.indexOf("Netscape/7") != -1)
 NETSCAPE7 = true;
 else if(strChEnd.indexOf("Netscape") != -1)
 NETSCAPE = true; 
 else if(strChStart.indexOf("Opera/9") != -1)
 OPERA9 = true;
 else if(strChStart.indexOf("Opera") != -1)
 OPERA = true;
 else
 AUTRE = true;



//Petite function tres utile, te renvoi un tableau  contenant tous les items ayant telle classe.
function getAllElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}


// Accepte en entrée les dates sous la forme : 02/02/2004, 2-2-2004 avec des / ou -
// Retourne false si la date est fausse ou érronée
function checkdate(chaine){
	var regex = new RegExp("[/-]");
	var date = chaine.split(regex);
	var nbJours = new Array('',31,28,31,30,31,30,31,31,30,31,30,31);
	var result = true;

	if ( date['2']%4 == 0 && date['2']%100 > 0 || date['2']%400 == 0 )
	nbJours['2'] = 29;

	if( isNaN(date['2']) )
	result=false;

	if ( isNaN(date['1']) || date['1'] > 12 || date['1'] < 1 )
	result=false;

	if ( isNaN(date['0']) || date['0'] > nbJours[Math.round(date['1'])] || date['0'] < 1 )
	result=false;

	return result;
}

//calcul de l'age de l'animal
function calculerAgeEnMois(jour, mois, annee)
{
	var dateDuJour = new Date();
	var age;
	var nbMois = 0;

	var jourNaiss = Number(jour);
	var moisNaiss = Number(mois);
	var anneeNaiss = Number(annee);

	var anneeActuelle = dateDuJour.getYear();

	if ((navigator.appName == "Netscape") && (parseFloat(navigator.appVersion) >= 4.06)){
			anneeActuelle = eval(anneeActuelle + 1900);
	}

	if(checkdate(jour+'/'+mois+'/'+annee)){
			nbMois += (anneeActuelle-anneeNaiss)*12;
			nbMois += dateDuJour.getMonth()+1-moisNaiss;

			//si le jour d'anniversaire n'est pas encore passÃ© dans l'annÃ©e, un an de moins
			if((dateDuJour.getDate()<jourNaiss)){
				nbMois--;
			}
			
			return nbMois;
	}
	else{
		return false;
	}
}

// ouvre une popup : <a href='javascript:popupCenter("visionneuse.php?id_galerie=10&id_photo=12",500,350,"status=no,resizable=no")'>blabla</a>
function popupCenter(page,largeur,hauteur,options)
{
	var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}


/* cache ou affiche un div dans un group 
utilisation : HideShowDivGroupInit(divId1);HideShowDivGroupInit(divId2);HideShowDivGroupInit(divId3);
puis 		HideShowDivGroup(divId2) affichera le divId2 en cachant les autre au cas ou.
*/
var tabHideShowDivGroup=Array();		// le tableau de div � montrer/cacher
var tabHideShowDivGroupLenght=0;		// le nombre d'element du tableau

// initialise le tableau
function HideShowDivGroupInit(divId,Comportement) {
	tabHideShowDivGroup[tabHideShowDivGroupLenght]=divId;
	tabHideShowDivGroupLenght++;
	if (Comportement=='AddAndHide'){
		HideShowDiv(divId);
	}
}
//affiche ou chache chaque element
function HideShowDivGroup(divId,bCanHideMe) {
	// the shown div can be hidden
	if (bCanHideMe && document.getElementById(divId).style.display!='none'){
		document.getElementById(divId).style.display="none";
		return ;
	}
	for(i=0; i<tabHideShowDivGroupLenght; i++){
		document.getElementById(tabHideShowDivGroup[i]).style.display="none";
	}
	document.getElementById(divId).style.display='';
}
/* */

/* cache ou affiche un div suivant son etat */
function HideShowDiv(divId) {
	if (document.getElementById(divId).style.display=="none"){
		document.getElementById(divId).style.display='';
	} else {
		document.getElementById(divId).style.display="none";
	}
}

function hideShowPopupDiv(nomDiv,action,changeBackGroundToo)
{
	var bgElem,divElem
	
	//----------------------
	// Debut ancienne methode	
	//----------------------
	/*var ns4 = (document.layers);
	var ie4 = (document.all && !document.getElementById);
	var ie5 = (document.all && document.getElementById);
	var ns6 = (!document.all && document.getElementById);*/
	//----------------------
	// Fin ancienne methode	
 	//----------------------

	//----------------------
    // Debut nouvelle methode		    
    //----------------------
	if( document.getElementById ) // this is the way the standards work
	{
    	divElem = document.getElementById(nomDiv);
    	bgElem =  document.getElementById('fond_gris_popup');
	}
	else if( document.all ) // this is the way old msie versions work
	{
    	divElem = document.all[nomDiv];
    	bgElem = document.all['fond_gris_popup'];
	}
	else if( document.layers ) // this is the way nn4 works
    {
    	divElem = document.layers[nomDiv];
    	bgElem = document.layers['fond_gris_popup'];
    }
    //----------------------
    // Fin nouvelle methode	
    //----------------------
    	
	
	// On rend le parametetre optionnel si pas de pr�cision, on la passe � faux
	// Ce parametre permet de masquer ou d'afficher egalement le fond de lapopup, qui masque la page
	if (typeof changeBackGroundToo == "undefined")
	{
	    changeBackGroundToo = "false";
  	}
	
	if (action == 'show')
	{
		divElem.style.display = "block";
		bgElem.style.display = "block";
	}
	else if (action == "hide")
	{
		if(changeBackGroundToo == "true") bgElem.style.display = "none";
		divElem.style.display = "none";
	}	
}


//verrification du rib
function checkRib()
{
	var a;
    var b;
    var c;
    var d;
    var e;
    var f;
    var g;
    var h;
    var i;
    a = document.getElementById("form_codeBanque").value;
    b = document.getElementById("form_codeGuichet").value;
    c = ribStrToNumber(document.getElementById("form_numeroCompte").value);
    d = 8 * a;
    a = Math.floor(d / 97);
    a = d - (97 * a);
    e = 15 * b;
    b = Math.floor(e / 97);
    b = 97 - (e - (97 * b));
    f = 3 * c;
    c = Math.floor(f / 97);
    c = 97 - (f - (97 * c));
    g = a + b + c;
    h = Math.floor(g / 97);
    i = g - (97 * h);
        
    if(i == 0)
    {
    	i = 97;
    }
    
    return(i==Number(document.getElementById("form_cleRib").value));
}

//change les lettres d'un rib en chiffres
function ribStrToNumber(noCompte)
{
	noCompte = noCompte.toUpperCase();

	noCompte = noCompte.replace("A","1");
	noCompte = noCompte.replace("B","2");
	noCompte = noCompte.replace("C","3");
	noCompte = noCompte.replace("D","4");
	noCompte = noCompte.replace("E","5");
	noCompte = noCompte.replace("F","6");
	noCompte = noCompte.replace("G","7");
	noCompte = noCompte.replace("H","8");
	noCompte = noCompte.replace("I","9");
	noCompte = noCompte.replace("J","1");
	noCompte = noCompte.replace("K","2");
	noCompte = noCompte.replace("L","3");
	noCompte = noCompte.replace("M","4");
	noCompte = noCompte.replace("N","5");
	noCompte = noCompte.replace("O","6");
	noCompte = noCompte.replace("P","7");
	noCompte = noCompte.replace("Q","8");
	noCompte = noCompte.replace("R","9");
	noCompte = noCompte.replace("S","2");
	noCompte = noCompte.replace("T","3");
	noCompte = noCompte.replace("U","4");
	noCompte = noCompte.replace("V","5");
	noCompte = noCompte.replace("W","6");
	noCompte = noCompte.replace("X","7");
	noCompte = noCompte.replace("Y","8");
	noCompte = noCompte.replace("Z","9");
	
	return noCompte;
}

//Fonctions de selection multiples sans utilisation d'un variable regroupant les selections
function checkAllSimple(myVar)
{
	arrayInput = getAllElementsByClassName(document,'input',myVar);
	if(document.getElementById('checkall').checked==true)
	{
		for(x in arrayInput)
		{
			arrayInput[x].checked=true;
		}
	}
	else
	{
		for(x in arrayInput)
		{
			arrayInput[x].checked=false;
		}
	}
}

function creation_liste_checkbox(classCheckbox, ChampResult)
{
	var listemsg="";
	var inputs = document.getElementsByTagName("input");
	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].type == 'checkbox' && inputs[i].id != 'checkall' && inputs[i].checked && inputs[i].className==classCheckbox)
		{
			listemsg += inputs[i].id + ",";
		}
	}

	listemsg = listemsg.substring(0,listemsg.length-1);
	document.getElementById(ChampResult).value=listemsg;
	
}

//Fonctions de selection multiples
function checkAll(myVar,myVar2)
{
	arrayInput = getAllElementsByClassName(document,'input',myVar);
	if(document.getElementById('checkall').checked==true)
	{
		for(x in arrayInput)
		{
			arrayInput[x].checked=true;
			document.getElementById(myVar2).value+=arrayInput[x].name+', ';
		}
	}
	else
	{
		for(x in arrayInput)
		{
			arrayInput[x].checked=false;
			document.getElementById(myVar2).value='';
		}
	}
}

function decocher_checkbox(checkbox, checkbox_all)
{
	if(document.getElementById(checkbox).checked==false && document.getElementById(checkbox_all).checked==true)
	{
		document.getElementById(checkbox_all).checked=false;
	}
}

function checkOne(myVar,myVar2)
{

	if (document.getElementById(myVar).checked==true)
	{
		document.getElementById(myVar2).value+=myVar+' ,';
	}
	else
	{
		// Now il faut qu'on enleve la chaine correspondante avec les 2 caract�res qui la suivent
		index = document.getElementById(myVar2).value.indexOf(myVar);
		str = document.getElementById(myVar2).value.substr(0,index-2);
		str+= document.getElementById(myVar2).value.substr(index+1);
		document.getElementById(myVar2).value=str;
		//On en profite pour d�cocher le checkbox du haut !!
		document.getElementById('checkall').checked=false;
	}
}

function calculeLongueur(texte, nbmax){
   var iLongueur, iLongueurRestante;
   iLongueur = document.getElementById(texte).value.length;
   if (iLongueur>nbmax) {
      document.getElementById(texte).value = document.getElementById(texte).value.substring(0,nbmax);
      iLongueurRestante = 0;
   }
   else {
      iLongueurRestante = nbmax - iLongueur;
   }
   document.getElementById('indic').value = iLongueurRestante;
}

function remiseZeroTexte(champ, texte){
   if(document.getElementById(champ).value == texte)
   {
     document.getElementById(champ).value='';
   }
}

/*function modifNombreSurprises(nombreSurprises)
{
	var tblNbSurprises=nombreSurprises.split("#");
	document.write(tblNbSurprises[0]);
}*/

function suppressionMessageAction(msg, id)
{
		
		if(window.confirm(msg)==true)
		{
			document.getElementById(id).submit();
		}
		else
		{
			return false;
		}

}

function wordwrapJavascript(text_temp, nbmax)
{
	var compteur = 0;
	var result = '';
	var tab_txt = new Array();
	
	tab_txt = text_temp.split(' ');
	
	for(i=0;tab_txt[i];i++)
	{
	
		mot=tab_txt[i];
		
		if((compteur + mot.length)<=nbmax)
		{
			result = result + mot + " ";
			compteur = compteur + mot.length + 1;
		}
		else if(mot.length<=nbmax)
		{
			if (result=='')
			{
				result = mot + " ";
			}
			else
			{
				result = result + mot + " ";
			}
			compteur = mot.length + 1;
		}
		else
		{
			
			for(j=0;mot.substr(j,nbmax);j=j+nbmax)
			{
				if (result=='')
				{
					result = mot.substr(j,nbmax) + " ";
				}
				else
				{
					result = result + mot.substr(j,nbmax) + " ";
				}
			}
			compteur = 0;
		}

	}
	return result;
}




	/**
	 * AJAX things 
	 * Permet d'envoyer des donn�es en GET ou POST en utilisant les XmlHttpRequest
	 */
	function sendData(data, page, method, place){

			if (place=='') {place='contenu';}
			if(document.all){
				//Internet Explorer
				var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
			} else {
			    //Mozilla
				var XhrObj = new XMLHttpRequest();
			}

			//d�finition de l'endroit d'affichage:
			var content = document.getElementById(place);
			//si on envoie par la m�thode GET:
			if(method == "GET")	{
				if(data == null) {
					//ouvertur du fichier s�lectionn�:
					XhrObj.open("GET", page);
				} else {
					//Ouverture du fichier en methode GET
					XhrObj.open("GET", page+"?"+data);
				}//fin else
			} else if(method == "POST")	{
				//Ouverture du fichier en methode POST
				XhrObj.open("POST", page);
			}//fin elseif

			//Ok pour la page cible
			XhrObj.onreadystatechange = function() {
				try {
					if (XhrObj.readyState == 4 && XhrObj.status == 200 && document.getElementById(place)) {
					content.innerHTML = XhrObj.responseText ;
					var AllScripts=content.getElementsByTagName("script")
					    for (var i=0; i<AllScripts.length; i++) {
					    	var s=AllScripts[i];
					        if (s.src && s.src!="") {
					        	// Pr�c�dement asynchrone, mis en synchrone pour �viter des probl�mes de d�pendances de scripts
					            eval(getFileContent(s.src));
//					            alert(getFileContent(s.src));
							} else {
					            eval(s.innerHTML);
//					            alert(s.innerHTML);
					        }
						}
					}
				} catch(e) {
					// nothing there has been a bug so let's do nothing.
				}
			}
	
			if(method == "GET") 	{
				XhrObj.send(null);
			} else if(method == "POST")	{
				XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				XhrObj.send(data);
			}//fin elseif
	}//fin fonction SendData

	function ajaxGetHeader(){
		str='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"><head><title>DogCity - Version de DEV</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><body>';
		return str;
	}
	function ajaxGetFooter(){
		str= '</body></html>';
		return str;
	}
	function postFile(page,prms,place) {
		sendData(prms, page, 'POST', place);
	}//fin fonction getFile  

	/**
	 * Permet de r�cup�rer les donn�es d'un fichier via les XmlHttpRequest:
	 */
	function getFile(page,prms,place) {
		sendData(prms, page, 'GET', place);
	}//fin fonction getFile  
	/**
	 * / AJAX things 
	 */

	/* fiche animal : afficher galerie avec la photo correspondante*/
	function show_galerie(animal,photo_num,id_photo,url_site) {
		// met � jour le contenu de la div
		postFile(url_site+'ajax/ajax_show_galerie.php',"id_animal="+animal+"&photo_num="+photo_num+"&id_photo="+id_photo,'popupGalerie');
		// puis affiche la div
		hideShowPopupDiv('popupGalerie','show','true');
		// et scroll top
		if (IE6)
		{
			window.scroll(-600);
		}
	}
	
/**
*  Fonction permettant de v�rifier la validit� d'une adresse mail
*/
function verif_adresse_elec( adresse )
 {
    var status = true;
    var nom_utilisateur = "";
    var nom_hote = "";
    if ( adresse.length < 8 )
    {
    	alert('Adresse mail invalide !');
    	return false;
	}
    var separateur = adresse.lastIndexOf("@");
    if ( separateur == -1 ) 
    {
    	alert('Adresse mail invalide !');
    	return false;
    }

    nom_utilisateur = adresse.substring(0, separateur );
    if ( ! verif_nom_utilisateur( nom_utilisateur, "<>()[],;:@\" " ) )
    {
    	alert('Adresse mail invalide !');
    	return false;
    }

    nom_hote = adresse.substring(separateur+1, adresse.length );
    if ( ! verif_nom_hote( nom_hote ) )
    {
    	alert('Adresse mail invalide !');
    	return false;
	}
    return true;
 }
 
 
 
 /**
 *Fonction pour faire clignoter du texte !
 *
 */
 
 	function clignoter(id,delai) 
	{ 
		if(document.getElementById(id).style.color = '#345959') 
		{ 
			setTimeout("document.getElementById('"+ id +"').style.color = '#ff7f00';",(delai/2));
		} 
		else 
		{ 
			setTimeout("document.getElementById('"+ id +"').style.color = '#345959';",(delai/2));
		}
	}
	
	//retourne le premier noeud xml de la chaine pass�e en parametre
function instanciateXmlParser(str)
{
	// code pour IE
	if (window.ActiveXObject)
	{
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async="false";
		doc.loadXML(str);
	}
	// code pour Mozilla, Firefox, Opera, etc.
	else
	{
		var parser=new DOMParser();
		var doc=parser.parseFromString(str,"text/xml");
	}

	// root node
	return doc;
}

//supprimer un noeud
function removeNode(node)
{
	if(node && node.parentNode)
		node.parentNode.removeChild(node);
}

 //fonction insertAfter
//insère un noeud après l'élement situé en position
function insertAfter(newNode, posNode)
{
	var parentNode = posNode.parentNode;
	//si ce n'est pas le dernier noeud enfant
	if(posNode.nextSibling)
	{
		parentNode.insertBefore(newNode, posNode.nextSibling);
	}
	//sinon
	else
		parentNode.appendChild(newNode);
}