var a = [0.0000000001,
         0.000000001,
	 0.000001*2.54*.01,
	 0.000001,
	 2.54*.01*.001,
	 .001,
	 .01,
	 2.54*.01,
	 2.54*.01*4,
	 1/4.97097,
	 0.2286,
	 2.54*.01*12,
	 0.4572,
	 1/1.1811,
	 2.54*.01*12*3,
	 1,
	 2.54*.01*12*6,
	 1/4.97097*25,
	 20.1168,
	 1/4.97097*1000,
	 2.54*.01*12*6*120,
	 1000,
	 1609.344,
	 1852,
	 1/4.97097*1000*8*3,
	 1852*3];

var b = [1,
	16.0184632652,
	119.82643,
	515.3788,
	1000,
	1000,1000,
	1328.939,
	27679.9,
	32040,
	1000000,
	2643,
	7658,
	8906,
	11370,
	19300,
	10510,
	1000];
	
	
function conLin() {
  var FromVal, ToVal, FromName, ToName, v1;

  v1 = document.linear_converter.what.value;
  v1 = cleanUp(v1);
  v1 = parseFloat(v1);
  if (isNaN(v1)) v1 = 1;
  document.linear_converter.what.value = v1;

  FromVal = document.linear_converter.from[document.linear_converter.from.selectedIndex].value;
  ToVal = document.linear_converter.to[document.linear_converter.to.selectedIndex].value;
  FromName = document.linear_converter.from.options[document.linear_converter.from.selectedIndex].text;
  ToName = document.linear_converter.to.options[document.linear_converter.to.selectedIndex].text;
//  document.linear_converter.answer.value = v1 + " " + FromName + " = " + find_factor(v1, FromVal, ToVal) + " " + ToName;
  document.getElementById("results").innerHTML = "Results (in " + ToName + "):";
  document.getElementById("units").innerHTML = "Units (in " + FromName + "):";
  document.linear_converter.answer.value = "" + find_factor(v1, FromVal, ToVal) + "";
}

function gen_Converter(f_name, x) {

  var FromVal, ToVal, FromName, ToName, v1, Factor;
  var i = "" + x + "";
  var f = eval("document." + f_name);
  v1 = f.what.value;
  v1 = cleanUp(v1);
  v1 = parseFloat(v1);
  if (isNaN(v1)) v1 = 1;
  f.what.value = v1;
  
  FromVal = f.from[f.from.selectedIndex].value;
  ToVal = f.to[f.to.selectedIndex].value;
  FromName = f.from.options[f.from.selectedIndex].text;
  ToName = f.to.options[f.to.selectedIndex].text;
  Factor = eval("(" + FromVal + ")/(" + ToVal + ")");

  switch(i) {
  	case "2":
  		document.getElementById("results2").innerHTML = ToName + " Results:";
  		document.getElementById("units2").innerHTML = FromName + " Units:";
  		break;
  	case "3":
  		document.getElementById("results3").innerHTML = ToName + " Results:";
  		document.getElementById("units3").innerHTML = FromName + " Units:";
  		break;
  	case "4":
  		document.getElementById("results4").innerHTML = ToName + " Results:";
  		document.getElementById("units4").innerHTML = FromName + " Units:";
  		break;
  	case "5":
  		document.getElementById("results5").innerHTML = ToName + " Results:";
  		document.getElementById("units5").innerHTML = FromName + " Units:";
  		break;
  	case "6":
  		document.getElementById("results6").innerHTML = ToName + " Results:";
  		document.getElementById("units6").innerHTML = FromName + " Units:";
  		break;
  	case "7":
  		document.getElementById("results7").innerHTML = ToName + " Results:";
  		document.getElementById("units7").innerHTML = FromName + " Units:";
  		break;
  	case "8":
  		document.getElementById("results8").innerHTML = ToName + " Results:";
  		document.getElementById("units8").innerHTML = FromName + " Units:";
  		break;
  }
  f.answer.value = "" + final_comp(v1, Factor) + "";
}

function density_Converter() {
  var FromVal, ToVal, FromName, ToName, v1;

  v1 = document.density_converter.what.value;
  v1 = cleanUp(v1);
  v1 = parseFloat(v1);
  if (isNaN(v1)) v1 = 1;
  document.density_converter.what.value = v1;
  
  FromVal = document.density_converter.from[document.density_converter.from.selectedIndex].value;
  ToVal = document.density_converter.to[document.density_converter.to.selectedIndex].value;
  FromName = document.density_converter.from.options[document.density_converter.from.selectedIndex].text;
  ToName = document.density_converter.to.options[document.density_converter.to.selectedIndex].text;

  document.getElementById("results7").innerHTML = ToName + " Results:";
  document.getElementById("units7").innerHTML = FromName + " Units:";
  document.density_converter.answer.value = "" + get_fact_density(v1, FromVal, ToVal) + "";
}

function final_comp(ff,factor){
 ff *= factor;

 if (Number.prototype.toFixed) {
   ff = ff.toFixed(7);
   ff = parseFloat(ff);
 }
 else {
   var leftSide = Math.floor(ff);
   var rightSide = ff - leftSide;
   ff = leftSide + Math.round(rightSide *10000000)/10000000;
 }

 return punct(ff);
}


function punct(num) {
 var n = Math.floor(num);
 var myNum = num + "";
 var myDec = "";

 if (myNum.indexOf('.',0) > -1){
  myDec = myNum.substring(myNum.indexOf('.',0),myNum.length);
 }

  var arr=new Array('0'), i=0;
  while (n>0)
    {arr[i]=''+n%1000; n=Math.floor(n/1000); i++;}
  arr=arr.reverse();
  for (var i in arr) if (i>0) //padding zeros
    while (arr[i].length<3) arr[i]='0'+arr[i];
  return arr.join() + myDec;
}


function resetanswer() {
  document.linear_converter.answer.value = "";
}

function find_factor(ff,from_val,to_val){
 var temp = a[from_val] / a[to_val];
 //var temp = a[from_val] * (1/a[to_val]);
 ff *= temp;
 ff = Math.round(ff *1000000)/1000000;

return punct(ff);
}

function cleanUp(string) {
    for (var i=0, output='', valid="eE-0123456789."; i<string.length; i++)
       if (valid.indexOf(string.charAt(i)) != -1)
          output += string.charAt(i)
    return output;
}


function myTemp() {
  var FromVal, ToVal, FromName, ToName, v1;

  v1 = document.temp_converter.what.value;
  v1 = cleanUp(v1);
  v1 = parseFloat(v1);
  if (isNaN(v1)) v1 = 0;
  document.temp_converter.what.value = v1;
  
  FromVal = document.temp_converter.from[document.temp_converter.from.selectedIndex].value;
  ToVal = document.temp_converter.to[document.temp_converter.to.selectedIndex].value;
  FromName = document.temp_converter.from.options[document.temp_converter.from.selectedIndex].text;
  ToName = document.temp_converter.to.options[document.temp_converter.to.selectedIndex].text;

  var ConvertedTemp = compute_factor(v1, FromVal, ToVal);
  if (ConvertedTemp == "Below Absolute Zero"){
    document.getElementById("results4").innerHTML = "Results (in " + ToName + "):";
    document.getElementById("units4").innerHTML = "Units (in " + FromName + "):";
    document.temp_converter.answer.value = "Your input cannot be below absolute zero.";
  } else {
    document.getElementById("results4").innerHTML = "Results (in " + ToName + "):";
    document.getElementById("units4").innerHTML = "Units (in " + FromName + "):";
    //document.temp_converter.answer.value = v1 + " " + FromName + " = " + ConvertedTemp + " " + ToName;
    document.temp_converter.answer.value = "" + ConvertedTemp + "";
  }
}

function compute_factor(ff,from_val,to_val){
 // first convert to kelvin
 if (from_val == 0){
   ff = ff + 273.15;
 } else if (from_val == 1){
   ff = ((ff - 32)/ 1.8) + 273.15;
 } else if (from_val == 2){
   ff = ff / 1.8;
 } else if (from_val == 3){
   ff = (ff * 1.25) + 273.15;
 }

 if (ff < 0){
   // Below absolute zero
   return "Below Absolute Zero";
 }

 // now convert kelvin to unit
 if (to_val == 0){
   ff = ff - 273.15;
 } else if (to_val == 1){
   ff = (1.8 * (ff -273.15)) + 32;
 } else if (to_val == 2){
   ff = ff * 1.8;
 } else if (to_val == 3){
   ff = (ff - 273.15) / 1.25;
 }
 
 // round it off
 if (Number.prototype.toFixed) {
   ff = ff.toFixed(7);
   ff = parseFloat(ff);
 }
 else {
   var leftSide = Math.floor(ff);
   var rightSide = ff - leftSide;
   ff = leftSide + Math.round(rightSide *10000000)/10000000;
 }

return ff;
}

function get_fact_density(ff,from_val,to_val){
 var temp = b[from_val] / b[to_val];
 //var temp = b[from_val] * (1/b[to_val]);
 ff *= temp;

 if (Number.prototype.toFixed) {
   ff = ff.toFixed(7);
   ff = parseFloat(ff);
 }
 else {
   var leftSide = Math.floor(ff);
   var rightSide = ff - leftSide;
   ff = leftSide + Math.round(rightSide *10000000)/10000000;
 }

return punct(ff);
}

function clearLin(f) {
  switch(f.name) {
  	case "linear_converter":
  		document.getElementById("results").innerHTML = "Results:";
  		document.getElementById("units").innerHTML = "Units:";
  		break;
  	case "volume_converter":
  		document.getElementById("results2").innerHTML = "Results:";
  		document.getElementById("units2").innerHTML = "Units:";
  		break;
  	case "speed_converter":
  		document.getElementById("results3").innerHTML = "Results:";
  		document.getElementById("units3").innerHTML = "Units:";
  		break;
  	case "temp_converter":
  		document.getElementById("results4").innerHTML = "Results:";
  		document.getElementById("units4").innerHTML = "Units:";
  		break;
  	case "weight_converter":
  		document.getElementById("results5").innerHTML = "Results:";
  		document.getElementById("units5").innerHTML = "Units:";
  		break;
  	case "area_converter":
  		document.getElementById("results6").innerHTML = "Results:";
  		document.getElementById("units6").innerHTML = "Units:";
  		break;
  	case "density_converter":
  		document.getElementById("results7").innerHTML = "Results:";
  		document.getElementById("units7").innerHTML = "Units:";
  		break;
  	case "power_converter":
  		document.getElementById("results8").innerHTML = "Results:";
  		document.getElementById("units8").innerHTML = "Units:";
  		break;
  }
  f.reset();
}

