      var map;
      var gdir;
      var geocoder = null;
      var addressMarker;
	function handleNoFlash(errorCode) 
	{
		if (errorCode == 603) 
		{
			alert("Avertissement : Flash n'est pas supporté par votre navigateur");
			return;
		}
	}
    function showAddress(address) 
	{
		if (geocoder) 
		{
			geocoder.getLatLng( address,
			function(point) 
			{
				if (!point) 
				{
					var CopieAddress=address;
					if (CompterMot(CopieAddress)>2)
					{
						CopieAddress=SupprimerPremierMot(CopieAddress);
						document.getElementById('toAddress').value=CopieAddress;
						showAddress(CopieAddress);		
					}
					return(false);
				}
				else 
				{
					map.setCenter(point, 13);
					var marker = new GMarker(point);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(address);
					// STREET VIEW ***
					var myPano = new GStreetviewPanorama(document.getElementById("pano"));
					locat = point;
					myPOV = {yaw:0,pitch:5,zoom:0};
					myPano.setLocationAndPOV(locat, myPOV);
					GEvent.addListener(myPano, "error", handleNoFlash);


					return(true);
				}
			});
		}
    }
	function CompterMot(chaine) 
	{
		var exp=new RegExp("[a-zA-Z0-9éèêëàáâäóòôöíìîïçÉÈÊËÀÁÂÄÒÓÔÖÌÍÎÏÇ-]+","g");
		var nb_mot;
		var tabNom=chaine.match(exp);
		if (tabNom==null) return(0);
		else return(tabNom.length);
	}
	function SupprimerPremierMot(chaine)
	{
	    var tableau = chaine.split(" ");  // Le séparateur choisi est l'espace blanc
		var nouvelleChaine='';
		for (var i=1; i<tableau.length; i++) 
		{
			nouvelleChaine+=tableau[i]+' ';
		}
		return(nouvelleChaine);
	}
	function initialize()
	{
		if (GBrowserIsCompatible())
		{      
			map = new GMap2(document.getElementById("map_canvas"));
			gdir = new GDirections(map, document.getElementById("directions"));
			GEvent.addListener(gdir, "load", onGDirectionsLoad); <!-- Charge la partie pour les distances -->
			GEvent.addListener(gdir, "error", handleErrors); <!-- Charge la partie pour les messages d erreurs -->
			map.setCenter(new GLatLng(46.98025, 3.66943), 6);
			map.addControl(new GMapTypeControl());
			map.addControl(new GLargeMapControl());
			map.addControl(new GOverviewMapControl());
			map.addControl(new GScaleControl());
			map.enableScrollWheelZoom();
			geocoder = new GClientGeocoder();
			
		}
	}
	function setDirections(fromAddress, fromPays, toAddress, locale)
	{
		gdir.load("from: " + fromAddress + " " + fromPays + " to: " + toAddress, { "locale": locale });
	}
	function handleErrors()
	{
		if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
			alert("Aucune location géographique correspondante n'a pu être trouvée pour l'une des adresses spécifiées.\nCe qui peut être du à une adresse récente, ou incorrecte.\nN'oubliez pas d'ajouter dans l'adresse le pays (en anglais).\nError code: " + gdir.getStatus().code);
		else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
		alert("La demande d'itinéraire n'a pu être calculée avec succès, aucune raison de l'échec n'est connu.\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_GEO_BAD_KEY)
		alert("La clé (Key) n'est pas valide ou ne correspond pas au nom de domaine. \n Error code: " + gdir.getStatus().code);
		else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
		alert("La demande d'itinéraire n'a pu être correctement parsé.\n Error code: " + gdir.getStatus().code);
		else alert("Une erreur inconnue est survenue.");
		}
		function onGDirectionsLoad()
		{
		var reg=new RegExp("&nbsp;", "g");
		kilometrage = gdir.getDistance().html;
		document.getElementById("km").value = kilometrage.replace(reg,' ');
		}
