//------------------------------------------------------------------------------------//
// 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
		formulaire.ville.value = sel.options[selIndex].value;
		sel.focus();
		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
			}
			sel.options[sel.options.length] = new Option('','');
			for(i=0 ; i<nb_villes ; i++){
				sel.options[sel.options.length] = new Option(param[i],param[i]);
			}
									
			if (sel.options.length) {
				sel.selectedIndex = 1 ; // 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';
}
