       
	var map;
	var geocoder;			
	var j = 1;
	   

	function getXhr(){
                var xhr = null; 
		if(window.XMLHttpRequest) // Firefox et autres
			xhr = new XMLHttpRequest(); 
		else if(window.ActiveXObject){ // Internet Explorer 
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		else { // XMLHttpRequest non supporté par le navigateur 
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
			xhr = false; 
		}
		return xhr;
	}


	// Node cleaner
	function goclean(c){
		if(!c.data.replace(/\s/g,''))
			c.parentNode.removeChild(c);
	}


	function clean(d){
		var bal=d.getElementsByTagName('*');

		for(i=0;i<bal.length;i++){
			a=bal[i].previousSibling;
			if(a && a.nodeType==3)
				goclean(a);
			
			b=bal[i].nextSibling;
			if(b && b.nodeType==3)
				goclean(b);
		}
		return d;
	}


	function go(){

	
		//recuperation de la ville saisie dans le formulaire
		var laville = document.getElementById('ville').value;
		//generation du XML avec les nouvelles villes
		genere_villes();
		
		//generation du XML avec les nouveaux biens
		genere_annonces_bas(laville);
		
	}


	// Fonction permettant de générer le fichier XML des villes ou il y a au moins un bien associe, d'en regenerer le tableau javascript utilise pour la carte puis de placer
	// les nouveau curseur
	function genere_villes(){

		var xhr = getXhr();

		var tableauVille = new Array();
		var uneVille = new Array();

		var i;

		// 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){
				reponse = clean(xhr.responseXML.documentElement);
				i = 0;

				while(i <= ((reponse.childNodes.length/4)-1)){
					var uneVille = new Array();                        
					uneVille['px'] = reponse.getElementsByTagName('latitude')[i].firstChild.nodeValue;
					uneVille['py'] = reponse.getElementsByTagName('longitude')[i].firstChild.nodeValue;
					uneVille['ville'] = reponse.getElementsByTagName('ville')[i].firstChild.nodeValue;
					uneVille['mandat'] = reponse.getElementsByTagName('mandat')[i].firstChild.nodeValue;
					tableauVille[i] = uneVille;
					i++;
				}
				
				//une fois les villes recuperees, on lance la generation de la map
				genere_carte(tableauVille);				
			}
		}

		// Ici on va voir comment faire du post
		xhr.open("POST","genere_xml.php",true);
		// ne pas oublier
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		
		//recuperation des donnees presentes dans le moteur de recherche
		var infos = get_infos_moteur();
		
		xhr.send("budget_mini="+infos["budget_mini"]+"&budget_maxi="+infos["budget_maxi"]+"&type="+infos["type"]+"&surface_mini="+infos["surface_mini"]+"&surface_maxi="+infos["surface_maxi"]+"&nb_pieces_tab="+infos["nb_pieces"]+"&categorie="+infos["categorie"]+"&ville="+infos["ville"]+"&rayon="+infos["rayon"]+"&affichage=carte_villes");

	}
	
	/* fonction permettant de mettre les marqueurs des biens sur la carte google*/
	function genere_carte(tableauVille) {

		if (GBrowserIsCompatible()) {
			var map = new GMap(document.getElementById("cartegoogle"));
			map.addControl(new GLargeMapControl());
			map.centerAndZoom(new GPoint(centre_x, centre_y), zoom);
			map.enableScrollWheelZoom();
			map.addControl(new GMenuMapTypeControl());

			function createIcon(taille,mandat){
				var icon = new GIcon();
				var demi = taille;

				if (mandat == "E")
					icon.image = "images/markersimplexclu.png";
				else
					icon.image = "images/markersimple.png";
					
				icon.iconSize = new GSize(taille, taille);
				icon.iconAnchor = new GPoint(demi, demi);
				icon.infoWindowAnchor = new GPoint(13, 15);
				return icon;
			}

			function createMarker(point, texte, taille, mandat){
				if (taille == -1){
					var marker = new GMarker(point);
				}
				else{
					var marker = new GMarker(point, createIcon(taille,mandat));
				}
				GEvent.addListener(marker, "click", function(){
					marker.openInfoWindowHtml(texte);
				});
				return marker;
			}

			var i = 0;
			while(i < tableauVille.length){
				var laville = new Array();
				laville = tableauVille[i];
				var a1 = new GPoint(laville["py"],laville["px"]);
					
				if(laville["mandat"] > 1)
					var id1 = createMarker(a1, "<div class='marqueur'>Pour afficher les "+laville["mandat"]+" biens présents sur <b>'"+laville["ville"]+"'</b><br /> dans la liste située sous la carte : <br /> <a href=\'javascript:genere_annonces_bas(\""+laville['ville']+"\")'> >> Cliquez ici</a></div>", 32, laville["mandat"]);
				else
					var id1 = createMarker(a1, "<div class='marqueur'>Pour afficher le bien présent sur <b>'"+laville["ville"]+"'</b><br /> dans la liste située sous la carte : <br /> <a href=\'javascript:genere_annonces_bas(\""+laville['ville']+"\")'> >> Cliquez ici</a></div>", 32, laville["mandat"]);
					
				map.addOverlay(id1);
				i++;
			}
		}
	}



	// Fonction permettant de générer le fichier XML des annonces associees a la localisation passee en parametrens, d'en regenerer le tableau javascript utilise pour la liste 
	//placee sous la carte googlemaps puis de mettre en focus le premier bien
	function genere_annonces_bas(laville){
		
		
		var xhr = getXhr();
                var tableauVille = new Array();
                var i;
                indice = 1;
		
		// 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){
				reponse = clean(xhr.responseXML.documentElement);
				i = 0;

				while(i <= ((reponse.childNodes.length/6)-1)){

					
					var uneAnnonce = new Array();                        
					uneAnnonce['id'] = reponse.getElementsByTagName('id')[i].firstChild.nodeValue;
					uneAnnonce['ville'] = reponse.getElementsByTagName('ville')[i].firstChild.nodeValue;
					uneAnnonce['bien'] = reponse.getElementsByTagName('bien')[i].firstChild.nodeValue;
					uneAnnonce['prix'] = reponse.getElementsByTagName('prix')[i].firstChild.nodeValue;
					uneAnnonce['descriptif'] = reponse.getElementsByTagName('descriptif')[i].firstChild.nodeValue;
					uneAnnonce['photo'] = reponse.getElementsByTagName('photo')[i].firstChild.nodeValue;
					uneAnnonce['titre'] = uneAnnonce["ville"]+"<span> - "+uneAnnonce["bien"]+" - "+uneAnnonce["prix"]+"</span>";
					tableauVille[i] = uneAnnonce;
					i++;
				}
				uneAnnonce = tableauVille[0];
				lesannonces = tableauVille;
				defilAnnonce(-1);
				
				//On affiche le nom de la ville dans le formulaire gauche et on reinitalise le rayon
				document.getElementById('ville').value = laville;
				document.getElementById('rayon').value = "";
				document.getElementById('lesannonces').style.visibility = "visible";

				document.getElementById("nb_annonces").style.visibility = "none";
				if(tableauVille.length > 0){
					if(tableauVille.length == 1)
						document.getElementById("nb_annonces").innerHTML="1 bien trouvé - 1/1";
					else
						document.getElementById("nb_annonces").innerHTML=tableauVille.length+" biens trouvés - "+(indice+1)+"/"+tableauVille.length;
					
					document.getElementById("nb_annonces").style.visibility = "visible";
				}
			}
		}

		// Ici on va voir comment faire du post
		xhr.open("POST","genere_xml.php",true);
		// ne pas oublier ça pour le post
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

		//recuperation des donnees presentes dans le moteur de recherche
		var infos = get_infos_moteur();
		
		// ne pas oublier de poster les arguments
		xhr.send("budget_mini="+infos["budget_mini"]+"&budget_maxi="+infos["budget_maxi"]+"&type="+infos["type"]+"&surface_mini="+infos["surface_mini"]+"&surface_maxi="+infos["surface_maxi"]+"&nb_pieces_tab="+infos["nb_pieces"]+"&categorie="+infos["categorie"]+"&ville="+infos["ville"]+"&rayon="+infos["rayon"]+"&ville="+laville+"&affichage=annonces_bas");

	}
	
	
	function defilAnnonce(increment){

				var lannonce = new Array();
				var nb_biens = lesannonces.length;
					
				if (nb_biens >= 1){
					indice = indice + increment;
					

					if(indice >= nb_biens)
						indice = 0;

					if(indice < 0)
						indice = nb_biens-1;

					var lannonce = lesannonces[indice];

					document.getElementById("defilimg").src = lannonce["photo"]
					document.getElementById("defil-titre").innerHTML = lannonce["titre"];
					document.getElementById("defil-descr").innerHTML = lannonce["descriptif"];
					document.getElementById("defil-lien").href = "annonce.php?id="+lannonce["id"];
					document.getElementById("defillienimg").href = "annonce.php?id="+lannonce["id"];
					document.getElementById("letext").style.display = "inline";
					document.getElementById("defillienimg").style.display = "inline";
					document.getElementById("annonceprec").style.display = "inline";
					document.getElementById("annoncesuiv").style.display = "inline";
					document.getElementById("aucune").style.display = "none";

					if(nb_biens == 1)
						document.getElementById("nb_annonces").innerHTML="1 bien trouvé - 1/1";
					else
						document.getElementById("nb_annonces").innerHTML=nb_biens+" biens trouvés - "+(indice+1)+"/"+nb_biens;
					

				}else{
					document.getElementById("letext").style.display = "none";
					document.getElementById("defillienimg").style.display = "none";
					document.getElementById("annonceprec").style.display = "none";
					document.getElementById("annoncesuiv").style.display = "none";
					document.getElementById("aucune").style.display = "block";
				}
				
			}


	function get_infos_moteur(){
	
		var infos = Array();
		var title = "";

		// ne pas oublier de poster les arguments
		if (document.getElementById('categorie2').checked == true){
			categorie = "location";
			title = "LOUER";
		}
		else{
			categorie = "vente";
			title = "ACHETER";
		}
		
		if(ensemble != "entreprise")
			title += " <span>UN BIEN</span>";
		else
			title += " <span>UN COMMERCE OU UNE ENTREPRISE</span>";
		
		document.getElementById("titre").innerHTML = title;
		
		budget_mini =  document.getElementById('budgetmini').value;
		budget_maxi =  document.getElementById('budgetmaxi').value;
		surface_mini =  document.getElementById('surfacemini').value;
		surface_maxi =  document.getElementById('surfacemaxi').value;

		var nb_pieces = new Array();
		var ipiece = 0;
		while (ipiece < 5){
			if(document.getElementsByName('nb_pieces_tab[]')[ipiece].checked == true)
				nb_pieces[ipiece] = document.getElementsByName('nb_pieces_tab[]')[ipiece].value;
			else
				nb_pieces[ipiece] = "";
			ipiece++;
		}

		ville = document.getElementById('ville').value;
		rayon = document.getElementById('rayon').value;
		type = document.getElementById('type').options[document.getElementById('type').selectedIndex].value;
	
		var infos = {"categorie": categorie, "budget_mini": budget_mini, "budget_maxi": budget_maxi, "surface_mini": surface_mini, "surface_maxi": surface_maxi, "nb_pieces": nb_pieces, "ville": ville, "rayon": rayon, "type": type};
	
		return infos
	
	}
	
	