var pi = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148;
function computesfpm(form, field) {
  //sfpm = pi*rpm*(diameter/12)
  //diameter = ((sfpm/rpm)/pi)*12
  //rpm = sfpm/pi/(diameter/12)

  var sfpm = form.sfpm.value;
  var rpm = form.rpm.value;
  var diameter = form.diameter.value;
  switch (field.name) {
    case "sfpm":
      rpm = parseFloat(rpm);
      diameter = parseFloat(diameter);
      errorMsg = "";
      if ( isNaN(rpm) || rpm <= 0 ) {
        errorMsg += "You must specify a valid number for 'RPM'\n";
      }
      if ( isNaN(diameter) || diameter <= 0 ) {
        errorMsg += "You must specify a valid number for 'Diameter-inches'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'SFPM'\n\n"+errorMsg);
        return;
      } else {
        sfpm = pi*rpm*(diameter/12);
        form.sfpm.value = roundNumber(sfpm, 4);
      }
      break;
    case "rpm":
      sfpm = parseFloat(sfpm);
      diameter = parseFloat(diameter);
      errorMsg = "";
      if ( isNaN(sfpm) || sfpm <= 0 ) {
        errorMsg += "You must specify a valid number for 'SFPM'\n";
      }
      if ( isNaN(diameter) || diameter <= 0) {
        errorMsg += "You must specify a valid number for 'Diameter-inches'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'RPM'\n\n"+errorMsg);
        return;
      } else {
        rpm = sfpm/pi/(diameter/12);
        form.rpm.value = roundNumber(rpm, 4);
      }
      break;
    case "diameter":
      sfpm = parseFloat(sfpm);
      rpm = parseFloat(rpm);
      errorMsg = "";
      if ( isNaN(sfpm) || sfpm <= 0 ) {
        errorMsg += "You must specify a valid number for 'SFPM'\n";
      }
      if ( isNaN(rpm) || rpm <= 0) {
        errorMsg += "You must specify a valid number for 'RPM'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'Diameter-inches'\n\n"+errorMsg);
        return;
      } else {
        diameter = ((sfpm/rpm)/pi)*12
        form.diameter.value = roundNumber(diameter, 4);
      }
      break;
  }
}

function computecl(form, field) {
  //cclc = feed/rpm/teeth
  //feed = cclc*teeth*rpm
  //rpm = feed/teeth/cclc
  //teeth = feed/cclc/rpm
  var feed = form.feed.value;
  var rpm = form.rpm.value;
  var teeth = form.teeth.value;
  var cclc = form.cclc.value;
  switch (field.name) {
    case "cclc":
      teeth = parseFloat(teeth);
      rpm = parseFloat(rpm);
      feed = parseFloat(feed);
      errorMsg = "";
      if ( isNaN(teeth) || teeth <= 0 ) {
        errorMsg += "You must specify a valid number for 'Number of Teeth'\n";
      }
      if ( isNaN(rpm) || rpm <= 0 ) {
        errorMsg += "You must specify a valid number for 'RPM'\n";
      }
      if ( isNaN(feed) || feed <=0 ) {
        errorMsg += "You must specify a valid number for 'Feed Rate Inches Per Minute'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'Cutter Chip Load'\n\n"+errorMsg);
        return;
      } else {
        cclc = feed/rpm/teeth;
        form.cclc.value = roundNumber(cclc, 4);
      }
      break;
    case "teeth":
      cclc = parseFloat(cclc);
      rpm = parseFloat(rpm);
      feed = parseFloat(feed);
      errorMsg = "";
      if ( isNaN(cclc) || cclc <= 0 ) {
        errorMsg += "You must specify a valid number for 'Cutter Chip Load'\n";
      }
      if ( isNaN(rpm) || rpm <= 0 ) {
        errorMsg += "You must specify a valid number for 'RPM'\n";
      }
      if ( isNaN(feed) || feed <=0 ) {
        errorMsg += "You must specify a valid number for 'Feed Rate Inches Per Minute'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'Number of Teeth'\n\n"+errorMsg);
        return;
      } else {
        teeth = feed/cclc/rpm;
        form.teeth.value = roundNumber(teeth, 4);
      }
      break;
    case "rpm":
      teeth = parseFloat(teeth);
      cclc = parseFloat(cclc);
      feed = parseFloat(feed);
      errorMsg = "";
      if ( isNaN(teeth) || teeth <= 0 ) {
        errorMsg += "You must specify a valid number for 'Number of Teeth'\n";
      }
      if ( isNaN(cclc) || cclc <= 0 ) {
        errorMsg += "You must specify a valid number for 'Cutter Chip Load'\n";
      }
      if ( isNaN(feed) || feed <=0 ) {
        errorMsg += "You must specify a valid number for 'Feed Rate Inches Per Minute'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'RPM'\n\n"+errorMsg);
        return;
      } else {
        rpm = feed/teeth/cclc;
        form.rpm.value = roundNumber(rpm, 4);
      }
      break;
    case "feed":
      teeth = parseFloat(teeth);
      rpm = parseFloat(rpm);
      cclc = parseFloat(cclc);
      errorMsg = "";
      if ( isNaN(teeth) || teeth <= 0 ) {
        errorMsg += "You must specify a valid number for 'Number of Teeth'\n";
      }
      if ( isNaN(rpm) || rpm <= 0 ) {
        errorMsg += "You must specify a valid number for 'RPM'\n";
      }
      if ( isNaN(cclc) || cclc <= 0 ) {
        errorMsg += "You must specify a valid number for 'Cutter Chip Load'\n";
      }
      if ( errorMsg != "" ) {
        alert("Error(s) encountered while calculating 'Feed Rate Inches Per Minute'\n\n"+errorMsg);
        return;
      } else {
        feed = cclc*teeth*rpm
        form.feed.value = roundNumber(feed, 4);
      }
      break;
  }
}

function computemilli(form) {
  var inches = parseFloat(form.inches.value);
  var milli = 0
  if(isNaN(inches)){
    alert("The value you specified for inches is invalid.  Please provide a number value.");
  } else {
    milli = inches * 25.4;
    form.milli.value = roundNumber(milli, 4)
  }  
}

function computeinch(form) {
  var milli = parseFloat(form.milli.value);
  var inches = 0
  if(isNaN(milli)){
    alert("The value you specified for millimeters is invalid.  Please provide a number value.");
  } else {
    inches = milli/25.4;
    form.inches.value = roundNumber(inches, 4);
  }
}

function roundNumber(number, places) {
  places = parseFloat(places);
  if ( isNaN(places) ) {
    return;
  }
	var rnum = number;
	var rlength = places;
	if (rnum > 8191 && rnum < 10485) {
		rnum = rnum-5000;
		var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
		newnumber = newnumber+5000;
	} else {
		var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
	}
	return newnumber;
}