//------------------------------------------------------------------------------------//
// PROGRAMME : recup_ville_ajax.js
// DEscriptION : Fonction de récupération des villes en ajax pour completer
// le champs ville dans les moteurs de recherche de la page d'accueil
// HISTORIQUE DES VERSIONS : 
// V0.1 - 15/10/2007 - David S - Cr&eacute;ation du programme
//------------------------------------------------------------------------------------//

function createRequestObject(){
				var ro;
				var browser = navigator.appName;
				if(browser == "Microsoft Internet Explorer"){
					ro = new ActiveXObject("Microsoft.XMLHTTP");
				} else {
					ro = new XMLHttpRequest();
				}
				return ro;
			}
			function recup_ville(e,nom_form,message){
				var formulaire = document.getElementById(nom_form);
				//création d'un nouvelle instance public d'objet à chaque appel
				var valeur_champ = formulaire.ville.value;
				var sel = formulaire.completion_select ;
				var nb_el = sel.options.length ;
				var selIndex = sel.selectedIndex;
				
				if (!valeur_champ){	
					sel.style.display = 'none';
				} else if (e.keyCode == 40 && nb_el) { // fleche bas
					if (selIndex < sel.options.length - 1) {
						sel.selectedIndex = selIndex + 1 ;
						formulaire.ville.value = sel.options[selIndex+1].value;
					}
				} else if (e.keyCode == 38 && nb_el) { // fleche haut
					if (selIndex > 0){
						sel.selectedIndex = selIndex - 1 ;
						formulaire.ville.value = sel.options[selIndex-1].value;
					}
				} else if (e.keyCode == 13 && nb_el) { // entrée
					sel.focus();
					formulaire.ville.value = sel.options[selIndex].value;
					sel.style.display = 'none';
				} else if (valeur_champ.length >= 3){
					if (valeur_champ.indexOf('(',0) == -1){ // pour ne pas lancer la requete quand on efface le code postale avec la touche backspace
						if(valeur_champ.length > 3){
							formulaire.ville.value = valeur_champ.replace(" ",""); // pour enlever les espace saisie par l'internaute
							valeur_champ = formulaire.ville.value;
						}
						var requete = '/scripts/recup_ville_ajax.php?premieres_lettres='+valeur_champ+'&moteur_sejour=1&aucune_ville='+message+'&nom_form='+nom_form;
						http = createRequestObject();
						if(http.readyState == 4 || http.readyState == 0){
							http.open('GET',requete,true);
							http.onreadystatechange = handleResponse_ville;
							http.send(null);
						}
					}
				}
			}
			function handleResponse_ville(){
				if(http.readyState == 4){
					var response = http.responseText;
					if(response != ""){
						//alert(response);
						var param = new Array();
						param_base = response.split('|');
						nom_form = param_base[0];
						message = param_base[1];
						var formulaire = document.getElementById(nom_form);
						param = param_base[2].split(',');
						var nb_villes = param.length;
						if (nb_villes <= 0 || param[0] == ""){ // si le champ ville est vide
							// plus de alert message pour ne pas afficher "ville inconnue" en cas d'erreur de frappe
							//alert (message);
							return false;
						}
						var sel = formulaire.completion_select;
						sel.attributes['size'].value = nb_villes;
						while(sel.options.length > 0){
							sel.options[0] = null
						}
						for(i=0 ; i<nb_villes ; i++){
							sel.options[sel.options.length] = new Option(param[i],param[i]);
						}
						if (sel.options.length) {
							sel.selectedIndex = 0 ; // on selection le premier element de la liste
							sel.style.display = 'block';
						} else {
							sel.style.display = 'none';
						}
					}
				}
			}
			function recup_ville_click(nom_form){
				var formulaire = document.getElementById(nom_form);
				var sel = formulaire.completion_select;
				formulaire.ville.value = sel.options[sel.selectedIndex].value;
				sel.style.display = 'none';
			}