			/* La carte */
			var map;
			var carte_largeur = 500;
			var carte_hauteur = 500;
						
			/* L'objet qui permet de transformer une adresse en points géolocalisés */
			var geocoder;
			var geosearch;
			var myweather;
			
			/* Les coordonnées calculées de l'entreprise */
			var localisation_entreprise;
			var localisation_from;
			
			/* L'objet qui permet de calculer des itinéraires */
			var myiti;
			var sanscarbu = false;
			var couleur_itineraire = "#00FFFF";
			
			/* L'identifiant des balises div dans lesquelles on affiche les résultats */
			var itidiv_id = "youritidiv";
			var poidiv_id = "yourpoidiv";
			var mapdiv_id = "yourmapdiv";
			
			function initialise_adresse_et_carte(){
				/* Création d'un outil transformant une adresse en point géographique */
	 			geocoder = new VMGeocoder();
	 			
	 			/* Création d'un objet adresse */
 	 			var myaddress = new VMAddress();
	 			myaddress.address = entreprise_adresse;
	 			myaddress.zipCode = entreprise_cp;
	 			myaddress.city = entreprise_ville;
	 			myaddress.countryVMCode = entreprise_pays;
	 			
	 			// console.log(myaddress);
	
				/* Quelle méthode sera appelée lorsque le géocoder répondra */
 	 			geocoder.addEventHandler("onCallBack", initialise_carte);
 	 			
 	 			/* Lancement de la recherche */
	 			geocoder.search(myaddress);
			}
			
			/* Initialisation de la carte */
			function initialise_carte(){
			 	/* Création de l'objet carte, centrage, on considère que le géocoder ne va pas détecter d'ambüiguité sur l'adresse initiale de l'entreprise */
				map = new VMMap(document.getElementById(mapdiv_id));
				localisation_entreprise = geocoder.result;
				
				/* Redimensionnement de la taille de la carte */
				/*
				map.addEventHandler("onCallBack", function(){
					//map.resizeTo(carte_largeur, carte_hauteur);
				}
				);
				*/

				/* Dessin effectif de la carte */
				map.drawMap(localisation_entreprise, 12);
				
				/* Permet d'ajouter les outils cartographiques de navigation */
				map.showMapTools();

				var image = new VMIcon(entreprise_logo,-12,-12);
				var coucheImage = new VMIconLayer(localisation_entreprise, image, entreprise_logo_texte);
				map.addLayer(coucheImage);
			}
			
			function load_country(){
				VMCountryUtil.addEventHandler("onCallBack",function(){
					document.getElementById("div_country").innerHTML = VMCountryUtil.getSelectHTMLString("country","FRA");
				});
				VMCountryUtil.loadCountryLabels();
			}
			
			function lance_itineraire(){
				myiti = new VMItinerary();
				
				/* Récupération des informations données par l'utilisateur */
				var from_adresse = document.getElementById("adresse").value;
				var from_cp = document.getElementById("cp").value;
				var from_ville = document.getElementById("ville").value;
				var from_pays = document.getElementById("country").value;
				
				/* Création d'un objet adresse */
 	 			var myaddress = new VMAddress();
 	 			
 	 			/* Alimentation de l'adresse */
	 			myaddress.address = from_adresse;
	 			myaddress.zipCode = from_cp;
	 			myaddress.city = from_ville;
	 			myaddress.countryVMCode = from_pays;
	
				geosearch = new VMGeoSearch();
	
				/* Quelle méthode sera appelée lorsque le geosearch répondra */
				geosearch.addEventHandler("onCallBack",calcul_from);
				
 	 			/* Lancement de la recherche */
				geosearch.search(myaddress);
			}
			
			function calcul_from(){
				if(geosearch.results.length==1){
					localisation_from = geosearch.results[0].coords;
					document.getElementById("maybeone").style.display = "none";
					document.getElementById("maybetwo").style.display = "none";
					ajout_etapes_itineraire();
				} else {
					for (var i=document.forms['iti_form'].elements['result_reco'].options.length;i>=0;i--){
						document.forms['iti_form'].elements['result_reco'].options[i] = null;
					}
					for (var j=0;j<geosearch.results.length;j++){
						document.forms['iti_form'].elements['result_reco'].options[j] = new Option(geosearch.results[j].VMAmbiguityLine,j);
					}
					document.getElementById("maybeone").style.display = "block";
					document.getElementById("maybetwo").style.display = "block";
				}
			}
			
			function selectionner(){
				var index = document.forms['iti_form'].elements['result_reco'].selectedIndex;
				localisation_from = geosearch.results[index].coords;
				ajout_etapes_itineraire();
				document.getElementById("maybeone").style.display = "none";		
				document.getElementById("maybetwo").style.display = "none";
			}
			
			/* La communication javascript est asynchrone, la function d'itinéraire est donc composée de plusieurs fonctions */
			function ajout_etapes_itineraire(){
				/* Provenance */
				myiti.addStopOver(localisation_from);
				
				/* Destination */
				myiti.addStopOver(localisation_entreprise);
				
				var form = document.getElementById("iti_form").elements;
				/* Type d'itinéraire */
				for(var i=0; i<form.itinaryType.length; i++){
					if(form.itinaryType[i].checked){
						myiti.setItineraryType(form.itinaryType[i].value);
						if(form.itinaryType[i].value==5 || form.itinaryType[i].value==6){
							sanscarbu = true;
						}
					}
				}
				if(sanscarbu){
					for(var i=0; i<form.itineraryVehicleType.length; i++){
						if(form.itineraryVehicleType[i].checked){
							myiti.setItineraryVehicleType(form.itineraryVehicleType[i].value);
						}
					}
					if(myiti.itineraryVehicleType==0){
						for(var i=0; i<form.carType.length; i++){
							if(form.carType[i].checked){
								myiti.setCarType(form.carType[i].value);
							}
						}
					}
					for(var i=0; i<form.fuelType.length; i++){
						if(form.fuelType[i].checked){
							myiti.setFuelType(form.fuelType[i].value);
						}
					}
					myiti.setFuelCost(form.fuelCost.value);
				}
		
				/* Quelle méthode sera appelée lorsque l'itinéraire répondra */
				myiti.addEventHandler("onCallBack", fin_itineraire);
				
				/* Lancement de la recherche */
				myiti.search(); 
			}
			
			/* La communication javascript est asynchrone, la function d'itinéraire est donc composée de plusieurs fonctions */
			function fin_itineraire(){
				document.getElementById(mapdiv_id).innerHTML = "";
				
				/* Création d'une nouvelle carte - Ajout du tracé de l'itinéraire sur la carte et en texte */
				map = new VMMap(document.getElementById(mapdiv_id));
				map.addLayer(myiti.getItiAsVMComplexLayer(couleur_itineraire,7,0.5));
				map.drawMapFromLayers();
				map.showMapTools();
				var html = myiti.roadSheet.getHTML();

				document.getElementById(itidiv_id).innerHTML = html;
				
				if(!sanscarbu){
					document.getElementById("cout_carbu").innerHTML = myiti.getTotalGasConsumption();
				} else {
					document.getElementById("cout_carbu").innerHTML = 0;
				}
				document.getElementById("km").innerHTML = (myiti.getTotalDistance())/1000;
			}
			
			/* Afficher / Cacher le résultat textuel de l'itinéraire pour voir facilement le résultat de la recherche d'hôtels */
			var itineraire_visible = true;
			function cacher_itineraire(){
				if(itineraire_visible){
					document.getElementById(itidiv_id).style.display="none";
					itineraire_visible = false;
				} else {
					document.getElementById(itidiv_id).style.display="block";
					itineraire_visible = true;
				}
			}
			
			var poiDefinition;
			var myPOIsearch;
			function lance_hotels(){
				poiDefinition = new VMPOIDefinition();
				
				poiDefinition.addEventHandler("onCallBack", recherche_hotels);
				
				poiDefinition.getHotelsDefiniton();
			}
			
			function recherche_hotels(){
				myPOIsearch = new VMPOISearch(poiDefinition);
				myPOIsearch.addEventHandler("onCallBack", reponse_hotels);
				myPOIsearch.searchHotels(localisation_entreprise);
			}
			
			function reponse_hotels(){
				if (myPOIsearch.result.VMPOIs.length > 0){
	 				myPOIlist = myPOIsearch.result;
					myPOIlistlayer = myPOIlist.getLayer();
				 	map.addLayer(myPOIlistlayer);
				 	document.getElementById(poidiv_id).innerHTML = myPOIlist.getHTML();
				 } else {
	 				document.getElementById(poidiv_id).innerHTML = "Aucun hôtel";
	 			 }
			}
			
			/* Afficher / Cacher le résultat textuel de la recherche d'hôtels */
			var hotels_visible = true;
			function cacher_hotels(){
				var poidiv = document.getElementById(poidiv_id);
				if(hotels_visible){
					poidiv.style.display="none";
					hotels_visible = false;
				} else {
					poidiv.style.display="block";
					hotels_visible = true;
				}
			}
			function export_function()
	{
		myexport = new VMExportAsXVM();
		myexport.exportXVM(localisation_entreprise,"export_file");
	}
	
		function meteo(){
			myweather = new VMWeatherSearch();
			myweather.searchCoords = localisation_entreprise;
			myweather.addEventHandler("onCallBack", meteo_display);
			myweather.getTodayWeather();
		}
		
		function meteo_ligne_entete(isToday){
			var str = "<tr>"
						+ "<th>Date</th>"
						+ "<th>Ensoleillement</th>";
			if(!isToday){
				str	+= "<th>Température minimale</th>"
					+ "<th>Température maximale</th>"; 
			} else {
				str+= "<th>Température mesurée</th>"  
				+ "<th>Vent</th>"
				+ "<th>Humidité</th>"
				+ "<th>Visibilité</th>";
			}
			str+= "</tr>";
			return str;					
		}
		
		function meteo_create(meteo_result, isToday){
			var str =
				"<tr>"
					+ "<td>" + meteo_result.dayOfReport + "</td>"
					+ "<td> <img src='"+meteo_result.image+"' alt='"+meteo_result.imageLabel+"'/></td>";
			if (!isToday) {
				str+= "<td>" + meteo_result.temperatureMinInfo+"°C </td>"
					+ "<td>" + meteo_result.temperatureMaxInfo+"°C </td>";
			} else {
				str+= "<td>" + meteo_result.temperatureMesured+"°C </td>" 
					+ "<td>" + meteo_result.windDirectionInfo +" "+ meteo_result.windSpeedInfo+"km/h</td>"
					+ "<td>" + meteo_result.humidityInfo+"%</td>"  
					+ "<td>" + meteo_result.visibilityInfo+"m" + "</td>";
			}
			str+="</tr>";
			return str; 
		}
		
		function meteo_display(){
			var str = "<table style=\"width:600px;\" border=\"1\">"
						+ meteo_ligne_entete(true)
						+ meteo_create(myweather.result.todayWeather, true)
						+ "<caption>Station météo : "+ myweather.result.weatherStation
						+ "</caption>"
					+ "</table>";				
			document.getElementById("yourmeteodiv").innerHTML = str;
		}
		
		function meteo_demain(){
			myweather = new VMWeatherSearch();
			myweather.searchCoords = localisation_entreprise;
			myweather.addEventHandler("onCallBack",meteo_demain_display);
			myweather.getForecastWeather();
		}
		
		function meteo_demain_display(){
			var str = "<table style=\"width:500px;\" border=\"1\">"
						+ meteo_ligne_entete(false);
			for(var i=0; i<myweather.result.forecasts.length; i++){
						str+= meteo_create(myweather.result.forecasts[i], false);
			}
			str 		+="<caption>Station météo : "+ myweather.result.weatherStation
						+ "</caption>"
					+ "</table>";				
			document.getElementById("yourmeteodiv").innerHTML = str;
		}
