<!-- Original:  Cyanide_7 (leo7278@hotmail.com) -->
<!-- Web Site:  http://www7.ewebcity.com/cyanide7 -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}
//  End -->

//-------------------------------------------------------------------------------------
// jlee 01/24/2001
// changed pricing model
//-------------------------------------------------------------------------------------
//
if (document.images) {
  expenseImg_on = new Image();
  //expenseImg_on.src = "images/sb_expense.gif";
  expenseImg_on.src = "images/expense.gif";

  expenseImg_off = new Image();
  expenseImg_off.src = "images/expense.gif";

}

function changeImages(imageName, imageToBe) {
  if (document.images) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
      document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src");
    }
  }
}

function queryField(opt)
{
  var keyloc            // The location of the start of "key=value"
  var nextkey           // The start of the next key
  var start             // The start of the value
  var opts              // The options specified by the search string
  var optval            // The value of the selected option
  
  // Determine the options/search string
  opts=location.search

  // Most keys start after an & and are followed by an = sign
  keyloc = opts.indexOf("&" + opt + "=")

  // If a string isn't found, indexOf returns -1.  So, we try the "first"
  // key, which appears right after the initial question mark
  if(keyloc == -1) {
    keyloc = opts.indexOf("?" + opt + "=")
  }

  // If, at this point, we still haven't found the key, stop.
  if (keyloc == -1) {
    return ""
  } 

  // The value normally ends with an ampersand (which marks the start of the next key/value pair)
  nextkey = opts.indexOf("&",keyloc+1)  

  // But sometimes there is no next pair
  if (nextkey == -1) {
    nextkey = opts.length
  }

  // Okay, what next?  Verify that it's reasonable
  if (nextkey < keyloc) {
    return ""
  }  

  // Get and return the value
  sval = keyloc+2+opt.length
  optval = plustospace(unescape(opts.substring(sval,nextkey)))
  return optval
} // getOption()

function plustospace(txt)
{
  // Sanity check on empty string
  if (txt == "") { return txt }
  
  // Variables
  var newtxt=""  // The txt without the spaces
  var pos=0      // The position of the plus sign
  var prev=0     // The position of the previous plus sign
  var done=false // sentinel for loop
  var tmp        // Used for debugging
  
  // Repeatedly find the next + sign, stopping when no more
  // are found
  // alert("Text is '" + txt + "'") // DEBUG
  while (!done) {
    pos = txt.indexOf("+",prev)
    // tmp = prompt("Plus found at '" + pos + "'", "OK")  // DEBUG
    // if (tmp != "OK") { done = 1 }// DEBUG
    if (prev >= txt.length) {
      done = true
    }
    else if (pos == 0) {
      prev=1
      newtxt += " "
    }
    else if ((pos < 0) || (pos == "")) {
      // Not found ... exit
      done = true
    }
    else {
      // Copy text
      if (pos>prev) { newtxt += txt.substring(prev,pos) }
      newtxt += " "
      // And move on
      prev=pos+1
    }
  }
  // Get the last little bit
  newtxt += txt.substring(prev,txt.length)
  return newtxt  
} // plustospace()

//Search and obtain from the URL

var NumExpReporters;
var NumReportsEmpl;
var MinsCompleteReport;
var MinsProcessReport;
var DollarsSalaryReporters;
var PercentFactorBenefits;
var costPerEmpHour;

function populateData(inputForm)
{
  NumExpReporters = queryField("passNumExpReporters");
  NumReportsEmpl = queryField("passNumReportsEmpl");
  MinsCompleteReport = queryField("passMinsCompleteReport");
  MinsProcessReport = queryField("passMinsProcessReport");
  DollarsSalaryReporters = queryField("passDollarsSalaryReporters");
  PercentFactorBenefits = queryField("passPercentFactorBenefits");

  if (navigator.appVersion.indexOf("3.") != -1)
  {
    if (NumExpReporters == "") NumExpReporters = 0;
    if (NumReportsEmpl == "") NumReportsEmpl = 0;
    if (MinsCompleteReport == "") MinsCompleteReport = 0;
    if (MinsProcessReport == "") MinsProcessReport = 0;
    if (DollarsSalaryReporters == "") DollarsSalaryReporters = 0;
    if (PercentFactorBenefits == "") PercentFactorBenefits = 0;
  }

  inputForm.formNumExpReporters.value = NumExpReporters;
  inputForm.formNumReportsEmpl.value = NumReportsEmpl;
  inputForm.formMinsCompleteReport.value = MinsCompleteReport;
  inputForm.formMinsProcessReport.value = MinsProcessReport;
  inputForm.formDollarsSalaryReporters.value = DollarsSalaryReporters;
  inputForm.formPercentFactorBenefits.value = PercentFactorBenefits;
}

function roundOff(value, precision)
{
  value = "" + value //convert value to string
  precision = parseInt(precision);

  var whole = "" + Math.round(value * Math.pow(10, precision));

  var decPoint = whole.length - precision;

  if(decPoint != 0)
  {
    result = whole.substring(0, decPoint);
    result += ".";
    result += whole.substring(decPoint, whole.length);
  }
  else
  {
    result = whole;
  }
  return result;
}

// Keeps track of the current mode.
var currentMode;

// This flag determines whether we need a new mode when the user hits the calculate button.
var isNewMode = 0;

// The user clicked.  Now determine what he or she clicked on.  Set the mode.

function newMode()
{
  if (document.calcInput.mode[0].checked == true)
  {
    currentMode = document.calcInput.mode[0].value;
    isNewMode = 1;
  }
  if (document.calcInput.mode[1].checked == true)
  {
    currentMode = document.calcInput.mode[1].value;
    isNewMode = 1;
  }
  if (document.calcInput.mode[2].checked == true)
  {
    currentMode = document.calcInput.mode[2].value;
    isNewMode = 1;
  }
}

function calculateTotalCost(inputForm, outputForm, mode)
{

// If this is a new mode as specified in "newMode," the go to the new page.
// If not, stay here and update the numbers
  if(isNewMode)
  {
    modeChange(inputForm, currentMode)
  } else {
    adjustCost(inputForm, outputForm, mode)
  }
}

function adjustCost(inputForm, outputForm, mode)
{

// Determine mode, assign number

  var switchNumber;
  if (mode == "paperBased") switchNumber = 1;
  if (mode == "spreadsheets") switchNumber = 2;
  if (mode == "clientServer") switchNumber = 3;

// Expensable formulas - included on every page.

  costPerEmpHour = 0;

  // Change on 4-12-00: No cost on ExpensAble implementation.

  InitImpExpensable = 0;
 
  // jlee 01/24/2001  -  changed pricing model
  InitImpExpensable = 5000;

  /*
  if(inputForm.formNumExpReporters.value > 500) {
    InitImpExpensable = inputForm.formNumExpReporters.value * 10
  } else {
    if(inputForm.formNumExpReporters.value < 50) {
      InitImpExpensable = 995
    } else {
      InitImpExpensable = 5000
    }
  }
  */

  // Change on 4-14-00: Annual fee should be $60, regardless of number of users
  // Change on 4-18-00: Annual fee should be $60 per user
  // Change on 7-16-02: Annual fee should be $144 per user; Monthly, $12 per user
  
  CostExpenExpensable = eval(inputForm.formNumExpReporters.value * 60);

  // jlee 01/24/2001  -  changed pricing model
  // s schwarz 7-16-02  - changed pricing model
  CostExpenExpensable = eval(inputForm.formNumExpReporters.value * 10 * 12);
  if(inputForm.formNumExpReporters.value <= 500) {
     CostExpenExpensable = eval(inputForm.formNumExpReporters.value * 12 * 12);
  }
  if(inputForm.formNumExpReporters.value <= 200) {
     CostExpenExpensable = eval(inputForm.formNumExpReporters.value * 12 * 12);
  }
 

  HoursPrepExpensableFactor = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsCompleteReport.value * 12) / 60);
  HoursProcsExpensableFactor = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsProcessReport.value * 12) / 60);
  costPerEmpHour_a = eval(inputForm.formPercentFactorBenefits.value / 100);
  costPerEmpHour_b = eval(inputForm.formDollarsSalaryReporters.value * costPerEmpHour_a);
  costPerEmpHour_c = eval(eval(inputForm.formDollarsSalaryReporters.value) + eval(costPerEmpHour_b));
  costPerEmpHour = eval(costPerEmpHour_c / 2080);


// Paper-based formulas

  InitImpPaper = 0;
  CostExpenPaper = 0;
  HoursPrepPaper = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsCompleteReport.value * 12) / 60);
  HoursProcsPaper = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsProcessReport.value * 12) / 60);
  ErrorRatePaper = eval((HoursPrepPaper + HoursProcsPaper) * 0.05);
  AdminCostTotPaper = eval((HoursPrepPaper + HoursProcsPaper + ErrorRatePaper) * costPerEmpHour);
  ITCostPaper = 0;
  TotalCostPaper = eval(InitImpPaper + CostExpenPaper + AdminCostTotPaper + ITCostPaper);

// Spreadsheets formulas

  InitImpSpread = 0;
  CostExpenSpread = 0;
  HoursPrepSpread = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsCompleteReport.value * 12) / 60);
  HoursProcsSpread = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsProcessReport.value * 12) / 60);
  ErrorRateSpread = eval((HoursPrepSpread + HoursProcsSpread) * 0.05);
  AdminCostTotSpread = eval((HoursPrepSpread + HoursProcsSpread + ErrorRateSpread) * costPerEmpHour);
  ITCostSpread = eval(inputForm.formNumExpReporters.value * 500 * 0.05);
  TotalCostSpread = eval(InitImpSpread + CostExpenSpread + AdminCostTotSpread + ITCostSpread);

// Client / Server formulas

  if(inputForm.formNumExpReporters.value < 50) {
    InitImpCS = eval((87.5 * inputForm.formNumExpReporters.value) + 24000 + 100000 + (2 * inputForm.formNumExpReporters.value * costPerEmpHour));
  } else {
    InitImpCS = eval((87.5 * inputForm.formNumExpReporters.value) + 24000 + 200000 + (2 * inputForm.formNumExpReporters.value * costPerEmpHour));
  }

  CostExpenCS = eval(outputForm.formCostExpen.value);
  HoursPrepCS = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsCompleteReport.value * 12) / 60);
  HoursProcsCS = eval((inputForm.formNumExpReporters.value * inputForm.formNumReportsEmpl.value * inputForm.formMinsProcessReport.value * 12) / 60);
  ErrorRateCS = eval((HoursPrepCS + HoursProcsCS) * 0.05);
  AdminCostTotCS = eval((HoursPrepCS + HoursProcsCS + ErrorRateCS) * costPerEmpHour);
  ITCostCS = eval(inputForm.formNumExpReporters.value * 500 * 0.05 + (InitImpCS * 0.1));
  TotalCostCS = eval(InitImpCS + CostExpenCS + AdminCostTotCS + ITCostCS);

  if (switchNumber == 1)
  {
  // Paper-based output

  // For Small Business ExpensAble.com
    if(inputForm.formNumExpReporters.value < 50) {
      changeImages('expenseImg', 'expenseImg_on');
      lessThan50();
    } else {
      changeImages('expenseImg', 'expenseImg_off');
      moreThan50();
    }

    HoursPrepExpensable = eval(HoursPrepExpensableFactor * 0.35);
    HoursProcsExpensable = eval(HoursProcsExpensableFactor * 0.2);
    ErrorRateExpensableFactor = eval((HoursPrepExpensable + HoursProcsExpensable) * 0.05);
    ErrorRateExpensable = eval(ErrorRateExpensableFactor * 0.2);
    AdminCostTotExpensable = eval((HoursPrepExpensable + HoursProcsExpensable + ErrorRateExpensable) * costPerEmpHour);
    ITCostExpensable = eval(outputForm.formITCostExpensable.value); //Value to remain 0
    TotalCostExpensable = eval(InitImpExpensable + CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable);
    inputForm.formTotalCost.value = formatNaN(Math.round(TotalCostPaper));

    outputForm.formInitImp.value = formatNaN(Math.round(InitImpPaper));
    outputForm.formHoursPrep.value = formatNaN(Math.round(HoursPrepPaper));
    outputForm.formHoursProcs.value = formatNaN(Math.round(HoursProcsPaper));
    outputForm.formErrorRate.value = formatNaN(Math.round(ErrorRatePaper));
    outputForm.formAdminCostTot.value = formatNaN(Math.round(AdminCostTotPaper));
    outputForm.formITCost.value = formatNaN(Math.round(ITCostPaper));
    outputForm.formCostHour1.value = formatNaN(Math.round(costPerEmpHour));
    outputForm.formCostHour2.value = formatNaN(Math.round(costPerEmpHour));
    PercentSavings = eval(1 - (TotalCostExpensable / TotalCostPaper));
    
    //Removed: 4-12-00
    /*
    if(inputForm.formNumExpReporters.value < 50) {
      MonthsToPayback = eval(CostExpenExpensable / ((AdminCostTotPaper - AdminCostTotExpensable) / 12));
    } else {
      MonthsToPayback = eval((((CostExpenPaper + AdminCostTotPaper + ITCostPaper) / 12) - ((CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable) / 12)) / InitImpExpensable);
    }
    */
    //original: MonthsToPayback = eval(InitImpExpensable / ((TotalCostPaper - InitImpPaper - TotalCostExpensable) / 12));
  }

  if (switchNumber == 2)
  {
  // Spreadsheet output

  // For Small Business ExpensAble.com
    if(inputForm.formNumExpReporters.value < 50) {
      changeImages('expenseImg', 'expenseImg_on');
      lessThan50();
    } else {
      changeImages('expenseImg', 'expenseImg_off');
      moreThan50();
    }

    HoursPrepExpensable = eval(HoursPrepExpensableFactor * 0.5);
    HoursProcsExpensable = eval(HoursProcsExpensableFactor * 0.286);
    ErrorRateExpensableFactor = eval((HoursPrepExpensable + HoursProcsExpensable) * 0.05);
    ErrorRateExpensable = eval(ErrorRateExpensableFactor * 0.25);
    AdminCostTotExpensable = eval((HoursPrepExpensable + HoursProcsExpensable + ErrorRateExpensable) * costPerEmpHour);
    ITCostExpensable = eval(outputForm.formITCostExpensable.value); //Value to remain 0
    TotalCostExpensable = eval(InitImpExpensable + CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable);
    inputForm.formTotalCost.value = formatNaN(Math.round(TotalCostSpread));

    outputForm.formInitImp.value = formatNaN(Math.round(InitImpSpread));
    outputForm.formHoursPrep.value = formatNaN(Math.round(HoursPrepSpread));
    outputForm.formHoursProcs.value = formatNaN(Math.round(HoursProcsSpread));
    outputForm.formErrorRate.value = formatNaN(Math.round(ErrorRateSpread));
    outputForm.formAdminCostTot.value = formatNaN(Math.round(AdminCostTotSpread));
    outputForm.formITCost.value = formatNaN(Math.round(ITCostSpread));
    outputForm.formCostHour1.value = formatNaN(Math.round(costPerEmpHour));
    outputForm.formCostHour2.value = formatNaN(Math.round(costPerEmpHour));
    PercentSavings = eval(1 - (TotalCostExpensable / TotalCostSpread));

    //Removed: 4-12-00
    /*
    if(inputForm.formNumExpReporters.value < 50) {
      MonthsToPayback = eval(CostExpenExpensable / ((AdminCostTotSpread - AdminCostTotExpensable) / 12));
    } else {
      MonthsToPayback = eval((((CostExpenSpread + AdminCostTotSpread + ITCostSpread) / 12) - ((CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable) / 12)) / InitImpExpensable);
    }
    */
    //modified: MonthsToPayback = eval((((CostExpenCS + AdminCostTotCS + ITCostCS) / 12) - ((CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable) / 12)) / InitImpExpensable);
    //original: MonthsToPayback = eval(InitImpExpensable / ((TotalCostSpread - InitImpSpread - TotalCostExpensable) / 12));

  }

  if (switchNumber == 3)
  {
  // Client / Server output

  // For Small Business ExpensAble.com
    if(inputForm.formNumExpReporters.value < 50) {
      changeImages('expenseImg', 'expenseImg_on');
      lessThan50();
    } else {
      changeImages('expenseImg', 'expenseImg_off');
      moreThan50();
    }

    HoursPrepExpensable = eval(HoursPrepExpensableFactor * 0.58);
    HoursProcsExpensable = eval(HoursProcsExpensableFactor * 1);
    ErrorRateExpensableFactor = eval((HoursPrepExpensable + HoursProcsExpensable) * 0.05);
    ErrorRateExpensable = eval(ErrorRateExpensableFactor * 1);
    AdminCostTotExpensable = eval((HoursPrepExpensable + HoursProcsExpensable + ErrorRateExpensable) * costPerEmpHour);
    ITCostExpensable = eval(outputForm.formITCostExpensable.value); //Value to remain 0
    TotalCostExpensable = eval(InitImpExpensable + CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable);
    inputForm.formTotalCost.value = formatNaN(Math.round(TotalCostCS));

    outputForm.formInitImp.value = formatNaN(Math.round(InitImpCS));
    outputForm.formHoursPrep.value = formatNaN(Math.round(HoursPrepCS));
    outputForm.formHoursProcs.value = formatNaN(Math.round(HoursProcsCS));
    outputForm.formErrorRate.value = formatNaN(Math.round(ErrorRateCS));
    outputForm.formAdminCostTot.value = formatNaN(Math.round(AdminCostTotCS));
    outputForm.formITCost.value = Math.round(ITCostCS);

    outputForm.formCostHour1.value = formatNaN(Math.round(costPerEmpHour));
    outputForm.formCostHour2.value = formatNaN(Math.round(costPerEmpHour));
    PercentSavings = eval(1 - TotalCostExpensable / TotalCostCS);

    //Removed: 4-12-00
    /*
    MonthsToPayback_a = eval((CostExpenCS + AdminCostTotCS + ITCostCS) / 12);
    //alert("Client / Server monthly cost: " + MonthsToPayback_a);
    MonthsToPayback_b = eval((CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable) / 12);
    //alert("Expensable monthly cost: " + MonthsToPayback_b);
    MonthsToPayback_c = eval(MonthsToPayback_a - MonthsToPayback_b);
    //alert("difference: " + MonthsToPayback_c);
    MonthsToPayback = eval(MonthsToPayback_c / InitImpExpensable);
    */
    //modified: MonthsToPayback = eval((((CostExpenCS + AdminCostTotCS + ITCostCS) / 12) - ((CostExpenExpensable + AdminCostTotExpensable + ITCostExpensable) / 12)) / InitImpExpensable);
    //original: MonthsToPayback = eval((AdminCostTotCS + ITCostCS) / 12);
  }

// Expensable output - included on every page.

  inputForm.formTotalCostExpensable.value = formatNaN(Math.round(TotalCostExpensable));
  outputForm.formInitImpExpensable.value = formatNaN(Math.round(InitImpExpensable));
  outputForm.formCostExpenExpensable.value = formatNaN(Math.round(CostExpenExpensable));
  outputForm.formHoursPrepExpensable.value = formatNaN(Math.round(HoursPrepExpensable));
  outputForm.formHoursProcsExpensable.value = formatNaN(Math.round(HoursProcsExpensable));
  outputForm.formErrorRateExpensable.value = formatNaN(Math.round(ErrorRateExpensable));
  outputForm.formAdminCostTotExpensable.value = formatNaN(Math.round(AdminCostTotExpensable));

// Percent Savings and Months to Payback output - included on every page

  outputForm.formPercentSavings.value = formatNaN(Math.round(PercentSavings * 100));
  //outputForm.formMonthsToPayback.value = formatNaN(eval(Math.round(MonthsToPayback * 100) / 100));
/**
  if (MonthsToPayback < 1 && MonthsToPayback > 0)
  {
    outputForm.formMonthsToPayback.value = "0." + roundOff(MonthsToPayback,2)
  }
  else
  {
    outputForm.formMonthsToPayback.value = roundOff(MonthsToPayback,2);
  }
*/
}

// Changes the page to the correct mode.

function modeChange(inputForm, pageMode)
{
  var queryStr = "";

// validation
  if (inputForm.formNumExpReporters.value != "" ||
      inputForm.formNumReportsEmpl.value != "" ||
      inputForm.formMinsCompleteReport.value != "" ||
      inputForm.formMinsProcessReport.value != "" ||
      inputForm.formDollarsSalaryReporters.value != "" ||
      inputForm.formPercentFactorBenefits.value != "")
  {
    queryStr = "?";
    queryStr += "passNumExpReporters=";
    queryStr += inputForm.formNumExpReporters.value +"&";
    queryStr += "passNumReportsEmpl=";
    queryStr += inputForm.formNumReportsEmpl.value +"&";
    queryStr += "passMinsCompleteReport=";
    queryStr += inputForm.formMinsCompleteReport.value +"&";
    queryStr += "passMinsProcessReport=";
    queryStr += inputForm.formMinsProcessReport.value +"&";
    queryStr += "passDollarsSalaryReporters=";
    queryStr += inputForm.formDollarsSalaryReporters.value +"&";
    queryStr += "passPercentFactorBenefits=";
    queryStr += inputForm.formPercentFactorBenefits.value +"";
  }

  var switchNumber;

  if (pageMode == "paperBased") switchNumber = 1;
  if (pageMode == "spreadsheets") switchNumber = 2;
  if (pageMode == "clientServer") switchNumber = 3;

// Problems!  When this "modeChange" function is executed 
// directly from the page (i.e. the old pages with the "onChange"
// event on the radio buttons), it properly loads the new page.
// But when called from the "calculateTotalCost" function, it
// refuses to go to the new page.  Reason??  Unknown.

  if (switchNumber == 1)
  {
  // Paper-based output
    goToPage("paper.shtml" + queryStr);
  }

  if (switchNumber == 2)
  {
  // Spreadsheet output
    goToPage("spreadsheet.shtml" + queryStr);
  }

  if (switchNumber == 3)
  {
  // Client / Server output
    goToPage("cs.shtml" + queryStr);
  }
}

function goToPage(filename)
{
  window.location.href = filename;
}

function validateField(fieldValue) {
  floatValue = parseFloat(fieldValue);
  if (isNaN(floatValue)) {
    notValidValue();
    return 0;
  } else {
    if (!verifyValues(floatValue, fieldValue))
    {
      notValidValue();
    }
    return fieldValue;
  }
}

function notValidValue() {
  window.alert("Please enter a valid numeric value. (Exclude commas)")
}

function verifyValues(value1,value2){
  validVal = (value1 == value2) ? true : false;
  return validVal;
}

function formatNaN(fieldval) {
  if (isNaN(fieldval)) {
    return 0;
  } else {
    return fieldval;
  }
}

function nothing()
{
//do nothing
}

function isNumeric( c )
{
  return ( c == '.' || c == '-' || ( c >= '0' && c <= '9') )
}

function removeNonNumerics( theObj )
{
  s = theObj.value;
  if ( s == null ) return null;
  s = '' + s
  var tmp = ''
  var isLeadingZero = true
  for ( var i = 0; i < s.length; i++ )
  {
    var c = s.charAt( i )
    if ( isNumeric( c ) )
    {
      if ( isLeadingZero == true && c == '0' )
      {
        continue;
      }
      else
      {
        isLeadingZero = false;
      }
      tmp = tmp + c;
    }
  }
  //n = 3;
  //alert( fieldNumber );
  //document.calcInput.elements[n].value = tmp;
  //return tmp;
  theObj.value = tmp;
}

function removeNonNumericsValue( s )
{
  if ( s == null ) return null;
  s = '' + s
  var tmp = ''
  var isLeadingZero = true
  for ( var i = 0; i < s.length; i++ )
  {
    var c = s.charAt( i )
    if ( isNumeric( c ) )
    {
      if ( isLeadingZero == true && c == '0' )
      {
        continue;
      }
      else
      {
        isLeadingZero = false;
      }
      tmp = tmp + c;
    }
  }
  //n = 3;
  //alert( fieldNumber );
  //document.calcInput.elements[n].value = tmp;
  //return tmp;
  return tmp;
}

function lessThan50()
{
  if (document.layers)
  {
    //document.layers["init50"].visibility = "visible";
    //document.layers["monthly50"].visibility = "visible";
    //document.layers["monthly51"].visibility = "hidden";
  }
  if (document.all)
  {
    //init50.style.visibility = "visible";
    //monthly50.style.visibility = "visible";
    //monthly51.style.visibility = "hidden";
  }
}

function moreThan50()
{
  if (document.layers)
  {
    //document.layers["init50"].visibility = "hidden";
    //document.layers["monthly50"].visibility = "hidden";
    //document.layers["monthly51"].visibility = "visible";
  }
  if (document.all)
  {
    //init50.style.visibility = "hidden";
    //monthly50.style.visibility = "hidden";
    //monthly51.style.visibility = "visible";
  }
}

