/* copyright © 2002 - 2007 JAM Performance Transmissions, LLC  All rights reserved.  */

function doIt()
{
  gravatationalAcceleration = 32.2;
 getField("DistanceTraveled").value = "";
 if (validateInputFields() == "false")  return;

 var weight = getField("Weight").value;
 var torque = getField("EngineTorque").value; 
 var transGearRatio = getField("1stGearRatio").value;  
 var rearGearRatio = getField("RearGearRatio").value; 
 var tireDia = getField("TireDia").value;        
 var shiftRpm = getField("ShiftRpm").value;  
 var radius = tireDia / 2;
 var tireCircumference =  (tireDia/12 * 3.14159);
  
  // alert("tireCircumference: " + tireCircumference);

 //2
 var massOfCar = (weight / gravatationalAcceleration);  //108
  
  // alert("massOfCar: " + massOfCar)
 //4
 var force = torque * transGearRatio * rearGearRatio / (radius/12);
  // alert("force: " + force)
 //5
 var acceleration = force / massOfCar;
  // alert("acceleration: " + acceleration)
 //6
 var velocity = (shiftRpm / transGearRatio / rearGearRatio) * tireCircumference;
  // alert("velocity: " + velocity)
 //7
 var time = (velocity/60) / acceleration;
  // alert("time: " + time)
  
 //8
 var distanceTraveled = 0.5 * acceleration * time * time ;
 getField("DistanceTraveled").value = (Math.round(distanceTraveled * 10))/10;

}

function validateInputFields()
{
 var rearGear = getField("RearGearRatio").value; 
 if ( isNaN(rearGear) || rearGear < 2 || rearGear > 6.13)
 {
  alert("Rear Gear Ratio must be a valid entry!  (2.0 - 6.13)");
  getField("RearGearRatio").focus();
  getField("RearGearRatio").select();
  return "false";
 }
 var tireDia = getField("TireDia").value; 
 if ( isNaN(tireDia) || tireDia < 20 || tireDia > 35)
 {
  alert("Tire Diameter must be a valid entry! (20 - 35)");
  getField("TireDia").focus();
  getField("TireDia").select();
  return "false";
 }

 var rpm = getField("ShiftRpm").value; 
 if ( isNaN(rpm) || rpm == null || rpm < 1000 || rpm > 7500)
 {
  alert("RPM must be a valid entry! (1000 - 7500)");
  getField("ShiftRpm").focus();
  getField("ShiftRpm").select();
  return "false";
 }

 var transGearRatio = getField("1stGearRatio").value;  
 if ( isNaN(transGearRatio)  || transGearRatio == null || transGearRatio < 2 || transGearRatio > 4)
 {
  alert("Trans Gear Ratio must be a valid entry! (2.00 - 4.00)");
  getField("1stGearRatio").focus();
  getField("1stGearRatio").select();
  return "false";
 }

 var weight = getField("Weight").value;
 if ( isNaN(weight)  || weight == null || weight < 1000 || weight > 7000)
 {
  alert("Weight must be a valid entry! (1000 - 7000)");
  getField("Weight").focus();
  getField("Weight").select();
  return "false";
 }

 var torque = getField("EngineTorque").value; 
 if ( isNaN(torque)  || torque == null || torque < 100 || torque > 1000)
 {
  alert("Engine Torque must be a valid entry! (100 - 1000)");
  getField("EngineTorque").focus();
  getField("EngineTorque").select();
  return "false";
 }

 return "true";
}
function getField(fieldId)
{
 var field = document.getElementById(fieldId);
 if (field == null)
       alert("didn't find " + fieldId);
 else
  return field; 
}