
function IntegerKeyPressHandler()
{
        if (event.keyCode < 48 || event.keyCode > 57) return false;
        else return true
}

function DecimalKeyPressHandler()
{
        if (event.keyCode != 46 && !IntegerKeyPressHandler()) return false;
        else return true
}

function OnFocusHandler(obj)
{
        obj.select();
}

function Round2SD(v)
{
        return Math.round(v * 100) / 100;
}

function MortgageCalc()
{
        var cCILoanAmount = document.frmMortgageCalc.txtCILoanAmount;
        var CILoanAmount = cCILoanAmount.value;

        if (CILoanAmount == "")
        {
                CILoanAmount = 0;
                cCILoanAmount.value = CILoanAmount.toString();
        }
        else
        {
                CILoanAmount = parseFloat(CILoanAmount);
                if (isNaN(CILoanAmount))
                {
                        cCILoanAmount.focus();
                        alert("Invalid capital and interest loan amount");
                        return;
                }
                else
                        cCILoanAmount.value = CILoanAmount.toString();
        }

        var cIOLoanAmount = document.frmMortgageCalc.txtIOLoanAmount;
        var IOLoanAmount = cIOLoanAmount.value;

        if (IOLoanAmount == "")
        {
                CILoanAmount = 0;
                cIOLoanAmount = IOLoanAmount.toString();
        }
        else
        {
                IOLoanAmount = parseFloat(IOLoanAmount);
                if (isNaN(IOLoanAmount))
                {
                        cIOLoanAmount.focus();
                        alert("Invalid interest only loan amount");
                        return;
                }
                else
                        cIOLoanAmount.value = IOLoanAmount.toString();
        }

        var cMortgageTerm = document.frmMortgageCalc.txtMortgageTerm;
        var mortgageTerm = cMortgageTerm.value;

        if (mortgageTerm == "")
        {
                mortgageTerm = 1;
                cMortgageTerm = mortgageTerm.toString();
        }
        else
        {
                mortgageTerm = parseFloat(mortgageTerm);
                if (isNaN(mortgageTerm) || mortgageTerm < 0)
                {
                        cMortgageTerm.focus();
                        alert("Invalid mortgage term");
                        return;
                }
                else
                        cMortgageTerm.value = mortgageTerm.toString();
        }


        var cInterestRate = document.frmMortgageCalc.txtInterestRate;
        var interestRate = cInterestRate.value;

        if (interestRate == "")
        {
                interestRate = 5;
                cInterestRate = interestRate.toString();
        }
        else
        {
                interestRate = parseFloat(interestRate);
                if (isNaN(interestRate) || interestRate < 0)
                {
                        cInterestRate.focus();
                        alert("Invalid annual interest rate");
                        return;
                }
                else
                        cInterestRate.value = interestRate.toString();
        }

        var cTotalLoan = document.frmMortgageCalc.txtTotalLoan;
        var totalLoan = CILoanAmount + IOLoanAmount;
        totalLoan = Round2SD(totalLoan);
        cTotalLoan.value = totalLoan.toString();

        var cIOMonthlyRepayment = document.frmMortgageCalc.txtIOMonthlyRepayment;
        var IOMonthlyRepayment = (CILoanAmount * (interestRate / 100)) / 12;
        IOMonthlyRepayment = Round2SD(IOMonthlyRepayment);
        cIOMonthlyRepayment.value = IOMonthlyRepayment.toString();

        var cIOTotalPayment = document.frmMortgageCalc.txtIOTotalPayment;
        var IOTotalPayment = (CILoanAmount * (interestRate / 100)) * mortgageTerm;
        IOTotalPayment = Round2SD(IOTotalPayment);
        cIOTotalPayment.value = IOTotalPayment.toString();

        var monthlyInterestRate = interestRate / 1200;
        var numPeriods = mortgageTerm * 12;
        var paymentAmount  = CILoanAmount * monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numPeriods) / (Math.pow(1 + monthlyInterestRate, numPeriods) - 1);

        var cCIMonthlyRepayment = document.frmMortgageCalc.txtCIMonthlyRepayment;
        var CIMonthlyRepayment = Round2SD(paymentAmount);
        cCIMonthlyRepayment.value = CIMonthlyRepayment.toString();

        var cCITotalPayment = document.frmMortgageCalc.txtCITotalPayment;
        var CITotalPayment = paymentAmount * numPeriods;
        CITotalPayment = Round2SD(CITotalPayment);
        cCITotalPayment.value = CITotalPayment.toString();

        var cMonthlyRepayment = document.frmMortgageCalc.txtMonthlyRepayment;
        var monthlyRepayment = IOMonthlyRepayment + CIMonthlyRepayment;
        monthlyRepayment = Round2SD(monthlyRepayment);
        cMonthlyRepayment.value = monthlyRepayment.toString();

        var cTotalPayment = document.frmMortgageCalc.txtTotalPayment;
        var totalPayment = IOTotalPayment + CITotalPayment;
        totalPayment = Round2SD(totalPayment);
        cTotalPayment.value = totalPayment.toString();
}

//****************************************************
// how much can I borrow

function removeTotal() {
  document.loanform.loanvalue.value='';
}


function ForceNumeric(nValue)
        {
        validChars = "0123456789.";
        newValue="";
        for(k = 0; k < nValue.length; k++)
                {
                thisChar = nValue.charAt(k);
                if(validChars.indexOf(thisChar) != -1) newValue += thisChar;
                }
        return newValue;
        }


function calculate_maxloan() {

        document.loanform.income1.value = ForceNumeric(document.loanform.income1.value);
        document.loanform.bonus1.value = ForceNumeric(document.loanform.bonus1.value);
        var income = document.loanform.income1.value;
        var bonus = document.loanform.bonus1.value;
        document.loanform.loanvalue.value= (Math.abs(income) + Math.abs(bonus)) *3.5;

}


// ***************************************************
// couple

function calculate_maxloan2(a)
        {
        document.loanform.firstincome.value = ForceNumeric(document.loanform.firstincome.value);
        document.loanform.secondincome.value = ForceNumeric(document.loanform.secondincome.value);
        var firstincome = document.loanform.firstincome.value;
        var secondincome = document.loanform.secondincome.value;
        if(a==1)
        {
        if(firstincome > secondincome)
        {
        loanamount = firstincome * 3;
        }
        else
        loanamount = secondincome * 3;
        }
        else
        if(a==2)
        {

                        var jointincome = Math.abs(firstincome) + Math.abs(secondincome);
                        loanamount = 2.5 * jointincome;

        }
        else
        if(a==3)
        {
        if(firstincome > secondincome)
        {
        loanamount = (firstincome * 3.5)+(1*secondincome) ;
        }
        else
        loanamount = (secondincome * 3.5)+(1*firstincome);
        }
                document.loanform.loanvalue.value = loanamount;


        }


function calc_couple(a) {

        document.frmMortgageCalc.txtAp1.value = ForceNumeric(document.frmMortgageCalc.txtAp1.value);
        document.frmMortgageCalc.txtAp2.value = ForceNumeric(document.frmMortgageCalc.txtAp2.value);

        var firstincome = document.frmMortgageCalc.txtAp1.value;
        var secondincome = document.frmMortgageCalc.txtAp2.value;

        if(a==1) {

          if(firstincome > secondincome) {

            loanamount = firstincome * 3;
          } else {
            loanamount = secondincome * 3;
          }

	  document.frmMortgageCalc.txtResMin.value = loanamount;

        }


        if(a==2) {

            var jointincome = Math.abs(firstincome) + Math.abs(secondincome);
            loanamount = 2.5 * jointincome;

        }


        if(a==3) {
              if(firstincome > secondincome) {
                loanamount = (firstincome * 3.5)+(1*secondincome) ;
              } else
                loanamount = (secondincome * 3.5)+(1*firstincome);

	   document.frmMortgageCalc.txtResMax.value = loanamount;
        }
                           

}


// ***************************************************