/* Setting up raw data.  This will be parsed into actual menu commands below */

// holds the current selections in an array by name
var currentSelections = new Array();

function p_series(menu_val, code, group) {
   this.menu_val = menu_val;
   this.code = code;
   this.group = group;
}

series_JHD  = new p_series('JHD',  'J', '0');
series_JHDH = new p_series('JHDH', 'H', '1');
series_L    = new p_series('L',    'L', '0');
series_E    = new p_series('E',    'E', '1');
series_HP   = new p_series('HP',   'X', '2');
series_W    = new p_series('W',    'W', '2');
series_VAC  = new p_series('VAC',  'V', '3');

var series = [series_JHD, series_JHDH, series_L, series_E, series_HP, series_W, series_VAC];

var bores_0 = ['1',   '1.5', '2',   '2.5',  '3.25', '4', '5', '6', '8', '10', '12', '14', '16', '18', '20'];  // JHD, L
var bores_1 = ['1',   '1.5', '2',   '2.5',  '3.25', '4',  '5', '6'];                                      // JHDH, E
var bores_2 = ['1.5', '2',   '2.5', '3.25', '4',    '5',  '6', '7', '8', '10', '12'];                     // HP, W
var bores_3 = ['8',   '10',  '12',  '14',   '16',   '18', '20'];                                          //VAC


// Changes requested by Walter Stridick on Sept 10, 2008:
// I asked if these apply to the 'L' series too. The answer was 'Good catch - Yes!'.

//Series        Bore        Delete Rod Dia      Add Rod Dia         Position/Column (See below)
//JHD            10            1.375"                 3"                            8
//JHD            12            1.75"                   3.5"                         9
//JHD            14            2"                       4"                             10
//JHD            16            2.5"                    5"                             11
//JHD            18            3"                      5.5                            12

//                                      0              1               2                3                4                 5                6                 7                8                9             10               11          12         13          14
var rods_0_S = [0.5,  0.63, 0.63,  0.63,  1,     1,     1,     1.375, 1.75,  2,    2.5,   3,   3.5, 3.5, 3.5];
var rods_0_1 = [0.63, 1,    1,     1,     1.375, 1.375, 1.375, 1.75,  2,     2.5,  3,     3.5, 4,   4,   4];
var rods_0_2 = [null, null, 1.375, 1.375, 1.75,  1.75,  1.75,  2,     2.5,   3,    3.5,   4,   5,   5,   5];
var rods_0_3 = [null, null, null,  1.75,  2,     2,     2,     2.5,   3,     3.5,  4,     5,   5.5, 5.5, 5.5];

var rods_1_S = [0.5, 0.63, 0.63, 0.63, 1, 1, 1, 1.38];
var rods_1_1 = [0.63, 1, 1, 1, 1.38, 1.38, 1.38, 1.75];
var rods_1_2 = [null, null, 1.38, 1.38, 1.75, 1.75, 1.75, 2];
var rods_1_3 = [null, null, null, 1.75, 2, 2, 2, 2.5];

var rods_2_S = [0.63, 1, 1, 1.38, 1.75, 2, 2.5, 3, 3.5, 5, 5.5];
var rods_2_1 = [1, 1.375, 1.38, 1.75, 2, 2.5, 3, 3.5, 4, 7, 8.5];
var rods_2_2 = [null, null, 1.75, 2, 2.5, 3, 3.5, 4, 5, null, null];
var rods_2_3 = [null, null, null, null, null, 3.5, 4, 5, 5.5, null, null];

var rods_3_S = [1, 1, 1.38, 1.75, 2, 2.5, 3];
var rods_3_1 = [1.38, 1.38, 1.75, 2, 2.5, 3, 3.5];

var mounts_a = [['01 (NFPA: MX0)', '01 00'], ['DRE 01 (NFPA: MDX0)', '01 D'],
                ['02 (NFPA: MX1)', '02 00'], ['DRE 02 (NFPA: MDX1)', '02 D'],
                ['03 (NFPA: MX2)', '03 00'], ['DRE 03 (NFPA: MDX3)', '03 D'],
                ['04 (NFPA: MX3)', '04 00']];

var mounts_b = [['05 (NFPA: MS1)', '05 00'], ['DRE 05 (NFPA: MS1)', '05 D'],
                ['09 (NFPA: MS4)', '09 00'], ['DRE 09 (NFPA: MS4)', '09 D'],
                ['11 (NFPA: MS2)', '11 00'], ['DRE 11 (NFPA: MS2)', '11 D'],
                ['15 (NFPA: MS7)', '15 00'], ['DRE 15 (NFPA: MS7)', '15 D']];

var mounts_c = [['8D (NFPA: MP2)', '8D 00'], ['8F (NFPA: MP1)', '8F 00'],
                ['8M (NFPA: MP3)', '8M 00'], ['8S (NFPA: MP5)', '8S 00']];

var mounts_d = [['06 (NFPA: MF1)', '06 00'], ['DRE 06 (NFPA: MF1)', '06 D'],
                ['6S (NFPA: ME3)', '6S 00'], ['DRE 6S (NFPA: ME3)', '6S D'],
                ['07 (NFPA: MF2)', '07 00'], ['7S (NFPA: ME4)', '7S 00'],
                ['16 (NFPA: MF5)', '16 00'], ['DRE 16 (NFPA: MF5)', '16 D'],
                ['17 (NFPA: MF6)', '17 00'],
                ['26 (NFPA: ME5)', '26 00'], ['DRE 26 (NFPA: ME5)', '26 D'],
                ['27 (NFPA: ME6)', '27 00'],
                ['36 (NFPA: ME3)', '36 00'], ['DRE 36 (NFPA: ME3)', '36 D'],
                ['37 (NFPA: ME4)', '37 00']];

var mounts_e = [['12 (NFPA: MT2)', '12 00'],
                ['13 (NFPA: MT1)', '13 00'], ['DRE 13 (NFPA: MT1)', '13 D'],
                ['14 (NFPA: MT4)', '14 00'], ['DRE 14 (NFPA: MT4)', '14 D'],
                ['10 (NFPA: MNR1)', '10 00'], ['DRE 10 (NFPA: MNR1)', '10 D']];

function showMount(sub_letter, series_group, bore_key, code_value) {
   result = true;
   if (sub_letter != 'a' && series_group == '3'){
      result = false;
   } else {
      switch(sub_letter) {
      case 'a':
         if ((series_group == '2') && (bore_key > 8)) {
             result = false;
          }
         break;
      case 'b': // foot and flush mounts
         if (code_value == '05 00' || code_value == '05 D') {
            if ((series_group == '0') && (bore_key == 0 || bore_key > 9)) {
               result = false;
            }
            if ((series_group == '1') && (bore_key == 0)) {
               result = false;
            }
            if (series_group == '2') {
               result = false;
            }
         }
         if (code_value == '15 00' || code_value == '15 D') {
            if ((series_group == '0') && (bore_key == 0 || bore_key > 6)) {
               result = false;
            }
            if ((series_group == '1') && (bore_key == 0)) {
               result = false;
            }
            if ((series_group == '2') && (bore_key > 6)) {
               result = false;
            }
         }
         break;
      case 'c': // clevis and pivot
         if (code_value == '8D 00') {
            if (series_group == '0' && bore_key > 9) {
               result = false;
            }
            if (series_group == '2') {
               result = false;
            }
         }
         if (code_value == '8M 00') {
            if (series_group == '0' && bore_key > 6) {
               result = false;
            }
            if (series_group == '2') {
               result = false;
            }
         }
         if (code_value == '8S 00') {
            if ((series_group == '0') && (bore_key == 0 || bore_key > 10)) {
               result = false;
            }
            if ((series_group == '1') && (bore_key == 0)) {
               result = false;
            }
         }
         break;
      case 'd':  //flange mounts
         if ((code_value == '06 00' || code_value == '06 D' || code_value == '07 00') && series_group == '0' && bore_key > 6) {
            result = false;
         }
         if (code_value == '6S 00' || code_value == '6S D' || code_value == '7S 00') {
            if ((series_group == '0' && bore_key < 7) || series_group == '1' || series_group == '2') {
               result = false;
            }
         }
         if (code_value == '07 00' && series_group == '2') {
            result = false;
         }
         if ((code_value == '16 00' || code_value == '16 D' || code_value == '17 00')) {
            if(series_group == '0' && (bore_key == 0 || bore_key > 6)) {
               result = false;
            }
            if(series_group == '1' && bore_key == 0) {
               result = false;
            }
         }
         if ((code_value == '26 00' || code_value == '26 D' || code_value == '27 00' || code_value == '36 00' || code_value == '36 D' || code_value == '37 00') && series_group != '2') {
            result = false;
         }
         break;
      case 'e': //trunion
         if ((code_value == '14 00' || code_value == '14 D') && (series_group == '0' || series_group == '1') && bore_key == 0) {
            result = false;
         }
         if ((code_value == '10 00' || code_value == '10 D') && (((series_group == '0' || series_group == '1') && bore_key > 3) || series_group == '2')) {
            result = false;
         }
      }
   }
   return result;
}

var menu1=new Array();
var menu2=new Array();
var menu3=new Array();
var menu4=new Array();
var menu5=new Array();
var menu6=new Array();

var menu6a=new Array();
var menu6b=new Array();
var menu6c=new Array();
var menu6d=new Array();
var menu6e=new Array();

/* Menu 1 */
for (i=0; i<series.length; i++) {
   eval("menu1[" + i + "]=build_menu_link(\"setSeries('" + series[i].menu_val + "')\", 'partno1', '" + series[i].code  + "', '" + series[i].menu_val + "')");
}

function buildBoreMenu(seriesName) {
   // get the series by name - passed value is the suffix of the series name
   selected_series = eval("series_" + seriesName);
   //store the series object in the currentSelection
   currentSelections.series = selected_series;
   menu2 = new Array();
   next_bore = eval("bores_" + selected_series.group);
   // calculate the code value
   for (k=0; k<next_bore.length; k++) {
      next_value = next_bore[k];
      if (next_value == 1) {
         next_code = '01';
      } else if (next_value < 10) {
         next_code = Math.floor(next_value * 10);
      } else if (next_value == 20) {
         next_code = '02';
      } else {
         next_code = next_value;
      }
      // build menu items
      eval("menu2[" + k + "]=build_menu_link(\"setBore('" + next_value + "')\", 'partno2', '" + next_code + "', '" + next_value + "&quot;')");
   }
}


function buildRodMenu(borevalue)
{
   menu3 = new Array();

   selectedSeries = currentSelections.series

   // find the index of the selected bore and put it in the currentSelection so we can more easily access the arrays for the menus that depend on bore

   current_bore_menu = eval("bores_" + selected_series.group);

   matchingKey = null;

   for (i=0; i<current_bore_menu.length && matchingKey == null; i++)
   {
     if (borevalue == (current_bore_menu[i]))
     {
           matchingKey = i;
           currentSelections.bore_key = matchingKey;
     }
   }

   selected_series = eval("series_" + currentSelections.series.menu_val);

   rods = ["S", "1", "2", "3"]

   for (i=0; i<rods.length; i++)
   {
      rods_options = null;

      try {rods_options = eval("rods_" + selectedSeries.group + "_" + rods[i]);} catch(e){;}

      if (rods_options != null)
      {
            rod_match = rods_options[matchingKey];

        if (rod_match != null)
        {
              eval("menu3[" + i + "]=build_menu_link(\"setRodDiameter('" + rod_match + "')\", 'partno3', '" + rods[i] + "', '" + rod_match + " inch');");
            }
      }
   }
}

function buildRodEndMenu() {
   // these are always the same so just create them explicitly
   menu4=new Array();
   menu4[0]=build_menu_link("setRodEnd('A - Standard Male')", "partno5", "A", "Type A - Standard Male", "newimages/typeA.gif");
   menu4[1]=build_menu_link("setRodEnd('B - Standard Female')", "partno5", "B", "Type B - Standard Female", "newimages/typeB.gif");
   menu4[2]=build_menu_link("setRodEnd('C - Full Male')", "partno5", "C", "Type C - Full Male", "newimages/typeC.gif");
   menu4[3]=build_menu_link("setRodEnd('D - Intermediate Male')", "partno5", "D", "Type D - Intermediate Male", "newimages/typeD.gif");
   menu4[4]=build_menu_link("setRodEnd('P - Plain End')", "partno5", "P", "Type P - Plain End", "newimages/typeP.gif");
   menu4[5]=build_menu_link("setRodEnd('F - Flanged Male')", "partno5", "F", "Type F - Flanged Male", "newimages/typeF.gif");
}

function buildCushionMenu(borevalue) {
   menu5 = new Array();
   selectedSeries = currentSelections.series;
   menu5[0]=build_menu_link("setCushion('N - None')", "partno6", "N", "N - No Cushions");

   if (selectedSeries.group != '3') {
      menu5[1]=build_menu_link("setCushion('B - Both Ends')", "partno6", "B", "B - Cushions at Both Ends");
      menu5[2]=build_menu_link("setCushion('R - Cap End Only')", "partno6", "R", "R - Cushions at Cap End Only");
      menu5[3]=build_menu_link("setCushion('F - Rod End Only')", "partno6", "F", "F - Cushions at Rod End Only");
   }
}

function buildMountingTopMenu() {
   menu6 = new Array();
   selectedSeries = currentSelections.series;
   selectedBore = currentSelections.bore_key;
   counter = 0;
   if ((selectedSeries.group == '2' && selectedBore > 8) == false) {
     menu6[counter++]=build_top_menu_link('menu6a', "Tie Rod Mounts");
   }
   if (selectedSeries.group != '3') {
      menu6[counter++]=build_top_menu_link('menu6b', "Foot and Flush Mounts");
      menu6[counter++]=build_top_menu_link('menu6c', "Clevis and Pivot Mounts");
      menu6[counter++]=build_top_menu_link('menu6d', "Flange Mounts");
      if (selectedSeries.group == '2') { // if (selectedSeries.code == 'X') {
         menu6[counter++]=build_top_menu_link('menu6e', "Trunnion Mounts");
      } else {
         menu6[counter++]=build_top_menu_link('menu6e', "Trunnion and Nose Mounts");
      }
   }
}

function buildMountingSubMenus() {
   selectedSeries = currentSelections.series;
   selectedBore = currentSelections.bore_key;
   menus = ['a', 'b', 'c', 'd', 'e'];
   // clear previous menu values
   for (i=0; i<menus.length; i++) {
      eval("if (menu6" + menus[i] + " != undefined) { menu6" + menus[i] + " = new Array(); }");
   }
   for (i=0; i<menus.length; i++) {
      menuvals = eval("mounts_" + menus[i]);
      for (j=0; j<menuvals.length; j++) {
         label = menuvals[j][0];
         code = menuvals[j][1];
         if (showMount(menus[i], selectedSeries.group, selectedBore, code) == true) {
            // figure out name for graphic
            graphic_name = "newimages/style";
            if (label.indexOf('DRE') != -1) {
               graphic_name = graphic_name + "DRE";
               graphic_name = graphic_name + label.substring(4, 6);
            } else {
               graphic_name = graphic_name + label.substring(0, 2);
            }
            last_start = label.indexOf(": ");
            last_val = label.substring(last_start + 2, label.length - 1);
            graphic_name = graphic_name + "-" + last_val + ".gif";

            eval ("menu6" + menus[i] + "[" + j + "]=build_sub_menu_link(\"setMounting('" + label + "')\", 'partno7', \"" + code + "\", \"" + label + "\", \"" + graphic_name + "\");");
         }
      }
   }
}