
function PopUpPrint () {
        var input_string = "";
        if (CalQualAmt()) {
                input_string = "loanqualifier_calc_displaycertificate_frame.asp";
                input_string = input_string + "?IncOne=" +  document.getElementById('qualify').IncOne.value;
                input_string = input_string + "&IncTwo=" +  document.getElementById('qualify').IncTwo.value;
                input_string = input_string + "&OthInc=" +  document.getElementById('qualify').OthInc.value;
                input_string = input_string + "&RentInc=" +  document.getElementById('qualify').RentInc.value;
                input_string = input_string + "&income1=" +  document.getElementById('qualify').income1.options[ document.getElementById('qualify').income1.selectedIndex].text;
                input_string = input_string + "&income2=" +  document.getElementById('qualify').income2.options[ document.getElementById('qualify').income2.selectedIndex].text;
                input_string = input_string + "&incomeother=" +  document.getElementById('qualify').incomeother.options[ document.getElementById('qualify').incomeother.selectedIndex].text;
                input_string = input_string + "&incomerental=" +  document.getElementById('qualify').incomerental.options[ document.getElementById('qualify').incomerental.selectedIndex].text;
                input_string = input_string + "&Applicants=" + returnRadioValue( document.getElementById('qualify').Applicants);
                input_string = input_string + "&HomeLoan=" +  document.getElementById('qualify').HomeLoan.value;
                input_string = input_string + "&OthLoan=" +  document.getElementById('qualify').OthLoan.value;
                input_string = input_string + "&CardLim=" +  document.getElementById('qualify').CardLim.value;
                input_string = input_string + "&NumbDep=" +  document.getElementById('qualify').NumbDep.value;
                input_string = input_string + "&IntRate=" +  document.getElementById('qualify').IntRate.value;
                input_string = input_string + "&TermYear=" +  document.getElementById('qualify').TermYear.value;
                input_string = input_string + "&TermMonth=" +  document.getElementById('qualify').TermMonth.value;
                input_string = input_string + "&LoanAmt=" +  document.getElementById('qualify').LoanAmt.value;
                input_string = input_string + "&loanType=" + returnRadioValue( document.getElementById('qualify').loanType);

                window.open(input_string,'certificate','width=640,height=600,scrollbars=yes,resizable=yes,screenX=0,screenY=0,left=0,top=0');
        }
}


function returnRadioValue(sFieldName) {
        var cFields = sFieldName;

        for (x = 0; x < cFields.length; x++) {
                if (cFields[x].checked) {
                        return cFields[x].value;
                        break;
                }
        }

        return null;
}


function checkEnter(pfield, pname) {
    var field = pfield.value
    var msg
    var status = true

    if (field.length == 0) {
        msg = "The '" + pname + "' field must be entered."
        alert(msg)
        status = false
    }

    return status
}

function checkNumberofApplicants(pfield, pname) {
    var field = returnRadioValue(pfield)
    var msg
    var status = true

    if ((field == 2) && ( document.getElementById('qualify').IncTwo.value.length==0)) {
        msg = "You have entered Joint for the No. of Applicants. The Income 2 field must be entered."
        alert(msg)
        status = false
    }

    if ((field == 1) && (ParseDollar( document.getElementById('qualify').IncTwo.value)>0)) {
        msg = "You have entered Single for the No. of Applicants. The Income 2 field cannot be entered."
        alert(msg)
        status = false
    }

    return status
}


function checkLoanType(pfield) {
    var field = returnRadioValue(pfield)
    var msg
    var status = true

    if (field == "Home") {
                 document.getElementById('qualify').IntRate.value = "8.16"
                ACF=10 // Account Keeping Fee
                fixedInterestRate = false    //sets the intrest rate text box to a free form box
        status = false
    }

    if (field == "Personal") {
         document.getElementById('qualify').IntRate.value = "12.95"
                ACF=0 // Account Keeping Fee
                fixedInterestRate = false  //sets the intrest rate text box to a free form box
        status = false
    }

    return status
}


function checkIfFixInterestRateApplies() {
        if (fixedInterestRate == true) {  // remove focus
                 document.getElementById('qualify').TermYear.focus();
        }
}


function checkNumb(pnumb, pname) {
    var numb = pnumb.value
    var message
    var indx
    var status = false

    if (numb.length == 0) {
        status = true
    }

    for (var indx = 0; indx < numb.length; indx++) {  /* the field should contain at least one digit */
        if (numb.charAt(indx)>= "0" && numb.charAt(indx) <= "9") {
            status = true
        }
    }

    for (var indx = 0; indx < numb.length; indx++) {
        if (!((numb.charAt(indx)>= "0" && numb.charAt(indx) <= "9") ||
             numb.charAt(indx) == " " ||
             numb.charAt(indx) == "." ||
             numb.charAt(indx) == ",")) {
            status = false
        }
    }

    if (!status) {
        msg = "The '" + pname + "' field must be a number."
        alert(msg)
    }
    return status
}

function parseNumb(pnumbstr) {
    var numb = pnumbstr.value
    var indx

    if (numb.length> 0) {
        indx = numb.indexOf(",")
    } else {
        indx = -1
    }
    while (indx != -1) {
        numb = numb.substring(0,indx) + numb.substring(indx*1 + 1,numb.length)
        indx = numb.indexOf(",")
    }

    if (numb.length> 0) {
        indx = numb.indexOf(" ")
    } else {
        indx = -1
    }
    while (indx != -1) {
        numb = numb.substring(0,indx) + numb.substring(indx*1 + 1,numb.length)
        indx = numb.indexOf(" ")
    }
    if (numb == "") {
        numb = 0
    }
    return numb
}

function parseMonth(pyear, pmonth) {
    var year  = parseNumb(pyear)
    var month = parseNumb(pmonth)
    var period
    var indx

    period = Math.ceil(month*1 + year*12)

    return period
}

function ParseDollar(pNumber) {
    var money = ""
    var numb = Math.round(pNumber)
    var indx1
    var indx2 = 0

    numb = "" + numb
    indx1 = numb.length - 1

    while (indx1> -1) {
        indx2 += 1
        if (indx2 == 4) {
            money = "," + money
            indx2 = 1
        }
        money = numb.substring(indx1,indx1*1 + 1) + money
        indx1 -= 1
    }

    money = "$ " + money

    return money
}

function checkIncOne(pInc) {
    var Inc = pInc
    var status = false

    if (checkEnter(Inc,"First Income")) {
        status = checkNumb(Inc,"First Income")
    }

    return status
}


function checkIntRate(pIntRate) {
    var IntRate = pIntRate
    var status  = true

    if (checkEnter(IntRate,"Interest Rate")) {
        if (checkNumb(IntRate,"Interest Rate")) {
            if (IntRate.value == 0) {
                alert("The Interest Rate can not be zero.")
                status = false
            }
        } else {
            status = false
        }
    } else {
        status = false
    }

    return status
}

function checkTermY(pYear) {
    var TermYear = pYear
    var status   = true

    if (checkEnter(TermYear,"Year Period")) {
        if (checkNumb(TermYear,"Year Period")) {
            if (TermYear.value> 50) {
                alert("Máximo 50 años.")
                status = false
            }
        } else {
            status = false
        }
    } else {
        status = false
    }

    return status
}

function checkTermM(pYear, pMonth) {
    var TermYear  = pYear
    var TermMonth = pMonth
    var status    = true
    var ValMonth  = pMonth.value

    if (ValMonth.length != 0) {
        if (checkNumb(TermMonth,"Month Period")) {
           if (TermMonth.value> 0 && TermYear.value> 49) {
                alert("Máximo 50 años.")
                status = false
            }
            if (TermMonth.value> 11) {
                alert("Please use the Year field to enter a period longer than 11 months.")
                status = false
            }
        } else {
            status = false
        }
    }

    return status
}

var ACF = 10 //Account Keeping Fee
var fixedInterestRate = true //default interest rate type

function CalQualAmt() {
    var IncOne
    var IncTwo
    var OthInc
    var RentInc
    var TotInc

    var HomeLoan
    var OthLoan
    var CardLim
    var NumbDep
        var AmtDep
    var OthExp
    var TotExp

    var IntRate
    var MonthTerm
    var RepayAmt
    var QualAmt

    if (checkIncOne( document.getElementById('qualify').IncOne) &&
          checkNumb( document.getElementById('qualify').IncTwo,"Second Income") &&
          checkNumb( document.getElementById('qualify').OthInc,"Other Income") &&
          checkNumb( document.getElementById('qualify').RentInc,"Rental Income") &&
          checkNumberofApplicants( document.getElementById('qualify').Applicants, "No. of Applicants") &&
          checkNumb( document.getElementById('qualify').HomeLoan,"Home Loan") &&
          checkNumb( document.getElementById('qualify').OthLoan,"Other Loan") &&
          checkNumb( document.getElementById('qualify').CardLim,"Card Limit") &&
          checkNumb( document.getElementById('qualify').NumbDep,"Number of Dependants") &&
          checkIntRate( document.getElementById('qualify').IntRate) &&
      checkTermY( document.getElementById('qualify').TermYear) &&
      checkTermM( document.getElementById('qualify').TermYear, document.getElementById('qualify').TermMonth)) {
        IncOne  = (parseNumb( document.getElementById('qualify').IncOne)/12)* document.getElementById('qualify').income1.options[ document.getElementById('qualify').income1.selectedIndex].value;
        IncTwo =  (parseNumb( document.getElementById('qualify').IncTwo)/12)* document.getElementById('qualify').income2.options[ document.getElementById('qualify').income2.selectedIndex].value;
        OthInc =  (parseNumb( document.getElementById('qualify').OthInc)/12)* document.getElementById('qualify').incomeother.options[ document.getElementById('qualify').incomeother.selectedIndex].value;
        RentInc = (parseNumb( document.getElementById('qualify').RentInc)/12)* document.getElementById('qualify').incomerental.options[ document.getElementById('qualify').incomerental.selectedIndex].value;
        HomeLoan = parseNumb( document.getElementById('qualify').HomeLoan);
        OthLoan = parseNumb( document.getElementById('qualify').OthLoan);
        CardLim = parseNumb( document.getElementById('qualify').CardLim);
        NumbDep = parseNumb( document.getElementById('qualify').NumbDep);

        IntRate = parseNumb( document.getElementById('qualify').IntRate)/1200
        MonthTerm = parseMonth( document.getElementById('qualify').TermYear, document.getElementById('qualify').TermMonth)

                // if SINGLE app, make sure only one income box is filled in.
                if ((returnRadioValue( document.getElementById('qualify').Applicants)==1) && (IncTwo> 0)) {
                        IncTwo = 0;
                         document.getElementById('qualify').IncTwo.value = 0;
                        alert ("You have selected Single Application and entered a value for 'Income Two'. This value has now been reset to $0. If you require a Joint Income, please select it under 'Application Type'");
                }

        TotInc = IncOne + IncTwo + OthInc

                OthExp = TotInc * 0.35;

                if (OthExp < 1000 && returnRadioValue( document.getElementById('qualify').Applicants)==1) { //IncTwo == 0)
                        OthExp = 1000;
                } else if (OthExp < 1300 && returnRadioValue( document.getElementById('qualify').Applicants)==2) {
                        OthExp = 1300;
                } else if (OthExp> 2000 && returnRadioValue( document.getElementById('qualify').Applicants)==1) {
                        OthExp = 2000;
                } else if (OthExp> 2600 && returnRadioValue( document.getElementById('qualify').Applicants)==2) {
                        OthExp = 2600;
                }

                if (NumbDep> 0)
                        AmtDep = 175 + (NumbDep - 1) * 125;
                else
                        AmtDep = 0;

                TotExp = AmtDep*1 + HomeLoan*1 + OthLoan*1 + (CardLim * 0.03) + OthExp*1;

                RepayAmt = TotInc + (RentInc * 0.7) - TotExp

                // no ACF on personal loans
                LoanAmt = (RepayAmt - ACF) * (1 - Math.pow((1 + IntRate*1),-MonthTerm))/IntRate

                if (LoanAmt> 0) {
             document.getElementById('qualify').LoanAmt.value = ParseDollar(Math.round(LoanAmt))
                        return true;
        } else {
                         document.getElementById('qualify').LoanAmt.value = "$ 0"
                        return true;
                }
    } else {
                 document.getElementById('qualify').LoanAmt.value = " "
                return false;
    }
}

function Init_Page() {
         document.getElementById('qualify').IncOne.focus();
         document.getElementById('qualify').IncOne.select();
}

// Calculate loan, open new window, submit form.
function PopUpPrint () {
        CalcRepay();
        inputstring = "repayment_calc_displaycertificate_frame.asp"
        inputstring = inputstring + "?LoanAmt1=" +  document.getElementById('repay').LoanAmt1.value
        inputstring = inputstring + "&IntRate1=" +  document.getElementById('repay').IntRate1.value
        inputstring = inputstring + "&TermYear1=" +  document.getElementById('repay').TermYear1.value
        inputstring = inputstring + "&TermMonth1=" +  document.getElementById('repay').TermMonth1.value
        inputstring = inputstring + "&RepayAmt1=" +  document.getElementById('repay').RepayAmt1.value
        window.open(inputstring,'certificate','width=640,height=600,scrollbars=yes,resizable=yes,screenX=0,screenY=0,left=0,top=0')
}

function checkEnter(pfield, pname) {
        var field = pfield.value
        var msg
        var status = true

        if (field.length == 0) {
                msg = "The " + pname + " field must be entered."
                alert(msg)
                status = false
        }

        return status
}

function checkNumb(pnumb, pname) {
        var numb = pnumb.value
        var message
        var indx
        var status = false

        for (var indx = 0; indx < numb.length; indx++) { /* the field should contain at least one digit */
                if (numb.charAt(indx)>= "0" && numb.charAt(indx) <= "9") {
                        status = true
                }
        }
        for (var indx = 0; indx < numb.length; indx++) {
                if (!((numb.charAt(indx)>= "0" && numb.charAt(indx) <= "9") ||
                  numb.charAt(indx) == " " ||
                  numb.charAt(indx) == "." ||
                  numb.charAt(indx) == ",")) {
                        status = false
                }
        }
        if (!status) {
                msg = "The " + pname + " field must be a number."
                alert(msg)
        }

        return status
}

function parseNumb(pnumbstr) {
        var numb = pnumbstr.value
        var indx

        indx = numb.indexOf(",")
        while (indx != -1) {
                numb = numb.substring(0,indx) + numb.substring(indx*1 + 1,numb.length)
                indx = numb.indexOf(",")
        }

        indx = numb.indexOf(" ")
        while (indx != -1) {
                numb = numb.substring(0,indx) + numb.substring(indx*1 + 1,numb.length)
                indx = numb.indexOf(" ")
        }

        return numb
}

function parseMonth(pyear, pmonth) {
        var year  = parseNumb(pyear)
        var month = parseNumb(pmonth)
        var period
        var indx

        period = Math.ceil(month*1 + year*12)

        return period
}

function checkLoan(pLoan) {
        var LoanAmt = pLoan
        var status

        if (checkEnter(LoanAmt,"Loan Amount")) {
                status = checkNumb(LoanAmt,"Loan Amount")
        }

        return status
}

function checkRepay(pRepay) {
        var RepayAmt = pRepay
        var status   = true

        if (checkEnter(RepayAmt,"Repay Amount")) {
                if (checkNumb(RepayAmt,"Repay Amount")) {
                        if (RepayAmt.value == 0) {
                                alert("The Repay Amount can not be zero.")
                                status = false
                        }
                } else {
                        status = false
                }
        } else {
                status = false
        }

        return status
}

function checkIntRate(pIntRate) {
        var IntRate = pIntRate
        var status  = true

        if (checkEnter(IntRate,"Interest Rate")) {
                if (checkNumb(IntRate,"Interest Rate")) {
                        if (IntRate.value == 0) {
                                alert("The Interest Rate can not be zero.")
                                status = false
                        }
                } else {
                        status = false
                }
        } else {
                status = false
        }

        return status
}

function checkTermY(pYear) {
        var TermYear = pYear
        var status   = true

        if (checkEnter(TermYear,"Year Period")) {
                if (checkNumb(TermYear,"Year Period")) {
                        if (TermYear.value> 50) {
                                alert("El período no puede ser mayor de 50 años.")
                                status = false
                        }
                } else {
                        status = false
                }
        } else {
                status = false
        }

        return status
}

function checkTermM(pMonth) {
        var TermMonth = pMonth
        var status    = true

        if (checkEnter(TermMonth,"Month Period")) {
                if (checkNumb(TermMonth,"Month Period")) {
                        //if (TermMonth.value> 11) {
                                //alert("Please use the Year field to enter a period longer than 11 months.")
                                //status = false
                        //}
                } else {
                        status = false
                }
        } else {
                status = false
        }

        return status
}

function CalcRepayAmt(pLoanAmt, pIntRate, pTerm) {
        var RepayAmt

        RepayAmt = pLoanAmt * pIntRate/(1 - Math.pow((1 + pIntRate*1),-pTerm))
        RepayAmt = Math.ceil(RepayAmt)

        return RepayAmt
}

/////////////////////////////////////////////////////////
function CalcRepay() {
        var LoanAmount
        var InterestRate
        var MonthTerm

        if (checkLoan( document.getElementById('repay').LoanAmt1) &&
          checkIntRate( document.getElementById('repay').IntRate1) &&
          checkTermY( document.getElementById('repay').TermYear1) &&
          checkTermM( document.getElementById('repay').TermMonth1)) {
                LoanAmount   = parseNumb( document.getElementById('repay').LoanAmt1)
                InterestRate = parseNumb( document.getElementById('repay').IntRate1)/1200
                MonthTerm    = parseMonth( document.getElementById('repay').TermYear1, document.getElementById('repay').TermMonth1)

                 document.getElementById('repay').RepayAmt1.value = CalcRepayAmt(LoanAmount, InterestRate, MonthTerm)
        } else {
                 document.getElementById('repay').RepayAmt1.value = " "
        }
}
/////////////////////////////////////////////////////
function CalcTerm() {
        /* Calculate the Repaid Period */

        var MonthTerm    = 0
        var YearTerm     = 0
        var MaxTerm      = 50 * 12     /* 50 years */
        var LoanAmount
        var RepayAmount
        var InterestRate
        var RepayFreq
        var MinRepay

        if (checkLoan( document.getElementById('repay').LoanAmt2) &&
          checkRepay( document.getElementById('repay').RepayAmt2) &&
          checkIntRate( document.getElementById('repay').IntRate2)) {
                LoanAmount   = parseNumb( document.getElementById('repay').LoanAmt2)
                RepayAmount  = parseNumb( document.getElementById('repay').RepayAmt2)
                InterestRate = parseNumb( document.getElementById('repay').IntRate2)/1200
                MinRepay     = CalcRepayAmt(LoanAmount, InterestRate, MaxTerm)
                RepayFreq = document.getElementById('repay').RepayFreq.options[document.getElementById('repay').RepayFreq.selectedIndex].value
                RepayAmount = RepayAmount * RepayFreq/12
                if (RepayAmount < MinRepay) {
                        Msg = "La mensualidad mínima debe de ser " + MinRepay + " euros."
                        alert(Msg)
                         document.getElementById('repay').TermYear2.value  = " "
                         document.getElementById('repay').TermMonth2.value = " "
                } else {
                        MonthTerm = Math.log(RepayAmount/(RepayAmount - LoanAmount * InterestRate)) / Math.log(1 + InterestRate)
                        MonthTerm = Math.ceil(MonthTerm)
                        YearTerm = Math.floor(MonthTerm / 12)
                        MonthTerm = MonthTerm - (YearTerm * 12)

                         document.getElementById('repay').TermYear2.value  = YearTerm
                         document.getElementById('repay').TermMonth2.value = MonthTerm
                }
        } else {
                 document.getElementById('repay').TermYear2.value  = " "
                 document.getElementById('repay').TermMonth2.value = " "
        }
}
/////////////////////////////////////////////////////////
function CalcLoan() {
        var LoanAmt
        var RepayAmount
        var InterestRate
        var MonthTerm

        if (checkRepay( document.getElementById('repay').RepayAmt3) &&
          checkIntRate( document.getElementById('repay').IntRate3) &&
          checkTermY( document.getElementById('repay').TermYear3) &&
          checkTermM( document.getElementById('repay').TermMonth3)) {
                RepayAmount  = parseNumb( document.getElementById('repay').RepayAmt3)
                InterestRate = parseNumb( document.getElementById('repay').IntRate3)/1200
                MonthTerm    = parseMonth( document.getElementById('repay').TermYear3, document.getElementById('repay').TermMonth3)
                LoanAmt = RepayAmount * (1 - Math.pow((1 + InterestRate*1),-MonthTerm))/InterestRate

                 document.getElementById('repay').LoanAmt3.value = Math.floor(LoanAmt)
        } else {
                 document.getElementById('repay').LoanAmt3.value = " "
        }
}


