 //Modifs du 08/07/2010

//declaration des variables
var altitude = new Array();
var AltMax=0;
var AltMin=0;
var point = new Array();
var points = new Array();
var denivele = new Array();  
var totalDistance = 0;
var distance = 0;
var tableaudistance = new Array();
var DistanceTotale = 0;
var temps = 0;
var tempshr = 0;
var tempssec = 0;
var tempsmin = 0;
var tempsheure = 0;
var VitesseMoyenne = 0;
var TempKilometremin = 0;
var TempKilometresec = 0;
var coordinates = new Array();
var coordinateslat = new Array();
var coordinateslong = new Array();
var map;
var geocoder;
var marker = null;
var start_marker = null;
var end_marker= null;
var totaledistancetopo=0;
var deniveletotal=0;
var poid=0;
var vo2max=0;
var vma=0;
var montee=0;
var descente=0;
var monteefeet=0;
var descentefeet=0;
var deniveletotalfeet=0;
var altarrivefeet=0;
var altarrive=0;
var AltMaxFeet=0;
var	AltMinFeet=0;
var parcours=0;
var phpcoordinates="";
var phpaltitude="";
var diffalt=0;
var altdepart=0; 
var diffaltfeet=0;
var altdepartfeet=0; 
var DistanceTotaleAfficheKm=0;
var DistanceTotaleAffichemiles="";
var denivelemax=0;
var denivelemini=0;
var denivelemoyen=0;
var clickedPixel;
var pointprecedant;
var w;
var y; 
var z;
var ajout=0;
var pointrightclik;
var pointajout;
var startIcon;
var endIcon;
var polyline="";
var kmbalise=0;
var milebalise=0; 
var km="";
var kmmarker="";	
var pointkm="";
var pointData=""; 
var icon="";
var lissage=0;
var espace = 0;
var phpdistance;
var calories;
var poly="red";
var GraphMetricValue=true;
var ChekAltitude=0;
var info_bulle=0;
var undo=0;
var GPSExportName="My Route";

// Create a new instance of PolylineEncoder  
var polylineEncoder = new PolylineEncoder();

//google maps
google.load("maps", "2.s");  

//fonction chargée avec la page
function initialisation() {

	if (GBrowserIsCompatible()) { 	
	
		function ZoomControl() {}
		        ZoomControl.prototype = new GControl();
		        ZoomControl.prototype.initialize = function(map) {
		          var container = document.createElement("div");
		
		          var zoomInDiv = document.createElement("div");
		          this.setButtonStyle_(zoomInDiv);
		          container.appendChild(zoomInDiv);
		          zoomInDiv.appendChild(document.createTextNode("Zoom In"));
		          zoomInDiv.innerHTML = '<img src="./images/zoomplus.jpg">'; 
		          GEvent.addDomListener(zoomInDiv, "click", function() {
		            map.zoomIn();
		          });
		
		          var zoomOutDiv = document.createElement("div");
		          this.setButtonStyle_(zoomOutDiv);
		          container.appendChild(zoomOutDiv);
		          zoomOutDiv.innerHTML = '<img src="./images/zoommoins.jpg">'; 
		          GEvent.addDomListener(zoomOutDiv, "click", function() {
		            map.zoomOut();
		          });
		
		          map.getContainer().appendChild(container);
		          return container;
		        }
		
		        ZoomControl.prototype.getDefaultPosition = function() {
		          return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(5, 5));
		        }
		
		      ZoomControl.prototype.setButtonStyle_ = function(button) {
		        button.style.cursor = "pointer";
				button.style.padding = "2px";
		      }
		
		      function PanUpControl() {}
		      PanUpControl.prototype = new GControl();
		      PanUpControl.prototype.initialize = function(map) {
		        var container = document.createElement("div");
		
		        var panUp = document.createElement("div");
		        this.setButtonStyle_(panUp);
		        container.appendChild(panUp);
		        panUp.innerHTML = '<img src="./images/flecheshaut.jpg">'; 
		        GEvent.addDomListener(panUp, "click", function() {
		          map.panDirection(0,1);
		        });
		
		        map.getContainer().appendChild(container);
		        return container;
		      }
		
		      PanUpControl.prototype.getDefaultPosition = function() {
		        return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(map.getSize().width/2-16, 0));
		      }
		
		      PanUpControl.prototype.setButtonStyle_ = function(button) {
		        button.style.cursor = "pointer";
		      }
		
		      function PanDownControl() {}
		      	PanDownControl.prototype = new GControl();
		      	PanDownControl.prototype.initialize = function(map) {
		        var container = document.createElement("div");
		
		        var panDown = document.createElement("div");
		        this.setButtonStyle_(panDown);
		        container.appendChild(panDown);
		        panDown.innerHTML = '<img src="./images/flechesbas.jpg">'; 
		        GEvent.addDomListener(panDown, "click", function() {
		          map.panDirection(0,-1);
		        });
		
		        map.getContainer().appendChild(container);
		        return container;
		      }
		
		      PanDownControl.prototype.getDefaultPosition = function() {
		        return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(map.getSize().width/2-16, 0));
		      }
		
		      PanDownControl.prototype.setButtonStyle_ = function(button) {
		        button.style.cursor = "pointer";
		      }
		
		      function PanRightControl() {}
		     	PanRightControl.prototype = new GControl();
		      	PanRightControl.prototype.initialize = function(map) {
		        var container = document.createElement("div");
		
		        var panRight = document.createElement("div");
		        this.setButtonStyle_(panRight);
		        container.appendChild(panRight);
		        panRight.innerHTML = '<img src="./images/flechesdroit.jpg">'; 
		        GEvent.addDomListener(panRight, "click", function() {
		        map.panDirection(-1,0);
		      });
		
		        map.getContainer().appendChild(container);
		        return container;
		      }
		
		      PanRightControl.prototype.getDefaultPosition = function() {
		        return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, map.getSize().height/2-16));
		      }
		
		      PanRightControl.prototype.setButtonStyle_ = function(button) {
		        button.style.cursor = "pointer";
		      }
		
		      function PanLeftControl() {}
		      PanLeftControl.prototype = new GControl();
		      PanLeftControl.prototype.initialize = function(map) {
		        var container = document.createElement("div");
		
		        var panLeft = document.createElement("div");
		        this.setButtonStyle_(panLeft);
		        container.appendChild(panLeft);
		        panLeft.innerHTML = '<img src="./images/flechesgauche.jpg">'; 
		        GEvent.addDomListener(panLeft, "click", function() {
		          map.panDirection(1,0);
		        });
		
		        map.getContainer().appendChild(container);
		        return container;
		      }
		
		      PanLeftControl.prototype.getDefaultPosition = function() {
		        return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(0, map.getSize().height/2-16));
		      }
		
		      PanLeftControl.prototype.setButtonStyle_ = function(button) {
		        button.style.cursor = "pointer";
		      }
	  
			
			function CustomMapControl() {}
	        	CustomMapControl.prototype = new GControl();
	        	CustomMapControl.prototype.initialize = function(map) {
	         	var container = document.createElement("div");
	 
	          	var CustomMapPlan = document.createElement("div");
	         	this.setButtonStyle_(CustomMapPlan);
	         	container.appendChild(CustomMapPlan);	
			  	CustomMapPlan.innerHTML ='Map';
	          	GEvent.addDomListener(CustomMapPlan, "click", function() {
	            map.setMapType(G_NORMAL_MAP);
				});	
				
				var CustomMapHybrid = document.createElement("div");
	          	this.setButtonStyle_(CustomMapHybrid);
	          	container.appendChild(CustomMapHybrid); 
			  	CustomMapHybrid.innerHTML ='Hybrid';
	          	GEvent.addDomListener(CustomMapHybrid, "click", function() {
	            map.setMapType(G_HYBRID_MAP);
	          	});
	 
	          	var CustomMapSatellite = document.createElement("div");
	         	this.setButtonStyle_(CustomMapSatellite);
	          	container.appendChild(CustomMapSatellite); 
			  	CustomMapSatellite.innerHTML ='Satellite';
	          	GEvent.addDomListener(CustomMapSatellite, "click", function() {
	            map.setMapType(G_SATELLITE_MAP);
	          	});
	 
	          	var CustomMapRelief = document.createElement("div");
	          	this.setButtonStyle_(CustomMapRelief);
	          	container.appendChild(CustomMapRelief); 
			  	CustomMapRelief.innerHTML ='Relief';
	          	GEvent.addDomListener(CustomMapRelief, "click", function() {
	            map.setMapType(G_PHYSICAL_MAP);
	          	});
	 
	          	map.getContainer().appendChild(container);
	          	return container;
			}
	 
	        CustomMapControl.prototype.getDefaultPosition = function() {
				return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(15, 15));
	        }
	 
	  		CustomMapControl.prototype.setButtonStyle_ = function(button) {
				button.style.color = "white";
				button.style.backgroundColor = "#aeaed0";
				button.style.border = "2px solid #757493";
				button.style.padding = "2px";
				button.style.marginBottom = "3px";
				button.style.textAlign = "center";
				button.style.width = "55px";
				button.style.height= "14px";
				button.style.cursor = "pointer";
			}	 
			
			map = new google.maps.Map2(document.getElementById("map"),{draggableCursor: 'crosshair', draggingCursor: 'pointer'});
	   		map.setCenter(new GLatLng( 40.756814951767126,-73.98648262023926), 13);
			new GKeyboardHandler(map); // Clavier
			map.enableScrollWheelZoom();//zoom molette souris
			map.disableDoubleClickZoom();
			map.enableContinuousZoom();
			map.setMapType(G_NORMAL_MAP);
			map.addControl(new CustomMapControl());//Type de carte 
			map.addControl(new GOverviewMapControl());//Apercu general
			map.addControl(new ZoomControl());
	        map.addControl(new PanUpControl());
	        map.addControl(new PanDownControl());
	        map.addControl(new PanRightControl());
	        map.addControl(new PanLeftControl()); 
	
	   		geocoder = new GClientGeocoder();
			afficherdistance();
			coordonnee();
			
			if (address) {
				if (parcours==0){
					TrouverAdresse(address); 
				}
			}
			else{
				address="New York City, USA";
			}
			afficheradresse();
	}  
//fonction chargées avec la page	
	CalculVitesse(tempshr,tempsmin,tempssec);
	CalculCalories(poid);
	CalculTemps(1);
	Calculvo2max(tempsmin,tempssec);
	
//icones
	startIcon = new GIcon(G_DEFAULT_ICON);
	startIcon.image = "http://maps.google.com/mapfiles/dd-start.png";
 	startIcon.iconAnchor = new GPoint(10, 34);
	startIcon.shadow = ""; 

	endIcon = new GIcon(G_DEFAULT_ICON);
	endIcon.image = "http://maps.google.com/mapfiles/dd-end.png";
	endIcon.iconSize = new GSize(13, 22);
	endIcon.iconAnchor = new GPoint(7, 22);
	endIcon.shadow = ""; 
}
				 
//Affichage des polylines a l'impression
function DelGmnoprint() {
var sd = document.getElementsByTagName('svg');
	var n = 0 ;
	while (n < sd.length) {
		if (sd[n].parentNode.className == 'gmnoprint') {
       		sd[n].parentNode.className = '';
    	} 
		n++
	}
}  

//balises
function balise(km){
	kmbalise=km;
	if(points.length>1){
		dessiner1();
		afficherdistance();
	}
} 

function balisemile(mile){
	milebalise=mile;
	if(points.length>1){
		dessiner1();
		afficherdistance();
	}
} 
// fin balises

//couleurpoly

function couleurpoly(color){
	poly=color;	
	if(points.length>1){
		dessiner1();
		afficherdistance();
	}
}

//fin couleurpoly

//lissage topographie 
function lissagetopo(metre){
	lissage=metre;
} 
// fin lissage topographie	

//espace topographie 
function espacetopo(metre){
	espace=metre;
} 
// fin espace topographie

//*********************************** Geocoder *************************************************

//Geocoder
function TrouverAdresse(address) {
	CuisinerCookie("geocoder",address,60);
  	geocoder.getLatLng(
    address,
	
    	function(point) {
		
      		if (!point) {
        		alert("Dont find : " + address + ".");
      		}
				
			else {
       				map.setCenter(point, 13);
					var contenu_marker="<br /><span class='address'>"+ address + "<br /><br />It's here !</span>";
					map.openInfoWindowHtml( point, contenu_marker);
			}
    	}
		
  	);
	
} 

//affiche l'adress dans le formulaire du geocoder
function afficheradresse() {
	var valueaddress = address;
	document.getElementById("address").value = valueaddress;
}	

//*********************** Cookie *********************************************
//ecrie un cookie avec l'adresse saisie dans le formulaire de geocoder
function CuisinerCookie(nom,valeur,jours,domain) {
	var date = new Date();
	date.setTime(date.getTime()+(jours*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = nom+"="+escape(valeur)+expires;
}

//lire le cookie
function MangerCookie(nom) {
	var deb = document.cookie.indexOf(nom + "=")
	
	if (deb >= 0) {
		deb += nom.length + 1;
		var fin = document.cookie.indexOf(";",deb);
		
		if (fin < 0) {
			fin = document.cookie.length;
			return unescape(document.cookie.substring(deb,fin));
		}
	}
	return"";	
} 
//*********************** Fin cookie*********************************************

//*********************************** Fin Geocoder *************************************************
	
//enregitre un clic de souris sur la carte	
function coordonnee(){
	
	GEvent.addListener(map, "click", function(overlay,point) {
		if (point){	
			info_bulle=0;
			ChekAltitude=0;
			undo=points.length;
			coordinates[ coordinates.length ] = [ point.lat(), point.lng() ];
			coordinateslat[coordinates.length] = point.lat();
			coordinateslong[coordinates.length] = point.lng();
			afficherdistance();
			map.panTo(point);
			points.push(point);
	
			if(points.length == 1) {
				afficherdistance();
				distance=0;
				tableaudistance.push(distance);
			}
		
			if (points.length>1){
				distance=points[points.length-2].distanceFrom(point); 
				tableaudistance.push(distance);
			}
	
			dessiner1();
			afficherdistance();
		}
	});	

//click droit de la souris => suivre les routes
  GEvent.addListener(map,"singlerightclick",function(pixel,tile) {
    clickedPixel = pixel;
	ChekAltitude=0;
	info_bulle=0;
    pointrightclik = map.fromContainerPixelToLatLng(clickedPixel);
		if (pointrightclik){
			undo=points.length;
			direction();
		}
	});
}

function direction(){	
	var route;
	if(points.length==0){
		pointajout=pointrightclik;
		distance=0;
		tableaudistance.push(distance);
		ajout_polyline(); 
	}
	if(points.length >= 1){	
		var tableau_polyline=new Array(points[points.length-1],pointrightclik);
		var gdir=new GDirections(null,document.getElementById("vide"));
		gdir.loadFromWaypoints(tableau_polyline,{getSteps:false,preserveViewport:true,avoidHighways:true,getPolyline:true,travelMode:G_TRAVEL_MODE_WALKING});
		GEvent.addListener(gdir, 'load', function() {
			var p = gdir.getPolyline();
			var vertex=p.getVertexCount();
			w=0;
			while(w<=vertex){
				if (w<vertex){
					pointajout=p.getVertex(w);
					ajout_polyline();
				}
				if (w==vertex){
					map.panTo(pointrightclik);
					dessiner1();
					afficherdistance();	
				}
				w=w+1;       
			} 
		}); 
	}	
}

//1 point du parcours pour complement
function ajout_polyline(){

	if (pointajout){
	  if (marker){										  
			map.clearOverlays();
		}

		coordinates[ coordinates.length ] = [ pointajout.lat(), pointajout.lng() ];
		coordinateslat[coordinates.length] = pointajout.lat();
		coordinateslong[coordinates.length] = pointajout.lng();
		points.push(pointajout);
	
		if(points.length == 1) { 
			distance=0;
			tableaudistance.push(distance);
		}
		pointprecedant = points.length - 1;
		if (points.length>1){
			distance=points[points.length-2].distanceFrom(pointajout);	
			tableaudistance.push(distance);
		}
	
	}
}
//click droit de la souris => suivre les routes fin

//1 point du parcours enregistre
function coordonnee_enregistre(lat,lng){
	//parcours=1;
	pointeng=new GLatLng(parseFloat(lat),parseFloat(lng));										  
		coordinates[ coordinates.length ] = [ pointeng.lat(), pointeng.lng() ];
		coordinateslat[coordinates.length] = pointeng.lat();
		coordinateslong[coordinates.length] = pointeng.lng();
		points.push(pointeng); 
	
		if(points.length == 1) {
			map.setCenter(pointeng, 12);
			distance=0;
			tableaudistance.push(distance);
		}
		
		pointprecedant = points.length - 1;
		if (points.length>1){
			distance=points[points.length-2].distanceFrom(pointeng);
			tableaudistance.push(distance);
		}
} 

//************************************************** Altitude *****************************************

/*
// this function will be called by our JSON callback
// the parameter jData will contain an array with geonames objects
function getaltitude(jData) {
	if (jData == null) {
		// There was a problem parsing search results
		return;
	}

	var alt = '';
	var srtm3 = jData.srtm3;
	altitude[altitude.length] =srtm3;
}

function altitudepoint() {
	var pointprecedant = coordinateslat.length -1;
	request = 'http://ws.geonames.org/srtm3JSON?lat='+coordinateslat[pointprecedant]+'&lng='+coordinateslong[pointprecedant]+'&callback=getaltitude';
	// Create a new script object
	// (implementation of this class is in /export/jsr_class.js)
	aObj = new JSONscriptRequest(request);
	// Build the script tag
	aObj.buildScriptTag();
	// Execute (add) the script tag
	aObj.addScriptTag();
} 
*/

//************************************************** Fin altitude ************************************

//dessine les polylines
function dessiner1(){
	map.clearOverlays();
	if (points.length>=0){
		start_marker = new GMarker(points[0], {title:"départ", icon:startIcon});
		map.addOverlay(start_marker);
		if (parcours==1){
			info_bulle=1;
			var contenu_marker = '<div id="marker">';
			contenu_marker +='<span class="address">'; 
			contenu_marker +='<strong>';
			contenu_marker +=nomparcours;
			contenu_marker +='</strong><br />Created by : <strong>';
			contenu_marker +=pseudo;
			contenu_marker +='</strong><br />Departure city : <strong>';
			contenu_marker +=commune;
			contenu_marker +='</strong><br />Type of sport : <strong>';
			contenu_marker +=departement;				
			contenu_marker +='</strong>&nbsp;|&nbsp;Country : <strong>';
			contenu_marker +=pays;
			contenu_marker +='<br /><br /><strong>Click the button "Altitude" before calculate the topography.</strong>';
			contenu_marker +='<br /><input type="button" value="Altitude" onclick="GetAltitude3()" id="topo3" class="valider" onmouseover="rollover_bouton_topo3();" onmouseout="rollout_bouton_topo3();" onfocus="this.blur();" />&nbsp;<input type="button" value="Topography" onclick="Graph()" id="toposimple" class="valider" onmouseover="rollover_bouton_toposimple();" onmouseout="rollout_bouton_toposimple();" onfocus="this.blur();" />';
			contenu_marker +='<br /><span id="AfficheEtatAltitude2"></span>';			
//			contenu_marker +='<br /><input type="button" value="Topography" onclick="Graph(),Calculdistancetopo(),ancre()" id="toposimple" class="valider" onmouseover="rollover_bouton_toposimple();" onmouseout="rollout_bouton_toposimple();" onfocus="this.blur();" />';
			contenu_marker +='</strong><br />Direct link to this route :<br />http://www.sportdistancecalculator.com/?id=';
			contenu_marker +=id;
			contenu_marker +='#map</span>';
			contenu_marker +='</div>';				
			contenu_marker +='';
			var tab = new GInfoWindowTab ("Details",contenu_marker);
			var contenu_marker2 = '<div id="marker">';
			contenu_marker2 +='<span class="address">'; 
			contenu_marker2 +='<br /><strong>Commentary by creator :</strong><br />';
			contenu_marker2 +=commentaire;			
			contenu_marker2 +='<br /><br /><a href="../comment.php?id=';
			contenu_marker2 +=id;
			contenu_marker2 +='">View and leave messages</a><br /><a class="info" href="#">(Display last messages)<span>';
			contenu_marker2 +=commentaireintenaute;
			contenu_marker2 +='</span></a><br />There is <span class="couleur">'; 
			contenu_marker2 +=nb_messages
			contenu_marker2 +='</span> message(s).</span>';
			contenu_marker2 +='</div>';				
			contenu_marker2 +='';		
			var tab2 = new GInfoWindowTab ("Comments",contenu_marker2);
			
			var contenu_marker3='<div style="text-align:center">';
			contenu_marker3 +='<span class="address"><strong>Feel free to share this route:</strong>';
			contenu_marker3 +='<br />http://www.sportdistancecalculator.com/?id=';
			contenu_marker3 +=id;
			contenu_marker3 +='#map</span><br />';
			
			contenu_marker3 +='<table style="margin-left:auto;margin-right:auto;width:355px;"><tr><td>';
			
			contenu_marker3 +='<a href="http://twitter.com/home?status=My sport route: http://www.sportdistancecalculator.com/index.php?id=';
			contenu_marker3 +=id;
			contenu_marker3 +='" title="Share this route on twitter" target="_blank"><img src="images/twitter-rond.jpg" alt="Twitter Sport distance calculator" /></a><br /><a href="http://twitter.com/home?status=My sport route: http://www.sportdistancecalculator.com/index.php?id=';
			contenu_marker3 +=id;
			contenu_marker3 +='" title="Share this route on twitter" target="_blank">Share this route on Twitter</a>';
			
			contenu_marker3 +='</td><td>';
			
			contenu_marker3 +='<script type="text/javascript"><!--mce:2--></script><style><!--mce:4--></style><a class="fb_share_link" onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=http://www.sportdistancecalculator.com/index.php?id=';
			contenu_marker3 +=id;
			contenu_marker3 +='#map" target="_blank"><img src="images/facebook.jpg" alt="Facebook Sport distance calculator" /><br /><a class="fb_share_link" onclick="return fbs_click()" href="http://www.facebook.com/share.php?u=http://www.sportdistancecalculator.com/index.php?id=';
			contenu_marker3 +=id;
			contenu_marker3 +='#map" target="_blank">Share this route on Facebook</a></a>';
			
			contenu_marker3 +='</td></tr></table>';
			
			contenu_marker3 +='</div>';
			
			var tab3 = new GInfoWindowTab ("Share",contenu_marker3);
			
			var contenu_marker4='<div style="text-align:center">';
			contenu_marker4 +='<span class="address">';
			contenu_marker4 +='<strong>Click the button "Altitude" before export files.</strong>';
			contenu_marker4 +='<br /><input type="button" value="Altitude" onclick="GetAltitude3()" id="topo7" class="valider" onmouseover="rollover_bouton_topo7();" onmouseout="rollout_bouton_topo7();" onfocus="this.blur();" />';
			contenu_marker4 +='<br /><span id="AfficheEtatAltitude4"></span><br />';
			
			contenu_marker4 +='<table style="margin-left:auto;margin-right:auto;"><tr><td>';
			
			contenu_marker4 +='<form action="exportgpx.php" method="post">';
			contenu_marker4 +='<div>';
			contenu_marker4 +='<span id="formgpx2"></span>';
			contenu_marker4 +='<input type="submit"  value="GPX Export" onclick="javascript: return verif();" id="gpx2" class="valider" onmouseover="rollover_bouton_gpx2();" onmouseout="rollout_bouton_gpx2();" onfocus="this.blur();" />';
			contenu_marker4 +='</div>';
			contenu_marker4 +='</form>';
			
			contenu_marker4 +='</td><td>';
			
			contenu_marker4 +='<form action="exportcsv.php" method="post">';
			contenu_marker4 +='<div>';
			contenu_marker4 +='<span id="formcsv2"></span>';
			contenu_marker4 +='<input type="submit"  value="CSV Export" onclick="javascript: return verif();" id="csv2" class="valider" onmouseover="rollover_bouton_csv2();" onmouseout="rollout_bouton_csv2();" onfocus="this.blur();" />';
			contenu_marker4 +='</div>';
			contenu_marker4 +='</form>';
			
			contenu_marker4 +='</td></tr></table>';
			
			contenu_marker4 +='<form action="exportkml.php" method="post">';	
			contenu_marker4 +='<div>';
			contenu_marker4 +='<span id="formkml2"></span>';
			contenu_marker4 +='<input type="submit"  value="KML Export" onclick="javascript: return verif();" id="kml2" class="valider" onmouseover="rollover_bouton_kml2();" onmouseout="rollout_bouton_kml2();" onfocus="this.blur();" /><br />';
			contenu_marker4 +='<input type="radio" name="plat" checked="checked" value="0" onfocus="this.blur();"/>&nbsp;Flat route (KML)&nbsp;<input type="radio" name="plat" value="1" onfocus="this.blur();"/>&nbsp;Route with elevations (KML)&nbsp;';
			contenu_marker4 +='<br />';
            contenu_marker4 +='</div>';
            contenu_marker4 +='</form>';
			
			contenu_marker4 +='</div>';
			var tab4 = new GInfoWindowTab ("Export",contenu_marker4);
			
			
			tab_contenu_marker=new Array(tab,tab2,tab3,tab4);
			start_marker.openInfoWindowTabsHtml(tab_contenu_marker);
			GEvent.addListener(start_marker, 'click', function() {start_marker.openInfoWindowTabsHtml(tab_contenu_marker);});
			parcours=0;
		}
	} 
	if (points.length>1){
		end_marker = new GMarker(points[points.length-1], {title:"Arrivée", icon:endIcon});
		map.addOverlay(end_marker);
		polyline=polylineEncoder.dpEncodeToGPolyline(points,poly,2,1);
		map.addOverlay(polyline); 
		//km markers 
		if (kmbalise>0){
			var i=kmbalise;
			while(i<polyline.Distance()){
      			pointkm = polyline.GetPointAtDistance(i);
      			if (pointkm) { 
					z="<div id='baliseskilo'><strong>"+(i/1000)+"</strong></div>";
       				createMarker(pointkm);
      			} 
				i+=kmbalise;
   		 	}
		}
		if (milebalise>0){
			var i=milebalise;
			while(i<polyline.Distance()){
      			pointkm = polyline.GetPointAtDistance(i);
      			if (pointkm) { 
					z="<div id='baliseskilo'><strong>"+(i/1609)+"</strong></div>";
       				createMarkerMile(pointkm);
      			} 
				i+=milebalise;
   		 	} 
		}
		//fin km marker
	}  
	calculdistance();
	//DelGmnoprint();
}

//calcul la distance total et l'affiche
function calculdistance(){ 
	totalDistance = 0;
	var i=0;
	while(i<tableaudistance.length){
		totalDistance=totalDistance+tableaudistance[i];
		i++;
	} 
} 

//efface 1 point et polyline
function effacer(){
	if (points.length >=1){	
			if (points.length == 1){
        		touteffacer();
			   	return;
			}

			pointprecedant = points.length - 1;
			
			ChekAltitude=0;
			
			if(points.length>1){
				map.panTo(points[points.length-1]);
			}
	
			if (points.length == 1){
        		touteffacer();
			}
			
			if (points.length == 2){
        		map.removeOverlay(end_marker);	
				end_marker="";
			}
	
			points.pop();
			coordinates.pop();
			altitude.pop();
			
			if (tableaudistance.length>1){
				tableaudistance.pop();
			}
		
			distance = tableaudistance[tableaudistance.length-1];
			var i=0;
			totalDistance=0;
			while(i<tableaudistance.length){
				totalDistance=totalDistance+tableaudistance[i];
				i++;
			} 
			afficherdistance();
			dessiner1();
		}
		
}

//************************************** Confirm effacer tous les points *******************************************************

function delette_confirm(){
	if(confirm('Delete all points and clear the map?')){
		touteffacer();
	}
	else{ 
		return false;
	}
}

//************************************** Fin confirm effacer tous les points *******************************************************
	
//efface touts les points et polylines
function touteffacer(){
	if (points.length >1){
        map.panTo(points[0]);
	}
	ChekAltitude=0;
	map.removeOverlay(start_marker);
	map.removeOverlay(end_marker);
	map.clearOverlays();
	start_marker="";
	end_marker="";
	totalDistance = 0;
	distance = 0;
	z="";
	tableaudistance = new Array();
	coordinates = new Array();
	altitude = new Array();
	point = "";
	pointajout="";
	points = new Array();
	polyline = "";
	totaledistancetopo=0;
	deniveletotal=0;
	montee=0;
	descente=0; 
	diffalt=0;
	altdepart=0;	
	undo=0;
	afficherdistance();
			
}

//efface la derniere route calculée
function effacer_undo(){

	if (undo==0){	
		if (points.length >= 1){
        	touteffacer();
			return;
		}
	}
	else {
		if(points.length==undo){
			alert( 'You can delete only the last calculated route.\n Use the button: \'Delete the last point\'.' );
		}
		
		while (points.length>undo){
			pointprecedant = points.length - 1;
			
			ChekAltitude=0;
	
			if (points.length == 1){
        		touteffacer();
			}
			
			if (points.length == 2){
        		map.removeOverlay(end_marker);	
				end_marker="";
			}
	
			points.pop();
			coordinates.pop();
			altitude.pop();
			
			if (tableaudistance.length>1){
				tableaudistance.pop();
			}
		
			distance = tableaudistance[tableaudistance.length-1];
		}
		var i=0;
		totalDistance=0;
		while(i<tableaudistance.length){
			totalDistance=totalDistance+tableaudistance[i];
			i++;
		}
		map.panTo(points[points.length-1]);
		afficherdistance();
		dessiner1();
		undo=points.length;
	}
}

//**************** Inverion du parcours *********************************

function invertion(){
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	}	
	else{
		map.panTo(points[0]);
		ChekAltitude=0;
		points.reverse();
		altitude.reverse();
		coordinates.reverse();
		tableaudistance.shift();
		tableaudistance.push(0);
		tableaudistance.reverse(); 
		distance = tableaudistance[tableaudistance.length-1];
		afficherdistance();
		dessiner1();
	}
}

function ReturnBack(){
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	}
	else{
		map.panTo(points[0]);
		ChekAltitude=0;
		undo=points.length;
		var returnpoints=points.length;
	
		while(returnpoints>0){
			returnpoints=returnpoints-1;
			var pointadd=points[returnpoints];
			coordonnee_enregistre(pointadd.lat(), pointadd.lng() );
		
		}
	
		dessiner1();
	
		afficherdistance();
	}
}



//**************** Fin inverion du parcours *****************************

//**************** Fermer la boucle  *********************************
function FermerBoucle(){
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	}
	else{
		undo=points.length;
    	pointrightclik = points[0];
		if (pointrightclik){
			ChekAltitude=0;
			direction();
		}
	}
}

//**************** Fermer la boucle  *********************************

//************************************************** Altitude *****************************************


function GetAltitude(){
	if ( coordinates.length < 2 ){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	} 
	if (ChekAltitude==0){
		b=setInterval("GetAltitude2();",5000);
		altitude = new Array();
		var quadruples=new Array();
		var g=0;
		var z=points.length;
		while(g<=z){
			if (g<z){
				quadruples[g] = new Array(3);
				pointajout=points[g];
				quadruples[g][0]=pointajout.lat();
				quadruples[g][1]=pointajout.lng();
				quadruples[g][2]=function(elevation){altitude[altitude.length]=elevation;};
			}
			if (g==z){
				var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
				AfficheEtatAltitude.innerHTML = "<span class=\"couleur\">Downloading altitude data.</span>";	
				var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
				AfficheEtatAltitude3.innerHTML = "<span class=\"couleur\">Downloading altitude data.</span>";	
				ChekAltitude=1;
				topoGetAltitudes(quadruples,5000);
			}
			g=g+1;       
		} 
	}
} 

function GetAltitude2(){
	var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
	AfficheEtatAltitude.innerHTML = "<span class=\"couleur2\">Altitude data downloaded.</span>";	
	var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
	AfficheEtatAltitude3.innerHTML = "<span class=\"couleur2\">Altitude data downloaded.</span>";	
	alert( 'Altitude data downloaded.' );
	clearTimeout(b);
	exportxml();
}

function GetAltitude3(){
	if ( coordinates.length < 2 ){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	} 
	if (ChekAltitude==0){
		b=setInterval("GetAltitude4();",5000);
		altitude = new Array();
		var quadruples=new Array();
		var g=0;
		var z=points.length;
		while(g<=z){
			if (g<z){
				quadruples[g] = new Array(3);
				pointajout=points[g];
				quadruples[g][0]=pointajout.lat();
				quadruples[g][1]=pointajout.lng();
				quadruples[g][2]=function(elevation){altitude[altitude.length]=elevation;};
			}
			if (g==z){
				var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
				AfficheEtatAltitude.innerHTML = "<span class=\"couleur\">Downloading altitude data.</span>";	
				var AfficheEtatAltitude2 = document.getElementById("AfficheEtatAltitude2"); 
				AfficheEtatAltitude2.innerHTML = "<span class=\"couleur\">Downloading altitude data.</span>";	
				var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
				AfficheEtatAltitude3.innerHTML = "<span class=\"couleur\">Downloading altitude data.</span>";	
				var AfficheEtatAltitude4 = document.getElementById("AfficheEtatAltitude4");
				AfficheEtatAltitude4.innerHTML = "<span class=\"couleur\">Downloading altitude data.</span>";
				ChekAltitude=1;
				topoGetAltitudes(quadruples,5000);
			}
			g=g+1;       
		} 
	}
} 

function GetAltitude4(){
	var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
	AfficheEtatAltitude3.innerHTML = "<span class=\"couleur2\">Altitude data downloaded.</span>";	
	var AfficheEtatAltitude2 = document.getElementById("AfficheEtatAltitude2"); 
	AfficheEtatAltitude2.innerHTML = "<span class=\"couleur2\">Altitude data downloaded.</span>";	
	var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
	AfficheEtatAltitude.innerHTML = "<span class=\"couleur2\">Altitude data downloaded.</span>";
	var AfficheEtatAltitude4 = document.getElementById("AfficheEtatAltitude4"); 
	AfficheEtatAltitude4.innerHTML = "<span class=\"couleur2\">Altitude data downloaded.</span>";
	alert( 'Altitude data downloaded.' );
	clearTimeout(b);
	exportxml();
	
}

/*
// this function will be called by our JSON callback
// the parameter jData will contain an array with geonames objects
function getaltitude(jData) {
	if (jData == null) {
		// There was a problem parsing search results
		return;
	}

	var alt = '';
	var srtm3 = jData.srtm3;
	altitude[altitude.length] =srtm3;
}

function altitudepoint() {
	var pointprecedant = coordinateslat.length -1;
	request = 'http://ws.geonames.org/srtm3JSON?lat='+coordinateslat[pointprecedant]+'&lng='+coordinateslong[pointprecedant]+'&callback=getaltitude';
	// Create a new script object
	// (implementation of this class is in /export/jsr_class.js)
	aObj = new JSONscriptRequest(request);
	// Build the script tag
	aObj.buildScriptTag();
	// Execute (add) the script tag
	aObj.addScriptTag();
} 
*/

//************************************************** Fin altitude ************************************

//********************************************** Topolographie ***************************************

//distance corrigée en fonction de la topographie
 function distancetopographique(){
 	totaledistancetopo=0; 
	var i=1;
	var j;
	while(i<altitude.length){
		j=i-1;
		cote1 = altitude[i]-altitude[j];
		cote2 = Math.round(points[i].distanceFrom(points[j])*1000)/1000;
		hypotenusecarre = ((cote1*cote1)+(cote2*cote2));
		hypotenuse=Math.sqrt(hypotenusecarre);
		totaledistancetopo=totaledistancetopo + hypotenuse;	
		i++
	} 
}
//fin distance corrigée en fonction de la topographie

//calcul distance avec topo
function Calculdistancetopo(){
	deniveletotal=0;
	montee=0;
	descente=0;
	var lissagepositif=lissage;
	var lissagenegatif=-lissage;
	var i=1;
	var j;
	var z;
	var cote1;
	var cote2;
	var hypotenusecarre;
	var hypotenuse;
	var denivele_polyline="";
	map.clearOverlays();
	map.addOverlay(start_marker);
	map.addOverlay(end_marker);
	 
	while(i<altitude.length){
	
		j=i-1;
		z=j+1;
		var tableau_polyline=new Array();
		
		tableau_polyline.push(points[j]);
		
		var distancealt=points[i].distanceFrom(points[j]);

		tableau_polyline.push(points[i]);
		while(distancealt<espace){
			if(i<altitude.length-1){
				i++; 
				tableau_polyline.push(points[i]);
				distancealt=points[i].distanceFrom(points[j]);
			}
			if(i==altitude.length-1){
			  	distancealt=espace+1;
				//tableau_polyline.push(points[i]);	
			}
		}
		
		cote1 = altitude[i]-altitude[j]; 
		
		if ((cote1>=lissagenegatif) && (cote1<=lissagepositif)){  
			cote1=Math.abs(cote1);
			denivele_polyline=new GPolyline(tableau_polyline,'#0000ff',2,1);
			map.addOverlay(denivele_polyline);
		} 
		
		if (cote1 > lissagepositif){
			cote1=Math.abs(cote1);
			montee = montee + cote1; 
			denivele_polyline=new GPolyline(tableau_polyline,'red',2,1);
			map.addOverlay(denivele_polyline);		
		}
		if (cote1 < lissagenegatif){
			denivele_polyline=new GPolyline(tableau_polyline,'#057c05',2,1);
			map.addOverlay(denivele_polyline);		
		}
		i++;
	}

	AltMax = altitude[0]; 
	for (i=0; i<altitude.length; i++){
		if (altitude[i] > AltMax){
			AltMax = altitude[i];
		}
	}
	
	AltMin = altitude[0]; 
	for (y=0; y<altitude.length; y++){
		if (altitude[y] < AltMin){
			AltMin = altitude[y];
		}
	}	

	var o =altitude.length-1;
	diffalt=altitude[o]-altitude[0]; 
	descente=montee;
	descente=descente-diffalt;
	montee=Math.abs(montee);
	descente=Math.abs(descente);
	deniveletotal=montee+descente; 
	altdepart=altitude[0];
	altarrive=altitude[o];
	distancetopographique();
	
	deniveletotalfeet=Math.round(deniveletotal*3.281*100)/100;
	monteefeet=Math.round(montee*3.281*100)/100;
	descentefeet=Math.round(descente*3.281*100)/100;
	altdepartfeet=Math.round(altdepart*3.281*100)/100;
	diffaltfeet=Math.round(diffalt*3.281*100)/100;
	altarrivefeet=Math.round(altarrive*3.281*100)/100;
	AltMaxFeet=Math.round(AltMax*3.281*100)/100;
	AltMinFeet=Math.round(AltMinFeet*3.281*100)/100;
	
	var contenu_marker_topo = '<div id="marker">';
	contenu_marker_topo +='<span class="address">';
	contenu_marker_topo +='Start altitude:&nbsp;<span class="couleur">';
	contenu_marker_topo +=altdepart; 
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=altdepartfeet; 
	contenu_marker_topo +='</span>&nbsp;ft<br />';
	contenu_marker_topo +='End altitude:&nbsp;<span class="couleur">';
	contenu_marker_topo +=altarrive; 	
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=altarrivefeet; 
	contenu_marker_topo +='</span>&nbsp;ft<br />';
	contenu_marker_topo +='Difference between start and finish:&nbsp;<span class="couleur">';
	contenu_marker_topo +=diffalt; 
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=diffaltfeet; 
	contenu_marker_topo +='</span>&nbsp; ft<br /><br />';	
	contenu_marker_topo +='Altitude max:&nbsp;<span class="couleur">';
	contenu_marker_topo +=AltMax; 
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=AltMaxFeet; 
	contenu_marker_topo +='</span>&nbsp;ft&nbsp;|&nbsp;';	
	contenu_marker_topo +='Altitude mini:&nbsp;<span class="couleur">';	
	contenu_marker_topo +=AltMin; 	
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=AltMinFeet; 
	contenu_marker_topo +='</span>&nbsp;ft<br /><br />';		
	contenu_marker_topo +='Total elevation change:&nbsp;<span class="couleur">';
	contenu_marker_topo +=deniveletotal;
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=deniveletotalfeet;
	contenu_marker_topo +='</span>&nbsp; ft<br />';
	contenu_marker_topo +='Elevation change - : <span class="couleur2">';
	contenu_marker_topo +=descente;
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur2">';
	contenu_marker_topo +=descentefeet;
	contenu_marker_topo +='</span>&nbsp; ft (<span class="couleur2">green on the map</span>)<br />';
	contenu_marker_topo +='Elevation change + : <span class="couleur">';
	contenu_marker_topo +=montee;
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=monteefeet;
	contenu_marker_topo +='</span>&nbsp; ft (<span class="couleur">red on the map</span>)<br />';
	contenu_marker_topo +='<a href="#graph">Route profile</a><br />';
	contenu_marker_topo +='<input type="button" value="Elevation %" onclick="Graph(),Calculdistancetopodenivele(),ancre()" id="boutondenivele" class="valider" onmouseover="rollover_bouton_boutondenivele();" onmouseout="rollout_bouton_boutondenivele();" onfocus="this.blur();" />';
	contenu_marker_topo +='</div>';				
	contenu_marker_topo +='';
	var tab_topo = new GInfoWindowTab ("Topo",contenu_marker_topo);
	start_marker.openInfoWindowTabsHtml(new Array(tab_topo));
	afficherdistance();
}

//calcul distance avec topo et denivelée
function Calculdistancetopodenivele(){
	denivele = new Array(); 
	deniveletotal=0;
	montee=0;
	descente=0;
	i=1;
	var j;
	var z;
	var cote1;
	var cote2;
	var hypotenusecarre;
	var hypotenuse;	 
	var lissagepositif=lissage;
	var lissagenegatif=-lissage;	
	var denivele_polyline="";
	map.clearOverlays();
	map.addOverlay(start_marker);
	map.addOverlay(end_marker);	
	z=0;
	while(i<altitude.length){
		j=i-1;	
		var tableau_polyline=new Array();
		tableau_polyline.push(points[j]);
		
		var distancealt=points[i].distanceFrom(points[j]);

		tableau_polyline.push(points[i]);	
		
		while(distancealt<espace){
			if(i<altitude.length-1){
				i++; 
				tableau_polyline.push(points[i]);
				distancealt=points[i].distanceFrom(points[j]);
			}
			if(i==altitude.length-1){
			  	distancealt=espace+1;
				//tableau_polyline.push(points[i]);
			}
		}
		cote1 = altitude[i]-altitude[j];
		cote2=points[i].distanceFrom(points[j]);
		cote2=Math.round(cote2);
		if ((cote1>=lissagenegatif) && (cote1<=lissagepositif)){ 
			cote1=Math.abs(cote1);
			denivele[z]=0; 
			denivele_polyline=new GPolyline(tableau_polyline,'#747393',2,1);
			map.addOverlay(denivele_polyline);			
		}
		
		if (cote1 > lissagepositif){
			cote1=Math.abs(cote1);
			montee = montee + cote1;
			denivele[z]=((cote1*100)/cote2);
			if (denivele[z]<=5){
				denivele_polyline=new GPolyline(tableau_polyline,'#ffff00',2,1);
				map.addOverlay(denivele_polyline);			
			}
			if ((denivele[z]>5) && (denivele[z]<=10)){
				denivele_polyline=new GPolyline(tableau_polyline,'#ffcc00',2,1);
				map.addOverlay(denivele_polyline);				
			}
			if ((denivele[z]>10) && (denivele[z]<=20)){
				denivele_polyline=new GPolyline(tableau_polyline,'#ff6600',2,1);
				map.addOverlay(denivele_polyline);				
			}
			if (denivele[z]>20){ 
				denivele_polyline=new GPolyline(tableau_polyline,'#ff0000',2,1);
				map.addOverlay(denivele_polyline);				
			}
		}  
		
		if (cote1 < lissagenegatif){
			cote1=Math.abs(cote1);
			denivele[z]=((cote1*100)/cote2); 
			if (denivele[z]<=5){
				denivele_polyline=new GPolyline(tableau_polyline,'#00ffff',2,1);
				map.addOverlay(denivele_polyline);				
			}
			if ((denivele[z]>5) && (denivele[z]<=10)){
				denivele_polyline=new GPolyline(tableau_polyline,'##00ccff',2,1);
				map.addOverlay(denivele_polyline);				
			}
			if ((denivele[z]>10) && (denivele[z]<=20)){
				denivele_polyline=new GPolyline(tableau_polyline,'#3366ff',2,1);
				map.addOverlay(denivele_polyline);				
			}
			if (denivele[z]>20){
				denivele_polyline=new GPolyline(tableau_polyline,'#0000ff',2,1);
				map.addOverlay(denivele_polyline);				
			}
		} 
		z++;
		i++;
	} 
	
	//denivele max
	denivelemax=denivele[0];
	var i=1;
	while(i<denivele.length){
		if (denivelemax<denivele[i]){
			denivelemax=denivele[i];
		} 
		i++;
	}
	denivelemax=Math.round(denivelemax*100)/100;
		
	//denivele mini
	denivelemini=denivele[0];
	var i=1;
	while(i<denivele.length){
		if (denivelemini>denivele[i]){
			denivelemini=denivele[i];
		}
		i++;
	}
	denivelemini=Math.round(denivelemini*100)/100;
		
	//calcul denivele moyen
	var i=1;
	var totaldenivele=denivele[0];
	while(i<denivele.length){
		totaldenivele=totaldenivele+denivele[i];
		i++;
	}
	denivelemoyen=totaldenivele/denivele.length;
	denivelemoyen=Math.round(denivelemoyen*100)/100;
 
	var o =altitude.length-1;
	diffalt=altitude[o]-altitude[0]; 
	descente=montee;
	descente=descente-diffalt;
	montee=Math.abs(montee);
	descente=Math.abs(descente);
	deniveletotal=montee+descente; 
	altdepart=altitude[0];
	var contenu_marker_topo = '<div id="marker">';
	contenu_marker_topo +='<span class="address">';
	contenu_marker_topo +='Start altitude:&nbsp;<span class="couleur">';
	contenu_marker_topo +=altdepart; 
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=altdepartfeet; 
	contenu_marker_topo +='</span>&nbsp;ft<br />';
	contenu_marker_topo +='End altitude:&nbsp;<span class="couleur">';
	contenu_marker_topo +=altarrive; 	
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=altarrivefeet; 
	contenu_marker_topo +='</span>&nbsp;ft<br />';
	contenu_marker_topo +='Difference between start and finish:&nbsp;<span class="couleur">';
	contenu_marker_topo +=diffalt; 
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=diffaltfeet; 
	contenu_marker_topo +='</span>&nbsp; ft<br /><br />';	
	contenu_marker_topo +='Altitude max:&nbsp;<span class="couleur">';
	contenu_marker_topo +=AltMax; 
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=AltMaxFeet; 
	contenu_marker_topo +='</span>&nbsp;ft&nbsp;|&nbsp;';	
	contenu_marker_topo +='Altitude mini:&nbsp;<span class="couleur">';	
	contenu_marker_topo +=AltMin; 	
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=AltMinFeet; 
	contenu_marker_topo +='</span>&nbsp;ft<br /><br />';	
	contenu_marker_topo +='Elevation change + : <span class="couleur">';
	contenu_marker_topo +=montee;
	contenu_marker_topo +='</span>&nbsp; m / <span class="couleur">';
	contenu_marker_topo +=monteefeet;
	contenu_marker_topo +='</span>&nbsp; ft<br />';	
	contenu_marker_topo +='<a href="#graph">Route profile</a><br />';
	contenu_marker_topo +='<input type="button" value="Simple Topo" onclick="Graph(),Calculdistancetopo(),ancre()" id="toposimple" class="valider" onmouseover="rollover_bouton_toposimple();" onmouseout="rollout_bouton_toposimple();" onfocus="this.blur();" />';
	contenu_marker_topo +='</div>';				
	contenu_marker_topo +='';
	var tab_topo = new GInfoWindowTab ("Altitude",contenu_marker_topo);
	var contenu_marker_topo2 = '<div id="marker">';
	contenu_marker_topo2 +='<span class="address">';
	contenu_marker_topo2 +='<strong>Legend of lines color :</strong><br />';
	contenu_marker_topo2 +='<span class="couleur3">No elevation change=0%</span><br />';
	contenu_marker_topo2 +='<div id="denivelenegatif">';
	contenu_marker_topo2 +='<strong>Elevation change - :</strong><br />';
	contenu_marker_topo2 +='<span class="couleur21">0%&lt;Elevation change -&lt;=5%</span><br />'; 
	contenu_marker_topo2 +='<span class="couleur22">5%&lt;Elevation change -&lt;=10%</span><br />';
	contenu_marker_topo2 +='<span class="couleur23">10%&lt;Elevation change -&lt;=20%</span><br />';
	contenu_marker_topo2 +='<span class="couleur24">20%&lt;Elevation change -</span><br />';
	contenu_marker_topo2 +='</div>';
	contenu_marker_topo2 +='<div id="denivelepositif">'; 
	contenu_marker_topo2 +='<strong>Elevation change + :</strong><br />';
	contenu_marker_topo2 +='<span class="couleur11">0&lt;Elevation change +&lt;=5%</span><br />';
	contenu_marker_topo2 +='<span class="couleur12">5%&lt;Elevation change +&lt;=10%</span><br />';
	contenu_marker_topo2 +='<span class="couleur13">10%&lt;Elevation change +&lt;=20%</span><br />';
	contenu_marker_topo2 +='<span class="couleur14">20%&lt;Elevation change +</span>';
	contenu_marker_topo2 +='</div>';
	contenu_marker_topo2 +='<div>';
	contenu_marker_topo2 +='<br />';
	contenu_marker_topo2 +='</div>';
	contenu_marker_topo2 +='<div id="denivelemoyen"></strong>Elevation change maxi : <span class="couleur">';
	contenu_marker_topo2 +=	denivelemax; 
	contenu_marker_topo2 += '</span> %';
	contenu_marker_topo2 +='<br />Elevation change mini : <span class="couleur2">';
	contenu_marker_topo2 +=	denivelemini; 
	contenu_marker_topo2 += '</span> %';
	contenu_marker_topo2 +='<br />Averrage elevation change : <span class="couleur">';
	contenu_marker_topo2 +=	denivelemoyen; 
	contenu_marker_topo2 += '</span> %</div>';
	contenu_marker_topo2 +='</div>';				
	contenu_marker_topo2 +='';
	var tab_topo2 = new GInfoWindowTab ("Legend",contenu_marker_topo2);
	start_marker.openInfoWindowTabsHtml(new Array(tab_topo2,tab_topo));
	afficherdistance();
	
}

function GraphMetric(value){
	GraphMetricValue=value;	
	if (ChekAltitude==1){
		if(points.length>1){
			GraphSeul();
		}
	}
}

function GraphSeul() {
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	}
	//topoDrawGraph(document.getElementById("graph"),coordinates,900,260); 
	topoDrawGraph( document.getElementById("graph"), coordinates, 900, 260,GraphMetricValue);

}

//affiche le graphique de topologie
function Graph() {
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	}	
	if (ChekAltitude==0){
		alert( 'Click the button "Altitude" before calculate the topography.' );
		return false;
	}
	if (ChekAltitude==1){
		topoDrawGraph( document.getElementById("graph"), coordinates, 900, 260,GraphMetricValue);
		Calculdistancetopo();
		ancre();
	}
}

function Graph2() {
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	}	
	if (ChekAltitude==0){
		alert( 'Click the button "Altitude" before calculating the topography.' );
		return false;
	}
	if (ChekAltitude==1){
		topoDrawGraph( document.getElementById("graph"), coordinates, 900, 260,GraphMetricValue);
	}
}
	
function graph3() {
	if(points.length<1){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	} 
	//km markers 
	var topopointkmlat=new Array();
	var topopointkmlong=new Array();
	var kmpoint=totalDistance/45;
	var i=kmpoint;
	var z=0;
	while(i<polyline.Distance()){
    	var topopointkm = polyline.GetPointAtDistance(i);
		topopointkmlat[z]=topopointkm.lat();
		topopointkmlong[z]=topopointkm.lng();
		i+=kmpoint;
		z++;
   	} 
	//fin km marker 
	var i=0; 
	var graph='<img src="http://www.heywhatsthat.com/bin/profile.cgi?&axes=0&curvature=0&metric=1';
	while(i<topopointkmlat.length){
		graph+="&pt";
		graph+=i;
		graph+="=";
		graph+=topopointkmlat[i];
		graph+=","
		graph+=topopointkmlong[i]; 
		i++;
	} 
	graph+='&width=900&height=150">';
	var Affichegraph = document.getElementById("Affichegraph"); 
	Affichegraph.innerHTML = graph;
}

//********************************************** Fin Topolographie ***************************************
	
//calcul la vitesse en fonction du temps
function CalculVitesse(tempshr,tempsmin,tempssec) {
	tempshr=parseFloat(tempshr);
	tempsmin=parseFloat(tempsmin);
	tempssec=parseFloat(tempssec);

	if ((tempshr>=0) && (tempsmin>=0) && (tempsmin<60) && (tempssec>=0) && (tempssec<60)){
		temps=((tempshr*3600)+(tempsmin*60)+tempssec);
		if (temps >0) {
			VitesseMoyenne = Math.round((((totalDistance/temps)*3600)/1000)*100)/100;	
			TempKilometremin = Math.floor((3600/VitesseMoyenne)/60);
			TempKilometresec = Math.round((3600/VitesseMoyenne)%60);
			VitesseMoyenneMiles =  Math.round((VitesseMoyenne*0.621)*100)/100;
			TempKilometreminMiles = Math.floor((3600/VitesseMoyenneMiles)/60);
			TempKilometresecMiles = Math.round((3600/VitesseMoyenneMiles)%60);
		}
		else {
			VitesseMoyenne = 0;
			TempKilometremin = 0;
			TempKilometresec = 0;
			
			VitesseMoyenneMiles = 0;
			TempKilometreminMiles =0;
			TempKilometresecMiles = 0;
		}
	}
	
	else{
		alert(' The time in minutes must be a number ! \n  The time in seconds must be a number between 0 and 59 !');
	}
	
	var AfficheVitesseMoyenne = document.getElementById("AfficheVitesseMoyenne"); 
	AfficheVitesseMoyenne.innerHTML = VitesseMoyenne;

	var AfficheTempKilometremin = document.getElementById("AfficheTempKilometremin"); 
	AfficheTempKilometremin.innerHTML = TempKilometremin;

	var AfficheTempKilometresec = document.getElementById("AfficheTempKilometresec"); 
	AfficheTempKilometresec.innerHTML = TempKilometresec;
	
	var AfficheTempKilometreminMiles = document.getElementById("AfficheTempKilometreminMiles"); 
	AfficheTempKilometreminMiles.innerHTML = TempKilometreminMiles;

	var AfficheTempKilometresecMiles = document.getElementById("AfficheTempKilometresecMiles"); 
	AfficheTempKilometresecMiles.innerHTML = TempKilometresecMiles;
	
	var AfficheVitesseMoyenneMiles = document.getElementById("AfficheVitesseMoyenneMiles"); 
	AfficheVitesseMoyenneMiles.innerHTML = VitesseMoyenneMiles;

}  

//calcul du temps en fonction de la vitesse
function CalculTemps(vitesse) {	
	var vitesse=parseFloat(vitesse);
	var vitesseMetreSec=(vitesse*0.277777778);
	var vitesseMetreSecMiles=(vitesse*0.44704);
	var TempsParcoursSec;
	var TempsParcoursMin;
	var TempsParcoursHrs;
	var Tempsparcour;
	var TempsParcoursSecMiles;
	var TempsParcoursMinMiles;
	var TempsParcoursHrsMiles;
	var TempsparcourMiles;
	if (vitesse>0){
		if (points.length>2){
			Tempsparcour=Math.round((((totalDistance)/vitesseMetreSec))*100)/100;
			TempsParcoursHrs = Math.floor((Tempsparcour)/3600);
			TempsParcoursMin = Math.floor((Tempsparcour%3600)/60);
			TempsParcoursSec = Math.round((Tempsparcour%3600)%60);
		
			TempsparcourMiles=Math.round((((totalDistance)/vitesseMetreSecMiles))*100)/100;
			TempsParcoursHrsMiles = Math.floor((TempsparcourMiles)/3600);
			TempsParcoursMinMiles = Math.floor((TempsparcourMiles%3600)/60);
			TempsParcoursSecMiles = Math.round((TempsparcourMiles%3600)%60);
		}
		else {
			TempsParcoursHrs = 0;
			TempsParcoursMin = 0;
			TempsParcoursSec = 0;			
		
			TempsParcoursHrsMiles = 0;
			TempsParcoursMinMiles = 0;
			TempsParcoursSecMiles = 0;	
		}
	}
	else{
		alert('The average speed must be a number !');
	}
	
	if (document.forms.calcultemps.choix[0].checked){
		var AfficheTempsParcoursHrs = document.getElementById("AfficheTempsParcoursHrs"); 
		AfficheTempsParcoursHrs.innerHTML = TempsParcoursHrs;	

		var AfficheTempsParcoursMin = document.getElementById("AfficheTempsParcoursMin"); 
		AfficheTempsParcoursMin.innerHTML = TempsParcoursMin;

		var AfficheTempsParcoursSec = document.getElementById("AfficheTempsParcoursSec"); 
		AfficheTempsParcoursSec.innerHTML = TempsParcoursSec;
	}
	
	if (document.forms.calcultemps.choix[1].checked){
		var AfficheTempsParcoursHrs = document.getElementById("AfficheTempsParcoursHrs"); 
		AfficheTempsParcoursHrs.innerHTML = TempsParcoursHrsMiles;	

		var AfficheTempsParcoursMin = document.getElementById("AfficheTempsParcoursMin"); 
		AfficheTempsParcoursMin.innerHTML = TempsParcoursMinMiles;

		var AfficheTempsParcoursSec = document.getElementById("AfficheTempsParcoursSec"); 
		AfficheTempsParcoursSec.innerHTML = TempsParcoursSecMiles;
	}	
}

//export un fichier au format gpx
function exportxml() {
		phpcoordinates = coordinates.join(";");	
		phpaltitude = altitude.join(";");
		phpdistance=tableaudistance.join(";");
}

//export Print
function exportprint() {
		phpcoordinates = coordinates.join(";");	
}

// sauvegarde parcours
function sauvegarde() {
	if ( coordinates.length < 1 ){
		alert( 'Please add 1 points on the map before.' );
	}
	else {
		if (points.length != altitude.length){
			alert(" Please wait a few seconds while downloading the point altitude data! ");
			sauvegarde();
		}
		else {
		var phpcoordinates = coordinates.join(";");	
		var phpaltitude = altitude.join(";");
		document.location.href = 'http://www.sportdistancecalculator.com/save.php?tab_coordinates='+phpcoordinates+'&tab_altitude='+phpaltitude;
		}
	}
	
} 

// rechercher parcours
function rechercher() {	
	document.location.href = 'http://www.sportdistancecalculator.com/search.php';
}

// import parcours
function importfile() {	
	document.location.href = 'http://www.sportdistancecalculator.com/importfile.php';
}


//**************************** Autres calculs ***********************************************

//calcul depense calorie
function CalculCalories(){
	calories=0;
	
	var ratio = 0;
	if (document.forms.calorie.choix[0].checked){
		ratio=1.036;
	}
	if (document.forms.calorie.choix[1].checked){
		ratio=0.444;
	}
	if (document.forms.calorie.choix[2].checked){
		ratio=0.685;
	}
	poid=document.forms.calorie.poid.value;	
	poid=parseFloat(poid);
	
	if (document.forms.calorie.poidunite[0].checked){
		poid=poid*0.45359237;
	}
	
	if (totaledistancetopo){
		calories=Math.round(totaledistancetopo/1000) * poid * ratio;
	}
	else{
		calories=Math.round(totalDistance/1000) * poid * ratio;
	}
	var Affichecalories = document.getElementById("Affichecalories"); 
	Affichecalories.innerHTML = Math.round(calories);
	
	prog();
}

//calcul Vo2max
function Calculvo2max(tempsmin,tempssec){
	if(tempsmin==0 && tempssec==0){
		var Affichevo2max = document.getElementById("Affichevo2max"); 
		Affichevo2max.innerHTML = Math.round(vo2max*100)/100;
		var Affichevma = document.getElementById("Affichevma"); 
		Affichevma.innerHTML = Math.round(vma*100)/100;
	}
	else{
		tempsmin=parseFloat(tempsmin);
		tempssec=parseFloat(tempssec);
		if ((tempsmin>=0) && (tempssec>=0) && (tempssec<60)){
			temps=((tempsmin*60)+tempssec);
			if (temps >0) {
				if (totaledistancetopo){
					VitesseMoyenne = totaledistancetopo/temps;
					var tempsenmin=temps/60;
					if (totaledistancetopo>=1000){
						if ((totaledistancetopo>=5000) || (tempsenmin>=10)){
							vo2max = (totaledistancetopo + (30*tempsenmin)) / (5*tempsenmin);
							vma = vo2max/3.5;
						}
						else{
							vo2max = (totaledistancetopo + (30*tempsenmin)) / ((5*tempsenmin)+5);
							vma = vo2max/3.5;
						}
					}
					else{
						alert(' The distance must be greater than 1000 meters! ');
					}
				}
				else{
					VitesseMoyenne = totalDistance/temps;
					var tempsenmin=Math.floor(temps/60)+((temps%60)/100);
					if (totalDistance>=1000){
						if ((totalDistance>=5000) || (tempsenmin>=10)){
							vo2max = (totalDistance + (30*tempsenmin)) / (5*tempsenmin);
							vma = vo2max/3.5;
						}
						else{
							vo2max = (totalDistance + (30*tempsenmin)) / ((5*tempsenmin)+5);
							vma = vo2max/3.5;
						}
					}
					else{
						alert(' The distance must be greater than 1000 meters! ');
					}
				}
			}
			else {
				VitesseMoyenne = 0;
			}
		}
	
		else{
			alert(' The time in minutes must be a number! \n  The time in seconds must be a number between 0 and 59!');
		}
	
		var Affichevo2max = document.getElementById("Affichevo2max"); 
		Affichevo2max.innerHTML = Math.round(vo2max*100)/100;
		var Affichevma = document.getElementById("Affichevma"); 
		Affichevma.innerHTML = Math.round(vma*100)/100;
	}
}


//**************************** Fin Autres calculs ***********************************************



//************************** Affichange des resultats***************************************

//fonction affiche des resultats		
function afficherdistance(){
	var distanceAffiche = Math.round(distance*10)/10;
	var DistanceTotaleAfficheMetre = Math.round(totalDistance*10)/10;
	DistanceTotaleAfficheKm = Math.round((totalDistance/1000)*100)/100;
	DistanceTotaleAffichemiles=Math.round((totalDistance*0.000621371192237)*100)/100;
	var NombredepointAffiche = points.length;
	pointprecedant = points.length - 1;
	var totaledistancetopokm = Math.round(totaledistancetopo)/1000;
	
	var distanceAfficheyard=Math.round((distance*1.094)*10)/10;
	var DistanceTotaleAfficheYard=Math.round((totalDistance*1.094)*10)/10;
	
	deniveletotalfeet=Math.round(deniveletotal*3.281*100)/100;
	monteefeet=Math.round(montee*3.281*100)/100;
	descentefeet=Math.round(descente*3.281*100)/100;
	altdepartfeet=Math.round(altdepart*3.281*100)/100;
	diffaltfeet=Math.round(diffalt*3.281*100)/100;
	
	if (coordinates[pointprecedant]){
		var latlong = "Coordinates of the last point : " + coordinates[pointprecedant];
	}
	else{
		var latlong = "Coordinates of the last point :  no point on the map";
	}
	
	if (points.length>1){
		i=polyline.Distance();
		pointkm = polyline.GetPointAtDistance(i);
      	if (pointkm) { 
			u="<div style=\"color:"+poly+";width:180px;\"><strong>"+DistanceTotaleAfficheMetre+" m / "+DistanceTotaleAfficheKm+" km</strong><br /><strong>"+DistanceTotaleAfficheYard+" yards / "+DistanceTotaleAffichemiles+" miles</strong></div>";
       		createMarkerDistance(pointkm);
      	}
	}
	
	if (ChekAltitude==0){
		
		switch (points.length) {
			case 0:
			var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
			AfficheEtatAltitude.innerHTML = "<span class=\"couleur\">Download altitude disable: add 2 points by clicking the map.</span>";
			
			var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
			AfficheEtatAltitude3.innerHTML = "<span class=\"couleur\">Download altitude disable: add 2 points by clicking the map.</span>";
			break;
			
			case 1:
			var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
			AfficheEtatAltitude.innerHTML = "<span class=\"couleur\">Download altitude disable: add 1 point by clicking the map.</span>";	
			
			var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
			AfficheEtatAltitude3.innerHTML = "<span class=\"couleur\">Download altitude disable: add 1 point by clicking the map.</span>";				
			
			break;
			
			default:
			var AfficheEtatAltitude = document.getElementById("AfficheEtatAltitude"); 
			AfficheEtatAltitude.innerHTML = "<span class=\"couleur2\">Download altitude enable.</span>";
			
			var AfficheEtatAltitude3 = document.getElementById("AfficheEtatAltitude3"); 
			AfficheEtatAltitude3.innerHTML = "<span class=\"couleur2\">Download altitude enable</span>";
			
			break;
		}
		
	}
	
	var Affichelatlong = document.getElementById("Affichelatlong"); 
	Affichelatlong.innerHTML = latlong;	
	
	var AfficheDistance = document.getElementById("AfficheDistance"); 
	AfficheDistance.innerHTML = distanceAffiche;
	
	var AfficheDistanceyard = document.getElementById("AfficheDistanceyard"); 
	AfficheDistanceyard.innerHTML = distanceAfficheyard;
	
    var AfficheDistanceTotaleMetre = document.getElementById("AfficheDistanceTotaleMetre"); 
	AfficheDistanceTotaleMetre.innerHTML = DistanceTotaleAfficheMetre;
	
	var AfficheDistanceTotaleYard = document.getElementById("AfficheDistanceTotaleYard"); 
	AfficheDistanceTotaleYard.innerHTML = DistanceTotaleAfficheYard;
	
	var AfficheDistanceTotaleKm = document.getElementById("AfficheDistanceTotaleKm"); 
	AfficheDistanceTotaleKm.innerHTML = DistanceTotaleAfficheKm;
	
	var AfficheDistanceTotalemiles = document.getElementById("AfficheDistanceTotalemiles"); 
	AfficheDistanceTotalemiles.innerHTML = DistanceTotaleAffichemiles;
	
    var AfficheNombredepoint = document.getElementById("AfficheNombredepoint"); 
	AfficheNombredepoint.innerHTML = NombredepointAffiche;
	
	var Affichedeniveletotal = document.getElementById("Affichedeniveletotal"); 
	Affichedeniveletotal.innerHTML = deniveletotal;	
	
	var Affichedeniveletotalfeet = document.getElementById("Affichedeniveletotalfeet"); 
	Affichedeniveletotalfeet.innerHTML = deniveletotalfeet;	

	var Affichemontee = document.getElementById("Affichemontee"); 
	Affichemontee.innerHTML = montee;

	var Affichedescente = document.getElementById("Affichedescente"); 
	Affichedescente.innerHTML = descente; 
	
	var Affichemonteefeet = document.getElementById("Affichemonteefeet"); 
	Affichemonteefeet.innerHTML = monteefeet;

	var Affichedescentefeet = document.getElementById("Affichedescentefeet"); 
	Affichedescentefeet.innerHTML = descentefeet; 
	
	var Affichealtdepart = document.getElementById("Affichealtdepart"); 
	Affichealtdepart.innerHTML = altdepart;
	
	var Affichediffalt = document.getElementById("Affichediffalt"); 
	Affichediffalt.innerHTML = diffalt;   
	
	var Affichealtdepartfeet = document.getElementById("Affichealtdepartfeet"); 
	Affichealtdepartfeet.innerHTML = altdepartfeet;
	
	var affiche_alt_arrivee = document.getElementById("affiche_alt_arrivee"); 
	affiche_alt_arrivee.innerHTML = altarrive;	
	
	var affiche_alt_max = document.getElementById("affiche_alt_max"); 
	affiche_alt_max.innerHTML = AltMax;	
	
	var affiche_alt_min = document.getElementById("affiche_alt_min"); 
	affiche_alt_min.innerHTML = AltMin;	
	
	var affiche_alt_arriveefeet = document.getElementById("affiche_alt_arriveefeet"); 
	affiche_alt_arriveefeet.innerHTML = altarrivefeet;	
	
	var affiche_alt_maxfeet = document.getElementById("affiche_alt_maxfeet"); 
	affiche_alt_maxfeet.innerHTML = AltMaxFeet;	
	
	var affiche_alt_minfeet = document.getElementById("affiche_alt_minfeet"); 
	affiche_alt_minfeet.innerHTML = AltMinFeet;	
	
	var Affichediffaltfeet = document.getElementById("Affichediffaltfeet"); 
	Affichediffaltfeet.innerHTML = diffaltfeet;  	
		 
	
//************************** Affichage formulaire *********************************************	 
	
	var formulairegpx='<input type="hidden" id="tab_coordinatesgpx" name="tab_coordinatesgpx" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudegpx" name="tab_altitudegpx" value="' + phpaltitude +'" /><input type="hidden" id="tab_namegpx" name="tab_namegpx" value="' + GPSExportName +'" />';
	
	var formgpx = document.getElementById("formgpx");
	formgpx.innerHTML = formulairegpx;
	
	var formulairecsv='<input type="hidden" id="tab_coordinatescsv" name="tab_coordinatescsv" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudecsv" name="tab_altitudecsv" value="' + phpaltitude +'" /><input type="hidden" id="tab_distancecsv" name="tab_distancecsv" value="' + phpdistance +'" /><input type="hidden" id="tab_namegpx" name="tab_namegpx" value="' + GPSExportName +'" />';
	
	var formcsv = document.getElementById("formcsv");
	formcsv.innerHTML = formulairecsv;
	
	var formulairekml='<input type="hidden" id="tab_coordinateskml" name="tab_coordinateskml" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudekml" name="tab_altitudekml" value="' + phpaltitude +'" /><input type="hidden" id="tab_namegpx" name="tab_namegpx" value="' + GPSExportName +'" />';
	
	var formkml = document.getElementById("formkml");
	formkml.innerHTML = formulairekml;

	var formulairetcx='<input type="hidden" id="tab_coordinatestcx" name="tab_coordinatestcx" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudetcx" name="tab_altitudetcx" value="' + phpaltitude +'" /><input type="hidden" id="tab_distancetcx" name="tab_distancetcx" value="' + phpdistance +'" /><input type="hidden" id="totaldistancetcx" name="totaldistancetcx" value="' + totalDistance +'" /><input type="hidden" id="tab_namegpx" name="tab_namegpx" value="' + GPSExportName +'" />';
	
	var formtcx = document.getElementById("formtcx");
	formtcx.innerHTML = formulairetcx;
	

	var formulairesave='<input type="hidden" id="tab_coordinatessave" name="tab_coordinatessave" value="' + phpcoordinates +'" /><input type="hidden" id="tab_distancesave" name="tab_distancesave" value="' + DistanceTotaleAffichemiles +'" />';
	
	var formsave = document.getElementById("formsave");
	formsave.innerHTML = formulairesave;
	
	var formulaireprint='<input type="hidden" id="tab_coordinatesprint" name="tab_coordinatesprint" value="' + phpcoordinates +'" />';
	
	var formprint = document.getElementById("formprint");
	formprint.innerHTML = formulaireprint;	
				
//************************** Fin affichage formulaire **********************************************
	
//****************************** Affichage impression **************************************	
	
	var AfficheDistanceTotaleMetreprint = document.getElementById("AfficheDistanceTotaleMetreprint"); 
	AfficheDistanceTotaleMetreprint.innerHTML = DistanceTotaleAfficheMetre;
	var AfficheDistanceTotaleKmprint = document.getElementById("AfficheDistanceTotaleKmprint"); 
	AfficheDistanceTotaleKmprint.innerHTML = DistanceTotaleAfficheKm; 
	

//****************************** Fin affichage impression **************************************	

//Affichange formulaire infobulle

	if(info_bulle==1){
		info_bulle=0;
		
		var formulairegpx2='<input type="hidden" id="tab_coordinatesgpx" name="tab_coordinatesgpx" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudegpx" name="tab_altitudegpx" value="' + phpaltitude +'" />';
	
		var formgpx2 = document.getElementById("formgpx2");
		formgpx2.innerHTML = formulairegpx2;
	
		var formulairecsv2='<input type="hidden" id="tab_coordinatescsv" name="tab_coordinatescsv" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudecsv" name="tab_altitudecsv" value="' + phpaltitude +'" /><input type="hidden" id="tab_distancecsv" name="tab_distancecsv" value="' + phpdistance +'" />';
	
		var formcsv2 = document.getElementById("formcsv2");
		formcsv2.innerHTML = formulairecsv2;
	
		var formulairekml2='<input type="hidden" id="tab_coordinateskml" name="tab_coordinateskml" value="' + phpcoordinates +'" /><input type="hidden" id="tab_altitudekml" name="tab_altitudekml" value="' + phpaltitude +'" />';

		var formkml2 = document.getElementById("formkml2");
		formkml2.innerHTML = formulairekml2;
	}

//Affichange formulaire infobulle Fin

}

//************************** Fin Affichange des resultats***************************************   
	

//************************************ Mise en page des boutons *******************************

//bouton go
function rollover_bouton_go(){
    document.getElementById('go').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_go(){
    document.getElementById('go').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_go(){
    document.getElementById('go').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton calculer
function rollover_bouton_calculer(){
    document.getElementById('calculer').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_calculer(){
    document.getElementById('calculer').style.backgroundImage='url(images/bouton5.jpg)';
}

function rollout_bouton_calculer(){
    document.getElementById('calculer').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton calculer2
function rollover_bouton_calculer2(){
    document.getElementById('calculer2').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_calculer2(){
    document.getElementById('calculer2').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_calculer2(){
    document.getElementById('calculer2').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton calculer3
function rollover_bouton_calculer3(){
    document.getElementById('calculer3').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_calculer3(){
    document.getElementById('calculer3').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_calculer3(){
    document.getElementById('calculer3').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton calculertemps
function rollover_bouton_calculertemps(){
    document.getElementById('calculertemps').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_calculertemps(){
    document.getElementById('calculertemps').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_calculertemps(){
    document.getElementById('calculertemps').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton topologie
function rollover_bouton_topo(){
    document.getElementById('topo1').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo(){
    document.getElementById('topo1').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie2
function rollover_bouton_topo2(){
    document.getElementById('topo2').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo2(){
    document.getElementById('topo2').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie3
function rollover_bouton_topo3(){
    document.getElementById('topo3').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo3(){
    document.getElementById('topo3').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie4
function rollover_bouton_topo4(){
    document.getElementById('topo4').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo4(){
    document.getElementById('topo4').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie5
function rollover_bouton_topo5(){
    document.getElementById('topo5').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo5(){
    document.getElementById('topo5').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie6
function rollover_bouton_topo6(){
    document.getElementById('topo6').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo6(){
    document.getElementById('topo6').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie7
function rollover_bouton_topo7(){
    document.getElementById('topo7').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_topo7(){
    document.getElementById('topo7').style.backgroundImage='url(images/bouton1.jpg)';
} 

//bouton topologie simple
function rollover_bouton_toposimple(){
    document.getElementById('toposimple').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_toposimple(){
    document.getElementById('toposimple').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton denivele
function rollover_bouton_boutondenivele(){
    document.getElementById('boutondenivele').style.backgroundImage='url(images/bouton2.jpg)';
}

function rollout_bouton_boutondenivele(){
    document.getElementById('boutondenivele').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton gpx
function rollover_bouton_gpx(){
    document.getElementById('gpx').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_gpx(){
    document.getElementById('gpx').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_gpx(){
    document.getElementById('gpx').style.backgroundImage='url(images/bouton1.jpg)';
}

function rollover_bouton_gpx2(){
    document.getElementById('gpx2').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_gpx2(){
    document.getElementById('gpx2').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_gpx2(){
    document.getElementById('gpx2').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton csv
function rollover_bouton_csv(){
    document.getElementById('csv').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_csv(){
    document.getElementById('csv').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_csv(){
    document.getElementById('csv').style.backgroundImage='url(images/bouton1.jpg)';
}

function rollover_bouton_csv2(){
    document.getElementById('csv2').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_csv2(){
    document.getElementById('csv').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_csv2(){
    document.getElementById('csv2').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton kml
function rollover_bouton_kml(){
    document.getElementById('kml').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_kml(){
    document.getElementById('kml').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_kml(){
    document.getElementById('kml').style.backgroundImage='url(images/bouton1.jpg)';
}

function rollover_bouton_kml2(){
    document.getElementById('kml2').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_kml2(){
    document.getElementById('kml2').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_kml2(){
    document.getElementById('kml2').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton tcx
function rollover_bouton_tcx(){
    document.getElementById('tcx').style.backgroundImage='url(images/bouton2.jpg)';
}

function click_bouton_tcx(){
    document.getElementById('tcx').style.backgroundImage='url(images/bouton5.jpg)';	
}

function rollout_bouton_tcx(){
    document.getElementById('tcx').style.backgroundImage='url(images/bouton1.jpg)';
}

//bouton print
function rollover_bouton_print(){
    document.getElementById('print').style.backgroundImage='url(images/bouton3.jpg)';
}

function rollout_bouton_print(){
    document.getElementById('print').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton effacer 0
function rollover_bouton_effacer0(){
    document.getElementById('effacer0').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_effacer0(){
    document.getElementById('effacer0').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton effacer 1
function rollover_bouton_effacer1(){
    document.getElementById('effacer1').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_effacer1(){
    document.getElementById('effacer1').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton effacer 2
function rollover_bouton_effacer2(){
    document.getElementById('effacer2').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_effacer2(){
    document.getElementById('effacer2').style.backgroundImage='url(images/bouton4.jpg)';
}	

//bouton Print
function rollover_bouton_boutonprint(){
    document.getElementById('boutonprint').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_boutonprint(){
    document.getElementById('boutonprint').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton invertion
function rollover_bouton_invertion(){
    document.getElementById('invertion').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_invertion(){
    document.getElementById('invertion').style.backgroundImage='url(images/bouton4.jpg)';
}	

//bouton invertion2
function rollover_bouton_invertion2(){
    document.getElementById('invertion2').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_invertion2(){
    document.getElementById('invertion2').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton invertion3
function rollover_bouton_invertion3(){
    document.getElementById('invertion3').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_invertion3(){
    document.getElementById('invertion3').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton sauvegarde
function rollover_bouton_sauvegarde(){
    document.getElementById('sauvegarde').style.backgroundImage='url(images/bouton3.jpg)';
}

function rollout_bouton_sauvegarde(){
    document.getElementById('sauvegarde').style.backgroundImage='url(images/bouton4.jpg)';
}  

//bouton rechercher
function rollover_bouton_recherche(){
    document.getElementById('recherche').style.backgroundImage='url(images/bouton3.jpg)';
}

function rollout_bouton_recherche(){
    document.getElementById('recherche').style.backgroundImage='url(images/bouton4.jpg)';
}  

//bouton profil2
function rollover_bouton_profil2(){
    document.getElementById('profil2').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_profil2(){
    document.getElementById('profil2').style.backgroundImage='url(images/bouton4.jpg)';
}

//bouton import
function rollover_bouton_import(){
    document.getElementById('import').style.backgroundImage='url(images/bouton3.jpg)';
}
function rollout_bouton_import(){
    document.getElementById('import').style.backgroundImage='url(images/bouton4.jpg)';
}

//************************************Fin mise en page des boutons*******************************	 

//**************************************Verif formulaire*******************************************
function verif(){ 
	if ( coordinates.length < 2 ){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	} 
	if (ChekAltitude==0){
		alert( 'Click the button "Altitude" before export file.' );
		return false;
	}
	else {
		exportxml();
		afficherdistance();
		return true;	
	}
}

function verif2(){ 
	if ( coordinates.length < 2 ){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	} 
	else {
		exportxml();
		afficherdistance();
		return true;	
	}
}

function verifprint(){ 
	if ( coordinates.length < 2 ){
		alert( 'Please add 2 points by clicking the map.' );
		return false;
	} 
	else {
		exportprint();
		afficherdistance();
		return true;
	}
}
//**************************************Fin verif formulaire*******************************************

//**************************************Ancre***********************************************************

function ancre() {
	document.location.href="#map"; 
}

//**************************************Fin ancre******************************************************	

//dessine des markers avec text
function createMarker(pointData) {
		icon = new GIcon();
		icon.image = './images/icon52.png';	 
		icon.iconSize = new GSize(18, 22);
		icon.iconAnchor = new GPoint(7, 7); 
		icon.shadow = ""; 
		opts = {
			"icon": icon,
			"clickable": false,
			"draggable": false,
			"labelText":z,
			"labelOffset": new GSize(-2, 11)
		};
		kmmarker = new LabeledMarker(pointData, opts);
		map.addOverlay(kmmarker);
}

function createMarkerMile(pointData) {
		icon = new GIcon();
		icon.image = './images/icon60.png';	 
		icon.iconSize = new GSize(18, 22);
		icon.iconAnchor = new GPoint(7, 7); 
		icon.shadow = ""; 
		opts = {
			"icon": icon,
			"clickable": false,
			"draggable": false,
			"labelText":z,
			"labelOffset": new GSize(-2, 11)
		};
		kmmarker = new LabeledMarker(pointData, opts);
		map.addOverlay(kmmarker);
}
//fin dessine des markers avec text

//dessine la distance
function createMarkerDistance(pointData) {
		icon = new GIcon();
		icon.image = '';	 
		icon.iconSize = new GSize(0, 0);
		icon.iconAnchor = new GPoint(120, 120); 
		icon.shadow = ""; 
		opts = {
			"icon": icon,
			"clickable": false,
			"draggable": false,
			"labelText":u,
			"labelOffset": new GSize(-5, 20)
		};
		kmmarker = new LabeledMarker(pointData, opts);
		map.addOverlay(kmmarker);
}
//fin dessine la distance

//************************************** ProgressBar *******************************************************
var o
var barre;
function prog(){
	calories=Math.round(calories);
	if (calories>=1000){
		barre=430;
	}
	else{
		barre=(calories/1000)*430;
	}
	document.getElementById("d1").innerHTML="";	document.getElementById("d2").style.width=0;  o=0;
	progBar(); 
}

function progBar(){
	if (o<=(barre)){
		if (barre<210){
			document.getElementById("d2").style.backgroundColor="green";
		}
		else{
			document.getElementById("d2").style.backgroundColor="red";
		}
		document.getElementById("d2").style.width=o+"px";
		if (o>50){document.getElementById("d1").innerHTML=parseInt(calories)+"&nbsp;Cal";}
		var j=0;		
		while (j<=100)
       	j++;  
        setTimeout("progBar();", 10); 
        o++;   
   }
}
//************************************** fin ProgressBar 

// Nom pour Export
function GPS(GPSName){
	GPSExportName=GPSName.replace(/[^a-zA-Z0-9]/ig, '');
	return true;
}