resultats = new Array();
stringg = "";
//myiti = null;
geocodage_arrivee = null;
geocodage_depart = null;
cout = null;
compteur = -1;
tmp="";

THEville = null;



    var map;
    var gdir;
    var geocoder = null;
    var addressMarker;


    function print_r(obj) {
  win_print_r = window.open('about:blank', 'win_print_r');
  win_print_r.document.write('<html><body>');
  r_print_r(obj, win_print_r);
  win_print_r.document.write('</body></html>');
 }

 function r_print_r(theObj, win_print_r) {
  if(theObj.constructor == Array ||
   theObj.constructor == Object){
   if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
   }
   for(var p in theObj){
    if(theObj[p].constructor == Array||
     theObj[p].constructor == Object){
     win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
     win_print_r.document.write("<ul>")
     r_print_r(theObj[p], win_print_r);
     win_print_r.document.write("</ul>")
    } else {
     win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
    }
   }
  win_print_r.document.write("</ul>")
 }




    function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        gdir = new GDirections(map, document.getElementById("directions"));
        GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "error", handleErrors);

        setDirections("San Francisco", "Mountain View", "en_US");
      }
    }

    function setDirections(fromAddress, toAddress, locale) {
      gdir.load("from: " + fromAddress + " to: " + toAddress,
                { "locale": locale });
    }

    function handleErrors(){
	   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	     alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
	   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	     alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);

	   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	     alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);

	//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);

	   else if (gdir.getStatus().code == G_GEO_BAD_KEY)
	     alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

	   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	     alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);

	   else alert("An unknown error occurred.");

	}

	function onGDirectionsLoad()
	{
      // Use this function to access information about the latest load()
      // results.

      // e.g.
      // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
	  // and yada yada yada...
	}

var resultatscalcul = new Array();
var resultatscompteur = 0;
string = "";
insee1_courant = 0;
insee2_courant = 0;
positioncourante=0;
insee_villes = 0;
var map;
var nbVilles;
var verrou = false;
var geocodage_courant;
var i_timeout = 10000;
/*

*/


/**
 *
 * @access public
 * @return void
 **/
function retournerValeur(){
	chaine = array2json(resultatscalcul);

	envoyerLesDonnees(chaine);

}
var tableau_general;
var position_tableau_general = 0;
var coord1;
var coord2;

/**
 *
 * @access public
 * @return void
 **/
function calculGeneral(tab)
{
	calculValeurs(tab[0][0],tab[0][1],tab[0][2],tab[0][3],tab[0][4],tab[0][5]);
}



/**
 *
 * @access public
 * @return void
 **/
function calculValeurs(geocodage_de_lat,geocodage_de_long,geocodage_arriv_lat,geocodage_arriv_long,insee1,insee2)
{
		//alert("Dans la fonction Calcul [Position:"+position_tableau_general+"][De : "+geocodage_de_lat+","+geocodage_de_long+"][a "+geocodage_arriv_lat+","+geocodage_arriv_long+"]");
		//Lancement de Microsoft Map
		map = new VEMap('myMap');

        geo1 =new VELatLong(geocodage_de_lat,geocodage_de_long);
        geo2 =new VELatLong(geocodage_arriv_lat,geocodage_arriv_long)

		map.LoadMap(geo2,10)
        options = new VERouteOptions();
        options.RouteCallback = callBFunction;
        options.ShowDisambiguation = false;
        options.ShowErrorMessages  = false;
        options.DistanceUnit  = VERouteDistanceUnit.Kilometer;
        options.DrawRoute = false;
        //resultatscalcul[resultatscompteur] = new Array();
        //resultatscalcul[resultatscompteur]['depart'] = insee1;
        geocodage_courant = insee1;
        coord1 =geocodage_de_lat+"|"+geocodage_de_long;
        coord2 =geocodage_arriv_lat+"|"+geocodage_arriv_long;
        insee2_courant =insee2;
        ll = 0;



        map.GetDirections([geo1,geo2],options);

}

function callBFunction(route)
{
//	alert('ici');
	tab = new Array();
	//alert("Dans la fonction callback [Position:"+position_tableau_general+"]");
	//alert("Insee1 : "+geocodage_courant);
	tab['distance'] = route.Distance;
	tab['temps'] = route.Time;
	tab['insee1'] = geocodage_courant;
	tab['coord1'] = coord1;
	tab['insee2'] = insee2_courant;
	tab['coord2'] = coord2;
	resultatscalcul.push(tab)
	//alert('Distance : '+route.Distance+" Temps : "+route.Time);
	//alert(array2json(resultatscalcul));
	resultatscompteur++;
	//alert("Compteur : "+resultatscompteur);
	map = null;
	//document.getElementById('myMap').innerHTML='';
	position_tableau_general++;
	nbVilles--;
	if(position_tableau_general<tableau_general.length)
		{
		progression('progressionBar',position_tableau_general,tableau_general.length,300);
		//alert("On relance le calcule [Nouvelle Position:"+position_tableau_general+"]");
		calculValeurs(tableau_general[position_tableau_general][0],tableau_general[position_tableau_general][1],tableau_general[position_tableau_general][2],tableau_general[position_tableau_general][3],tableau_general[position_tableau_general][4],tableau_general[position_tableau_general][5]);
		}
	else
		{
		//alert("On retourne les valeurs car tout vu [Position:"+position_tableau_general+" et lg tableau : "+tableau_general.length+"]");
		retournerValeur();
		}
	//alert(route.ShapePoints[0].Latitude+','+route.ShapePoints[0].Longitude);

}

/**
 * Fonction permettant de construire la chaîne de donnée qui se passée à php
 * @access public
 * @return void
 **/
function construireChaine()
{

	for(i=0;i<(resultats.length-1);i++)
	{
		stringg += resultats[i][2]+"|"+resultats[i][0].getTotalTime()+"|"+resultats[i][0].getTotalDistance()+"|"+resultats[i][1]+"|"+resultats[i][0].getTollCost()+";";

	}
	//alert("Chaîne générée : "+stringg);
}


/**
 *
 * @access public
 * @return void
 **/
function getDuree(indice)
{
	return resultats[indice].getTotalTime();
}

/**
 *
 * @access public
 * @return void
 **/
function getDistance(indice)
{
	return resultats[indice].getTotalDistance();
}

function iti_found(){
            //alert('Itineraire trouvé');
			//alert(getDistance(0));
			/*if(myiti typeof object)
			{
			stringg += geocodage_arrivee+"|"+myiti.getTotalTime()+"|"+myiti.getTotalDistance()+"|"+cout+";";
			alert(stringg);
			}
			else
			{
			alert('Pas un objet');
			}*/

//stringg += geocodage_arrivee+"|"+myiti.getTotalTime()+"|"+myiti.getTotalDistance()+"|"+geocodage_depart+"|"+myiti.getTollCost()+";\n";
	/*	//alert(stringg);
		*/
	// Calcul indice



	compteur = compteur-1;
	//alert('Compteur : '+compteur);
	if(resultats.length==0) ind = 0;
	else ind = resultats.length;

	//obj = new Array();
	//obj[0] = myiti;
	//obj[1] = geocodage_depart;
	//resultats[ind] = obj;

	if(compteur==0)
		{
		construireChaine();
		//alert("LA Chaine : "+stringg);
		envoyerLesDonnees()
		}
	else
		{
		//alert("Valeur non encore modifiée");
		}
}

FlagRetour=false;
/**
 *
 * @access public
 * @return void
 **/
function envoyerLesDonnees(chaine)
{
//document.getElementById('yourmapdiv').innerHTML = stringg;

				var xhr = getXhr();
				
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					//alert(xhr.responseText);
					if(xhr.responseText!='' && !FlagRetour){
						FlagRetour=true;
						//document.getElementById('debugzoneJS').innerHTML = xhr.responseText;
						//alert(xhr.responseText);
						reponse = xhr.responseText;
						document.getElementById('texte1').style.visibility = 'hidden';
						document.getElementById('texte1').style.display = 'none';

						ss = reponse.split('-');

						//alert('Résultat du Script : '+ss);

						if(ss[0]=='OK')
							{
							// Redirection quand c'est OK

							document.getElementById('texte2').style.visibility = 'visible';
							document.getElementById('texte2').style.display = 'block';
							return true;
							}
						else
							{
							document.getElementById('texte3').style.visibility = 'visible';
							document.getElementById('texte3').style.display = 'block';
							return false;
							}
					}
				}

				// Ici on va voir comment faire du post
				xhr.open("POST","calcul.php5",true);
				// ne pas oublier ça pour le post
				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				// ne pas oublier de poster les arguments
				// ici, l'id de l'auteur
				//sel = document.getElementById('departement');
				//depart = sel.value;

				xhr.send("rendu="+chaine+"&cle="+key+"&idDevis="+idDevis);
				//alert("Data :\n"+chaine);
				//xhr.open("GET","getdepart.php5",true);
				//xhr.send(null);

}

/**
 *
 * @access public
 * @return void
 **/
function callBackIdentifierVille(response)
{
  if (!response || response.Status.code != 200)
		   {
		    alert("Sorry, we were unable to geocode that address");
		   }
		   else
		   {
		    place = response.Placemark[0];
		    point = new GLatLng(place.Point.coordinates[1],
		    place.Point.coordinates[0]);

			window.alert(place.address + '<br>' +
		                    '<b>Country code:</b> ' + place.Point.coordinates);
			//print_r(response);
		    affichage_ville(response);
		   }
}

/**
 *
 * @access public
 * @return void
 **/
function callback(a,b,c,d,e)
{

         if (c != null && c.length > 1)
         {
            var results="More than one location was retruned. Please select the location you were looking for:<br>";
            for (x=0; x<c.length; x++)
            {
               results+="<a href='javascript:map.Find(null, \""+c[x].Name+"\");'>"+c[x].Name+"</a><br>";
            }
            //alert(results);
            //document.getElementById('resultDiv').innerHTML=results;
         }


}

function geocodage(zip)
	{

/*		geosearch = new VMGeoSearch();

var ville = document.forms['etape1'].elements;
alert('La ville : '+ville['ville'].value);
*/
/*


        alert('La ville : '+ville['ville'].value);

		if(	(ville['ville'].value != ''))
        {
          geocoder = new GClientGeocoder();

			chaine_recherche = ville['codepostal'].value+" "+ville['ville'].value+", "+ville['dep'].value;

			alert('Chaine : '+chaine_recherche);

  			geocoder.getLocations(chaine_recherche, callBackIdentifierVille);
*/
/*
        var map = null;
         map = new VEMap('myMap');
         map.LoadMap();
		map.Find(null, ville['ville'].value+", France", null, null, null, null, null, null, null, null, callback);

*/


        /*
		myaddress = new VMAddress();

		myaddress.address = "";
        myaddress.zipCode = zip;
        myaddress.city = ville['ville'].value;

		//myaddress.countryVMCode = VMCountryUtil.getSelectHTMLString("country","FRA");
        myaddress.countryISOCode = "FRA";

        geosearch.addEventHandler("onCallBack",affichage_ville);
        geosearch.search(myaddress);
        }*/



    }

/**
 *
 * @access public
 * @return void.SubAdministrativeArea.SubAdministrativeAreaName
 .Locality.PostalCode.PostalCodeNumber
 **/
function affichage_ville(reponse)
{
/*
	alert('Taille : '+reponse.Placemark.length);
	//print_r(reponse);
	if (reponse.Placemark.length == 0)
	{
            alert(myaddress.city+" - Aucun résultat !");
            tmp = "<input type=\"text\" onBlur=\"geocodage()\" id=\"ville\" name=\"ville\" /> <span style='color:red;font-weight:bold;'>Aucun résultat</span>";
    }

    else
	{
		if(reponse.Placemark.length == 1)
	    {
	    	alert('1 Résultat : '+reponse.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName+" : "+reponse.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName);
			THEville = reponse.Placemark[0].Point.coordinates[1]+","+reponse.Placemark[0].Point.coordinates[0];
			ville_nom = reponse.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
			ville_code = reponse.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
			tmp = "<strong>"+reponse.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName+" ("+reponse.Placemark[0].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName+")</strong> <a href='#' onClick='deleteVille()'>X</a> <input type='hidden' name='validville' value='"+THEville+"' /> <input type='hidden' name='ville' value='"+ville_nom+"' /> <input type='hidden' name='zipville' value='"+ville_code+"' />";
	    }
		else
		{
		alert('Liste Multiple');
		tmp = "<select onBlur=\"validVille();\" onClick=\"validVille();\" id=\"ville_liste\" name=\"ville_liste\">";
		tmp += "<option value='0' >-- Précisez la ville ici --</option>\n";
	            for (var i=0; i<reponse.Placemark.length; i++){
	                tmp += " <option value='"+reponse.Placemark[i].Point.coordinates[1]+","+reponse.Placemark[i].Point.coordinates[0]+"|"+reponse.Placemark[i].address+";"+reponse.Placemark[i].AddressDetails[5]+"'>"+reponse.Placemark[0].address+" | "+reponse.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName+" - "+reponse.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName+"</option>\n ";
	        }
	        tmp+="</select>  <a href='#' OnClick='deleteVille()'>X</a>";
	    }
	}
    document.getElementById("laville").innerHTML = tmp;
    */
}

/**
 *
 * @access public
 * @return void
 **/
function validVille()
{
/*
	champCourant=document.getElementById('ville_liste');
	var ville = champCourant.options[champCourant.selectedIndex].value;

	// On découpe la chaine
	chaine = ville.split('|');
	THEville = chaine[0];
	vv = chaine[1].split(';');
	ville_nom = vv[0];
	ville_code = vv[1];
	//
	document.getElementById("laville").innerHTML = "<strong>"+ville_nom+" ("+ville_code+")</strong> <a href='#' onClick='deleteVille();'>X</a> <input type='hidden' name='validville' value='"+THEville+"' /> <input type='hidden' name='ville' value='"+ville_nom+"' /> <input type='hidden' name='zipville' value='"+ville_code+"' />";
*/
}


/**
 *
 * @access public
 * @return void
 **/
function deleteVille()
{
	THEville = null;
	//ville = document.forms['etape1'].elements['ville'].value ='';
	document.getElementById("laville").innerHTML = "<input type=\"text\" onBlur=\"geocodage()\" id=\"ville\" name=\"ville\" />";
}


/* Variables stockant les villes */
var cities=null;
var gmap=null;
var ville_courante=null;
var etat_avancement=false;
var debug='';
var villes_coord_trouves;
var codepostal;
/**
 *
 * @access public
 * @return void
 **/
function updateFinalBD(updateBD)
{
	//alert('Appel updateFinalBD');

	debug +='Appel de updateFinalBD<br />';

	if(updateBD.length>0)
	{

	//	for(i=0;i<updateBD.length;i++)
	//	{
			//alert('On est dans updateFinalBD ('+updateBD[i]['codepostal']+')');
			//debug +='On est dans updateFinalBD ('+updateBD+')<br />';
			// On interroge la page distante
			var xhr = getXhr()
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr.readyState == 4 && xhr.status == 200){
					document.getElementById('retour_ajax').innerHTML = "<h1>Réponse : </h1>"+reponse;
						reponse = xhr.responseText;
						//alert('Retour :\n'+reponse);
						//alert(reponse);
						villes_coord_trouves = new Array();
						villes_coord_trouves = JSON.parse(reponse);
						//alert("Longueur du tableau : ["+villes_coord_trouves.villes.length+"]");
						valC = '';aRetirer = new Array();
						for(i=0;i<villes_coord_trouves.villes.length;i++)
						{
							x = villes_coord_trouves.villes[i];
							if(x['erreur']=='true') { valC += ' '+x['nomVille']+','; aRetirer.push(x['insee']); }
							//else alert('Ville trouvée | '+x['erreur']+' Position ValC'+valC);
						}
						if(valC!='') setSelectCompInfos("La/les ville(s) suivante(s) n'ont pas pu être localisées : <strong>"+valC+"</strong> sélectionnez la commune la plus proche",aRetirer);
					}
				}

				xhr.open("POST","ajax.php5",true);

				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

				var chaine = array2json(updateBD);

				//alert('Chaine :'+chaine);



				xhr.send("action=updateCoord&chaine="+chaine);

				//alert('Fonction updateFinalBD fin');
		//}
	}
}

/**
 *
 * @access public
 * @return void
 **/
function setSelectCompInfos(val,tab)
{

	document.getElementById('infosCompSelect').innerHTML=val;
}

/**
 *
 * @access public
 * @return void
 **/
function trouverVilleSurInsee(insee)
{
	o=0;
	while(o<villes_coord_trouves.villes.length)
	{
		if(villes_coord_trouves.villes[o].insee == insee) return villes_coord_trouves.villes[o].gps;
		o++;
	}
	return false;
}

/**
 *
 * @access public
 * @return void
 **/
function clearPostal(){
document.getElementById('laville').innerHTML = "";
		document.getElementById('lecode').innerHTML = "<input type='text' name='codepostal' id='codepostal' OnChange='getVillesFromCP();' />";
}

/**
 *
 * @access public
 * @return void
 **/
function selectCity(a)
{
	
	if(typeof(a)=='undefined')
	{
	vale = document.getElementById('choixVille');
	val = vale.options[vale.selectedIndex].value;

	}
	else {val = a;	spl = val.split('|');//alert(val);
	document.getElementById('lecode').innerHTML = "<strong>"+spl[3]+"</strong> <a href='javascript:clearPostal();'>X<a/>";}
	//alert(val);
	if(val!=0)
	{
		coord='';
		spl = val.split('|');
			// Si on a les bonnes coordonnées enregistrées
		if(spl[2]!='') coord = spl[2];
			// Sinon on va chercher dans le tableau des valeurs trouvées
		else {if (trouverVilleSurInsee(spl[1])) {coord = trouverVilleSurInsee(spl[1]); //alert("On trouve : "+coord);
		}
			 else {coord='1';//alert("On trouve : rien");
			 }}
		document.getElementById('laville').innerHTML = "<strong>"+stripslashes(spl[0])+" ("+stripslashes(spl[4])+")"+"</strong><input type='hidden' value='"+coord+"' name='gps' id='gps' /><input type='hidden' value='"+spl[1]+"' name='inseea' id='inseea' /><input type='hidden' value='"+codepostal+"' name='choixVille2' id='choixVille2' /><input type='hidden' value=\""+addslashes(val)+"\" name='chaine_valeur' id='chaine_valeur' /><input type='hidden' value=\""+addslashes(spl[0])+"\" name='nomdelaville' id='nomdelaville' />";
	}
}

/**
 *
 * @access public
 * @return void
 **/
function afficherLesVilles(villes)
{
	//alert('LA');
	// On construit un select liste à partir des données JSon

	//alert('Taille : '+villes.villes.length);
	updateBD = '';
	etat_avancement=false;

	// Un seul résultat
	if(villes.villes.length==1)
	{
		//alert('Une seule ville trouvée\n'+villes.villes[0].nomVille);
		coord='';
		if(villes.villes[0].coordonnees!='') coord = villes.villes[0].coordonnees;
		else {coord = trouverVilleSurInsee(villes.villes[0].codeInsee); }
		chaine = villes.villes[0].nomVille+'|'+villes.villes[0].codeInsee+'|'+villes.villes[0].coordonnees+'|'+document.getElementById('codepostal').value+'|'+villes.villes[0].nom;
		document.getElementById('laville').innerHTML = "<strong>"+stripslashes(villes.villes[0].nomVille)+" ("+stripslashes(villes.villes[0].nom)+")"+"</strong><input type='hidden' value='"+coord+"' name='gps' id='gps' /><input type='hidden' value='"+villes.villes[0].codeInsee+"' name='inseea' id='inseea' /><input type='hidden' value=\""+addslashes(chaine)+"\" name='chaine_valeur' id='chaine_valeur' />";
		document.getElementById('lecode').innerHTML = "<strong>"+document.getElementById('codepostal').value+"</strong> <a href='javascript:clearPostal();'>X<a/><input type='hidden' value='"+codepostal+"' name='choixVille2' id='choixVille2' /><input type='hidden' value=\""+addslashes(villes.villes[0].nomVille)+"\" name='nomdelaville' id='nomdelaville' />";
	}
	else
	{
		// Pas de ville trouvée
		if(villes.villes.length==0)
		{
			document.getElementById('laville').innerHTML = "<span style='color:red;font-weight:bold;'>Aucune ville trouvée, vérifiez le code postal</strong>";

		}

		// Plusieurs correspondances
		else
		{
		document.getElementById('lecode').innerHTML = "<strong>"+document.getElementById('codepostal').value+"</strong> <a href='javascript:clearPostal();'>X<a/>";

			string = "<select name='choixVille' id='choixVille' OnChange='selectCity();'>";
			string += '<option value="'+codepostal+'">- Sélectionnez votre ville ('+villes.villes.length+' résultats) -</option>\n';

			var updateBD=new Array();
			var cptupdateBD=0;

			for(i=0;i<villes.villes.length;i++)
			{
				ville_courante = villes.villes[i];

				debug += 'On arrive sur la ville de '+villes.villes[i].nomVille+'<br />';

				//alert('ici avant');

				// On crée une chaine qui mettra à jour la BD
				if(villes.villes[i].coordonnees=='')
				{
					debug += '> Ville de "'+villes.villes[i].nomVille+'" sans coordonnées<br />';
					vv = new Array();
					vv['nomVille'] = villes.villes[i].nomVille;
					vv['insee'] = villes.villes[i].codeInsee;
					vv['codepostal'] = villes.villes[i].codePostal;
					updateBD[cptupdateBD] = vv;
					cptupdateBD=cptupdateBD+1;
				}

				// Dans le cas où les coordonnées ne sont pas trouvées
				chaine = villes.villes[i].nomVille+'|'+villes.villes[i].codeInsee+'|'+villes.villes[i].coordonnees+'|'+villes.villes[i].codePostal+'|'+villes.villes[i].nom;
				string += '<option value="'+chaine+'">'+villes.villes[i].nomVille+'</option>\n';

				//etat_avancement = (i==villes.villes.length);
			}
			string += '</select><div id="infosCompSelect"></div>';

			debug +='On affiche les villes dans le select <br />';

			document.getElementById('laville').innerHTML = string;


			//alert('ici après');
			//if(etat_avancement)
			//wait(30);
			updateFinalBD(updateBD);

			debug +='On lance la mise à jour de la BD <br />';
		}

		document.getElementById('debugZ').innerHTML = debug;
	}


	//alert('Chaine générée :\n'+string);
}


function getVillesFromCP(f)
{
	// On récupère le CP
	//cp_champ = document.getElementById('codepostal');
	cp_champ = CodePostal;
	cp = cp_champ;
	if (document.getElementById('codepostal') && document.getElementById('codepostal').value!=null)
	{
		cp = document.getElementById('codepostal').value;
	}
	else
	{
		cp = CodePostal;
	}
	//codepostal = cp;

	if(cp.length==5)
	{
			// On interroge la page distante
			var xhr = getXhr()
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr.readyState == 4 && xhr.status == 200){


						//alert('ici getVillesFromCP');
						reponse = xhr.responseText;

					/*	document.getElementById('retour_ajax').innerHTML = reponse;*/

						//alert(reponse);

						var myObject = JSON.parse(reponse);

						//alert(reponse);

						afficherLesVilles(myObject);
					}
				}

				xhr.open("POST","ajax.php5",true);

				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

				xhr.send("action=codepostal&cp="+cp);
	}
}


