
var metricRatio = 1.609344;
var englishRatio = 0.62137; //km to mi
var footRatio = .3048;

function loadGearTable() {
	var minCog = 11;
	var maxCog = 29;
	var minCR = 38;
	var maxCR = 55;
	var mult = 27; 
	var i = minCog;
	var j = minCR;
	var dUnit = "mi";
	var out = "<table class=\"outlined\" border=\"0\"><tr class=\"darkbg\">";
	var size = 0;
	var cnt = 0;
	var val = 0;
	for(; i <= maxCog; i++) {
		if(i == minCog) { out += "<th></th>"; }
		else {	out += "<th>" + (j+(cnt++)) + "</th>"; }
	}
	for(i = minCog; i <= maxCog; i++) {
		if(i%2!=0){out += "<tr>";}
		else{out+="<tr class=\"darkbg\">";} 
		out += "<td><b>" + i + "</b></td>";
		for(j=minCR; j <= maxCR; j++) {
			out+= "<td>";
			val = parseInt((j/i)*mult);
			if(val >= 75) {val = "<span class=\"smallText\">" + val + "</span>";}
			else if(val >= 90) {val = "<span class=\"medText\">" + val + "</span>";}
			out += val;
			out+= "</td>";
		}
		out += "</tr>";
	}
	document.getElementById("ratioTable").innerHTML = out + "</table>";
 }
 function colorit(_name,_color) {
 //if(!_color) { _color = "#eef";}
 fadeUp(getElem(_name),221,232,241);
 // getElem(_name).style = "background-color:" + _color;
 }
 function getElem(_name) {
  return document.getElementById(_name);
 }
 function getVal(_name) {
  return getElem(_name).value;
 }
function setVal(_name,val) {
  var elem = getElem(_name);
  elem.value = val;
 }
 function calcAvgSpeed() {
try {
  doUrch("/tools/avgspeed");

  var distance = parseInt(getVal("dist"));
  if(!distance) { alert("enter a valid distance.");return; }

  var _time = getVal("time");
  var time; //time in hours
  if(_time) { //attemp to parse as HH:MM[:SS]
	var arr = _time.toString().split(":");
	
	if(arr && arr.length >= 2) {
		if(arr.length == 3) {
			time = parseFloat(arr[0]) + parseFloat(arr[1]/60.0) + parseFloat(arr[2]/3600.0);
		}
		else if(arr.length == 2) {
			time = parseFloat(arr[0]) + parseFloat(arr[1]/60.0);
		}
		else { alert("invalid time!"); }
	}
	else {
		
		time = parseFloat(_time);
	}
  }

  var avgSpeed=0;
  if(distance == NaN || time == NaN) {alert("you must enter a distance.");return;}

  if(!_time) {
	avgSpeed = parseFloat(getVal("avgSpeed")).toFixed(1);
	if(avgSpeed > 0) { 
		time = distance/avgSpeed;
		setVal("time",time);
		colorit("time");
	}
  }
  else {
        
   avgSpeed = parseFloat(distance/time).toFixed(3);
   setVal("avgSpeed",avgSpeed);
   colorit("avgSpeed");
  }
}catch(e){alert("Invalid time or speed. error: " + e.toString());}
} //end func

function calcTourStats() {
try {
  doUrch("/tools/tourstats");
  var distance = parseInt(getVal("tdist"));
  var milesPerDay = parseFloat(getVal("tmiles"));
  if(!distance || !milesPerDay || distance == NaN || milesPerDay == NaN) {alert("you must enter a valid distance and miles/day.");return;}
  var days = parseFloat(distance/milesPerDay).toFixed(1);
  setVal("ttime",days);
  colorit("ttime");
  }
catch(e){alert("invalid distance or miles per day. error: " + e.toString());}
} //end func

function doConversions(metricToEnglish){
try {
 doUrch("/tools/unitconvert");
 if(metricToEnglish) {
 var distM = parseInt(getVal("distM2"));
  var mi = distM*englishRatio;
  getElem("distE2").value=parseFloat(mi).toFixed(2);
  colorit("distE2");
} 
else { //english to metric (default)
  var distE = parseInt(getVal("distE"));
  var km = distE*metricRatio;
  getElem("distM").value=parseFloat(km).toFixed(2);
  colorit("distM");
}
}catch(e){alert("invalid distance. error: " + e.toString());}
}
function doConversions2(){
try {
  doUrch("/tools/unitconvert");
  var feet = parseInt(getVal("feet"));
  var m = feet*footRatio;
  getElem("meters").value=parseFloat(m).toFixed(2);
  colorit("meters");
  
}catch(e){alert("invalid length value. error: " + e.toString());}
}
function aclear() {
  setVal("avgSpeed","");
  setVal("dist","25");
  colorit("avgSpeed","white");
  setVal("time","1.5");
colorit("time","white");
}
function tclear() {
  setVal("tdist","250");
  setVal("tmiles","80");
  colorit("tdays","");
}
function cclear(metToEng) {
if(metToEng) {
 setVal("distM2","100");
  setVal("distE2","");
}
else {
  setVal("distE","100");
  setVal("distM","");
}
}
function c2clear() {
  setVal("feet","100");
  setVal("meters","");
}

//calculate the % grade by hypotenuse (simple)
function calcSimpleGrade() {
  doUrch("/tools/grade");
  var runFeet = getVal("gradeHypotFeet");
  var runMiles = getVal("gradeHypotMiles");
  var riseFeet = getVal("gradeRise");
  if(!(runFeet || runMiles) && !rise) {
	alert("enter valid values.");
	return;
    }
 if(runMiles) {
    runFeet = 5280 * runMiles;
  }

  var gradeValue = riseFeet/runFeet*100;
  setVal("gradeValue",parseFloat(gradeValue).toFixed(1));
}

function gclear() {
  setVal("gradeHypotFeet","");
  setVal("gradeHypotMiles","");
  setVal("gradeRise","");
  setVal("gradeValue","");
}

function doUrch(s) {
 if(s) {
   urchinTracker(s);
 }
}
