﻿// part of the page auto refresh timing
function startTimer(refreshCount)
{ 
    setInterval(onTick, refreshCount); 
}  


// part of the page auto refresh timing
function onTick()
{ 
    document.location.reload();
}



// part of the page auto refresh timing
function hideModalDisplay(selectedNode)
{
    document.getElementById(selectedNode).style.display = 'none';
}




// part of the page auto refresh timing
function showModalDisplay(selectedNode)
{
    document.getElementById(selectedNode).style.display = 'block';
}



// used to open small email customer windows
function openScript(url, width, height) {
    var Win = window.open(url, 'openScript', 'width=' + width + ',height=' + height + ',resizable=yes,scrollbars=yes,menubar=no,status=yes');
}



// used to reposition the quik desk tool, found in bottom left of a desking page
function reposition() {
    var el = document.getElementById('bottomLeft');
    var ScrollTop = document.body.scrollTop;
    if (ScrollTop == 0) {
        if (window.pageYOffset)
            ScrollTop = window.pageYOffset;
        else
            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    if (ScrollTop < 200)
        el.style.bottom = 25 - ScrollTop + "px";
    else
        el.style.bottom = "0px";
}


// used in the "DMSmaster"
function clearText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    target.style.color = "#000000";
    target.value = '';
    return;
}


// used in the "DMSmaster"
function validateSearch(e) {
    if (e.value == null || e.value == "" || e.value == "Search" || e.value == "NOTCHANGED") { 
        return false;
    }
    else {
        return true;
    }
}


// the following javascript is used in compiled server controls


// used in the "Application_FullSize"
function checkTimeValues(years_ClientID, months_clientID, additionalSection_ClientID){ 
    var tempYears = parseInt(document.getElementById(years_ClientID).value); 
    var tempMonths = parseInt(document.getElementById(months_clientID).value);
    if (!tempYears) {
        tempYears = 0;
    } 
    if (!tempMonths) {
        tempMonths = 0; 
    }
    while (tempMonths > 11) {
        tempYears = tempYears + 1; tempMonths = tempMonths - 12; 
    } 
    document.getElementById(years_ClientID).value = tempYears; 
    document.getElementById(months_clientID).value = tempMonths;
    if (tempYears > 1) {
        document.getElementById(additionalSection_ClientID).style.display = 'none'; 
    }
    else {
        document.getElementById(additionalSection_ClientID).style.display = 'block'; 
    }
}


// used in the "DealStructureSimplified"
function togalTradeVehicleLine(selectedNode) {
    if (document.getElementById(selectedNode).style.display == 'block') {
        document.getElementById(selectedNode).style.display = 'none';
    }
    else {
        document.getElementById(selectedNode).style.display = 'block';
    }
}


// used in the "CustomTextBox_currancy"
function validateCurrency(currentNode){ 
    var intValidationString = /^\d+$/; 
    var TargetValue = currentNode.value.replace('.',''); 
    TargetValue = TargetValue.replace(',',''); 
    TargetValue = TargetValue.replace('$',''); 
    var isValidInt = intValidationString.test(TargetValue);
    if (isValidInt == false) {
        currentNode.value = ''; 
    }
}


// used in the "CustomTextBox_double"
function validateDouble(currentNode){ 
    var intValidationString = /^\d+$/; 
    var isValidInt = intValidationString.test(currentNode.value.replace('.','').replace('-',''));
    if (isValidInt == false) {
        currentNode.value = '';  
    }
}


// used in the "CustomTextBox_email"
function validateEmail(currentNode){
    if (currentNode.value.length < 6) {
        currentNode.value = ''; return;
    }
    if (currentNode.value.indexOf('@', 2) == -1) {
        currentNode.value = ''; return;
    }
    if (currentNode.value.indexOf('.', 4) == -1) {
        currentNode.value = ''; return;
    }
    if (currentNode.value.lastIndexOf('.') == (currentNode.value.length - 1)) {
        currentNode.value = ''; return;
    } 
}


// used in the "CustomTextBox_email"
function compareTwoBoxes(currentNode, ClientID) {
    if (currentNode.value != document.getElementById(ClientID).value) {
        document.getElementById(ClientID).value = ''; currentNode.value = ''; return;
    }
}


// used in the "CustomTextBox_int"
function validateInt(currentNode)
{ 
    try{
        var intValidationString = /^\d+$/; 
        var isValidInt = intValidationString.test(currentNode.value.replace('-',''));
        if (isValidInt == false) {
            currentNode.value = '';  
        }
    } catch (err) { }
}


// used in the "CustomTextBox_ZipCode"
function validateZipCode(currentNode){ 
    var intValidationString = /^\d+$/;
    if (currentNode.value.length > 5) {
        currentNode.value = currentNode.value.substring(0, 5); 
    } 
    var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; 
    }
}


// used in the "DateBoxes"
function curserNextBoxYear(currentNode){
    var intValidationString = /^\d+$/; 
    var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    } 
    var fieldValue = parseInt(currentNode.value);
    if (fieldValue > 2030) {
        currentNode.value = ''; 
    }
    if (fieldValue < 0) {
        currentNode.value = ''; 
    }
    if (fieldValue == 6 || fieldValue == 7 || fieldValue == 8 || fieldValue == 9) {
        currentNode.value = 2000 + fieldValue; return; 
    } 
    if(fieldValue > 1 && fieldValue < 50 && fieldValue != 19 && fieldValue != 20 && currentNode.value.length == 2 ) {
        currentNode.value = 2000 + fieldValue; return; 
    }
    if (fieldValue >= 50 && fieldValue <= 99 && currentNode.value.length == 2) {
        currentNode.value = 1900 + fieldValue; return; 
    }  
}


// used in the "DateBoxes"
function curserNextBoxDay(currentNode){
    var intValidationString = /^\d+$/;  
    var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    }  
    var fieldValue = parseInt(currentNode.value);
    if (fieldValue > 31) {
        currentNode.value = ''; return; 
    }
    if (fieldValue < 0) {
        currentNode.value = ''; currentNode.focus(); 
    }  
    if( fieldValue == 4 || fieldValue == 5 || fieldValue == 6 || fieldValue == 7 || fieldValue == 8 || fieldValue == 9 ) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    }
    if (currentNode.value.length > 1) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    } 
}


// used in the "DateBoxes"
function curserNextBoxMonth(currentNode){
    var intValidationString = /^\d+$/; 
    var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    } 
    var fieldValue = parseInt(currentNode.value);
    if (fieldValue > 12) {
        currentNode.value = ''; return; 
    }
    if (fieldValue < 0) {
        currentNode.value = ''; return; 
    } 
    if( fieldValue == 2 || fieldValue == 3 || fieldValue == 4 || fieldValue == 5 || fieldValue == 6 || fieldValue == 7 || fieldValue == 8 || fieldValue == 9 ) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    }
    if (currentNode.value.length > 1) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    } 
}


// used in the "DateBoxes"
function curserNextBoxHour(currentNode) {
    var intValidationString = /^\d+$/; 
    var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return;
    }
    var fieldValue = parseInt(currentNode.value);
    if (fieldValue > 24) {
        currentNode.value = ''; return;
    }
    if (fieldValue < 0) {
        currentNode.value = ''; return;
    }
    if (fieldValue == 3 || fieldValue == 4 || fieldValue == 5 || fieldValue == 6 || fieldValue == 7 || fieldValue == 8 || fieldValue == 9) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus();
    }
    if (currentNode.value.length > 1) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus();
    }
}


// used in the "DateBoxes"
function curserNextBoxMin(currentNode) {
    var intValidationString = /^\d+$/; 
    var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return;
    }
    var fieldValue = parseInt(currentNode.value);
    if (fieldValue > 60) {
        currentNode.value = '';
    }
    if (fieldValue < 0) {
        currentNode.value = '';
    }
}
          
                        
// used in the "DateBoxes"
function expandColapsCalander(ClientID_calcBox) {
    if (document.getElementById(ClientID_calcBox).style.display == 'none') {
        document.getElementById(ClientID_calcBox).style.display = 'block'; return;
    }
    document.getElementById(ClientID_calcBox).style.display = 'none'; return;
}


// used in the "Desk_DealStructure"
function changeVisableBox(selectedBox, box1_ClientID, box2_ClientID, box3_ClientID, box4_ClientID, box5_ClientID, box6_ClientID, img1_ClientID, img2_ClientID, img3_ClientID, img4_ClientID, img5_ClientID, img6_ClientID) {
    if (selectedBox == 1) {
        document.getElementById(box1_ClientID).style.display = 'block';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none none none';
        document.getElementById(box2_ClientID).style.display = 'none';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box3_ClientID).style.display = 'none';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box4_ClientID).style.display = 'none';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box5_ClientID).style.display = 'none';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box6_ClientID).style.display = 'none';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none solid none';
    }
    else if (selectedBox == 2) {
        document.getElementById(box1_ClientID).style.display = 'none';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box2_ClientID).style.display = 'block';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none none none';
        document.getElementById(box3_ClientID).style.display = 'none';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box4_ClientID).style.display = 'none';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box5_ClientID).style.display = 'none';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box6_ClientID).style.display = 'none';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none solid none';
    }
    else if (selectedBox == 3) {
        document.getElementById(box1_ClientID).style.display = 'none';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box2_ClientID).style.display = 'none';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box3_ClientID).style.display = 'block';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none none none';
        document.getElementById(box4_ClientID).style.display = 'none';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box5_ClientID).style.display = 'none';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box6_ClientID).style.display = 'none';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none solid none';
    }
    else if (selectedBox == 4) {
        document.getElementById(box1_ClientID).style.display = 'none';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box2_ClientID).style.display = 'none';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box3_ClientID).style.display = 'none';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box4_ClientID).style.display = 'block';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none none none';
        document.getElementById(box5_ClientID).style.display = 'none';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box6_ClientID).style.display = 'none';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none solid none';
    }
    else if (selectedBox == 5) {
        document.getElementById(box1_ClientID).style.display = 'none';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box2_ClientID).style.display = 'none';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box3_ClientID).style.display = 'none';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box4_ClientID).style.display = 'none';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box5_ClientID).style.display = 'block';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none none none';
        document.getElementById(box6_ClientID).style.display = 'none';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none solid none';
    }
    else if (selectedBox == 6) {
        document.getElementById(box1_ClientID).style.display = 'none';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box2_ClientID).style.display = 'none';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box3_ClientID).style.display = 'none';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box4_ClientID).style.display = 'none';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box5_ClientID).style.display = 'none';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box6_ClientID).style.display = 'block';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none none none';
    }
    else {
        document.getElementById(box1_ClientID).style.display = 'none';
        document.getElementById(img1_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box2_ClientID).style.display = 'none';
        document.getElementById(img2_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box3_ClientID).style.display = 'none';
        document.getElementById(img3_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box4_ClientID).style.display = 'none';
        document.getElementById(img4_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box5_ClientID).style.display = 'none';
        document.getElementById(img5_ClientID).style.borderStyle = 'none none solid none';
        document.getElementById(box6_ClientID).style.display = 'none';
        document.getElementById(img6_ClientID).style.borderStyle = 'none none solid none';
    }
}


// used in the "ExpandableNodeAndLabelBar"
function togleButtonSwitchText(btn, offLabel, onLabel) {
    if (btn.value != offLabel)
        btn.value = offLabel;
    else btn.value = onLabel;
}


// used in the "ExpandableNodeAndLabelBar"
function togleDivBlock(divBlock) {
    if (document.getElementById(divBlock).style.display != "none") {
        document.getElementById(divBlock).style.display = "none";
    } else {
        document.getElementById(divBlock).style.display = "block";
    }
}


// used in the "JavaMonthlyIncomeCalculator"
function changeIncomeCalculationType(currentNode, ClientID_target, ClientID_hourly, ClientID_salary, ClientID_other, ClientID_YTD) {
    document.getElementById(ClientID_hourly).style.display = 'none';
    document.getElementById(ClientID_salary).style.display = 'none';
    document.getElementById(ClientID_other).style.display = 'none';
    document.getElementById(ClientID_YTD).style.display = 'none';
    if (currentNode.checked) {
        document.getElementById(ClientID_target).style.display = 'block';
    }
}


// used in the "JavaMonthlyIncomeCalculator"
function togalCalcBox(ClientID_calcBox) {
    if (document.getElementById(ClientID_calcBox).style.display == 'none') {
        document.getElementById(ClientID_calcBox).style.display = 'block'; return;
    }
    document.getElementById(ClientID_calcBox).style.display = 'none'; return;
}


// used in the "JavaMonthlyIncomeCalculator"
function caclHourly(ClientID_hourlyRate, ClientID_HoursPerWeek, ClientID_answerBox, ClientID_calcBox) {
    var MonthlyPay = (document.getElementById(ClientID_HoursPerWeek).value * document.getElementById(ClientID_hourlyRate).value * 52) / 12;
    document.getElementById(ClientID_answerBox).value = '$' + Math.round(MonthlyPay * Math.pow(10, 2)) / Math.pow(10, 2);
    document.getElementById(ClientID_calcBox).style.display = 'none';
}


// used in the "JavaMonthlyIncomeCalculator"
function caclSalary(ClientID_yearlySalary, ClientID_answerBox, ClientID_calcBox) {
    var MonthlyPay = document.getElementById(ClientID_yearlySalary).value / 12;
    document.getElementById(ClientID_answerBox).value = '$' + Math.round(MonthlyPay * Math.pow(10, 2)) / Math.pow(10, 2);
    document.getElementById(ClientID_calcBox).style.display = 'none';
}


// used in the "JavaMonthlyIncomeCalculator"
function caclOther(ClientID_monthlyPay, ClientID_answerBox, ClientID_calcBox) {
    var MonthlyPay = document.getElementById(ClientID_monthlyPay).value;
    document.getElementById(ClientID_answerBox).value = '$' + Math.round(MonthlyPay * Math.pow(10, 2)) / Math.pow(10, 2);
    document.getElementById(ClientID_calcBox).style.display = 'none';
}


// used in the "JavaMonthlyIncomeCalculator"
function caclYTD(ClientID_YTDmonth, ClientID_YTDday, ClientID_YTDamount, ClientID_answerBox, ClientID_calcBox) {
    var totalDays = parseInt(document.getElementById(ClientID_YTDday).value) + (parseInt(document.getElementById(ClientID_YTDmonth).value) * 30.5);
    var MonthlyPay = (parseFloat(document.getElementById(ClientID_YTDamount).value) / totalDays) * 30.5;
    document.getElementById(ClientID_answerBox).value = '$' + Math.round(MonthlyPay * Math.pow(10, 2)) / Math.pow(10, 2);
    document.getElementById(ClientID_calcBox).style.display = 'none';
}


// used in the "Phone_Boxes"
function curserNextPreFixBox(currentNode) {
    var intValidationString = /^\d+$/; var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return;
    }
    if (currentNode.value.length == 3) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus();
    }
}


// used in the "Phone_Boxes"
function curserNextAreaCodeBox(currentNode) {
    var intValidationString = /^\d+$/; var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    }
    if (currentNode.value.length == 3) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    }
}


// used in the "Phone_Boxes"
function curserNextSuffixBox(currentNode) {
    var intValidationString = /^\d+$/; var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    }
}


// used in the "SSN_Boxes"
function curserNextBoxPart1(currentNode) {
    var intValidationString = /^\d+$/; var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    }
    if (currentNode.value.length == 3) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    }
}


// used in the "SSN_Boxes"
function curserNextBoxPart2(currentNode) {
    var intValidationString = /^\d+$/; var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    }
    if (currentNode.value.length == 2) {
        currentNode.parentNode.nextSibling.nextSibling.firstChild.focus(); 
    }
}


// used in the "SSN_Boxes"
function curserNextBoxPart3(currentNode) {
    var intValidationString = /^\d+$/; var isValidInt = intValidationString.test(currentNode.value);
    if (isValidInt == false) {
        currentNode.value = ''; return; 
    }
}


// used in "DealStructureSimplified"
function calculateDealStructure(termNode, sellingPriceNode, salesTaxNode, tAndLNode,
    downPaymentNode, frontEndFeesNode, rebateNode, netTradeNode, allowanceNode, payoffNode, unpaidBalanceNode,
    accHealthNode, credLifeNode, gapNode, warrantyNode, backEndFeesNode, amtFinancedNode,
    requestedAprNode, monthlyPaymentNode, nadaRetailNode, nadaWholesaleNode, kelleyRetailNode, KelleyWholesaleNode, 
    NadaRetailFEADVNode, NadaRetailFECAPNode, NadaRetailLTVNode, NadaWholesaleFEADVNode, NadaWholesaleFECAPNode,
    NadaWholesaleLTVNode, KelleyRetailFEADVNode, KelleyRetailFECAPNode, KelleyRetailLTVNode, KelleyWholesaleFEADVNode,
    KelleyWholesaleFECAPNode, KelleyWholesaleLTVNode ) {
    var _term = parseFloat(document.getElementById(termNode).value);
    var _sellingPrice = parseFloat(document.getElementById(sellingPriceNode).value);
    var _salesTax = parseFloat(document.getElementById(salesTaxNode).value);
    var _tAndL = parseFloat(document.getElementById(tAndLNode).value);
    var _downPayment = parseFloat(document.getElementById(downPaymentNode).value);
    var _frontEndFees = parseFloat(document.getElementById(frontEndFeesNode).value);
    var _rebate = parseFloat(document.getElementById(rebateNode).value);
    var _allowance = parseFloat(document.getElementById(allowanceNode).value);
    var _payoff = parseFloat(document.getElementById(payoffNode).value);
    var _accHealth = parseFloat(document.getElementById(accHealthNode).value);
    var _credLife = parseFloat(document.getElementById(credLifeNode).value);
    var _gap = parseFloat(document.getElementById(gapNode).value);
    var _warranty = parseFloat(document.getElementById(warrantyNode).value);
    var _backEndFees = parseFloat(document.getElementById(backEndFeesNode).value);
    var _requestedApr = parseFloat(document.getElementById(requestedAprNode).value);
    var _nadaRetail = 0.0;
    var _nadaWholeSale = 0.0;
    var _kelleyRetail = 0.0;
    var _kelleyWholesale = 0.0;
    var useBookValues = false;
    try{
        _nadaRetail = parseFloat(document.getElementById(nadaRetailNode).value);
        _nadaWholeSale = parseFloat(document.getElementById(nadaWholesaleNode).value);
        _kelleyRetail = parseFloat(document.getElementById(kelleyRetailNode).value);
        _kelleyWholesale = parseFloat(document.getElementById(KelleyWholesaleNode).value);
        useBookValues = true;
    } catch (err) { useBookValues = false; }
            
    var _unpaidBalance = 0.0;
    var _amtFinanced = 0.0;
    var _netTrade = 0.0;
    var _monthlyPayment = 0.0;
    
    _netTrade = calculateNetTrade(_allowance, _payoff);
    _unpaidBalance = calculateUnpaidBallance(_sellingPrice, _salesTax, _tAndL, _downPayment, _frontEndFees, _rebate, _netTrade);
    _amtFinanced = calculateAmountFinanced(_unpaidBalance, _accHealth, _credLife, _gap, _warranty, _backEndFees);

    document.getElementById(netTradeNode).value = _netTrade;
    document.getElementById(netTradeNode).readOnly = "readonly";
    
    document.getElementById(unpaidBalanceNode).value = _unpaidBalance;
    document.getElementById(amtFinancedNode).value = _amtFinanced;

    _monthlyPayment = calculateMonthlyPayment(_requestedApr, _amtFinanced, _term);
    document.getElementById(monthlyPaymentNode).value = _monthlyPayment;

    if (useBookValues == true) {
        document.getElementById(NadaRetailFEADVNode).innerHTML = calculateFrontEndAdvance(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_nadaRetail);
        document.getElementById(NadaRetailFECAPNode).innerHTML = calculateFrontEndAdvanceCap1(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_tAndL,_nadaRetail);
        document.getElementById(NadaRetailLTVNode).innerHTML = calculateLoanToValue(_amtFinanced, _nadaRetail);
        document.getElementById(NadaWholesaleFEADVNode).innerHTML = calculateFrontEndAdvance(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_nadaWholeSale);
        document.getElementById(NadaWholesaleFECAPNode).innerHTML = calculateFrontEndAdvanceCap1(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_tAndL,_nadaWholeSale);
        document.getElementById(NadaWholesaleLTVNode).innerHTML = calculateLoanToValue(_amtFinanced, _nadaWholeSale);
        document.getElementById(KelleyRetailFEADVNode).innerHTML = calculateFrontEndAdvance(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_kelleyRetail);
        document.getElementById(KelleyRetailFECAPNode).innerHTML = calculateFrontEndAdvanceCap1(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_tAndL,_kelleyRetail);
        document.getElementById(KelleyRetailLTVNode).innerHTML = calculateLoanToValue(_amtFinanced, _kelleyRetail);
        document.getElementById(KelleyWholesaleFEADVNode).innerHTML = calculateFrontEndAdvance(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_kelleyWholesale);
        document.getElementById(KelleyWholesaleFECAPNode).innerHTML = calculateFrontEndAdvanceCap1(_sellingPrice,_downPayment + _netTrade,_frontEndFees,_tAndL,_kelleyWholesale);
        document.getElementById(KelleyWholesaleLTVNode).innerHTML = calculateLoanToValue(_amtFinanced, _kelleyWholesale);
    }
}


// used in "DealStructureSimplified" 
function calculateLoanToValue(amountFinanced, vehicleValue) {
    if (amountFinanced == null ||
        isNaN(amountFinanced) == true) {
        amountFinanced = 0;
    }
    if (vehicleValue == null ||
        isNaN(vehicleValue) == true) {
        vehicleValue = 0;
    }
    var returnValue = 0.0;
    if (vehicleValue > 0) {
        returnValue = (amountFinanced / vehicleValue) * 100;
    }
    return Math.round(returnValue * 100) / 100;
}


// used in "DealStructureSimplified" 
function calculateFrontEndAdvance(salePrice, downPayment, loanProccesingFee, vehicleValue) {
    if (salePrice == null ||
        isNaN(salePrice) == true) {
        salePrice = 0;
    }
    if (downPayment == null ||
        isNaN(downPayment) == true) {
        downPayment = 0;
    }
    if (loanProccesingFee == null ||
        isNaN(loanProccesingFee) == true) {
        loanProccesingFee = 0;
    }
    if (vehicleValue == null ||
        isNaN(vehicleValue) == true) {
        vehicleValue = 0;
    }
    var returnValue = 0.0;
    if (vehicleValue > 0) {
        returnValue = ((salePrice + loanProccesingFee - downPayment) / vehicleValue) * 100 ;
    }
    return Math.round(returnValue * 100) / 100;
}



// used in "DealStructureSimplified"
function calculateFrontEndAdvanceCap1(salePrice, downPayment, loanProccesingFee, docFee, vehicleValue) {
    return calculateFrontEndAdvance(salePrice, downPayment, loanProccesingFee + docFee, vehicleValue);
}



// used in "DealStructureSimplified" // net trade
function calculateNetTrade(allowance, payoff) {
    if (allowance == null ||
        isNaN(allowance) == true) {
        allowance = 0;
    }
    if (payoff == null ||
        isNaN(payoff) == true) {
        payoff = 0;
    }
    return (allowance - payoff) * -1;
}


// used in "DealStructureSimplified" // unpaid balance
function calculateUnpaidBallance(sellingPrice, salesTax, tAndL, downPayment, frontEndFees, rebate, netTrade) {
    if (sellingPrice == null ||
        isNaN(sellingPrice) == true) {
        sellingPrice = 0;
    }
    if (salesTax == null ||
        isNaN(salesTax) == true) {
        salesTax = 0;
    }
    if (tAndL == null ||
        isNaN(tAndL) == true) {
        tAndL = 0;
    }
    if (downPayment == null ||
        isNaN(downPayment) == true) {
        downPayment = 0;
    }
    if (frontEndFees == null ||
        isNaN(frontEndFees) == true) {
        frontEndFees = 0;
    }
    if (rebate == null ||
        isNaN(rebate) == true) {
        rebate = 0;
    }
    if (netTrade == null ||
        isNaN(netTrade) == true) {
        netTrade = 0;
    }
    return sellingPrice + salesTax + tAndL + frontEndFees - downPayment - rebate + netTrade;
}


// used in "DealStructureSimplified" // amount financed
function calculateAmountFinanced(unpaidBalance, accHealth, credLife, gap, warranty, backEndFees) {
    if (unpaidBalance == null ||
        isNaN(unpaidBalance) == true) {
        unpaidBalance = 0;
    }
    if (accHealth == null ||
        isNaN(accHealth) == true) {
        accHealth = 0;
    }
    if (credLife == null ||
        isNaN(credLife) == true) {
        credLife = 0;
    }
    if (gap == null ||
        isNaN(gap) == true) {
        gap = 0;
    }
    if (warranty == null ||
        isNaN(warranty) == true) {
        warranty = 0;
    }
    if (backEndFees == null ||
        isNaN(backEndFees) == true) {
        backEndFees = 0;
    }
    return unpaidBalance + accHealth + credLife + gap + warranty + backEndFees;
}


// used in "DealStructureSimplified" // amount monthly payment 
function calculateMonthlyPayment(interest, loanAmount, loanTerm) {
    var returnValue = 0.0;
    // prepare input values
    interest = interest / 100;
    var _loanTerm = loanTerm * -1;
    loanAmount = loanAmount + (((loanAmount * interest) / 12) * .493); // this line adjusts for a 45 day grace period
    loanAmount = Math.round(loanAmount * 100) / 100;
    returnValue = (loanAmount * (interest / 12)) / (1 - Math.pow((1 + (interest / 12)), _loanTerm));
    if (isNaN(returnValue) == true) {
        returnValue = 0;
    }
    return Math.round(returnValue*100)/100;
}