// constants
var MILES = 0;
var KILOMETERS = 1;

// number constants
var YARDS_IN_MILE = 1760;
var METERS_IN_METER = 1;
var METERS_IN_400 = 400;
var METERS_IN_MILE = 1609.344;
var METERS_IN_KM = 1000;
var METERS_IN_YARD = METERS_IN_MILE / YARDS_IN_MILE;

function loadCookies()
{
	var weight = readCookie("weight");
	if (weight!=null) {
		document.getElementById("txtWeight").value = weight;
	}
	else {
		document.getElementById("txtWeight").value = "";
	}
	document.getElementById("radRun").checked=true;
	document.getElementById("radMiles").checked=true;

}

function saveCookies()
{
	//right now, just save the weight here...
	createCookie("weight", document.getElementById("txtWeight").value, 60);
}

function toggleScale (arg) {

	var total_distance = document.getElementById("distance").value;
	if (arg == "MILES") {
		var dist = total_distance / 1609.344;
		dist = dist * 1000;
	}
	else if (arg == "KMS") {
		var dist = total_distance / 1000;
		dist = dist * 1609.344;
	}
	else {
		// Revert to the default (miles)
		var dist = total_distance / 1609.344;
		dist = dist * 1000;
	}

	// Refresh
	document.getElementById("distance").value = dist.toFixed(2);
}


function clearValues()
{
	document.getElementById("distance").value="0.00";
	document.getElementById("txtHours").value="00";
	document.getElementById("txtMins").value="00";
	document.getElementById("txtSecs").value="00";
	document.getElementById("txtPace").value="";
	document.getElementById("txtCalories").value="";
	document.getElementById("txtWeight").value="";
	clearRoute();
}

function EnablePaceButton() {
	document.getElementById("btnGetPace").disabled=false;
//	var bEnabled
//	if (Math.round(document.getElementById("distance").value)==0) {
//		bEnabled=false;
//	}	
//	if (document.getElementById("txtDuration").value == "") 
//	OR (document.getElementById("txtDuration").value =="00:00:00") 
//	OR (document.getElementById("txtDistance").value == "") 
//	OR (document.getElementById("txtDuration").value == "0") 
//		{document.getElementById("btnGetPace").disabled=true}
//	else
//		{document.getElementById("btnGetPace").disabled=false}
}

function  calculatePaceandCalories()
{
	calculatePace();
	calculateCalories();
}

function getAverageSpeed()
{
	var distVal = document.getElementById("distance").value;
	if (document.getElementById("radKMS").checked==true) {
		//convert distance to miles
		distVal = 	distVal / 1609.344;
		distVal = distVal * 1000;
	}
	var duration = convertTimeToMinutes();
	var sSpeed = (distVal / duration) * 60;

	return sSpeed.toFixed(2);

}

function convertTimeToMinutes()
{
	var hour = document.getElementById("txtHours").value;
	var min = document.getElementById("txtMins").value;
	var sec = document.getElementById("txtSecs").value;
	if (Math.round(sec) ==0){
		var duration = Number((hour * 60)) + Number(min);		
	}
	else {
		var duration = Number((hour * 60)) + Number(min) + Number((sec / 60));
	}
	return Math.round(duration);
}

function calculateCalories()
{
	var sAvgSpeed = getAverageSpeed();	
	var sglMinutes = convertTimeToMinutes();
	var iEventClass = getActivityType();

	//define the ratio for the calories burned
	var sglRatio
	if (iEventClass==0) {		//run
		if (sAvgSpeed < 5.2) {
			sglRatio = 0.064;
		}
		else if (sAvgSpeed < 6.0) {
			sglRatio = 0.072;
		}
		else if (sAvgSpeed < 6.7) {
			sglRatio = 0.080;
		}
		else if (sAvgSpeed < 7.5) {
			sglRatio = 0.088;
		}
		else if (sAvgSpeed < 8.6) {
			sglRatio = 0.100;
		}
		else if (sAvgSpeed < 10) {
			sglRatio = 0.116;
		}
		else {
			sglRatio = 0.132;
		}

	}
	else if (iEventClass==1) {		//walk
		if (sAvgSpeed < 3.5) {
			sglRatio = 0.032;
		}
		else if (sAvgSpeed < 4.0) {
			sglRatio = 0.036;
		}
		else if (sAvgSpeed < 4.5) {
			sglRatio = 0.040;
		}
		else {
			sglRatio = 0.044;
		}
	}
	else if (iEventClass==2) {		//bike
		if (sAvgSpeed < 13.9) {
			sglRatio = 0.064;
		}
		else {
			sglRatio = 0.080;
		}
	}
	else if (iEventClass==3) {
		sglRatio = 0.067;		//swim
	}
	else {
          		sglRatio = 0.063;		//split the difference
	}

	var sglWeight = document.getElementById("txtWeight").value;
	var sglCalCount = sglRatio * sglWeight * sglMinutes;

	document.getElementById("txtCalories").value = Math.round(sglCalCount);

}

function calculatePace()
{	
	// Time (converted to seconds)
	var hour = document.getElementById("txtHours").value;
	var min = document.getElementById("txtMins").value;
	var sec = document.getElementById("txtSecs").value;
	var timeObj = new TimeObject(hour, min, sec);

	// Distance
	var distVal = document.getElementById("distance").value;
	var distUnit = getDistanceUnit();
	var distObj = new DistanceObject(distVal, distUnit);

	// Pace (converted to seconds)
	var hourP = 0;
	var minP = 0;
	var secP = 0;
	var strPaceTime
	var strPaceHours

	var paceUnit = getPaceUnit();
	var strPaceRate = getDistanceAbbr();
	var paceObj = new PaceObject(hourP, minP, secP, paceUnit);

	paceObj.calculate(timeObj, distObj);

	strPaceHours = paceObj.getHours();
	var sHours = Left(strPaceHours, 1);	
	var sMsg="";
	if (strPaceHours == "00") {
		strPaceTime = "";
	}
	else if (sHours == "0") {
		strPaceHours = Right(strPaceHours, 1) + ":";
		strPaceTime = strPaceHours;
	}
	else if (sHours =="N") {
		sMsg = "INV";
	}
	else if (sHours == "I") {
		sMsg = "INV";
	}
	else {
		strPaceTime = strPaceHours + ":";
	}

	if (sMsg=="INV")
	{
		document.getElementById("txtPace").value = "";
	}
	else
	{
		strPaceTime = strPaceTime + paceObj.getMinutes() + ":" + paceObj.getSeconds();
		document.getElementById("txtPace").value = strPaceTime + " " + strPaceRate;
	}

}

function getActivityType()
{
	var unit;
	if (document.getElementById("radRun").checked)
	{	//run
		unit = "0";
	}
	else if (document.getElementById("radWalk").checked)
	{	//walk
		unit = "1";
	}
	else if (document.getElementById("radBike").checked)
	{	//bike
		unit = "2";
	}
	else
	{	//swim
		unit = "3";
	}

	return unit;
}

function getDistanceAbbr()
{
	var unit;
	if (document.getElementById("radMiles").checked)
	{
		unit = "/mile";
	}
	else
	{
		unit = "/km";
	}
	
	return unit;
}
function getDistanceUnit()
{
	var unit;
	if (document.getElementById("radMiles").checked)
	{
		unit = METERS_IN_MILE;
	}
	else
	{
		unit = METERS_IN_KM;
	}
	
	return unit;
}

function getPaceUnit()
{
	var unit;
	if (document.getElementById("radMiles").checked)
		{
		unit = METERS_IN_MILE;
		}
	else
		{
		unit = METERS_IN_KM;
		}

	return unit;
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}