
function moveIt() 
{
     if( x < grandeurDuArray ) 
	 {
	
 
		Draw6(x);
        x++;
     } else 
	 {
         window.clearInterval( timer1 );
     }  
}




function AGdistance(lat1,lng1,lat2,lng2)
{
 var O = Math.PI/180;

 var b = lat1 * O;
 var c = lat2 * O;
 var d = b - c;
 var e = (lng1 * O) - (lng2 * O) ;
 var f = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(d/2),2)+Math.cos(b)*Math.cos(c)*Math.pow(Math.sin(e/2),2)));
 return f*6378137
}

function AGround(original_number) 
{
	//return Math.round(original_number*100)/100;
    return Math.round(original_number);
}



function num_format2(xyz) 
{ 
return Math.round(xyz);

}

function num_format(xyz) 
{ 
	sgn = (xyz < 0);
	xyz = Math.abs(xyz);
	xyz = Math.floor((xyz * 100) + .5);
	ijwe = 3;
	xz = "";
	while(((ijwe--) > 0) || (xyz > 0)) {
		xz = (xyz % 10) + xz;
		xyz = Math.floor(xyz / 10);
		if(ijwe == 1) {
			xz = "." + xz;
		}
	}
	if(sgn) {
		xz = "-" + xz;
	}
	xz = xz;

	return(xz);

}



function AGGetDistance() 
{
	intDistTotal=0;
	for (var i = 0; i < m_markers.length-1; i++) 
	{	
		var lat1 = parseFloat(m_markers[i].getAttribute('lat'));
		var lon1 = parseFloat(m_markers[i].getAttribute('lon'));
		//var TheTime1 = parseFloat(m_markers[i].getAttribute('time'));

		var lat2 = parseFloat(m_markers[i+1].getAttribute('lat'));
		var lon2 = parseFloat(m_markers[i+1].getAttribute('lon'));
		//var TheTime2 = parseFloat(m_markers[i+1].getAttribute('time'));
	
		if (lat1 != null && lon1 != null && lat2 != null && lon2 != null) 
		{
			var temp43=AGdistance(lat1,lon1,lat2,lon2);
			intDistTotal=intDistTotal+Number(temp43);
			//status = intDistTotal;

		}
	}
	TEMP999=intDistTotal/1000;
	rechform.DistanceTot.value=num_format(TEMP999) ;
}



function AGGetMaxSpeed() 
{

	buffMaxSpeed=0;
	intDistTotal=0;
	for (var i = 0; i < m_markers.length-1; i++) 
	{	
		var lat1 = parseFloat(m_markers[i].getAttribute('lat'));
		var lon1 = parseFloat(m_markers[i].getAttribute('lon'));
		//var TheTime1 = m_timeTags[i].getAttribute('utc');
		var TheTime1 = m_markers[i].getElementsByTagName('time')[0].childNodes[0].nodeValue;
		
		var lat2 = parseFloat(m_markers[i+1].getAttribute('lat'));
		var lon2 = parseFloat(m_markers[i+1].getAttribute('lon'));

		//var TheTime2 = m_timeTags[i+1].getAttribute('utc');
		var TheTime2 = m_markers[i+1].getElementsByTagName('time')[0].childNodes[0].nodeValue;
	 


		if (lat1 != null && lon1 != null && lat2 != null && lon2 != null) 
		{
			var temp43=AGdistance(lat1,lon1,lat2,lon2);
			var temp455 = AGGetElapseTime(TheTime1,TheTime2);
			var LeSpeed = ((temp43/1000)/temp455)*60*60;
			if(LeSpeed> buffMaxSpeed && LeSpeed < 75)
			{

				buffMaxSpeed=LeSpeed;
				temp43=num_format(temp43);
				temp455=num_format(temp455);
				LeSpeed=num_format(LeSpeed);

				//alert("Distance: "+temp43+", Temps: "+temp455+", Vitesse: "+LeSpeed+"/"+i);
			}

			//var temp44=AGLapsDeTemps(TheTime1,TheTime2);
			//intDistTotal=intDistTotal+Number(temp43);
			//status = intDistTotal;

		}
	}
	buffMaxSpeed=num_format(buffMaxSpeed);


	status=buffMaxSpeed;


	rechform.TheMaxSpeed.value=buffMaxSpeed;
	rechform.TheNbDePoints.value=i;



	//TEMP998=intDistTotal/1000;
	//rechform.TheMaxSpeed.value=num_format(TEMP998) ;
}


function AGGetElapseTime(VTi1,VTi2) 
{	
	var elapsed=0;

	if(VTi1!="" && VTi2!="")
	{	
		var LT1Anne=VTi1.substr(0,4);
		var LT1Mois=VTi1.substr(5,2);
		var LT1Jour=VTi1.substr(8,2);
		var LT1Heure=VTi1.substr(11,2);
		var LT1Minu=VTi1.substr(14,2);
		var LT1Sec=VTi1.substr(17,2);

		var LT2Anne=VTi2.substr(0,4);
		var LT2Mois=VTi2.substr(5,2);
		var LT2Jour=VTi2.substr(8,2);
		var LT2Heure=VTi2.substr(11,2);
		var LT2Minu=VTi2.substr(14,2);
		var LT2Sec=VTi2.substr(17,2);

	//alert(LT1Anne+"/"+LT1Mois+"/"+LT1Jour+"/"+LT1Heure+"/"+LT1Minu+"/"+LT1Sec+"//"+LT2Anne+"/"+LT2Mois+"/"+LT2Jour+"/"+LT2Heure+"/"+LT2Minu+"/"+LT2Sec);

		var dateTime1 = new Date();
		var dateTime2 = new Date();
		
		dateTime1.setYear(LT1Anne);
		dateTime1.setMonth(LT1Mois);
		dateTime1.setDate(LT1Jour);
		dateTime1.setHours(LT1Heure);
		dateTime1.setMinutes(LT1Minu);
		dateTime1.setSeconds(LT1Sec);
		//dateTime1.setMilliseconds();

		dateTime2.setYear(LT2Anne);
		dateTime2.setMonth(LT2Mois);
		dateTime2.setDate(LT2Jour);
		dateTime2.setHours(LT2Heure);
		dateTime2.setMinutes(LT2Minu);
		dateTime2.setSeconds(LT2Sec);
		//dateTime2.setMilliseconds();

		elapsed = (dateTime2.getTime() - dateTime1.getTime() ) / 1000 ;
	}
	return elapsed;
}


function LoadXmlEnMemoire(strFromLink) 
{ 


//intDistTotal=0;
				var lat1E = 0;
				var lon1E = 0;

				var lat2E = 0;
				var lon2E = 0;
		 
		
	//status = "m_markers.length: " +m_markers.length;




		//alert(m_markers.length);
	if(strFromLink=="1")
	{
		if(m_markers.length > 0 && m_markers.length < 1000){diviseLeNombreDeVertexPar=1;}
		if(m_markers.length > 1001 && m_markers.length < 2000){diviseLeNombreDeVertexPar=2;}
		if(m_markers.length > 2001 && m_markers.length < 4000){diviseLeNombreDeVertexPar=4;}	
		if(m_markers.length > 4001 && m_markers.length < 6000){diviseLeNombreDeVertexPar=6;}
		if(m_markers.length > 6001 ){diviseLeNombreDeVertexPar=8;}
//diviseLeNombreDeVertexPar=1;
	}else{

		diviseLeNombreDeVertexPar=Number(rechform.DivisePar.value);
		//alert(diviseLeNombreDeVertexPar);
	}


	m_MaxVertexType3=250/diviseLeNombreDeVertexPar;

	//alert(diviseLeNombreDeVertexPar);
	grandeurDuArray=m_markers.length/diviseLeNombreDeVertexPar;

	grandeurDuArray=Math.ceil(grandeurDuArray*1)/1


	mainArray = new Array(grandeurDuArray);
	if (rechform.TypaAnim.value == "4")
	{
		testArray = new Array(grandeurDuArray);
	}

		
	rechform.DivisePar.value=diviseLeNombreDeVertexPar;
	y=0;	
	z=1;
	for(i=0; i< m_markers.length-diviseLeNombreDeVertexPar; i++) 
	{
		if(z==diviseLeNombreDeVertexPar)
		{//alert(z);
			VNoPointEfface=i-3;


			//alert("1111");
			var lat1 = parseFloat(m_markers[i].getAttribute('lat'));
			var lon1 = parseFloat(m_markers[i].getAttribute('lon'));
			var TheTime1 = m_markers[i].getElementsByTagName('time')[0].childNodes[0].nodeValue;
			var lat2 = parseFloat(m_markers[i+diviseLeNombreDeVertexPar].getAttribute('lat'));
			var lon2 = parseFloat(m_markers[i+diviseLeNombreDeVertexPar].getAttribute('lon'));
			var TheTime2 = m_markers[i+diviseLeNombreDeVertexPar].getElementsByTagName('time')[0].childNodes[0].nodeValue;


			var temp45=AGdistance(lat1,lon1,lat2,lon2);
			var temp453 = AGGetElapseTime(TheTime1,TheTime2);
			if(temp453>0)
			{
				var LaSpeed = ((temp45/1000)/temp453)*60*60;
			}else
			{
				var LaSpeed = 0;
			}

	
			if(LaSpeed<75)
			{
				//alert(lat1+"/"+lon1+"/"+lat2+"/"+lon2);
				mainArray[y] = new Array(6);
				for(j=0; j<6; j++) 
				{
					if(j==0){mainArray[y][j] = lat1;}
					if(j==1){mainArray[y][j] = lon1;}
					if(j==2){mainArray[y][j] = lat2;}
					if(j==3){mainArray[y][j] = lon2;}
					if(j==4){mainArray[y][j] = TheTime1;}
					if(j==5){mainArray[y][j] = TheTime2;} 
					//alert(mainArray[i][j]);
				}

				z=1;
				y++;
			}

		}else
		{
			z++;
		}
	}
//alert("2222");

//TEMP999=intDistTotal/1000

//rechform.DistanceTot.value=TEMP999;
//alert(m_markers.length);

rechform.DateTrack.value=StartTime.substr(0,10);
TitreDateTrack.innerHTML=rechform.DateTrack.value+" "+StartTime.substr(11,8);

//status = "m_markers.length: " +m_markers.length + ", KM: " +TEMP999;

}  

	 

function GetExtension(strComplet) 
{	
	strvExtension="";
	if ( strComplet.length > 0)
	{
		strvExtension=strComplet.substr(strComplet.length-3,3);
	}
	return strvExtension.toUpperCase();
}


function ResetAll() 
{	

	buffMaxSpeed =0.00;

	buffMaxSpeed2 =0.00;
buffDistance=0.00;
LaSpeedTot=0.00;

	rechform.DistanceTot.value=0.00;
	rechform.TheMaxSpeed.value=0.00;
	rechform.TheSpeedoMeter.value=0.00;
	rechform.TheGrosMaxSpeed.value=0.00;
	rechform.TheGrosDistance.value=0.00;

	rechform.TheGrosAvrSpeed.value=0.00;
	rechform.TheNbDePoints.value=0;


}	



function Draw6(VNoPoint) 
{//www

	VarXX=30;
	VNoPointPrece=VNoPoint-10;
	if(VNoPointPrece<0)
	{
		VNoPointPrece=0
	}


	var vlat1z=mainArray[VNoPointPrece][0];	
	var vlon1z=mainArray[VNoPointPrece][1];
	var vlat2z=mainArray[VNoPointPrece][2];	
	var vlon2z=mainArray[VNoPointPrece][3];
	var vTime1z=mainArray[VNoPointPrece][4];	
	var vTime2z=mainArray[VNoPointPrece][5];

	var vlat1=mainArray[VNoPoint][0];	
	var vlon1=mainArray[VNoPoint][1];
	var vlat2=mainArray[VNoPoint][2];	
	var vlon2=mainArray[VNoPoint][3];
	var vTime1=mainArray[VNoPoint][4];	
	var vTime2=mainArray[VNoPoint][5];



		var temp45=AGdistance(vlat1,vlon1,vlat2,vlon2);
		var temp453 = AGGetElapseTime(vTime1,vTime2);
	if(temp453>0)
	{
		var LaSpeed = ((temp45/1000)/temp453)*60*60;
	}else
	{
		var LaSpeed = 0;
	}


	//alert(temp45+"/"+temp453+"/"+LaSpeed);

	//status = LaSpeed + " KM";

	var Trackcolor="#FFFF00";
	var TrackSize=1;
	//&& LeSpeed < 75
		
	buffDistance=buffDistance+temp45/1000;
	rechform.TheGrosDistance.value=num_format(buffDistance);
	//rechform.TheGrosDistance.value=buffDistance;
rechform.TheGrosNumeroDuPoint.value=VNoPoint*diviseLeNombreDeVertexPar;

	//if(LaSpeed<75)
	//{

		if (LaSpeed > buffMaxSpeed2)
		{
			buffMaxSpeed2=LaSpeed;
			rechform.TheGrosMaxSpeed.value=num_format(buffMaxSpeed2);
			//Trackcolor="#FF0000";
		}
		if (LaSpeed > 20){Trackcolor="#ffFFff";}
		if (LaSpeed > 30){Trackcolor="#00FF00";}
		if (LaSpeed > 35){Trackcolor="#87CEFA";TrackSize=1;}
		if (LaSpeed > 40){Trackcolor="#0000FF";TrackSize=2;}
		if (LaSpeed > 45){Trackcolor="#BA55D3";TrackSize=3;}
		if (LaSpeed > 50){Trackcolor="#FF0000";TrackSize=2;}

		if (rechform.TypaAnim.value == "2"){m_map.clearOverlays();}
		
		if (rechform.TypaAnim.value == "3")
		{
			
		
			if (m_CountVertex >= m_MaxVertexType3)
			{
				m_map.clearOverlays();
				m_CountVertex=0;
rechform.TheGrosMaxSpeed.value=0;
buffMaxSpeed2=0;
			}else
			{
				m_CountVertex=m_CountVertex+1;
			}	 
		 }

		if (rechform.TypaAnim.value != "4")
		{
			var trait1;	
			trait1 = new GPolyline([new GLatLng(vlat1,vlon1),new GLatLng(vlat2, vlon2)],Trackcolor,TrackSize, 1);
			m_map.addOverlay(trait1);
	
		}


		if (rechform.TypaAnim.value == "4")
		{
			
			
			var trait1;	
			testArray[VNoPoint] = new GPolyline([new GLatLng(vlat1,vlon1),new GLatLng(vlat2, vlon2)],Trackcolor,TrackSize, 1);
			m_map.addOverlay(testArray[VNoPoint]);
			
			
			if (VNoPoint>100) 
			{
				m_map.removeOverlay(testArray[VNoPoint-99]);
			}
		}



		//var trait2;	
		//trait2 = new GPolyline([new GLatLng(mainArray[VNoPoint][4],mainArray[VNoPoint][5]),new GLatLng(mainArray[VNoPoint][6], mainArray[VNoPoint][7])],"000FFF",2, 0.9);
		//m_map.addOverlay(trait2);	
		
		LaSpeedTot=LaSpeedTot+LaSpeed;

		vtemp6455=LaSpeedTot/(VNoPoint+1);
		rechform.TheGrosAvrSpeed.value=num_format(vtemp6455);


		rechform.TheSpeedoMeter.value=num_format(LaSpeed);
	//}

}


function Draw1() 
{//bof
var points = [];
	for (var i = 0; i < m_markers.length; i++) 
	{
	
			var lat = parseFloat(m_markers[i].getAttribute('lat'));
			var lon = parseFloat(m_markers[i].getAttribute('lon'))
			if (lat != null && lon != null) 
			{
				points.push(new GLatLng(lat, lon));
				
			}

	}


	m_map.addOverlay(new GPolyline(points,"yellow",3, 0.9));
}



function DrawPoint(vvlat1,vvlon1,vvlat2,vvlon2) 
{


	vvlat1=Number(vvlat1);
	vvlon1=Number(vvlon1);
	vvlat2=Number(vvlat2);
	vvlon2=Number(vvlon2);

	var trait1;	
	//trait1 = new GPolyline([new GLatLng(vlat1,vlon1),new GLatLng(vlat2, vlon2)],Trackcolor,TrackSize, 1);
	trait1 = new GPolyline([new GLatLng(vvlat1,vvlon1),new GLatLng(vvlat2, vvlon2)],"yellow",3, 1);
	
	if(vvlat1==0||vvlon1==0||vvlat2==0||vvlon2==0)
	{}else
	{
		//alert(vvlat1+"/"+vvlon1+"/"+vvlat2+"/"+vvlon2);
		m_map.addOverlay(trait1);
	}
	



	
}



function getRS(rootnode, iCurRec, sFieldName)
{
	var iField;
	var sData;
	sData = "";
	for (iField = 0 ; iField < rootnode.childNodes.item(iCurRec).childNodes.length ; iField++){
		if (rootnode.childNodes.item(iCurRec).childNodes.item(iField).tagName  == sFieldName){
			if (rootnode.childNodes.item(iCurRec).childNodes.item(iField).childNodes.length > 0){
				sData = rootnode.childNodes.item(iCurRec).childNodes.item(iField).childNodes.item(0).text;
				}
			else {
				sData = "";
				}
			}
		}
	if (sData == "#20") 
	{
		sData = "";
	}
	return(sData);
}






function getXML_file(xml_file) {
  
  if (window.XMLHttpRequest) {
    
    xhttp = new XMLHttpRequest();
  }
  else {
    
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
 
  xhttp.open("GET", sreq ,false);
  xhttp.send(null);

  // sets and returns the content as XML DOM
  xmlDoc = xhttp.responseXML;

  return xmlDoc;
}











function XMLHTTPGetLivePosition()
{




	//m_map.clearOverlays();
	var root, source;		//A couple of XMLDOM objects (document and 
	var i;							//Counter
	var xmlhttp;				//XMLHTTP object to communicate with server
	var sreq;						//variable to hold request string
	var VOK;
	VLastPosition="0";
	VOK="0"
	//Show a searching message
	status = "searching, please wait....";
	
	//Create the XML string to send to the server
	sreq = "/Wind/XGETPOS.asp?LastPosition=" + escape(VLastPosition);

	//Create an xml document object, and load the server's response




	source = new ActiveXObject("Microsoft.XMLDOM");
	source.async = false;
	//source.loadXML(txt); 

	source.load(sreq);


















	
	//alert(sreq);

	
	VGpsDataPosXMoins1=0;

	VGpsDataPosYMoins1=0; 	

	if (source.parseError != 0)
	{
		sT = "XML Error...<br>reason:" + source.parseError.reason + "<br>";
		sT += "errorCode:" + source.parseError.errorCode + "<br>";
		sT += "filepos:" + source.parseError.filepos + "<br>";
		sT += "line:" + source.parseError.line + "<br>";
		sT += "linepos:" + source.parseError.linepos + "<br>";
		sT += "reason:" + source.parseError.reason + "<br>";
		sT += "srcText:" + source.parseError.srcText + "<br>";
		sT += "<pre>" + source.xml + "</pre><br>";
		status = "XML Error!";
		alert(sT);



	}
	else 
	{


		root = source.documentElement;




		for (i = 0 ; i < root.childNodes.length-1 ; i++)
		{


			VGpsDataNumero = getRS(root, i, "GpsDataNumero");

			VGpsDataPosX = getRS(root, i, "GpsDataPosX");

			VGpsDataPosY = getRS(root, i, "GpsDataPosY"); 
	
			VGpsDataAlt = getRS(root, i, "GpsDataAlt"); 

			VGpsDataDes = getRS(root, i, "GpsDataDes"); 


			VGpsDataNumero=Number(VGpsDataNumero);


			//OnCloneAn(i,ModAnnee);
		


//alert(VGpsDataPosX+"/"+VGpsDataPosY+"/"+VGpsDataPosXMoins1+"/"+VGpsDataPosYMoins1);


			DrawPoint(VGpsDataPosX,VGpsDataPosY,VGpsDataPosXMoins1,VGpsDataPosYMoins1); 

			VGpsDataPosXMoins1=VGpsDataPosX;

			VGpsDataPosYMoins1=VGpsDataPosY; 

		}
		status = "Done";
		VOK="1"


	}




	return VOK;
	
}










function load() 
{

	if (GBrowserIsCompatible()) 
	{
	m_map = new GMap2(document.getElementById("map"));

	m_map.addControl(new GLargeMapControl());
	m_map.addControl(new GMapTypeControl());
	m_map.addControl(new GScaleControl());


	//m_map.addControl(new GSmallMapControl());
	//m_map.addControl(new GSmallZoomControl());
	//m_map.addControl(new GOverviewMapControl ());
GMapTypeControl()

//zoom
	//Ange Gardien
	//m_map.setCenter(new GLatLng(46.908693, -71.090909), 14);


	//m_map.openInfoWindow(m_map.getCenter(),document.createTextNode("Hello, world"));
	m_map.setMapType(G_SATELLITE_MAP);
	//window.setTimeout(function() {  m_map.panTo(new GLatLng(46.908693, -71.091909));}, 1000);




	}
}


function LoadXml(strNomFichier,strFromTheLink) 
{

	GDownloadUrl(strNomFichier, function(data, responseCode) {

	 //m_markers=null;
	var xml = GXml.parse(data);
	m_markers = xml.documentElement.getElementsByTagName('trkpt');
	m_timeTags = xml.documentElement.getElementsByTagName('time');

	
	StartLat = parseFloat(m_markers[1].getAttribute('lat'));
	StartLon = parseFloat(m_markers[1].getAttribute('lon'));
	StartTime = m_markers[1].getElementsByTagName('time')[0].childNodes[0].nodeValue;

	if(strFromTheLink=="1"){m_map.setCenter(new GLatLng(StartLat, StartLon), 14);}
	
	
	LoadXmlEnMemoire(strFromTheLink); 


	StartCoor.innerHTML=' Lat: N'+StartLat+', Lon: W'+StartLon;

	});



}


function LoadXmlLive(strNomFichier3,strFromTheLink) 
{


	GDownloadUrl(strNomFichier3, function(data, responseCode) {
  // To ensure against HTTP errors that result in null or bad data,
  // always check status code is equal to 200 before processing the data

	var xml = GXml.parse(data);
	m_markers = xml.documentElement.getElementsByTagName("trkpt");
	m_timeTags = xml.documentElement.getElementsByTagName('time');

	StartLat = parseFloat(m_markers[1].getAttribute('lat'));
	StartLon = parseFloat(m_markers[1].getAttribute('lon'));
	StartTime = m_markers[1].getElementsByTagName('time')[0].childNodes[0].nodeValue;

		
	if(strFromTheLink=="1"){m_map.setCenter(new GLatLng(StartLat, StartLon),Number(rechform.FacteurZoom.value));}

 
	Draw1();



 //alert("Draw1");
	});



}


	 


	 

