// JavaScript Document
function setStatus(addStr) {
  obj = document.getElementById('call_status');
  if (addStr=='')
    obj.innerHTML = '';
  else {
    curr = obj.innerHTML;
	obj.innerHTML = curr + '<br>' + addStr;
  } 
}
function ask4origin() {
	var request = getXhr();
	if (!request) {  alert ('getXhr is null > no tracking'); 
		  return false;
	}
	setStatus('<div align=center><img src="'+curHost+'images/loader.gif" /></div><br>requesting Origin position');
	var strParam = "Code3="+document.getElementById('from').value; 
	var url = encodeURI(curHost + "soap/getLongLat.php?"+strParam);
	//var url = encodeURI("http://localhost/cv2008/soap/webservices.result.xml");
//alert (url)	;
	request.onreadystatechange = function (){	updatePage(request, false)};
	request.open('GET', url, true);
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", strParam.length);
	request.setRequestHeader("Connection", "close"); 
	request.send(null); 
}
function ask4destin() {
	var request2 = getXhr();
	if (!request2) {  alert ('getXhr is null > no tracking'); 
		  return false;
	}
	setStatus('requesting Destination position');	
	var strParam = "Code3="+document.getElementById('to').value; 
	var url = encodeURI(curHost + "soap/getLongLat.php?"+strParam);
	//var url = encodeURI("http://localhost/cv2008/soap/webservices.result.xml");
//alert (url)	;
	request2.onreadystatechange = function (){	updatePage(request2, true)};
	request2.open('GET', url, true);
	request2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request2.setRequestHeader("Content-length", strParam.length);
	request2.setRequestHeader("Connection", "close"); 
	request2.send(null); 
}

/*<?xml version="1.0" encoding="utf-8" ?> 
  <string xmlns="http://www.webserviceX.NET"><NewDataSet> <Table> 
  <AirportCode>CDG</AirportCode> <CityOrAirportName>PARIS DE GAULLE</CityOrAirportName> <Country>France</Country> 
  <CountryAbbrviation>FR</CountryAbbrviation> <CountryCode>427</CountryCode> 
  <GMTOffset>-1</GMTOffset> <RunwayLengthFeet>11811</RunwayLengthFeet> <RunwayElevationFeet>387</RunwayElevationFeet> 
  <LatitudeDegree>49</LatitudeDegree> <LatitudeMinute>1</LatitudeMinute> <LatitudeSecond>0</LatitudeSecond> <LatitudeNpeerS>N</LatitudeNpeerS> 
  <LongitudeDegree>2</LongitudeDegree> <LongitudeMinute>33</LongitudeMinute> <LongitudeSeconds>0</LongitudeSeconds> <LongitudeEperW>E</LongitudeEperW> </Table> <Table> <AirportCode>CDG</AirportCode> <CityOrAirportName>PARIS DE GAULLE</CityOrAirportName> <Country>France</Country> <CountryAbbrviation>FR</CountryAbbrviation> <CountryCode>427</CountryCode> <GMTOffset>-1</GMTOffset> <RunwayLengthFeet>11811</RunwayLengthFeet> <RunwayElevationFeet>387</RunwayElevationFeet> <LatitudeDegree>49</LatitudeDegree> <LatitudeMinute>1</LatitudeMinute> <LatitudeSecond>0</LatitudeSecond> <LatitudeNpeerS>N</LatitudeNpeerS> <LongitudeDegree>2</LongitudeDegree> 
  		<LongitudeMinute>33</LongitudeMinute> <LongitudeSeconds>0</LongitudeSeconds> <LongitudeEperW>E</LongitudeEperW> 
  </Table> </NewDataSet></string> */
function updatePage(request, nextStep) {
  if (request.readyState == 4) 
	if (request.status == 200)    {  //alert(request.responseText); 
	  var xmlDoc = request.responseXML;	  //alert (xmlDoc)
	  var xmlBindings = xmlDoc.documentElement.firstChild; 
	  if (xmlBindings!=null) { 		//alert("Tag:"+ xmlBindings.tagName + " > "+ xmlBindings.hasChildNodes+' > '+xmlBindings.childNodes.length);
		if (xmlBindings.tagName == 'NewDataSet') {  
		  if (xmlBindings.hasChildNodes) {			//alert (xmlBindings.tagName+' child: '+xmlBindings.childNodes.length);
	  		xmlBindings2 = xmlBindings.firstChild;
			//alert (xmlBindings2.tagName+' child: '+xmlBindings2.childNodes.length);
			LatitudeDegree = xmlBindings2.getElementsByTagName('LatitudeDegree')[0].firstChild.nodeValue;
			if (nextStep) document.getElementById('to_latD').value = LatitudeDegree;
			         else document.getElementById('fr_latD').value = LatitudeDegree;
			LatitudeMinute = xmlBindings2.getElementsByTagName('LatitudeMinute')[0].firstChild.nodeValue;
			if (nextStep) document.getElementById('to_latM').value = LatitudeMinute;
			         else document.getElementById('fr_latM').value = LatitudeMinute;
			LatitudeNpeerS = xmlBindings2.getElementsByTagName('LatitudeNpeerS')[0].firstChild.nodeValue;
			if (nextStep) document.getElementById('to_latNS').value = LatitudeNpeerS;
			         else document.getElementById('fr_latNS').value = LatitudeNpeerS;
			LatitudeSecond = xmlBindings2.getElementsByTagName('LatitudeSecond')[0].firstChild.nodeValue;

			LongitudeDegree = xmlBindings2.getElementsByTagName('LongitudeDegree')[0].firstChild.nodeValue;
			if (nextStep) document.getElementById('to_lonD').value = LongitudeDegree;
			         else document.getElementById('fr_lonD').value = LongitudeDegree;
			LongitudeMinute = xmlBindings2.getElementsByTagName('LongitudeMinute')[0].firstChild.nodeValue;
			if (nextStep) document.getElementById('to_lonM').value = LongitudeMinute;
			         else document.getElementById('fr_lonM').value = LongitudeMinute;  
			LongitudeEperW = xmlBindings2.getElementsByTagName('LongitudeEperW')[0].firstChild.nodeValue;
			if (nextStep) document.getElementById('to_lonEW').value = LongitudeEperW;
			         else document.getElementById('fr_lonEW').value = LongitudeEperW;  
			LongitudeSecond = xmlBindings2.getElementsByTagName('LongitudeSeconds')[0].firstChild.nodeValue;  
														///  ATTENTION au P....de S a LongitudeSeconds >>> webservicesx  ////
			aLabel = xmlBindings2.getElementsByTagName('CityOrAirportName');
			if (aLabel.length > 0) {
			   fullName = aLabel[0].firstChild.nodeValue;
			 } else { aLabel = xmlBindings2.getElementsByTagName('Town');// instead of 'label'
			 		  if (aLabel.length > 0) {
					    fullName = aLabel[0].firstChild.nodeValue;
			          } else fullName = '';
			} 
			//alert ('LatitudeDegree='+LatitudeDegree); alert ('LongitudeDegree='+LongitudeDegree);
			strshow = 'Lat:'+LatitudeDegree+'d '+LatitudeMinute+'m '+LatitudeSecond+'s '+LatitudeNpeerS+' // '; 
			strshow = strshow + 'Long:'+LongitudeDegree+'d '+LongitudeMinute+'m '+LongitudeSecond+'s '+LongitudeEperW+'<br>';//alert (strshow);
			if (nextStep){ 			  //document.getElementById('resultTo').innerHTML = strshow;
			  document.getElementById('to_airport').value = fullName;
			  computeDist();
			} else {  		  //document.getElementById('resultFrom').innerHTML = strshow;
			  document.getElementById('fr_airport').value = fullName;
			  ask4destin();
			}
		  }
		}//if (xmlBindings!=null
	  }//for(var i=0; i<=xmlDoc.documentElement.childNodes.length; i++) {
  } else {
	  var message = request.getResponseHeader("Status");
	  if ((message.length == null) || (message.length <= 0)) {
		alert("Error! Request status is " + request.status);
	  } else {
		alert(message);
	  }
  }
}
function deg2rad(val){
	var radian = (val / 180) * 3.142;
	radian = radian.toString();
	radian = radian.substring(0, radian.indexOf(".") + 4);
	return (radian);
}
function square (val) {
  return (Math.pow(val,2));
}
countLig = 0;
function computeDist() {  //alert ('Next is computations');
	setStatus('Computing distance...');	
	var lat1 = document.getElementById('fr_latD').value;
	var latM1 = document.getElementById('fr_latM').value;
	lat1 = parseInt(lat1) + (latM1 / 60);  //alert (lat1.toString())
	if (document.getElementById('to_latNS').value != document.getElementById('fr_latNS').value)  
		lat1 = lat1*(-1);		//$dlat = ($EperN1==$EperN2)? $lat2 - $lat1:$lat2 + $lat1;
	lat1 = deg2rad (lat1);
	var lat2 = document.getElementById('to_latD').value;
	var latM2 = document.getElementById('to_latM').value;
	lat2 = parseInt(lat2) + (latM2 / 60);  //alert (lat2.toString())
	//document.getElementById('to_latNS').value;
	//document.getElementById('fr_latNS').value;
	lat2 = deg2rad (lat2);
	var lon1 = document.getElementById('fr_lonD').value;
	var lonM1 = document.getElementById('fr_lonM').value;
	lon1 = parseInt(lon1) + (lonM1 / 60);  
	if (document.getElementById('to_lonEW').value != document.getElementById('fr_lonEW').value)  
		lon1 = lon1*(-1);		//$dlat = ($EperN1==$EperN2)? $lat2 - $lat1:$lat2 + $lat1;
	lon1 = deg2rad(lon1);
	var lon2 = document.getElementById('to_lonD').value;
	var lonM2 = document.getElementById('to_lonM').value;
	lon2 = parseInt(lon2) + (lonM2 / 60);  
	lon2 = deg2rad(lon2);
	//document.getElementById('to_lonEW').value;
	//document.getElementById('fr_lonEW').value;
	//$dlon = ($EperW1==$EperW2)? $lon2 - $lon1:$lon2 + $lon1;	echo "<br>dlon : ".$dlon;
	
	var radius = 6371;
	var dlat = square (Math.sin( (lat2 - lat1)/2 ));
	var dlon = square (Math.sin( (lon2 - lon1)/2 ));
	var a = Math.sqrt ( dlat   + (Math.cos(lat1) * Math.cos(lat2) * dlon ) );

	var distance;
	if (1 < a)
	  distance = radius * ( 2 * Math.asin( (1) ) );
	else
	  distance = radius * ( 2 * Math.asin( (a) ) );
	distance = Math.round(distance); 
	var wg = parseInt(document.getElementById('weight').value);
    var emissions = wg * distance * _coef_poll * _avr_fuelConsuptionKm / 1000000;
	emissions = Math.round(emissions*1000);   	emissions = emissions/1000;
	obj = document.getElementById('table_results_emissionsC');
	if (obj) {
	  countLig++;
	  classN = ((countLig % 2)==0)? 'result1_emissionsC':'result2_emissionsC'; ///alert (classN)
	  aContent = obj.innerHTML; 
	  aPos = aContent.indexOf('</TBODY>'); 
	  if (aPos==0) aPos = aContent.indexOf('</TABLE>');
	  aStrg = '\n<TR>\n'+
                    '<TD class="'+classN+'">'+ document.getElementById('fr_airport').value +'</TD>\n'+
                    '<TD class="'+classN+'">'+ document.getElementById('to_airport').value +'</TD>\n'+
                    '<TD class="'+classN+'">'+ wg +' Kg</TD>\n'+
                    '<TD class="'+classN+'">'+ distance.toString() +'</TD>\n'+
                    '<TD class="'+classN+'">'+ emissions.toString() +' T</TD>\n'+
                '</TR>'; 
	  newContent = aContent.substr(0,aPos) + aStrg + aContent.substr(aPos,50);
	  //if (aContent.substr(1,5)=='TBODY') aContent = aContent + "</TBODY>";  alert(aContent);
	  obj.innerHTML = newContent;			
	  setStatus('');
	}
}
