// ******************** GLOBAL VARIABLES AND FUNCTIONS ********************

var RT_ROW = 17;
var RT_COL = 4;

var rates_rt_toUS_mon;

var your_age;
var premium_rt, row_rt, col_rt, age_rt, tripcost_rt;
var premium_pa, age_pa, tripcost_pa;
var premium_pas, age_pas, tripcost_pas;


function MakeArray(n) {
   var arr;
   if(n <= 0) {
      arr = new Array(0);
   }
     
   arr = new Array(n);
   return arr;
}

function Init_Table(t_name, row, col) {
   //document.write("Start Init Table: " + t_name);
   var table = new MakeArray(row);
   for (var i=0; i<row; i++) {
      table[i] = new MakeArray(col);
   }

   for (var i=0; i<row; i++) {
      for (var j=0; j<col; j++) {
         table[i][j] = 0.00;
      }
   }

   //document.write("Done Init Table: " + t_name + "<br>");
   return table;
}

function Format_premium(prem) {
   var ind = prem.indexOf(".");
   var new_prem = "0.00";

   if(ind == -1) {
      new_prem = prem + ".00";
   }
   else if(ind == (prem.length-2)) {
      new_prem = prem + "0";
   }
   else if(ind < (prem.length-2)) {
      var n = parseFloat(prem);
      n = Math.round(n*100);
      n = n/100.00;
   
      new_prem = "" + n;

      ind = new_prem.indexOf(".");
      if(ind == -1) {
         new_prem = new_prem + ".00";
      }
      else if(ind == (new_prem.length-2)) {
         new_prem = new_prem + "0";
      }
   }

   return new_prem;
}

// --------------------- Validate Input Function ----------------------
// this function validates input boxes that are passed to this function
function ValidateInput(InputboxObject) {

TempObject = InputboxObject;

// validate inputbox object  
  var checkOK = "0123456789.-";
  var checkStr = TempObject.value;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (allValid == false)
  {
    alert("Please enter only numeric values in this field!");
    TempObject.focus();
    TempObject.value = 0;
  }
  
  if (allValid == true) {
	num = eval(TempObject.value);
	if ((num < 0) || (num > 30001))
	{
		alert("Please enter a valid trip cost under $30,000!");
		num = 0;
		TempObject.value = num;
		allValid = false;
	}
  }
  
	// if inputbox entry is blank, then alert the user
	if (TempObject.value == "") {
		alert("Enter a valid numeric value in this field!");
		allValid = false; }
		
// if inputbox entry is not valid, then return focus to box
	if (allValid == false) {
		return false
	}

} // end ValidateInput


// ******************** LOCAL ********************************************

// Initates all Tables
function Init_Tables() {
   rates_rt_toUS_mon = Init_Table("rates_rt_toUS_mon", RT_ROW, RT_COL);
}

// Populates all tables
function Populate_Tables() {
   
   //document.write("Start Populate_Tables<br>");

   // Populate ROUNDTRIP TRAVEL BENEFIT
   //document.write("Populating rates_rt_toUS_mon Tables");
   rates_rt_toUS_mon[0][0]=33.00; rates_rt_toUS_mon[0][1]=48.00;
   rates_rt_toUS_mon[0][2]=73.00; rates_rt_toUS_mon[0][3]=122.00;
   rates_rt_toUS_mon[1][0]=46.00; rates_rt_toUS_mon[1][1]=75.00;
   rates_rt_toUS_mon[1][2]=102.00; rates_rt_toUS_mon[1][3]=171.00;
   rates_rt_toUS_mon[2][0]=58.00; rates_rt_toUS_mon[2][1]=94.00;
   rates_rt_toUS_mon[2][2]=131.00; rates_rt_toUS_mon[2][3]=219.00;
   rates_rt_toUS_mon[3][0]=74.00; rates_rt_toUS_mon[3][1]=120.00;
   rates_rt_toUS_mon[3][2]=165.00; rates_rt_toUS_mon[3][3]=278.00;
   rates_rt_toUS_mon[4][0]=100.00; rates_rt_toUS_mon[4][1]=150.00;
   rates_rt_toUS_mon[4][2]=235.00; rates_rt_toUS_mon[4][3]=411.00;
   rates_rt_toUS_mon[5][0]=115.00; rates_rt_toUS_mon[5][1]=185.00;
   rates_rt_toUS_mon[5][2]=284.00; rates_rt_toUS_mon[5][3]=487.00;
   rates_rt_toUS_mon[6][0]=129.00; rates_rt_toUS_mon[6][1]=219.00;
   rates_rt_toUS_mon[6][2]=332.00; rates_rt_toUS_mon[6][3]=564.00;
   rates_rt_toUS_mon[7][0]=144.00; rates_rt_toUS_mon[7][1]=261.00;
   rates_rt_toUS_mon[7][2]=387.00; rates_rt_toUS_mon[7][3]=654.00;
   rates_rt_toUS_mon[8][0]=164.00; rates_rt_toUS_mon[8][1]=302.00;
   rates_rt_toUS_mon[8][2]=446.00; rates_rt_toUS_mon[8][3]=740.00;
   rates_rt_toUS_mon[9][0]=183.00; rates_rt_toUS_mon[9][1]=344.00;
   rates_rt_toUS_mon[9][2]=501.00; rates_rt_toUS_mon[9][3]=827.00;
   rates_rt_toUS_mon[10][0]=263.00; rates_rt_toUS_mon[10][1]=425.00;
   rates_rt_toUS_mon[10][2]=586.00; rates_rt_toUS_mon[10][3]=983.00;
   rates_rt_toUS_mon[11][0]=288.00; rates_rt_toUS_mon[11][1]=465.00;
   rates_rt_toUS_mon[11][2]=643.00; rates_rt_toUS_mon[11][3]=1077.00;
   rates_rt_toUS_mon[12][0]=313.00; rates_rt_toUS_mon[12][1]=506.00;
   rates_rt_toUS_mon[12][2]=698.00; rates_rt_toUS_mon[12][3]=1171.00;
   rates_rt_toUS_mon[13][0]=342.00; rates_rt_toUS_mon[13][1]=553.00;
   rates_rt_toUS_mon[13][2]=765.00; rates_rt_toUS_mon[13][3]=1279.00;
   rates_rt_toUS_mon[14][0]=376.00; rates_rt_toUS_mon[14][1]=607.00;
   rates_rt_toUS_mon[14][2]=839.00; rates_rt_toUS_mon[14][3]=1404.00;
   rates_rt_toUS_mon[15][0]=424.00; rates_rt_toUS_mon[15][1]=686.00;
   rates_rt_toUS_mon[15][2]=946.00; rates_rt_toUS_mon[15][3]=1585.00;
   rates_rt_toUS_mon[16][0]=474.00; rates_rt_toUS_mon[16][1]=766.00;
   rates_rt_toUS_mon[16][2]=1058.00; rates_rt_toUS_mon[16][3]=1772.00;
   //document.write("Done populating rates_rt_toUS_mon<br>");

}

function RComp(LForm, change) {
   your_age = LForm.age_rt.value;
   tripcost_rt = LForm.tripcost_rt.value;

   // find out which row of the table for insured
   if(tripcost_rt=="0-500") {
      row_rt=0;
   }
   else if(tripcost_rt=="501-1000") {
      row_rt=1;
   }
   else if(tripcost_rt=="1001-1500") {
      row_rt=2;
   }
   else if(tripcost_rt=="1501-2000") {
      row_rt=3;
   }
   else if(tripcost_rt=="2001-2500") {
      row_rt=4;
   }
   else if(tripcost_rt=="2501-3000") {
      row_rt=5;
   }
   else if(tripcost_rt=="3001-3500") {
      row_rt=6;
   }
   else if(tripcost_rt=="3501-4000") {
      row_rt=7;
   }
   else if(tripcost_rt=="4001-4500") {
      row_rt=8;
   }
   else if(tripcost_rt=="4501-5000") {
      row_rt=9;
   }
   else if(tripcost_rt=="5001-5500") {
      row_rt=10;
   }
   else if(tripcost_rt=="5501-6000") {
      row_rt=11;
   }
   else if(tripcost_rt=="6001-6500") {
      row_rt=12;
   }
   else if(tripcost_rt=="6501-7000") {
      row_rt=13;
   }
   else if(tripcost_rt=="7001-8000") {
      row_rt=14;
   }
   else if(tripcost_rt=="8001-9000") {
      row_rt=15;
   }
   else {  
      row_rt=16;
   }

   if(your_age=="na") {
	LForm.rt_premium.value=("0.00");
      return;
   }

   if(your_age=="0-55") {
      col_rt=0;
   }
   else if(your_age=="56-70") {
      col_rt=1;
   }
   else if(your_age=="71-80") {
      col_rt=2;
   }
   else {
      col_rt=3;
   }

   RComp_rt(LForm, change);

   return;
}

// ----------------------------------------------------------------------------

// Compute rate for ROUNDTRIP TRAVEL
function RComp_rt(LForm, change) {

   premium_rt = rates_rt_toUS_mon[row_rt][col_rt];

   LForm.rt_premium.value = Format_premium("" + premium_rt);
   return;
}

// ----------------------------------------------------------------------------

// Compute rate for PATRIOT T.R.I.P.
function RComp_pa(LForm, change) {

	age_pa = LForm.age_pa.value;
	rate_factor = 0;
	tripcost_pa = parseInt(LForm.tripcost_pa.value);

   if(age_pa=="na") {
	LForm.pa_premium.value=("0.00");
      return;
   }

   if(age_pa=="0-49") {
      rate_factor = 0.0400;
   }
   else if(age_pa=="50-59") {
      rate_factor = 0.0549;
   }
   else if(age_pa=="60-69") {
      rate_factor = 0.0698;
   }
   else {
      rate_factor = 0.1015;
   }

   premium_pa = tripcost_pa * rate_factor;

   LForm.pa_premium.value = Format_premium("" + premium_pa);
   return;
}

// ----------------------------------------------------------------------------

// Compute rate for PATRIOT STUDENT T.R.I.P. 
function RComp_pas(LForm, change) {

	age_pas = LForm.age_pas.value;
	rate_factor = 0;
	tripcost_pas = parseInt(LForm.tripcost_pas.value);

   if(age_pas=="na") {
	LForm.pas_premium.value=("0.00");
      return;
   }

	// only one rate factor for students 25 or less
      rate_factor = 0.0253;

   premium_pas = tripcost_pas * rate_factor;

   LForm.pas_premium.value = Format_premium("" + premium_pas);
   return;
}

// ----------------------------------------------------------------------------

