
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 = "Le champ '" + pname + "' doit être saisi."
        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 = "Vous avez choisi Double pour le nombre d'emprunteurs. Le revenu 2 doit être saisi."
        alert(msg)
        status = false
    }

    if ((field == 1) && (ParseDollar( document.getElementById('qualify').IncTwo.value)>0)) {
        msg = "Vous avez saisi Simple pour le nombre d'emprunteurs. le revenu 2 ne doit pas être saisi."
        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 = "Le champ '" + pname + "' doit être saisi."
        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 + " euros"

    return money
}

function checkIncOne(pInc) {
    var Inc = pInc
    var status = false

    if (checkEnter(Inc,"Revenu 1")) {
        status = checkNumb(Inc,"Revenu 1")
    }

    return status
}


function checkIntRate(pIntRate) {
    var IntRate = pIntRate
    var status  = true

    if (checkEnter(IntRate,"Taux d'intérêt")) {
        if (checkNumb(IntRate,"Taux d'intérêt")) {
            if (IntRate.value == 0) {
                alert("Le taux d'intérêt ne peut être égal à zéro.")
                status = false
            }
        } else {
            status = false
        }
    } else {
        status = false
    }

    return status
}

function checkTermY(pYear) {
    var TermYear = pYear
    var status   = true

    if (checkEnter(TermYear,"Nombre d'années du prêt")) {
        if (checkNumb(TermYear,"Nombre d'années du prêt")) {
            if (TermYear.value> 30) {
                alert("La durée du prêt ne peut pas dépasser 30 ans.")
                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,"Nombre de mois du prêt")) {
           if (TermMonth.value> 0 && TermYear.value> 29) {
                alert("La durée du prêt ne peut dépasser 30 ans.")
                status = false
            }
            if (TermMonth.value> 11) {
                alert("Veuillez saisir le champs années pour une période supérieure à 11 mois.")
                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,"Revenu 2") &&
	  checkNumb( document.getElementById('qualify').OthInc,"Autres revenus") &&
	  checkNumb( document.getElementById('qualify').RentInc,"Rentes") &&
	  checkNumberofApplicants( document.getElementById('qualify').Applicants, "Nombre d'emprunteurs") &&
	  checkNumb( document.getElementById('qualify').HomeLoan,"Crédits d'équipement") &&
	  checkNumb( document.getElementById('qualify').OthLoan,"Autres crédits") &&
	  checkNumb( document.getElementById('qualify').CardLim,"Limite carte de crédit") &&
	  checkNumb( document.getElementById('qualify').NumbDep,"Personnes à charge") &&
	  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 ("Vous avez sélectionné Simple et entré une valeur pour Revenu 2. Cette valeur doit être égale à zéro. Si vous souhaitez Double, veuillez le sélectionner dans le nombre d'emprunteurs");
		}

        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 euro"
			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 = "Le champ " + pname + " doit être saisi."
		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 = "Le champ " + pname + " doit être saisi."
		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,"Montant du crédit")) {
		status = checkNumb(LoanAmt,"Montant du crédit")
	}

	return status
}

function checkRepay(pRepay) {
	var RepayAmt = pRepay
	var status   = true

	if (checkEnter(RepayAmt,"Montant régulier de remboursement")) {
		if (checkNumb(RepayAmt,"Montant régulier de remboursement")) {
			if (RepayAmt.value == 0) {
				alert("Le montant régulier de remboursement ne peut être égal à zéro.")
				status = false
			}
		} else {
			status = false
		}
	} else {
		status = false
	}

	return status
}

function checkIntRate(pIntRate) {
	var IntRate = pIntRate
	var status  = true

	if (checkEnter(IntRate,"Taux d'intérêt")) {
		if (checkNumb(IntRate,"Taux d'intérêt")) {
			if (IntRate.value == 0) {
				alert("Le taux d'intérêt ne peut être égal à zéro.")
				status = false
			}
		} else {
			status = false
		}
	} else {
		status = false
	}

	return status
}

function checkTermY(pYear) {
	var TermYear = pYear
	var status   = true

	if (checkEnter(TermYear,"Nombre d'années")) {
		if (checkNumb(TermYear,"Nombre d'années")) {
			if (TermYear.value> 30) {
				alert("Le nombre d'année ne peut dépasser 30 ans.")
				status = false
			}
		} else {
			status = false
		}
	} else {
		status = false
	}

	return status
}

function checkTermM(pMonth) {
	var TermMonth = pMonth
	var status    = true

	if (checkEnter(TermMonth,"Nombre de mois")) {
		if (checkNumb(TermMonth,"Nombre de mois")) {
			//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      = 30 * 12     /* 30 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 = "Désolé, le montant régulier de remboursement minimum doit être de " + 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 = " "
	}
}


