//<![CDATA[
//updated 03/25/09 - ric
function catchEvent(eventObj, event, eventHandler) {
   if (eventObj.addEventListener) {
       eventObj.addEventListener(event, eventHandler,false);
   } else if (eventObj.attachEvent) {
       event = "on" + event;
       eventObj.attachEvent(event, eventHandler);
   }
}

function cancelEvent(event) {
   if (event.preventDefault) {
       event.preventDefault();
       event.stopPropagation();
   } else {
       event.returnValue = false;
       event.cancelBubble = true;
   }
}

catchEvent(window,"load",setupEvents);

function setupEvents(evnt) {
   catchEvent(document.getElementById("Selection1"),"change",checkSelect);
   catchEvent(document.getElementById("SelectOwn"),"change",checkOwn);
   catchEvent(document.getElementById("SelectAG"),"change",checkAG);
   catchEvent(document.getElementById("calc"),"click",costOnchange);
}

var defrate = 0.03;
var myRegion = "USA";

//new arrays for dependent lists
var ownTUS = new Array();
ownTUS[ownTUS.length] = ["MX245","243","204","204","14.52"];
ownTUS[ownTUS.length] = ["MX275","272","229","229","14.98"];
ownTUS[ownTUS.length] = ["MX305","300","257","257","16.81"];
//T8020 fails in all combinations with AGCO models
//ownTUS[ownTUS.length] = ["T8020","246","203","203","14.40"];
ownTUS[ownTUS.length] = ["T8030","273","226","226","15.50"];
ownTUS[ownTUS.length] = ["T8040","294","257","257","16.44"];
ownTUS[ownTUS.length] = ["JD8230","233","204","204","12.12"];
ownTUS[ownTUS.length] = ["JD8330","261","227","227","13.88"];
ownTUS[ownTUS.length] = ["JD8430","283","253","253","14.83"];
ownTUS[ownTUS.length] = ["JD8530","313","278","278","16.45"];

var ownTCan = new Array();
ownTCan[ownTCan.length] = ["MX245","243","204","204","54.96"];
ownTCan[ownTCan.length] = ["MX275","272","229","229","56.70"];
ownTCan[ownTCan.length] = ["MX305","300","257","257","63.63"];
//T8020 fails in all combinations with AGCO models
//ownTCan[ownTCan.length] = ["T8020","246","203","203","54.51"];
ownTCan[ownTCan.length] = ["T8030","273","226","226","58.67"];
ownTCan[ownTCan.length] = ["T8040","294","257","257","62.25"];
ownTCan[ownTCan.length] = ["JD8230","233","204","204","45.89"];
ownTCan[ownTCan.length] = ["JD8330","261","227","227","52.53"];
ownTCan[ownTCan.length] = ["JD8430","283","253","253","56.15"];
ownTCan[ownTCan.length] = ["JD8530","313","278","278","62.28"];

var ownTEu = new Array();
//JD8230 fails in all combinations with AGCO models
//ownTEu[ownTEu.length] = ["JD8230","233","204","235","45.89"];
ownTEu[ownTEu.length] = ["JD8330","261","227","233","52.53"];
ownTEu[ownTEu.length] = ["JD8430","283","253","237","56.15"];
ownTEu[ownTEu.length] = ["JD8530","313","278","236","62.28"];

var agcoTUS = new Array();
agcoTUS[agcoTUS.length] = ["MF8650","242","213","213","11.96"];
agcoTUS[agcoTUS.length] = ["MF8660","266","234","234","13.02"];
agcoTUS[agcoTUS.length] = ["MF8670","290","257","257","14.13"];
agcoTUS[agcoTUS.length] = ["MF8680","317","281","281","15.34"];
//MF8690 fails in all combinations with "own" models
//agcoTUS[agcoTUS.length] = ["MF8690","328","295","295","15.87"];
agcoTUS[agcoTUS.length] = ["DT205B","242","213","213","11.96"];
agcoTUS[agcoTUS.length] = ["DT225B","266","234","234","13.02"];
agcoTUS[agcoTUS.length] = ["DT250B","290","257","257","14.13"];
agcoTUS[agcoTUS.length] = ["DT275B","317","281","281","15.34"];
agcoTUS[agcoTUS.length] = ["MT645C","242","213","213","11.96"];
agcoTUS[agcoTUS.length] = ["MT655C","266","234","234","13.02"];
agcoTUS[agcoTUS.length] = ["MT665C","290","257","257","14.13"];
agcoTUS[agcoTUS.length] = ["MT675C","317","281","281","15.34"];
//MT685C fails in all combinations with "own" models
//agcoTUS[agcoTUS.length] = ["MT685C","328","295","295","15.87"];

var agcoTCan = new Array();
agcoTCan[agcoTCan.length] = ["MF8650","242","213","213","45.29"];
agcoTCan[agcoTCan.length] = ["MF8660","266","234","234","49.29"];
agcoTCan[agcoTCan.length] = ["MF8670","290","257","257","53.49"];
agcoTCan[agcoTCan.length] = ["MF8680","317","281","281","58.06"];
//MF8690 fails in all combinations with "own" models
//agcoTCan[agcoTCan.length] = ["MF8690","328","295","295","60.08"];
agcoTCan[agcoTCan.length] = ["DT205B","242","213","213","45.29"];
agcoTCan[agcoTCan.length] = ["DT225B","266","234","234","49.29"];
agcoTCan[agcoTCan.length] = ["DT250B","290","257","257","53.49"];
agcoTCan[agcoTCan.length] = ["DT275B","317","281","281","58.06"];
agcoTCan[agcoTCan.length] = ["MT645C","242","213","213","45.29"];
agcoTCan[agcoTCan.length] = ["MT655C","266","234","234","49.29"];
agcoTCan[agcoTCan.length] = ["MT665C","290","257","257","53.49"];
agcoTCan[agcoTCan.length] = ["MT675C","317","281","281","58.06"];
//MT685C fails in all combinations with "own" models
//agcoTCan[agcoTCan.length] = ["MT685C","328","295","295","60.08"];

var agcoTEu = new Array();
agcoTEu[agcoTEu.length] = ["MF8650","242","213","231","45.29"];
agcoTEu[agcoTEu.length] = ["MF8660","266","234","228","49.29"];
agcoTEu[agcoTEu.length] = ["MF8670","290","257","227","53.49"];
agcoTEu[agcoTEu.length] = ["MF8680","317","281","227","58.06"];
//MF8690 fails in all combinations with "own" models
//agcoTEu[agcoTEu.length] = ["MF8690","328","295","227","60.08"];
agcoTEu[agcoTEu.length] = ["MT645C","242","213","231","45.29"];
agcoTEu[agcoTEu.length] = ["MT655C","266","234","228","49.29"];
agcoTEu[agcoTEu.length] = ["MT665C","290","257","227","53.49"];
agcoTEu[agcoTEu.length] = ["MT675C","317","281","227","58.06"];
//MT685C fails in all combinations with "own" models
//agcoTEu[agcoTEu.length] = ["MT685C","328","295","227","60.08"];
agcoTEu[agcoTEu.length] = ["S232","242","213","231","45.29"];
agcoTEu[agcoTEu.length] = ["S262","266","234","228","49.29"];
agcoTEu[agcoTEu.length] = ["S292","290","257","227","53.49"];
agcoTEu[agcoTEu.length] = ["S322","317","281","227","58.06"];
//S352 fails in all combinations with "own" models
//agcoTEu[agcoTEu.length] = ["S352","328","295","227","60.08"];

function UpdateTable(Tablename,Row,Col,_text) {

  var x=document.getElementById(Tablename).rows;
  var y=x[Row].cells;
  y[Col].innerHTML=_text;

}

function GetTableElementAsFloat(Tablename,Row,Col) {

  var x=document.getElementById(Tablename).rows;
  var y=x[Row].cells;
  var r = parseFloat(y[Col].innerHTML);
  return r;

}

function set_region(_text) {

  //always clear the own list
  document.getElementById("SelectOwn").options.length = 0;

  if (_text == "USA") {
    myRegion = "USA";
    defrate = 0.03;
    UpdateTable("Table1",1,0,"What is your diesel cost ($/gallon)?");
    document.getElementById("dcost").value = "2.50";
    UpdateTable("Table1",2,0,"What is your DEF cost ($/gallon)?");
    document.getElementById("defcost").value = "3.25";
    document.getElementById("hours").value = "2500";
    UpdateTable("Table2",3,0,"Fuel Consumption gallons/hour");
    UpdateTable("Table2",3,2,"Fuel Consumption gallons/hour");
    UpdateTable("Table2",4,0,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",4,2,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",5,2,"Total Annual DEF Cost ($)");
    UpdateTable("Table2",6,2,"Total Annual e3 Maintenance System Cost ($)");
    UpdateTable("Table2",7,2,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",8,2,"Net Annual Fuel Saving with e3 Technology ($)");
    for (var i = 0; i < ownTUS.length; i++) {
      document.getElementById("SelectOwn").options[i] = new Option(ownTUS[i][0], ownTUS[i][0], false, false);
    }
  }
  else if (_text == "Canada") {
    myRegion = "Canada";
    defrate = 0.03;
    UpdateTable("Table1",1,0,"What is your diesel cost ($/liter)?");
    document.getElementById("dcost").value = "0.66";
    UpdateTable("Table1",2,0,"What is your DEF cost ($/liter)?");
    document.getElementById("defcost").value = "0.86";
    document.getElementById("hours").value = "2500";
    UpdateTable("Table2",3,0,"Fuel Consumption liters/hour");
    UpdateTable("Table2",3,2,"Fuel Consumption liters/hour");
    UpdateTable("Table2",4,0,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",4,2,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",5,2,"Total Annual DEF Cost ($)");
    UpdateTable("Table2",6,2,"Total Annual e3 Maintenance System Cost ($)");
    UpdateTable("Table2",7,2,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",8,2,"Net Annual Fuel Saving with e3 Technology ($)");
    for (var i = 0; i < ownTCan.length; i++) {
      document.getElementById("SelectOwn").options[i] = new Option(ownTCan[i][0], ownTCan[i][0], false, false);
    }
  }
  else if (_text == "Europe") {
    myRegion = "Europe";
    defrate = 0.05;
    UpdateTable("Table1",1,0,"What is your diesel cost (&euro;/litre)?");
    document.getElementById("dcost").value ="1.10";
    UpdateTable("Table1",2,0,"What is your AdBlue cost (&euro;/litre)?");
    document.getElementById("defcost").value ="1.00";
    document.getElementById("hours").value = "2500";
    UpdateTable("Table2",3,0,"Fuel Consumption litres/hour");
    UpdateTable("Table2",3,2,"Fuel Consumption litres/hour");
    UpdateTable("Table2",4,0,"Total Annual Fuel Cost (&euro;)");
    UpdateTable("Table2",4,2,"Total Annual Fuel Cost (&euro;)");
    UpdateTable("Table2",5,2,"Total Annual AdBlue Cost (&euro;)");
    UpdateTable("Table2",6,2,"Total Annual e3 Maintenance System Cost (&euro;)");
    UpdateTable("Table2",7,2,"Total Annual Fuel Cost (&euro;)");
    UpdateTable("Table2",8,2,"Net Annual Fuel Saving with e3 Technology (&euro;)");
    for (var i = 0; i < ownTEu.length; i++) {
      document.getElementById("SelectOwn").options[i] = new Option(ownTEu[i][0], ownTEu[i][0], false, false);
    }
  }
  else {
    myRegion = "USA";
    defrate = 0.03;
    UpdateTable("Table1",1,0,"What is your diesel cost ($/gallon)?");
    document.getElementById("dcost").value = "2.50";
    UpdateTable("Table1",2,0,"What is your DEF cost ($/gallon)?");
    document.getElementById("defcost").value = "3.25";
    document.getElementById("hours").value = "2500";
    UpdateTable("Table2",3,0,"Fuel Consumption gallons/hour");
    UpdateTable("Table2",3,2,"Fuel Consumption gallons/hour");
    UpdateTable("Table2",4,0,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",4,2,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",5,2,"Total Annual DEF Cost ($)");
    UpdateTable("Table2",6,2,"Total Annual e3 Maintenance System Cost ($)");
    UpdateTable("Table2",7,2,"Total Annual Fuel Cost ($)");
    UpdateTable("Table2",8,2,"Net Annual Fuel Saving with e3 Technology ($)");
    for (var i = 0; i < ownTUS.length; i++) {
      document.getElementById("SelectOwn").options[i] = new Option(ownTUS[i][0], ownTUS[i][0], false, false);
    }
  }
  //make sure 1st option is selected
  document.getElementById("SelectOwn").selectedIndex = 0;
  setOwn(0);

}

function setOwn(Idx) {
  //always clear agco options
  document.getElementById("SelectAG").options.length = 0;
  
  if (myRegion == "USA") {
    UpdateTable("Table2",1,1,ownTUS[Idx][1]);
    UpdateTable("Table2",2,1,ownTUS[Idx][2]);
    UpdateTable("Table2",3,1,ownTUS[Idx][4]);
    var own_val = parseInt(ownTUS[Idx][3]);
    var ndx = 0;
    //alert("checking US model " + ownTUS[Idx][0] + " with own_val=" + own_val);
    for (var i = 0; i < agcoTUS.length; i++) {
      if (comparableCheck(own_val, parseInt(agcoTUS[i][3]))) {
        document.getElementById("SelectAG").options[ndx++] = new Option(agcoTUS[i][0], i.toString(), false, false);
      }
    }
  } 
  else if (myRegion == "Canada") {
    UpdateTable("Table2",1,1,ownTCan[Idx][1]);
    UpdateTable("Table2",2,1,ownTCan[Idx][2]);
    UpdateTable("Table2",3,1,ownTCan[Idx][4]);
    var own_val = parseInt(ownTCan[Idx][3]);
    //alert("checking Can model " + ownTUS[Idx][0] + " with own_val=" + own_val);
    var ndx = 0;
    for (var i = 0; i < agcoTUS.length; i++) {
      if (comparableCheck(own_val, parseInt(agcoTCan[i][3]))) {
        document.getElementById("SelectAG").options[ndx++] = new Option(agcoTCan[i][0], i.toString(), false, false);
      }
    }
  }
  else {
    UpdateTable("Table2",1,1,ownTEu[Idx][1]);
    UpdateTable("Table2",2,1,ownTEu[Idx][2]);
    UpdateTable("Table2",3,1,ownTEu[Idx][4]);
    var own_val = parseInt(ownTEu[Idx][3]);
    //alert("checking Eu model " + ownTUS[Idx][0] + " with own_val=" + own_val);
    var ndx = 0;
    for (var i = 0; i < agcoTEu.length; i++) {
      if (comparableCheck(own_val, parseInt(agcoTEu[i][3]))) {
        document.getElementById("SelectAG").options[ndx++] = new Option(agcoTEu[i][0], i.toString(), false, false);
      }
    }
  }
  //make sure 1st option is selected
  document.getElementById("SelectAG").selectedIndex = 0;
  var selVal = parseInt(document.getElementById("SelectAG").options[0].value);
  setAG(selVal);

}

function setAG(Idx) {
  if (myRegion == "USA") {
    //alert("setting USA Idx=" + Idx);
    UpdateTable("Table2",1,3,agcoTUS[Idx][1]);
    UpdateTable("Table2",2,3,agcoTUS[Idx][2]);
    UpdateTable("Table2",3,3,agcoTUS[Idx][4]);
  }
  else if (myRegion == "Canada") {
    //alert("setting Canada Idx=" + Idx);
    UpdateTable("Table2",1,3,agcoTCan[Idx][1]);
    UpdateTable("Table2",2,3,agcoTCan[Idx][2]);
    UpdateTable("Table2",3,3,agcoTCan[Idx][4]);
  }
  else {
    //alert("setting Eu Idx=" + Idx);
    UpdateTable("Table2",1,3,agcoTEu[Idx][1]);
    UpdateTable("Table2",2,3,agcoTEu[Idx][2]);
    UpdateTable("Table2",3,3,agcoTEu[Idx][4]);
  }
}

function round_number(original_number, places) {
    var result1 = original_number * Math.pow(10, places);
    var result2 = Math.round(result1);
    var result3 = result2 / Math.pow(10, places);
    return result3;
}

function pad_with_zeros(rounded_value, decimal_places) {


    if (isNaN(rounded_value)) {
        return "NaN";
    }
    // Convert the number to a string
    var value_string = rounded_value.toString()

    // Locate the decimal point
    var decimal_location = value_string.indexOf(".")

    // Is there a decimal point?
    if (decimal_location == -1) {

        // If no, then all decimal places will be padded with 0s
        decimal_part_length = 0

        // If decimal_places is greater than zero, tack on a decimal point
        value_string += decimal_places > 0 ? "." : ""
    }
    else {

        // If yes, then only the extra decimal places will be padded with 0s
        decimal_part_length = value_string.length - decimal_location - 1
    }

    // Calculate the number of decimal places that need to be padded with 0s
    var pad_total = decimal_places - decimal_part_length

    if (pad_total > 0) {

        // Pad the string with 0s
        for (var counter = 1; counter <= pad_total; counter++)
            value_string += "0"
        }
    return value_string
}

function checkSelect(evnt) {

   var theEvent = evnt ? evnt : window.event;

   var selIndex = document.getElementById("form1").Selection1.selectedIndex;
   var opt = document.getElementById("form1").Selection1.options[selIndex].value;
   set_region(opt);
}

function checkOwn(evnt) {

   var theEvent = evnt ? evnt : window.event;

   var selIndex = document.getElementById("SelectOwn").selectedIndex;
   setOwn(selIndex);

}


function checkAG(evnt) {

   var theEvent = evnt ? evnt : window.event;

   var selVal = parseInt(document.getElementById("SelectAG").options[document.getElementById("SelectAG").selectedIndex].value);
   setAG(selVal);

}

function check_calc_error(number_in) {

   if (number_in < 0) {
     return "No Advantage";
   }
   else if (isNaN(number_in)) {
     return "No Advantage";
   }
   else {
     return number_in;
   }
}

function comparableCheck(own_val, agco_val) {
  var lowval = own_val - 20;
  var hivval = own_val + 20;
  //alert("comparing lowval=" + lowval + " with agco val=" + agco_val + " with hivval=" + hivval);
  if ( agco_val >= lowval && agco_val <= hivval ) {
    return true;
  } else {
    return false;
  }
}


function costOnchange(evnt) {

   var theEvent = evnt ? evnt : window.event;

   var dcost = parseFloat(document.getElementById("dcost").value);
   var defcost = parseFloat(document.getElementById("defcost").value);
   var hours = parseFloat(document.getElementById("hours").value);
   var fuelrateOwn = GetTableElementAsFloat("Table2",3,1);
   var fuelrateAG = GetTableElementAsFloat("Table2",3,3);
   UpdateTable("Table2",4,1,check_calc_error(pad_with_zeros( round_number((dcost * hours * fuelrateOwn),2),2)));
   UpdateTable("Table2",4,3,check_calc_error(pad_with_zeros( round_number((dcost * hours * fuelrateAG),2),2)));
   UpdateTable("Table2",5,3,check_calc_error(pad_with_zeros( round_number((defrate * defcost * hours * fuelrateAG),2),2) ));
   //updated pricing rev 2- ric 02042009
   if (myRegion == "Europe") {
      UpdateTable("Table2",6,3,check_calc_error(pad_with_zeros( round_number(((455/4200) * hours),2),2) ));
   }
   else if (myRegion == "Canada") {
      UpdateTable("Table2",6,3,check_calc_error(pad_with_zeros( round_number(((673/4200) * hours),2),2) ));
   }
   else {
       UpdateTable("Table2",6,3,check_calc_error(pad_with_zeros( round_number(((561/4200) * hours),2),2) ));
   }
   UpdateTable("Table2",7,3,check_calc_error(pad_with_zeros( round_number((GetTableElementAsFloat("Table2",4,3) +
                                                          GetTableElementAsFloat("Table2",5,3) +
                                                          GetTableElementAsFloat("Table2",6,3)),2),2) ));
   UpdateTable("Table2",8,3,check_calc_error(pad_with_zeros( round_number((GetTableElementAsFloat("Table2",4,1) -
                                                          GetTableElementAsFloat("Table2",7,3)),2),2)));
   UpdateTable("Table2",9,3,check_calc_error(round_number((100 * (1 - round_number((GetTableElementAsFloat("Table2",7,3) /
                                                       GetTableElementAsFloat("Table2",4,1)),2))),2)));

}


//]]>
