// JavaScript Document

//fonction qui génère le xml à la volée en fonction de la ville tapée
function ajax(objVille,keyCode,randomName)
{

    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    //on met à jour le champs lo_geo (copie du champs random)
    document.getElementById("loc_geo").value=document.getElementById(randomName).value;
    
    //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { alert_ajax(xhr, keyCode, randomName); };
    
    //on affiche le message d'accueil
    //document.getElementById("message").className="tumevois";
    //on appelle le fichier reponse.txt
    xhr.open("GET", "scripts/php/genere_villes.php?ville_geo="+noaccent(addslashes(objVille.value)), true);
    //xhr.open("GET", "http://louez.monne-decroix.fr/scripts/php/genere_villes.php?ville_geo="+noaccent(addslashes(objVille.value)), true);
    xhr.send(null);

    //document.getElementById("loc_geo").value=document.getElementById(randomName).value;
    
}

//fonction qui ajoute ou supprime des villes de la liste proposée
function alert_ajax(xhr, keyCode, randomName)
{
    if (xhr.readyState==4) 
    {
    	var docXML= xhr.responseXML;
    	var loc_geo_active;
    	var active=false;
    	var items = docXML.getElementsByTagName("donnee")
    	//on fait juste une boucle sur chaque element "donnee" trouvé
    	
    	
    	clear_html();
    	document.getElementById("liste_villes_geo").className="visible";
	    
	  //FONCTION RETIREE: on affiche la liste que s'il y a plus d'un resultat
	  //if (items.length>1)
	  //{
	  if (keyCode==40 || keyCode==38)
      {
      loc_geo_active=document.getElementById("loc_geo_active").value;
      }
      
      for (i=0;i<items.length;i++)
    	{
    	  var li_class="liste_geoloc";
    	  
    	  if (i==0)
    	   {
    	   li_class="liste_geoloc_top";
    	   document.getElementById("loc_geo").value=trim(items.item(i).firstChild.data);
         }
        if (i==(items.length-1))
         {
         li_class="liste_geoloc_bottom";
         }
        if ((items.length-1)==0)
         {
         li_class="liste_geoloc_both";
         }
        //particularité css sous ie pour les <li>
        if (navigator.appName=="Microsoft Internet Explorer")
        {
        li_class=li_class+"_ie";
        }
        
        /*Gestion du défilement haut et bas de la liste*/
        
        //Touche du bas
        if (keyCode==40 && (loc_geo_active==i || i==items.length-1) && active==false)
        {
          if (loc_geo_active==(items.length-1) || loc_geo_active==items.length)
            {
            loc_geo_active=document.getElementById("loc_geo_active").value=items.length;
            }
          else
            {
            loc_geo_active=document.getElementById("loc_geo_active").value=(i+1);
            }
        li_class=li_class+"_active";
        active=true;
        document.getElementById("loc_geo_active_value").value=trim(items.item(i).firstChild.data);
        }
        //Touche du haut
        else if (keyCode==38 && (loc_geo_active-2==i || loc_geo_active==1) && active==false)
        {
          if (i==0)
            {
            loc_geo_active=document.getElementById("loc_geo_active").value=1;
            }
          else
            {
            loc_geo_active=document.getElementById("loc_geo_active").value=(i+1);
            }
        li_class=li_class+"_active";
        active=true;
        document.getElementById("loc_geo_active_value").value=trim(items.item(i).firstChild.data);
        }
        else if (keyCode!=38 && keyCode!=40)
        {
        loc_geo_active=document.getElementById("loc_geo_active").value=0;
        }
        
    	  
        document.getElementById("loc_geo"+(i+1)).className="visible";
    	  document.getElementById("loc_geo"+(i+1)).innerHTML = "<li class=\""+li_class+"\" onclick=\"javascript:ajax_to_html('"+addslashes(trim(items.item(i).firstChild.data))+"','"+randomName+"');\">"+items.item(i).firstChild.data+"</li>";
       

      }
    //}
    
    }
    
    if (keyCode==27)
      {
      clear_html();
      }
}

//fonction qui permet de selectionner un elements de la liste des villes avec la touche entrée
function set_active(randomName)
{
  if (document.getElementById("loc_geo_active").value!=0)
  {
  document.getElementById(randomName).value=document.getElementById("loc_geo_active_value").value;
  document.getElementById("loc_geo").value=document.getElementById("loc_geo_active_value").value;
  document.getElementById("enter_key").value="ok";
  document.getElementById("loc_geo_active").value=0;
  document.getElementById(randomName).focus();
  clear_html();
  }
  else
  {
  document.getElementById("enter_key").value="nok";
  }
}


//fonction qui permet de savoir si au moment de l appuie sur la touche entrée, la liste des ville est active
function check_active(randomName)
{
  if (document.getElementById("enter_key").value=="ok")
    {
    document.getElementById("enter_key").value="nok";
    document.getElementById("loc_geo_active").value=0;
    alert('test');
    document.getElementById("submit_form").focus();
    return false;
    }
  else
    {
    return true;
    }
}


//fonction qui remplie le champs de la ville (geolocalisation) suite à la selection
function ajax_to_html(ville, randomName)
{
document.getElementById(randomName).value=ville;
document.getElementById("loc_geo").value=ville;
document.getElementById(randomName).focus();
clear_html();
}

//fonction qui fait disparaitre la liste des villes proposées
function clear_html()
{
document.getElementById("liste_villes_geo").className="hidden";
for (i=1;i<=10;i++)
  {
  document.getElementById("loc_geo"+(i)).className="hidden";
  }
}

//equivalent de la fonction php: rajoute des slashes devant les caracteres speciaux
function addslashes(ch) {
ch = ch.replace(/\\/g,"\\\\")
ch = ch.replace(/\'/g,"\\'")
ch = ch.replace(/\"/g,"\\\"")
return ch
}

//fonction qui remplace les caracteres accentués
function noaccent(chaine) {
  temp = chaine.replace(/[àâä]/gi,"a")
  temp = temp.replace(/[éèêë]/gi,"e")
  temp = temp.replace(/[îï]/gi,"i")
  temp = temp.replace(/[ôö]/gi,"o")
  temp = temp.replace(/[ùûü]/gi,"u")
  temp = temp.replace(/[ç]/gi,"c")
  return temp
}

//fonction permettant de supprimer les espaces en debut et fin de chaine
function trim(aString) {
var regExpBeginning = /^\s+/;
var regExpEnd       = /\s+$/;
return aString.replace(regExpBeginning, "").replace(regExpEnd, "");
}

//fonction qui demasque le premier éléments passé en parametre et masque le deuxieme
function switch_css(element_1, element_2, onglet)
{
  document.getElementById(element_1).style.display="block";
  document.getElementById(element_2).style.display="none";
  document.getElementById("subform").value=onglet;
}



