// dem 09/21/04


var preloadRate="";

// Open and Close New window function
function showStory(newURL){
opener.parent.location.href = newURL;
opener.parent.focus();
window.close();
}


function makeURL() {
with (document.LoanCalcQuickForm)
{

var url = "/carsapp/national/?srv=parser&act=index&tf=tools_calc.tmpl&vp=" + vpLoan.value + "&dpLoan=" + dpLoan.value + "&stPerLoan=" + stPerLoan.value + "&rateLoan="+ rateLoan.value + "&termLoan=" + termLoan.value + "&vpLease=" + vpLoan.value + "&dpLease="+ dpLoan.value + "&stPerLease=" + stPerLoan.value  + "&termLease=" + termLoan.value +"&flt=n_rval";

showStory(url);
}
}

<!--
// LOAN
// vehicle Price (range:  0 to 500000)
var var_vpLoan = "0"
if (var_vpLoan == "")
{
var_vpLoan = "0"
}
var var_vpLoanDefault = "0"
var var_vpLoanMin = "0"
var var_vpLoanMax = "500000"
var var_vpLoanErrMsg = "Vehicle Price must be between 0 and 500000."
var var_vpLoanDecPlaces = 0
// down payment (range:  0 to vp)
var var_dpLoan = "0"
var var_dpLoanDefault = "0"
var var_dpLoanMin = "0"
var var_dpLoanMax = var_vpLoan
var var_dpLoanErrMsg = "Down payment must be between 0 and vehicle price."
var var_dpLoanDecPlaces = 0
// sales tax (%) (range:  0 to 100)
var var_stPerLoan = "0"
var var_stPerLoanDefault = "0"
var var_stPerLoanMin = "0"
var var_stPerLoanMax = "100"
var var_stPerLoanErrMsg = "Sales tax (%) must be between 0 and 100."
var var_stPerLoanDecPlaces = 2
// sales tax ($) (range:  0 to (vp * stPer / 100))
var var_stDolLoan = "0"
var var_stDolLoanDefault = "0"
var var_stDolLoanMin = "0"
var var_stDolLoanMax = ""
var var_stDolLoanErrMsg = "Sales tax ($) must be less than 100% equivalent sales tax (%)."
var var_stDolLoanDecPlaces = 2
// rate (interest) (range:  0 to 50)
var_rateLoan = 6.43;
if(preloadRate=="new") var_rateLoan = 5.90;
var var_rateLoanDefault = "6"

if((var_rateLoan=="")||(isNaN(var_rateLoan)==true)) var_rateLoan=var_rateLoanDefault;
else var_rateLoanDefault=var_rateLoan;

var var_rateLoanMin = "0"
var var_rateLoanMax = "50"
var var_rateLoanErrMsg = "Interest rate (APR) must be between 0 and 50."
var var_rateLoanDecPlaces = 2
// term (range: 6 to 72)
var var_termLoan = "48"
if(preloadRate!="new") var_termLoan="36";

var var_termLoanDefault = "48"
var var_termLoanMin = "6"
var var_termLoanMax = "72"
var var_termLoanErrMsg = "Term of loan must be between 6 and 72."
var var_termLoanDecPlaces = 0
// monthly payment (range:  0 to 2000)
var var_mpLoan = "0"
var var_mpLoanDefault = "0"
var var_mpLoanMin = "0"
var var_mpLoanMax = "1000"
var var_mpLoanErrMsg = "Monthly payment must be between 0 and 1000."
var var_mpLoanDecPlaces = 2
// amount financed
var var_afLoan = "0"
var var_afLoanDefault = "0"
var var_afLoanDecPlaces = 2
// total spent
var var_tsLoan = "0"
var var_tsLoanDefault = "0"
var var_tsLoanDecPlaces = 2
// comparible cost to own
var var_cctoLoan = "0"
var var_cctoLoanDefault = "0"
var var_cctoLoanDecPlaces = 2

// Used for field validation.
var dirtyField = true
var validating = false

//=================================================
function initCalc()
{
// Initialize loan calculator input.
with (document.LoanCalcQuickForm)
{
// Initialize loan calculator input and default values.
// Default values need to be set in case of toolbar hiding or reloads.
vpLoan.value=var_vpLoan;
dpLoan.value=var_dpLoan;
stPerLoan.value=var_stPerLoan;
var_rateLoan = 5.00;
if(preloadRate=="new") var_rateLoan = 5.90;
rateLoan.value=var_rateLoan;
termLoan.value=var_termLoan;
mpLoan.value=var_mpLoan;

// Set focus and select first input field.
vpLoan.select()
vpLoan.focus()
recalculate(vpLoan);
}
}

//=================================================
function validRange(field)
{
var strMin = "Min"
var strMax = "Max"
var tempName = "var_" + field.name
var fieldMin = eval(tempName + "Min")
var fieldMax = eval(tempName + "Max")
var tempErrMsg = eval(tempName + "ErrMsg")

//eval("alert('vpMin = ' + fieldMin)")  
//eval("alert('vpMax = ' + fieldMax)")  

if (parseFloat(field.value) < parseFloat(fieldMin) || parseFloat(field.value) > parseFloat(fieldMax))
{
return false
}
else
{
return true
}
}

function validateField(field)
{
   var numErrFlag = false
   var rangeErrFlag = false
   var fieldErrMsg = eval("var_" + field.name + "ErrMsg")
   var tempField = 'var_' + field.name

   if (!isNumeric(field))
   {
//      alert('validateField: not numeric')
      alert(fieldErrMsg)
          field.value=eval("var_" + field.name)
      field.select()
      field.focus()
   }
   else
   {
      if(!validRange(field))
      {
//       alert('validateField: not in range')
         alert(fieldErrMsg)
 field.value=eval("var_" + field.name)
         field.select()
         field.focus()
      }
      else
         {
            // Input is valid...now set any related fields for future validation.
            eval(tempField = field.value)
            field.defaultValue = field.value

            if (field.name == "vpLoan")
               {
               var_dpLoanMax = field.value
               }
            if (field.name == "dpLoan")
               {
               var_vpLoanMin = field.value
               }
            recalculate(field)
   }
   }
}



    //=================================================
function changedField()
{
   dirtyField="true"
}

    //=================================================
function recalculate(field)
{
   // Recalculate fields.

   // LOAN:  change in top input fields
   if (field.name == "vpLoan" || field.name == "dpLoan" || field.name == "stPerLoan" || field.name == "rateLoan" || field.name == "termLoan" || field.name == "stDolLoan" || field.name == "mpLoan")
   {
      // Recalc. mp, stDol, af, ts, and ccto.

      if(field.name == "vpLoan")
      {
         var_vpLoan = field.value   
      }

      if(field.name == "stPerLoan")
      {
         var_stPerLoan = field.value   
      }

      if (field.name == "mpLoan")
      {
         var_mpLoan = field.value
         var tempRate = eval(var_rateLoan / 1200)
         var tempMpDenom = 1 - Math.pow(eval(1 + parseFloat(tempRate)), eval(-1 * var_termLoan))
         var_vpLoan = eval(parseFloat(var_mpLoan) * tempMpDenom / tempRate).toString()
         var_vpLoan = eval(parseFloat(var_vpLoan) + parseFloat(var_dpLoan) / ( 1 + ( var_stPerLoan / 100 ) ) ).toString()
      }

     if(field.name == "stDolLoan")
    {
         var_stPerLoan = eval(parseFloat(field.value) * 100 / parseFloat(var_vpLoan)).toString()
         var_vpLoan = document.LoanCalcQuickForm.vpLoan.value
         var_stDolLoan = field.value
      }
      else
      {
         var_stDolLoan = eval(var_vpLoan * var_stPerLoan/100).toString()
      }

      var_dpLoan = document.LoanCalcQuickForm.dpLoan.value
      var_rateLoan = document.LoanCalcQuickForm.rateLoan.value
      var_termLoan = document.LoanCalcQuickForm.termLoan.value

      // Calculate new fields for output.
      var_afLoan = eval(parseFloat(var_stDolLoan) + (parseFloat(var_vpLoan) - parseFloat(var_dpLoan))).toString()
      if (field.name != "mpLoan")
      {
         var tempRate = eval(var_rateLoan / 1200).toString()
         var tempMpDenom = 1 - Math.pow(eval(1 + parseFloat(tempRate)), eval(-1 * var_termLoan))
         var_mpLoan = eval(parseFloat(var_afLoan) * parseFloat(tempRate) / tempMpDenom).toString()
      }
      var_tsLoan = eval((parseFloat(var_mpLoan) * parseFloat(var_termLoan)) + parseFloat(var_dpLoan)).toString()
      var_cctoLoan = var_tsLoan

      var_vpLoan = remExtraDecPlaces(var_vpLoan, 0)
      var_dpLoan = remExtraDecPlaces(var_dpLoan, 0)
      var_stPerLoan = remExtraDecPlaces(var_stPerLoan, 2)
      var_stDolLoan = remExtraDecPlaces(var_stDolLoan, 2)
      var_mpLoan = remExtraDecPlaces(var_mpLoan, 2)
      var_afLoan = remExtraDecPlaces(var_afLoan, 2)
      var_tsLoan = remExtraDecPlaces(var_tsLoan, 2)
      var_cctoLoan = remExtraDecPlaces(var_cctoLoan, 2)
  
      // Place new values in Loan fields.
      with (document.LoanCalcQuickForm)
      {
         vpLoan.value=var_vpLoan
         dpLoan.value=var_dpLoan
         stPerLoan.value=var_stPerLoan
         rateLoan.value=var_rateLoan
         termLoan.value=var_termLoan
         mpLoan.value=var_mpLoan
 
 if((tempRate==0)&&(mpLoan.value=="NaN")){
 mpLoan.value=remExtraDecPlaces(parseFloat(eval(parseFloat(var_afLoan) / var_termLoan)).toString());
 }
      }
   }
}



//=================================================
function isNumeric(field)
{
// Check if input field is numeric.

var floatValue = new Number(parseFloat(field.value,10))
var isNumber = true
var chr = 0;
var decPlaces = 0;
var errorMsg = "";

//   alert('In validateField()')

dirtyField = true
if (dirtyField)
{
//        alert('if (inNumber)')
// Check for digits '0'-'9' and '.'
for ( var i = 0; i < field.value.length; i++ )
{
chr = field.value.charAt( i )
//           alert('Char is ' + chr)

// verify that the number is in fact numeric
if ((chr >= "0" && chr <= "9") || chr == ".")
{
if ( chr == "." )
{
   decPlaces += 1;
   //  Checks to make sure that there's at most one decimal point.
   if ( decPlaces > 1 )
   {
      isNumber = false 
      errorMsg = "You can only have one decimal point in your number."
//                     alert(errorMsg)
      i = field.value.length
   }
}
}
else
{
isNumber = false 
errorMsg = "The only values allowed are numbers (0 through 9) and a decimal point."
//               alert(errorMsg)
i = field.value.length
}
}
}
if (isNumber)
{
dirtyField = false
field.value = remExtraDecPlaces(field.value, eval("var_" + field.name + "DecPlaces"))
return true
}
else
{
return false
}
}

//=================================================
function loadCalc()
{
if(validateCalcForm())
{
// The following statement automatically changes and loads the new location (URL).

window.location="/carsapp/national/?srv=parser&act=display&tf=/tools_calc.tmpl&flt=n_rval"
}
}

//=================================================
function loadCalcResults()
{
if(validateCalcForm())
{
// The following statement automatically changes and loads the new location (URL).
window.location="/carsapp/national/?srv=parser&act=populate&tf=/tools_calcresults.tmpl&flt=n_rval"

}
}

//=================================================
function validateCalcForm()
{
// Calculate Loan output fields.
var_vpLoan = document.LoanCalcQuickForm.vpLoan.value 
var_dpLoan = document.LoanCalcQuickForm.dpLoan.value
var_stPerLoan = document.LoanCalcQuickForm.stPerLoan.value
var_rateLoan = document.LoanCalcQuickForm.rateLoan.value
var_termLoan = document.LoanCalcQuickForm.termLoan.value
var_mpLoan = document.LoanCalcQuickForm.mpLoan.value

// Calculate Loan output fields.
var_vpLease = document.LoanCalcQuickForm.vpLoan.value 
var_dpLease = document.LoanCalcQuickForm.dpLoan.value
var_stPerLease = document.LoanCalcQuickForm.stPerLoan.value
var_rateLease = eval(document.LoanCalcQuickForm.rateLoan.value / 2400)
var_termLease = document.LoanCalcQuickForm.termLoan.value
var_rateLease = remExtraDecPlaces(var_rateLease.toString(), 6)
// Calculate new fields for output.
var tempstDolLoan = new Number(eval(var_vpLoan * var_stPerLoan/100))
var_stDolLoan = tempstDolLoan.toString()

tempafLoan = new Number(eval(parseFloat(var_stDolLoan) + parseFloat(var_vpLoan) - parseFloat(var_dpLoan)))

var tempRate = new Number(eval(var_rateLoan / 1200))

var tempMpDenom = new Number(1 - Math.pow(eval(1 + tempRate), eval(-1 * var_termLoan)))

tempmpLoan = new Number(eval(tempafLoan * tempRate / tempMpDenom))
temptsLoan = new Number(eval((tempmpLoan * parseFloat(var_termLoan)) + parseFloat(var_dpLoan)))

var_stDolLoan = remExtraDecPlaces(var_stDolLoan, 2)
var_afLoan = remExtraDecPlaces(tempafLoan.toString(), 2)
var_mpLoan = remExtraDecPlaces(tempmpLoan.toString(), 2)
var_tsLoan = remExtraDecPlaces(temptsLoan.toString(), 2)
var_cctoLoan = var_tsLoan

return true
}

//======================================================== 
function remExtraDecPlaces(numStr, numDecPlaces)
{
// Removes extra decimal places greater than 2 decimal places.

var decIndex = numStr.indexOf('.')
var numLength = numStr.length
var decPlaces = 0

if (decIndex != -1)
{
decPlaces = numLength - decIndex
if (numDecPlaces == 0)
decPlaces = 0
if (decPlaces == 1)
decPlaces = 0
if (decPlaces > 3)
decPlaces = 3         
if (numDecPlaces == 6)
decPlaces = 7     
var newNumStr = numStr.substring(0, (decIndex + decPlaces))
//     alert('the newNumStr = ' + newNumStr)
return newNumStr
}
//  alert('the newNumStr = numStr')

return numStr
}

//===========================================
function Submit() {

with (document.LoanCalcQuickForm) {
var_window.location = "/carsapp/national/?srv=parser&act=display&tf=/tools_calcresults.tmpl&flt=n_rval"}

}

function showChart(){
with (document.LoanCalcQuickForm){
if ((rateLoan.value=="")||(rateLoan.value<=2.5)) {
rateLoan.value=var_rateLoanDefault;
recalculate(rateLoan);
		}
var chartURL="/includes/calc/calc_chart.jsp?vp="+vpLoan.value+"&dp="+dpLoan.value+"&st="+stPerLoan.value+"&ir="+rateLoan.value+"&lterm="+termLoan.value+"&mp="+mpLoan.value;
var	chartWin=window.open(chartURL,"calculatorChart","width=510,height=530,left=10,top=50,resizable");
chartWin.focus();
	}
}

function showCalculator(){
calcWin=window.open("/carsapp/national/?szc=60004&srv=parser&act=display&tf=/features/incentives/calculator_popup.tmpl","calc","width=440,height=500,top=150,left=150");
calcWin.focus();
}

