//<script language="javascript" type="text/javascript">


//**** Version 3 ****//
/*

This script is pretty basic, but if you use it, please let me know.  Thanks!
Andrew Hedges, andrew(at)hedges(dot)name

*/

var Rm = 3961; // mean radius of the earth (miles) at 39 degrees from the equator
var Rk = 6373; // mean radius of the earth (km) at 39 degrees from the equator

/* main function */
function findDistance(t1,n1,t2,n2) {
	//alert("lat1: "+t1+"\nlon1: "+n1+"\nlat2: "+t2+"\nlon2: "+n2);
	var lat1, lon1, lat2, lon2, dlat, dlon, a, c, dm, dk, mi, km, distanceArr;

	distanceArr = [];
	// get values for lat1, lon1, lat2, and lon2
	//t1 = frm.lat1.value;
	//n1 = frm.lon1.value;
	//t2 = frm.lat2.value;
	//n2 = frm.lon2.value;

	// convert coordinates to radians
	lat1 = deg2rad(t1);
	lon1 = deg2rad(n1);
	lat2 = deg2rad(t2);
	lon2 = deg2rad(n2);

	// find the differences between the coordinates
	dlat = lat2 - lat1;
	dlon = lon2 - lon1;

	// here's the heavy lifting
	a  = Math.pow(Math.sin(dlat/2),2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon/2),2);
	c  = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); // great circle distance in radians
	dm = c * Rm; // great circle distance in miles
	dk = c * Rk; // great circle distance in km

	// round the results down to the nearest 1/1000
	mi = round(dm);
	km = round(dk);

	distanceArr[0] = mi;
	distanceArr[1] = km;

	// display the result
	//frm.mi.value = mi;
	//frm.km.value = km;
	//alert('Distance in mi: ' + mi);

	return(distanceArr);
}


// convert degrees to radians
function deg2rad(deg) {
	rad = deg * Math.PI/180; // radians = degrees * pi/180
	return rad;
}


// round to the nearest 1/1000
function round(x) {
	return Math.round( x * 1000) / 1000;
}



/*
Hartsfield Jackson Atlanta International Airport	33.6366996800000000	-84.4281005900000000
Miami International Airport				25.7931995400000000	-80.2906036400000000
*/

//**** Version 2 ****//
var geocoder, location1, location2;

function testDist(lat1,lon1,lat2,lon2){
//alert('(1) in testDist');
	/*var R = 6371; // Radius of the earth in km
	var dLat = (lat2-lat1).toRad();  // Javascript functions in radians
	var dLon = (lon2-lon1).toRad();
	var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
		Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
		Math.sin(dLon/2) * Math.sin(dLon/2);
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
	var d = R * c; // Distance in km*/

    //Radius of the earth in:  1.609344 miles,  6371 km  | var R = (6371 / 1.609344);
   // var R = 3958.7558657440545; // Radius of earth in Miles
   var R = 3963.1676;
    var diffLat = lat2 - lat1;
    var diffLon = lon2 - lon1;
    var dLat = toRad(diffLat);
    var dLon = toRad(diffLon);
    //alert('(2) dLat: ' + dLat + ', dLon: ' + dLon);

    var a = (Math.sin(dLat/2) * Math.sin(dLat/2)) + Math.cos(lat1) * Math.cos(lat2) * (Math.sin(dLon/2) * Math.sin(dLon/2));
    //alert('a = ' + a);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    //alert('c = ' + c);
    var d = R * c;
    //alert('d = ' + d);
    return d;

	alert('(3) Calculated Dist: ' + d);

}

function toRad(Value) {
	//alert('in toRad');
	/** Converts numeric degrees to radians */
	/*if (typeof(Number.prototype.toRad) === "undefined") {
	  Number.prototype.toRad = function() {
	    return this * Math.PI / 180;
	  }
	}*/

	var rad = Value * Math.PI / 180;
	//alert('deg: ' + Value + ', rad: ' + rad);
	return rad;
}


//**** Version 1 ****//
function getJetSpeed(jetType){		//different string representation of each jetType
	var jetSpeed;
	if(jetType == 'turboProp')
		jetSpeed = 280;	//316;
	else if(jetType == 'veryLight')
		jetSpeed = 350;
	else if(jetType == 'light')
		jetSpeed = 380;
	else if(jetType == 'midSize')
		jetSpeed = 430;	//470;
	else if(jetType == 'superMid')
		jetSpeed = 450;	//604;
	else if(jetType == 'heavy')
		jetSpeed = 479;	//540;
	else if(jetType == 'airliner')
		jetSpeed = 544;

	return jetSpeed;
}

/*function getJetSpeed(jetType){
	var jetSpeed;
	if(jetType == 'very light')
		jetSpeed = 250;
	else if(jetType == 'light')
		jetSpeed = 380;
	else if(jetType == 'mid sized')
		jetSpeed = 420;
	else if(jetType == 'super mid sized')
		jetSpeed = 450;
	else if(jetType == 'heavy')
		jetSpeed = 500;

	return jetSpeed;
}*/

function getJetMaxPass(jetType){
	var maxPass;
		if(jetType == 'very light')
			maxPass = 8;
		else if(jetType == 'light')
			maxPass = 6;
		else if(jetType == 'mid sized')
			maxPass = 8;
		else if(jetType == 'super mid sized')
			maxPass = 10;
		else if(jetType == 'heavy')
			maxPass = 16;

	return maxPass;
}

function getJetCost(jetHourlyCost,jetType,mem,ow,tl){		//*** now passing jetHourlyCost instead of jetType
	var jetCost;	//per hour
	var hourlyCost;
	if((jetHourlyCost != '') && (jetHourlyCost != undefined) && (jetHourlyCost != '0')){
		jetHourlyCost = Number(jetHourlyCost);
	} else {

	//*** Member Hourly  Rates
	/*var cost_veryLight;			//*** converted all "turbo prop" values to be "very light"
	var cost_light;
	var cost_mid;
	var cost_superMid;
	var cost_heavy;*/
	var defaultCost_turboProp = 1700;
	var defaultCost_veryLight = 2200;
	var defaultCost_light = 3000;	//3300;
	var defaultCost_midSize = 4500;	//4800;
	var defaultCost_superMid = 5500;	//6600;
	var defaultCost_heavy = 7500;	//8500;
	var defaultCost_airliner = 11000;

	if(jetType == 'turboProp')
		jetHourlyCost = defaultCost_turboProp;
	else if(jetType == 'veryLight')
		jetHourlyCost = defaultCost_veryLight;
	else if(jetType == 'light')
		jetHourlyCost = defaultCost_light;
	else if(jetType == 'midSize')
		jetHourlyCost = defaultCost_midSize;
	else if(jetType == 'superMid')
		jetHourlyCost = defaultCost_superMid;
	else if(jetType == 'heavy')
		jetHourlyCost = defaultCost_heavy;
	else if(jetType == 'airliner')
		jetHourlyCost = defaultCost_airliner;
	}


	if( (ow == 'return') && (tl < 3) ){
		//return trip hourly cost if trip length is < 3 days
		/*cost_veryLight = 2200;
		cost_light = 3300;
		cost_mid = 4800;
		cost_superMid = 7600;
		cost_heavy = 8500;*/
		hourlyCost = jetHourlyCost;
	} else {
		//oneway hourly cost (or return trip cost of trip length is > 3 days)
		/*cost_veryLight = 3000;
		cost_light = 4200;
		cost_mid = 6000;
		cost_superMid = 8850;
		cost_heavy = 11500;*/
		hourlyCost = (jetHourlyCost*1.25);
	}

	if(mem == 'member'){
		//member hourly rates
		/*if(jetType == 'very light')
			jetCost = cost_veryLight;
		else if(jetType == 'light')
			jetCost = cost_light;
		else if(jetType == 'mid sized')
			jetCost = cost_mid;
		else if(jetType == 'super mid sized')
			jetCost = cost_superMid;
		else if(jetType == 'heavy')
			jetCost = cost_heavy;*/

			jetCost = hourlyCost;

	} else {
		//non member hourly rates
		/*if(jetType == 'very light')
			jetCost = cost_veryLight + (cost_veryLight*0.1);
		else if(jetType == 'light')
			jetCost = cost_light + (cost_light*0.1);
		else if(jetType == 'mid sized')
			jetCost = cost_mid + (cost_mid*0.1);
		else if(jetType == 'super mid sized')
			jetCost = cost_superMid + (cost_superMid*0.1);
		else if(jetType == 'heavy')
			jetCost = cost_heavy + (cost_heavy*0.1);*/

			jetCost = hourlyCost + (hourlyCost*0.1);
	}

//alert('jetCost: ' + jetCost);

	return jetCost;
}


/*function getJetCost(jetType,mem,ow,tl){
	var jetCost;	//per hour

	//*** Member Hourly  Rates
	var cost_veryLight;			//*** converted all "turbo prop" values to be "very light"
	var cost_light;
	var cost_mid;
	var cost_superMid;
	var cost_heavy;

	if( (ow == 'return') && (tl < 3) ){
		//return trip hourly cost if trip length is < 3 days
		cost_veryLight = 2200;
		cost_light = 3300;
		cost_mid = 4800;
		cost_superMid = 7600;
		cost_heavy = 8500;
	} else {
		//oneway hourly cost (or return trip cost of trip length is > 3 days)
		cost_veryLight = 3000;
		cost_light = 4200;
		cost_mid = 6000;
		cost_superMid = 8850;
		cost_heavy = 11500;
	}

	if(mem == 'member'){
		//member hourly rates
		if(jetType == 'very light')
			jetCost = cost_veryLight;
		else if(jetType == 'light')
			jetCost = cost_light;
		else if(jetType == 'mid sized')
			jetCost = cost_mid;
		else if(jetType == 'super mid sized')
			jetCost = cost_superMid;
		else if(jetType == 'heavy')
			jetCost = cost_heavy;
	} else {
		//non member hourly rates
		if(jetType == 'very light')
			jetCost = cost_veryLight + (cost_veryLight*0.1);
		else if(jetType == 'light')
			jetCost = cost_light + (cost_light*0.1);
		else if(jetType == 'mid sized')
			jetCost = cost_mid + (cost_mid*0.1);
		else if(jetType == 'super mid sized')
			jetCost = cost_superMid + (cost_superMid*0.1);
		else if(jetType == 'heavy')
			jetCost = cost_heavy + (cost_heavy*0.1);
	}

	return jetCost;
}*/

function getCostFly(costbyhour, minutes)
{
	//alert('costbyhour: ' + costbyhour + ', minutes: ' + minutes);
	var costbymin = costbyhour / 60;
	var cost = costbymin * minutes;
	//alert('cost: ' + cost);
	return parseInt(cost);
}

function getTimeFly(minutes)
{
	num = parseInt(minutes);
	var t = new Array();
	var remainder = num % 60;
    var quotient = ( num - remainder ) / 60;
	t[0] = quotient;
	t[1] = remainder;
	return t;
}

function getTimeMins(distMiles, speed) {	//speed is in miles per hour
	return (distMiles/speed) * 60;
}

function numberFormat(nStr,prefix){
    var prefix = prefix || '';
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    return prefix + x1 + x2;
}

/*
</script>

<script type="text/javascript">
var lat1 = '33.6366996800000000';
var lon1 = '-84.4281005900000000';
var lat2 = '25.7931995400000000';
var lon2 = '-80.2906036400000000';
//var distance = testDist(lat1,lon1,lat2,lon2);
var distance = findDistance(lat1,lon1,lat2,lon2);
alert('distance mi = ' + distance[0]);
alert('distance km = ' + distance[1]);

var timeMins = getTimeMins(distance[0],500);
var speed = 500; //miles per hour
var cost = 3000; //dollars per hour
var flightTime = getTimeFly(timeMins);
var flightCost = getCostFly(cost, timeMins);
flightCost = numberFormat(flightCost,'$');

alert('flightTime: ' + flightTime[0] + 'h ' + flightTime[1] + 'mins');
alert('flightCost: ' + flightCost);
</script>
*/
