//**************************************************************************
//  this function processes form values and calls the functions to create
//  the gear tables 
//**************************************************************************
function calculate() {

  //declared variables for the function calculate
  var x = 0;
  var y = 0;
  var finaldrive = 0;
  var transtotal = 0;
  var tcasetotal = 0;
  var tcaselabel = "label";
  var underoverlabel = "label";
  var stopnow = "no";
  var gear = new Array(11);
  var translabel = new Array(7);
  
  //move form gear values into array
  gear[1] = document.getgears.firstgear.value;
  gear[2] = document.getgears.secondgear.value;
  gear[3] = document.getgears.thirdgear.value;
  gear[4] = document.getgears.fourthgear.value;
  gear[5] = document.getgears.fifthgear.value;
  gear[6] = document.getgears.sixthgear.value;
  gear[7] = document.getgears.reversegear.value;
  gear[8] = document.getgears.tcaselow.value;
  gear[9] = document.getgears.tcasehigh.value;
  gear[10] = document.getgears.diffgear.value;
  gear[11] = document.getgears.underoverdrive.value;

  //create transmission labels
  translabel[1] = "First gear:";
  translabel[2] = "Second gear:";
  translabel[3] = "Third gear:";
  translabel[4] = "Fourth gear:";
  translabel[5] = "Fifth gear:";
  translabel[6] = "Sixth gear:";
  translabel[7] = "Reverse:";
  
  //************ check for form values that are null or blank **************
  x = 1;
  while (x < 12) { 
    if ((gear[x] == null) || (gear[x] == "")) { //if null then assign 0
      gear[x] = 0;
    } //end if
    x = x + 1;
  } //end while
  //********** end check for form values that are null or blank ************

  //***** test for minimum one transmission, tcase, and diff value *********
  transtotal = gear[1]+gear[2]+gear[3]+gear[4]+gear[5]+gear[6]+gear[7];
  tcasetotal = gear[8]+gear[9];
  if (transtotal == 0) { // alert user if no transmission value has been entered
    stopnow = "yes";
    alert("You must enter at least one transmission value!");
    document.getgears.firstgear.focus();
  } // end if
  else if (tcasetotal == 0) { // alert user if no tcase value has been entered
    stopnow = "yes";
    alert("You must enter at least one transfer case value!");
    document.getgears.tcasehigh.focus();
  } // end else if
  else if(gear[10] == 0) { // alert user if no differential value has been entered
    stopnow = "yes";
    alert("You must enter a differential value!");
    document.getgears.diffgear.focus();
  } // end else if
  //****** end test for minimum one transmission, tcase, and diff value ****

  // ************************* process gear values *************************
  if (stopnow == "no") { //test to continue
    document.open();

    //****** compute final drive for tcase low and no under-overdrive ******
    x = 1;
    while (x < 9) {
      finaldrive = gear[x]*gear[8]*gear[10];
      if (finaldrive != 0) { //if calculation equals 0 then don't create the table
        document.write('<TABLE WIDTH="100%">');
        document.write('<TR>');
        document.write('<TD>');
        document.write("<CENTER><B>" + translabel[x] + "&nbsp;" + gear[x] + 
        " &nbsp;x&nbsp;&nbsp; T-case low: " + gear[8] + 
        " &nbsp;x&nbsp;&nbsp;Differential: " + gear[10] + 
        " &nbsp;=&nbsp;&nbsp;Final Drive: " + (Math.round(finaldrive*100)/100) +"</B></CENTER>");
        document.write('</TD>');
        document.write('</TR>');
        document.write('</TABLE>');
        maketable(finaldrive);
      } //end if
      x = x + 1;
    } //end while
    //** nd compute final drive for tcase low and no under-overdrive *******

    //****** compute final drive for tcase low and under-overdrive *********
    x = 1;
    while (x < 9) {
      finaldrive = gear[x]*gear[8]*gear[10]*gear[11];
      if (finaldrive != 0) { //if calculation equals 0 then don't create the table
        if (gear[11] > 1) { //test for under or overdrive
          overunderlabel = "Underdrive:";
        } //end if
        else {
          overunderlabel = "Overdrive:";
        } //end else
        document.write('<TABLE WIDTH="100%">');
        document.write('<TR>');
        document.write('<TD>');
        document.write("<CENTER><B>" + overunderlabel + "&nbsp;" + gear[11] + 
        " &nbsp;x&nbsp;&nbsp;" + translabel[x] + "&nbsp;" + gear[x] + 
        " &nbsp;x&nbsp;&nbsp;T-case low: " + gear[8] +
        " &nbsp;x&nbsp;&nbsp;Differential: " + gear[10] +
        " &nbsp;x&nbsp;&nbsp;Final Drive: " + (Math.round(finaldrive*100)/100) + "</B></CENTER>");
        document.write('</TD>');
        document.write('</TR>');
        document.write('</TABLE>');
        maketable(finaldrive);
      } //end if
      x = x + 1;
    } //end while
    //***** end compute final drive for tcase low and under-overdrive ******

    //***** compute final drive for tcase high and no under-overdrive ******
    x = 1;
    while (x < 9) {
      finaldrive = gear[x]*gear[9]*gear[10];
      if (finaldrive != 0) { //if calculation equals 0 then don't create the table
        document.write('<TABLE WIDTH="100%">');
        document.write('<TR>');
        document.write('<TD>');
        document.write("<CENTER><B>" + translabel[x] + "&nbsp;" + gear[x] + 
        " &nbsp;x&nbsp;&nbsp; T-case high: " + gear[9] + 
        " &nbsp;x&nbsp;&nbsp;Differential: " + gear[10] + 
        " &nbsp;=&nbsp;&nbsp;Final Drive: " + (Math.round(finaldrive*100)/100) +"</B></CENTER>");
        document.write('</TD>');
        document.write('</TR>');
        document.write('</TABLE>');
        maketable(finaldrive);
      } //end if
      x = x + 1;
    } //end while
    //*** end compute final drive for tcase high and no under-overdrive ****

    //***** compute final drive for tcase high and under-overdrive *********
    x = 1;
    while (x < 9) {
      finaldrive = gear[x]*gear[9]*gear[10]*gear[11];
      if (finaldrive != 0) { //if calculation equals 0 then don't create the table
        if (gear[11] > 1) { //test for under or overdrive
          overunderlabel = "Underdrive:";
        } //end if
        else {
          overunderlabel = "Overdrive:";
        } //end else
        document.write('<TABLE WIDTH="100%">');
        document.write('<TR>');
        document.write('<TD>');
        document.write("<CENTER><B>" + overunderlabel + "&nbsp;" + gear[11] + 
        " &nbsp;x&nbsp;&nbsp;" + translabel[x] + "&nbsp;" + gear[x] + 
        " &nbsp;x&nbsp;&nbsp;T-case high: " + gear[9] +
        " &nbsp;x&nbsp;&nbsp;Differential: " + gear[10] +
        " &nbsp;x&nbsp;&nbsp;Final Drive: " + (Math.round(finaldrive*100)/100) + "</B></CENTER>");
        document.write('</TD>');
        document.write('</TR>');
        document.write('</TABLE>');
        maketable(finaldrive);
      } //end if
      x = x + 1;
    } //end while
    //**** end compute final drive for tcase high and under-overdrive ******

  document.write('<HR width="90%">');
  document.write('<CENTER><B>calculation complete</B></CENTER>');
  //document.write('<CENTER>back to <A HREF="rpmtables.html">previous</A> page</CENTER>');
  document.close();
  } //end if
  // ******************** end process gear values **************************

//**************************************************************************
//   this function processes each finaldrive to create the rpm tables 
//**************************************************************************
function maketable(finaldrive) {

//declared variables for the function maketable
  var geartable = new Array(14);
  var tiresize = 0;
  var mph = 0;
  var interval = 0;
  var x = 0;
  var count = 0;
  
  //*** test finaldrive to determine the top mph speed and increment *******
  if (finaldrive > 30) {
    mph = 30;
    interval = 1;
  } //end if
    else if (finaldrive > 16) {
        mph = 50;
        interval = 2;
  } //end if
  else if (finaldrive > 10) {
      mph = 70;
      interval = 3;
  } //end if
  else if (finaldrive > 7) {
    mph = 90;
    interval = 4;
  } //end if
  else if (finaldrive > 0) {
    mph = 100;
    interval = 5;
  } //end if
  //* end test finaldrive to determine the top mph speed and increment *****

  //********************* create the rpm table rows ************************
  	    document.write('<TABLE WIDTH="100%" BORDER=0>');
  		document.write('<TR>');
        document.write('<TD WIDTH="3%">');
  		document.write('<CENTER>M</CENTER><BR>');
  		document.write('<CENTER>P</CENTER><BR>');
		document.write('<CENTER>H</CENTER><BR>');
	    document.write('</TD>');
		document.write('<TD>');
  document.write('<CENTER><TABLE WIDTH="100%" border=1 cellspacing=0 cellpadding=0></CENTER>');
  tiresize=26;
  while (mph > 0) { 
    geartable[1] = mph;
    x=2;

    //******************* calculate a row of rpm values ********************
    while (tiresize < 45) {
      geartable[x] = Math.round(mph*finaldrive*336/tiresize);
      if (geartable[x] > 7000) {
        geartable[x] = "-";
      } //end if
      x=x+1;
      tiresize = tiresize + 1;
    } //end while
    //***************** end calculate a row of rpm values ******************

    //******************** write a row for the table ***********************
    x=1;
    if (geartable[14] != "-") {
      if (geartable[2] > 400 || geartable[2] == "-") {
        document.write('<TR>');
        while (x < 21) {
          if (x==1) { //write the y axis mph label for the table row
            // make the first column bold
            document.write('<TD BGCOLOR="#EEEEEE">');
            document.write("<CENTER><STRONG><SMALL>" + geartable[x] + "<SMALL></STRONG></CENTER>");
            document.write('</TD>');
          } //end if
          else {  //write each rpm value for the table row
            document.write('<TD>');
            document.write("<CENTER><SMALL>" + geartable[x] + "</SMALL></CENTER>");
            document.write('</TD>');
          } //end else
        x=x+1;
        } //end while
        document.write('</TR>');
      } //end if
    } //end if
    //******************* end write a row for the table ********************

    mph = mph - interval;
    tiresize = 26;
  } //end while
  //********************* end create the rpm table rows ********************
  
  //*************** create the x axis tire size column labels **************
  document.write('<TR>');
  tiresize = 26;
  geartable[1] = "-";
  x=2;
  while (tiresize < 45) { //load the array with the tire size values
    geartable[x] = tiresize;
    tiresize = tiresize + 1;
    x=x+1;
  } //end while
  x=1;
  while (x < 21) { //write the tire size values
    document.write('<TD BGCOLOR="#EEEEEE">');
    document.write("<CENTER><STRONG><SMALL>" + geartable[x] + "</SMALL></STRONG></CENTER>");
    document.write('</TD>');
    x=x+1;
  } //end while
  document.write('</TR>');
  document.write('</TABLE>');
  document.write('</TD>');
  document.write('</TR>');
  document.write('</TABLE>');
  //************ end create the x axis tire size column labels *************

  //********************* write the x axis lable ***************************
  document.write('<TABLE WIDTH="100%" BORDER=0>');
  document.write('<TR>');
  document.write('<TD>');
  document.write('<CENTER>Tire diameter (inches)</CENTER>');
  document.write('</TD>');
  document.write('</TR>');
  document.write('</TABLE><BR><BR>');
  //****************** end write the x axis lable **************************

} //*********************** end function maketable *************************

} //********************* end function calculate ***************************


//**************************************************************************
//   this function clears the form fields
//**************************************************************************
function clearform() {
  document.getgears.underoverdrive.value = "";
  document.getgears.firstgear.value = "";
  document.getgears.secondgear.value = "";
  document.getgears.thirdgear.value = "";
  document.getgears.fourthgear.value = "";
  document.getgears.fifthgear.value = "";
  document.getgears.sixthgear.value = "";
  document.getgears.reversegear.value = "";
  document.getgears.tcasehigh.value = "";
  document.getgears.tcaselow.value = "";
  document.getgears.diffgear.value = "";

  document.selecttrans.trans[26].checked = true;
  document.selecttcase.tcase[11].checked = true;
} //************************* end function clear ***************************

