// create array to hold other menu's options
var points = new Array(8);
points["Mississippi r."] =
      ["Head of Passes East Jetty Light", "Buras, LA", "Port Sulphur, LA", "Algiers Alt. Route (Lock entrance)", "Inner Harbor Navigation (Industrial canal)", "New Orleans (Canal Street)", "Harvey Canal (Lock entrance)", "Donaldson, LA", "Plaquemine, LA","Baton Rouge, LA (IS 10 bridge)", "Red River mouth, LA (Old River)", "Natchez, MS (US 84 bridge)", "Vicksburg, MS","Greenville, MS (Warfield Pt. Lt)", "Helena, AR", "Memphis, TN (IS 55 bridge)", "Ohio River Mouth", "Cairo, IL via Ohio River", "Commerce, MO", "Cape Girardeau, MO", "Grand Tower, IL", "St, Louis, MO", "Lock No. 27", "Dam No. 27", "Missouri River mouth", "Alton, IL (Lock & Dam No. 26)", "Illinois River mouth (Grafton, IL)", "Lock & Dam No. 25", "Lock & Dam No. 24", "Lock & Dam No. 22", "Hannibal, MO", "Quincy, IL (Lock & Dam No. 21)", "La Grange, MO", "Lock & Dam No. 20", "Keokuk, IA (Lock & Dam No. 19)", "Fort Madison, IA", "Burlington, IA", "Lock & Dam No. 18", "Lock & Dam No. 17", "Lock & Dam No. 16", "Davenport, IA (Lock & Dam No. 15)", "Lock & Dam No. 14", "Clinton, IA", "Lock & Dam No. 13", "Lock & Dam No. 12", "Dubuque, IA", "Lock & Dam No. 11", "Lock & Dam No. 10", "Prairie du Chien, WI", "Lock & Dam No. 9", "Lock & Dam No. 8", "La Crosse, WI", "Lock & Dam No. 7", "Lock & Dam No. 6", "Winona, MN", "Lock & Dam No. 5A", "Lock & Dam No. 5", "Lock & Dam No. 4", "Lock & Dam No. 3", "Lock & Dam No. 2", "St. Paul, MN", "Lock & Dam No. 1", "Minneapolis, MN"];
points["Missouri r."] =
      [ "Missouri & Mississippi River Junction", "St. Charles, MO", "Washington, MO", "Hermann, MO", "Mouth of Gasconade River", "Gasconade, MO", "Mouth of Auxvass River", "Mouth of Middle River", "Mouth of Osage River", "Jefferson City, MO", "Booneville, MO", "Mouth of Lamine River", "Glasgow, MO", "Mouth of Charitan River", "Mouth of Grand River", "Miami, MO",  "Waverly, MO", "Lexington, MO", "Napoleon, MO", "Kansas City, MO", "Mouth of Kansas River", "Leavenworth, KS",    "St. Joseph, MO", "Mouth of Big Nemaha River", "Rulo, NE", "Mouth of Tarkio River", "Mouth of Nishnabotna River", "Nebraska City, NE",      "Plattsmouth, NE", "Omaha, NE", "Council Bluffs, IA", "Dakota City, NE", "Sioux City, IA", "Ponca, NE"];
points["Ohio r."] =
      ["Ohio & Mississippi River Junction", "Cairo, IL", "Dam 53", "Dam 52", "Tennessee River mouth (Paducah, KY)", "Cumberland River mouth", "Smithland Lock & Dam", "Wabash River mouth", "Evansville, IN", "Newburg Lock & Dam", "Owensboro, KY","Cannelton Lock & Dam", "McAlpine Lock & Dam", "Louisville, KY (IS 65 bridge)", "Madison, IN", "Markland Lock & Dam", "Cincinnati, OH", "Captain Anthony Meldahl Dam", "Portsmouth, OH", "Greenup Dam", "Ironton, OH","Huntington, WV", "Gallipolis Dam", "Gallipolis, OH", "Belleville Dam", "Parkersburg, WV", "Marietta, OH", "Willow Island Dam", "Hannibal Lock & Dam", "Wheeling, WV", "Pike Island Lock & Dam","Steubenville, OH", "New Cumberland Lock & Dam", "East Liverpool, OH", "Montgomery Lock & Dam", "Dashields Lock & Dam", "Emsworth Lock & Dam", "Pittsburgh, PA (Point Bridge)"];
points["Tennessee r."] = 
      ["Tennessee & Ohio River Junction", "Paducah, KY", "Kentucky Lock & Dam", "Barkley Canal entrance", "New Johnsonville, TN", "Perryville, TN", "Saltillo, TN", "Cerro Gordo, TN", "Savannah, TN", "Pickwick Landing Lock & Dam", "Waterloo, AL", "Sheffield, AL", "Wilson Lock & Dam (Florence, AL)", "General Joe Wheeler Lock & Dam", "Decatur, AL",
"Guntersville Lock & Dam", "Bridgeport, AL", "South Pittsburgh, TN", 
"Nickajack Lock & Dam", "Chattanooga, TN", "Chickamauga Lock & Dam", "Watts Bar Lock & Dam", "Clinch River mouth", "Loudon, TN", "Fort Loudon Lock & Dam", "Knoxville, TN (Gay Street bridge)"];
points["Illinois waterway"] =
      ["Illinois & Mississippi River Junction (Grafton, IL)", "Hardin, IL", "Florence, IL", "Naples, IL", "La Grange Lock", "Beardstown, IL",
"Peoria Lock", "Chillicothe, IL", "Hennepin, IL", "Illinois & Mississippi Canal", "Peru, IL", "Ottawa, IL", "Marseille Lock",        "Dresden Island Lock", "Des Plaines River (Joliet, IL)", "Chicago Sanitary & Ship Canal (Lockport, IL)", "Chicago River (Chicago, IL)"];
points["Cumberland r."] =
      ["Cumberland & Ohio River Junction", "Smithland, KY", "Vicksburg,KY", "Pinckneyville, KY", "Dycusburg, KY", "Barkley Lock & Dam", "Barkley Canal Entrance", "Kuttawa, KY", "Eddyville, KY", "Little River mouth", "Canton, KY", "Bumpus Mills, TN", "Dover, TN", "Cumberland City, TN", "Red River mouth", "Clarksville, TN", "Cheatham Lock & Dam", "Harpeth River mouth", "Ashland City, TN", "Rock Harbor Marina", "Nashville, TN", "Opryland USA", "Stones River mouth", "Old Hickory Lock & Dam", "Drakes Creek", "Cedar Creek", "Station Camp & Spencer Creek", "Gallatin, TN", "Cairo, TN", "Hunters Point", "Hartsville, TN", "Rome, TN", "Carthage, TN", "Caney Fork River mouth",  "Cordell Hull Lock & Dam", "Defeated Creek", "Granville, TN", "Gainsboro, TN", "Roaring River mouth", "Celina, TN", "Obey river mouth", "Head of Navigation (tows)", "Ferry at Hwy 214", "Traces on the Cumberland", "Wolf Creek Dam (no Lock)"];
points["Arkansas r. system"] =
      ["White & Mississippi River Junction", "Arkansas Post Canal & White r. Junction", "Norrell Lock & Dam", "Lock No. 2", "Arkansas Post Canal & Arkansas r. Junction", "Lock & Dam No. 3", "Lock & Dam No. 4", "Lake Langhofer Entrance", "Lock & Dam No. 5", "David D. Terry Lock & Dam", "Little Rock - No. Little Rock, AR", "Murray Lock & Dam", "Toad Suck Ferry Lock & Dam", "Conway, AR", "Morrilton, AR", "Lock & Dam No. 9", "Petit Jean River mouth", "Dardanelle, AR", "Dardanelle Lock & Dam", "Clarksville, AR", "Ozark - Jeta Taylor Lock & Dam", "Ozark, AR", "Lock & Dam No. 13", "Van Buren, AR", "Fort Smith, AR", "Poteau River mouth", "W.D. Mayo Lock & Dam", "Robert S. Kerr Lock & Dam", "Sans Bois Creek mouth", "Webbers Falls Lock & Dam", "Muskogee, OK", "Grand River mouth", "Verdigris River mouth", "Chouteau Lock", "Newt Graham Lock & Dam",  "Catoosa, OK (head of navigation)"];
points["Red r. waterway"] =
      ["Old r. & Mississippi r. junction", "Old r. Lock", "Atchafalaya & Red r. junction", "Old r. outflow channel", "Black r. mouth", "Lindy C. Boggs Lock & Dam No. 1", "John H. Overton Lock & Dam No. 2", "Alexandria, LA", "New Cane River mouth", "Lock & Dam No. 3", "Grand Ecore, LA State Hwy 6 Bridge", "Russell B. Long Lock & Dam No. 4", "Coushatta, LA U.S. Hwy 84 Bridge", "Joe D. Waggonner Jr. Lock & Dam No.5", "Shreveport, LA I-20 Bridge"];
points["Ouachita & Black rivers"] =
      ["Black r. & Red r. junction", "Jonesville Lock & Dam 28", "Jonesville, LA", "Little, Tensas, Ouachita r. junction", "Harrisonburg, LA", "Boeuf r. mouth", "Columbia, LA", "Columbia Lock & Dam", "Monroe, LA", "Sterlington, LA", "Lock & Dam No. 6", "Saline r. mouth", "Lock & Dam No. 8", "Calion, AR", "Camden, AR"];
// create array to hold other menu's values
var cvalus = new Array(8);
cvalus["Mississippi r."] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","63","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61"];
cvalus["Missouri r."] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33"];
cvalus["Ohio r."] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37"];
cvalus["Tennessee r."] = 
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"];
cvalus["Illinois waterway"] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"];
cvalus["Cumberland r."] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44"];
cvalus["Arkansas r. system"] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35"];
cvalus["Red r. waterway"] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"];
cvalus["Ouachita & Black rivers"] =
["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"];
function removeOptions(optionMenu)
{
       optionMenu.options.length = 0;
}
function addOptions(optionList, valueList, optionMenu)
{
 var i=0;
 removeOptions(optionMenu);  // clear out the options
 for (i=0; i < optionList.length; i++)
    optionMenu[i] = new Option(optionList[i], valueList[i]);
}
function format(nval)
{
      var ftmp = Math.round(nval * 10);
      ftmp = ftmp / 10;
      return ftmp;
}
function dismilerv()
{		
      var smile = 
[[0,25,39,88,93,95,98,175,209,229,304,363,437,537,663,734,954,994,1006,1034,1134,1139,1144,1149,1157,1172,1195,1227,1255,1264,1279,1290,1297,1318,1338,1357,1364,1391,1411,1437,1447,1473,1477,1511,1534,1537,1569,1589,1602,1633,1652,1656,1668,1680,1682,1692,1702,1751,1769,1793,1802,1807],
[0,28,67,98,104,105,120,125,130,143,197,202,226,239,250,263,294,317,329,363,367,396,448,495,498,507,542,563,591,615,617,725,732,753],
[0,2,18,42,46,58,62,133,187,205,225,260,374,378,423,449,509,545,626,640,655,673,702,711,777,797,809,820,855,894,897,913,927,938,950,968,975,981],
[0,0,22,25,100,135,172,178,190,207,227,254,260,275,304,349,414,418,425,464,471,530,568,592,602,648],
[0,21,55,65,80,89,158,180,207,210,222,239,244,271,288,293,333],
[0,2,11,16,20,31,33,42,44,59,63,78,89,104,125,126,149,153,158,175,191,197,206,216,222,233,237,240,248,263,279,292,308,309,314,317,333,358,358, 381,381,385,400,423,461],
[0,10,10,13,19,50,66,71,86,108,119,125,156,156,174,177,187,203,206,230,257,258,293,301,308,309,320,336,342,367,393,394,395,401,422,445],
[0,1,7,11,34,44,75,88,111,116,152,168,178,200,228], [0,25,41,42,58,66,110,117,167,192,224,239,283,293,337]];
      var trib =
[[0,0,0,0,0,0,0,0,0], [1149,0,0,0,0,0,0,0,0], [954,0,0,0,0,0,0,0,0], [0,0,46,0,0,0,0,0,0], [1172,0,0,0,0,0,0,0,0], [0,0,58,0,0,0,0,0,0], [599,0,0,0,0,0,0,0,0], [304,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,34,0]];
      var riv2 = 
[[0,0,0,99902,0,99902,0,0,99907], [0,0,195,0,23,0,550,845,0], [0,195,0,0,218,0,355,650,0], [99902,0,0,0,0,12,0,0,0], [0,23,218,0,0,0,573,868,0], [99902,0,0,12,0,0,0,0,0], [0,550,355,0,573,0,0,295,0], [0,845,650,0,868,0,295,0,0], [99907,0,0,0,0,0,0,0,0]];
      var conn2 = 
[[0,0,0,02,0,02,0,0,07], [0,0,999,0,999,0,999,999,0], [0,999,0,0,999,0,999,999,0], [02,0,0,0,0,02,0,0,0], [0,999,999,0,0,0,999,999,0], [02,0,0,02,0,0,0,0,0], [0,999,999,0,999,0,0,999,0], [0,999,999,0,999,0,999,0,0], [07,0,0,0,0,0,0,0,0]];
      var riv3 = 
[[0,0,0,0,0,0,0,0,0], [0,0,0,241,0,253,0,0,879], [0,0,0,0,0,0,0,0,684], [0,241,0,0,264,0,401,696,0], [0,0,0,264,0,276,0,0,902], [0,253,0,0,276,0,413,708,0], [0,0,0,401,0,413,0,0,329], [0,0,0,696,0,708,0,0,0], [0,879,684,0,902,0,329,0,0]];
        rivera = parseInt (document.testform.friver.value);
        riverb = parseInt (document.testform.triver.value);	
        porta = parseInt (document.testform.fpoint.value);
        portb = parseInt (document.testform.tpoint.value);
        portc = porta;
        portd = portb;
        distanc = 0;
        path1 = " "; path2 = " "; path3 = " "; path4 = " "; path5 = " ";
        pname1 = " "; pname2 = " "; pname3 = " "; pname4 = " "; pname5 = " ";
        rivername2 = " "; rivername3 = " ";
// calculate distance for points on the same river
       if (rivera == riverb)
       {  
         distanc = Math.abs(smile[rivera][porta] - smile[riverb][portb])
        pname1 = document.testform.friver[rivera].text
        path1 = distanc;
       }
// calculate distance for points on connecting tributary rivers
       if (trib[riverb][rivera] > 0)
       {  
        distanc = (smile[riverb][portb] + Math.abs(trib[riverb][rivera] - smile[rivera][porta]))
        path2 = smile[riverb][portb]
        path1 = (distanc - path2);
       }  
       if (trib[rivera][riverb] > 0)
       { 
        distanc = (smile[rivera][porta] + Math.abs(trib[rivera][riverb] - smile[riverb][portb]))
        path1 = smile[rivera][porta]
        path2 = (distanc - path1);
       } 
       if ((distanc > 0) && (rivera != riverb))
       {
        pname1 = document.testform.friver[rivera].text
        pname2 = document.testform.triver[riverb].text;         
       }
// calculate distance for points on 2nd river removed
       if ((riv2[rivera][riverb] > 0) || (riv2[riverb][rivera] > 0))
       {
         riverc = riv2[rivera][riverb]
        pname1 = document.testform.friver[rivera].text
        pname3 = document.testform.triver[riverb].text;    
       }
       else
       {
         riverc = 6666;
       }
       if (riverc > 99900)
       {        
           riverc = riverc - 99900
           pname2 = document.testform.friver[riverc].text  
           if (trib[riverb][riverc] > 0)
           {     
             distanc = (trib[riverb][riverc] + smile[riverb][portb] +                Math.abs(trib[riverc][rivera] - smile[rivera][porta]))
             path2 = trib[riverb][riverc]
             path3 = smile[riverb][portb]
             path1 = (distanc - path2 - path3);
           }
           else
           {          
             distanc = (trib[rivera][riverc] + smile[rivera][porta] +                Math.abs(trib[riverc][riverb] - smile[riverb][portb]))
             path1 = smile[rivera][porta]
             path2 = trib[rivera][riverc]
             path3 = (distanc - path1 - path2);
           }
       }      
       else
       {
           if (riverc != 6666)
           {  
             distanc = (smile[rivera][porta] + smile[riverb][portb] +               riverc)
             path1 = smile[rivera][porta]
             path3 = smile[riverb][portb]
             path2 = riverc
             rivername2 = conn2[rivera][riverb]
             if (rivername2 == 999)
             {
               pname2 = document.testform.friver[0].text;     
             }
             else
             {  
               pname2 = document.testform.friver[rivername2].text;
             }    
           }
       }  

//  Calculate distance for points on 3rd river removed
       if ((riv3[rivera][riverb] > 0) || (riv3[riverb][rivera] > 0))
       {
         distanc = (riv3[rivera][riverb] + smile[rivera][porta] +          smile[riverb][portb])
        path1 = smile[rivera][porta]
        path4 = smile[riverb][portb] 
        pname1 = document.testform.friver[rivera].text
        pname4 = document.testform.triver[riverb].text
        var k=0;
        for (var j=0; j < 9; j++)
       { 
        if ((trib[rivera][j] > 0) && (j > 0))
         {
          path2 = trib[rivera][j]
          k = j;
         }
       }
        pname2 = document.testform.friver[k].text;
        if (k > 0)
         {
          path3 = (distanc - path1 - path2 - path4);
          for (var j=0; j < 9; j++)
          { 
          if (trib[k][j] > 0)
           {
            pname3 = document.testform.friver[j].text;
           }
          }
         }
        else
         {
          var n=0;
          for (var m=0; m < 9; m++)
          {
           if ((trib[riverb][m] > 0) && (m > 0))
           {
            path3 = trib[riverb][m] 
            n = m;
           }     
          }
           pname3 = document.testform.friver[n].text;
           path2 = (distanc - path1 - path3 - path4);
         }             
       }
//  Calculate distance for points on 4th river removed
        if ((rivera == 3 && riverb == 8) || (rivera == 5 && riverb == 8) || (rivera == 8 && riverb == 3) || (rivera == 8 && riverb == 5))
        {
          path3 = 650; pname3 = document.testform.friver[0].text;
          path1 = smile[rivera][porta]; 
          pname1 = document.testform.friver[rivera].text;
          path5 = smile[riverb][portb];
          pname5 = document.testform.friver[riverb].text;
          var k=0;
          for (var j=0; j < 9; j++)
         { 
          if ((trib[rivera][j] > 0) && (j > 0))
           {
            path2 = trib[rivera][j]
            k = j;
           }
         }
          pname2 = document.testform.friver[k].text;
          var k=0;
          for (var j=0; j < 9; j++)
         { 
          if ((trib[riverb][j] > 0) && (j > 0))
           {
            path4 = trib[riverb][j]
            k = j;
           }
         }
          pname4 = document.testform.friver[k].text; 
          distanc = (path1 + path2 + path3 + path4 + path5); 
        }  
//  Test for shorter routes
        if ((rivera == 3 && riverb == 5) || (rivera == 5 && riverb == 3))
        {
          if ((((rivera == 3) && (smile[rivera][porta] > 25)) && 
              ((riverb == 5) && (smile[riverb][portb] > 33))) ||
             (((rivera == 5) && (smile[rivera][porta] > 33)) && 
              ((riverb == 3) && (smile[riverb][portb] > 25))))
          {
            distanc = (distanc - 68.5)
            pname2 = "Barkley Canal"
            path2 = 1.5;
            if (rivera == 3)
            {
              path1 = (path1 - 25)
              path3 = (path3 - 33);
            }
            else
            {
              path1 = (path1 - 33)
              path3 = (path3 - 25);
            }              
          }
        }    
        document.testform.distsm.value = format(distanc);   
        document.testform.distnm.value = format(0.86898 *                  distanc);
        document.testform.distkm.value = format(1.609344 *
           distanc);
        document.testform.pname1.value = pname1;                       
        document.testform.path1.value = path1;
        document.testform.pname2.value = pname2;                       
        document.testform.path2.value = path2;
        document.testform.pname3.value = pname3;                       
        document.testform.path3.value = path3;
        document.testform.pname4.value = pname4;                       
        document.testform.path4.value = path4;
        document.testform.pname5.value = pname5;                       
        document.testform.path5.value = path5;		
}

