/*
* Affiche une liste de communes en dessous du champ de saisie du nom de la commune.
* 1 paramètre :
* - e : évenement (click, keyup...)
*/
function recherche(e,rubrique){

if(rubrique==1){
 var couleurTexteSelection="#FFFFFF";//Couleur du texte selectionné dans la liste
 var couleurFondSelection="#7cbd4f";//Couleur de fond de l'élément selectionné dans la liste
 var couleurTexte="#000000";//Couleur du texte non-selectionné dans la liste
 var couleurFond="#FFFFFF";//Couleur du fond de l'élément non-selectionné dans la liste
}else{
 var couleurTexteSelection="#FFFFFF";//Couleur du texte selectionné dans la liste
 var couleurFondSelection="#3a69ad";//Couleur de fond de l'élément selectionné dans la liste
 var couleurTexte="#000000";//Couleur du texte non-selectionné dans la liste
 var couleurFond="#FFFFFF";//Couleur du fond de l'élément non-selectionné dans la liste
}

//Si l'utilisateur appuie sur la flèche supérieure (38) ou inférieure (40), on selectionnera l'option suivante dans la liste.
//S'il appuie sur entrée (13) on affiche le nom de la commune selectionnée dans la liste.
if(e.keyCode==40 || e.keyCode==38 || e.keyCode==13){
	
		var ligneActive=new Number(document.getElementById("hidSelComm").value);//Récupère le numéro de la ligne active.
		//Compte le nombre de lignes dans le tableau.
		var TabTr = document.getElementById("lstCommunes").getElementsByTagName('tr');
		var NbLigne=new Number(TabTr.length);

 		//Si la ligne active est la première et que l'on appuie sur la flèche supérieure, on met en surbrillance la dernière ligne.
        if(ligneActive==0 && e.keyCode==38){

					document.getElementById(0).style.backgroundColor=couleurFond;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(0).style.color=couleurTexte;//Met la couleur de surbrillance sur l'élément selectionné.
		
					document.getElementById(NbLigne-1).style.backgroundColor=couleurFondSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(NbLigne-1).style.color=couleurTexteSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById("hidSelComm").value=NbLigne-1;//Enregistre le numéro de la ligne selectionné.

		//Si la ligne active est la dernière et que l'on appuie sur la flèche inférieure, on met en surbrillance la première ligne.
        }else if(ligneActive==(NbLigne-1) && e.keyCode==40){

					document.getElementById(NbLigne-1).style.backgroundColor=couleurFond;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(NbLigne-1).style.color=couleurTexte;//Met la couleur de surbrillance sur l'élément selectionné.
		
					document.getElementById(0).style.backgroundColor=couleurFondSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(0).style.color=couleurTexteSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById("hidSelComm").value=0;//Enregistre le numéro de la ligne selectionné.

        //Si l'utilisateur clique sur entrée alors on affiche le nom de la commune selectionnée dans le champ de saisie.
        }else if(e.keyCode==13){

			selectCommune(document.getElementById(ligneActive).text,document.getElementById(ligneActive).cx,document.getElementById(ligneActive).cy);
		    debugIE(1);		

		}else{

					document.getElementById(ligneActive).style.backgroundColor=couleurFond;//Remet la couleur blanc pour l'élement selectionné auparavent.
					document.getElementById(ligneActive).style.color=couleurTexte;//Remet la couleur noir pour l'élement selectionné auparavent.
		
					if(e.keyCode==40){
						 ligneActive+=1; //Incrémente le numéro de la ligne selectionnée.
					}else if(e.keyCode==38){
						 ligneActive-=1; //Décrémente le numéro de la ligne selectionnée.
					}
			
					document.getElementById(ligneActive).style.backgroundColor=couleurFondSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById(ligneActive).style.color=couleurTexteSelection;//Met la couleur de surbrillance sur l'élément selectionné.
					document.getElementById("hidSelComm").value=ligneActive;//Enregistre le numéro de la ligne selectionné.

		}


}else{

  //Si le texte saisie est en minuscule, on le passe en majuscule.
  document.getElementById('nomCommune').value=strtoupper(document.getElementById('nomCommune').value);
 
  var texte=new String(document.getElementById('nomCommune').value);//Texte saisie
  var flag=0;//Variable qui indique si au moins une commune a été trouvée.
  
  //Réinitialise le tableau.
  viderTableau();

  //Vérifie la longueur du texte saisie.
  if(texte.length>0){
	  
		var texte_st=new String(texte);
		texte_st=texte_st.replace('ST ','ST-');
		texte_st=texte_st.replace('SAINT-','ST-');
		texte_st=texte_st.replace('SAINT ','ST-');
		texte_st=texte_st.replace('SAINTE-','STE-');		
		texte_st=texte_st.replace('SAINTE ','STE-');
		texte_avec_tiret=texte_st.replace(/\s/g,'-');		
		texte_sans_tiret=texte_st.replace(/-/g,' ');

		texte_le_tiret=texte_st.replace('LE-','LE ');
		texte_le_tiret2=texte_st.replace('LE ','LE-');
		texte_la_tiret=texte_st.replace('LA-','LA ');
		texte_la_tiret2=texte_st.replace('LA ','LA-');
		texte_les_tiret=texte_st.replace('LES-','LES ');
		texte_les_tiret2=texte_st.replace('LES ','LES-');
 		 		 
	
		var reg   = new RegExp('^'+texte+'|LE '+texte+'|LA '+texte+'|L([\'])'+texte+'|LES '+texte+'|^'+texte_st+'|^'+texte_avec_tiret+'|^'+texte_sans_tiret+'|^'+texte_le_tiret+'|^'+texte_le_tiret2+'|^'+texte_la_tiret+'^'+texte_la_tiret2+'|^'+texte_les_tiret+'|^'+texte_les_tiret2, 'i');//Texte minuscule ou majuscule commençant par la chaîne saisie.		

		//Si le texte commence par st ou saint alors on modifie l'expression régulière pour
		//que la recherche porte sur les communes commençant par st ou saint.	
		if(strtoupper(texte)=="ST-" || strtoupper(texte)=="SA" || strtoupper(texte)=="SAI" || strtoupper(texte)=="SAIN" || strtoupper(texte)=="SAINT" || strtoupper(texte)=="SAINT " || strtoupper(texte)=="SAINTE" || strtoupper(texte)=="SAINTE " || strtoupper(texte)=="SAINTE-" || strtoupper(texte)=="ST "){
		  var reg   = new RegExp('^ST-|^SAINT', 'i');  
		}

		//Affichage des communes correspondant au texte saisie.
        var j=0;
		for(i=0;i<tabCommunes.length;i++){
						
				if(reg.exec(tabCommunes[i][0])){	
	
					  var tr = document.createElement("TR");//Créer une ligne.
					  var td = document.createElement("TD");//Créer une colonne.
					  var dvTxt = document.createElement("DIV");//Créer un calque qui reçoit les noms de communes.
			
					  tr.id="tr"+i;//Création de l'identifiant de la ligne;
					  td.appendChild(dvTxt);//Ajout du calque dans la colonne.
					  tr.appendChild(td);//Ajout du contenu de la ligne.
					  dvTxt.innerHTML=tabCommunes[i][0];//Création du contenu du calque.
					  dvTxt.text=tabCommunes[i][0];//Création d'une propriété avec le nom de la commune.
					  dvTxt.id=j;//Création de l'identifiant du calque.
					  dvTxt.name="dvTxt"+j;//Création de l'identifiant du calque.
					  dvTxt.cx=tabCommunes[i][1];
					  dvTxt.cy=tabCommunes[i][2];
					  /*Fonctions pour le calque*/
			   
					  //Au survaol, donne une surbrillance au calque. 
					  dvTxt.onmouseover=function surbrillance(){
							var ligneActive=new Number(document.getElementById("hidSelComm").value);//Récupère le numéro de la ligne active.
							document.getElementById(ligneActive).style.backgroundColor=couleurFond;//Met la couleur de surbrillance sur l'élément selectionné.
							document.getElementById(ligneActive).style.color=couleurTexte;//Met la couleur de surbrillance sur l'élément selectionné.
							this.style.backgroundColor=couleurFondSelection;
							this.style.color=couleurTexteSelection;
							document.getElementById("hidSelComm").value=this.id;
					  };
			
					  //Sur sortie, redonne un aspect normal au calque.
					  dvTxt.onmouseout=function finsurbrillance(){
							this.style.backgroundColor=couleurFond;
							this.style.color=couleurTexte;
					  };
			
					  //Sur click, affiche le nom de la commune dans le champ.
					  dvTxt.onmouseup=function selection(){
							if(this.cx<=0) this.cx=0;
							if(this.cy<=0) this.cy=0;
							selectCommune(this.text,this.cx,this.cy);
					  };
			
					  //Finalise l'afichage des éléments.
					  document.getElementById("lstCommunes").getElementsByTagName('tbody')[0].appendChild(tr);
                      document.getElementById("hidSelComm").value=0;
                      //Compte le nombre de lignes dns le tableau et fait varier la hauteur du conteneur.
					  /*TabTr = document.getElementById("lstCommunes").getElementsByTagName('tr');
					  NbLigne=TabTr.length;
					  if(NbLigne<5){
                          window.status=htConteneur;
						 document.getElementById("divLstCom").style.height=Math.round(200/NbLigne)+"px";
					  }else{
						 document.getElementById("divLstCom").style.height=5+"px";
					  }*/
					  j++;	
			          flag=1;

				} //end if(reg.exec(tabCommunes[i])){	   
	
		}//	end for(i=0;i<tabCommunes.length;i++){

  }//end if(texte.length>0){

  if(flag==1 && texte.length>0){
   document.getElementById("divLstCom").style.display="block";
   document.getElementById(0).style.backgroundColor=couleurFondSelection;
   document.getElementById(0).style.color=couleurTexteSelection;
   debugIE(0);
  }else{
   document.getElementById("divLstCom").style.display="none";
   debugIE(1);
   viderTableau();
  }

}

}

/*Permet de cacher les listes select pour quelles ne s'affichent pas au-dessus de la liste des communes.*/
function debugIE(bool){

	if(bool==0){
	   //if(document.getElementById("nuits")) document.getElementById("nuits").style.display="none";
	   //document.getElementById("listDistances").style.display="none";
	   if(document.getElementById("nuits")) document.getElementById("nuits").style.visibility="hidden";
	   document.getElementById("listDistances").style.visibility="hidden";
	}else{
	   //if(document.getElementById("nuits")) document.getElementById("nuits").style.display="block";
	   //document.getElementById("listDistances").style.display="block";
	   if(document.getElementById("nuits")) document.getElementById("nuits").style.visibility="visible";
	   document.getElementById("listDistances").style.visibility="visible";
	}

}

/*
* Supprime toutes les lignes du tableau.
*/
function viderTableau(){

  var TabTr = document.getElementById("lstCommunes").getElementsByTagName('tr');//Récupère tous les objets 'lignes' du tableau.

	//Supprime toutes les lignes existantes.
	for (i=TabTr.length-1;i>=0;i--){	 
		TabTr[i].parentNode.removeChild(TabTr[i]);		
	}
}

/* 
* Affiche le nom de la commune selectionnée dans la liste.
*/
function selectCommune(val,cx,cy){
  document.getElementById("divLstCom").style.display="none";//On cache le calque.
  document.getElementById("nomCommune").value=val;//On affiche le nom de la commune dans le champ.
  doPassCoordonnees(cx,cy);
  debugIE(1);
}


