function calculateMortgage(houseInc, monthPays, down, useCMHC) { var mortgage; if(useCMHC) { mortgage = calcHighRatio(houseInc, monthPays); if(mortgage + down > 250000) mortgage = 250000 - down; } else mortgage = down * 9; return mortgage; } function calcHighRatio(houseInc, monthPays) { var grossMort1 = 0; var grossMort2 = 0; var x; var y; var m; var z1; var z2; var interest = threeYear; x = Math.pow(1 + interest/200, .1666666666667) - 1; m = monthPays * 12; z1 = ((houseInc * .32) - 2600) / 12; z2 = ((( houseInc * .4) - 2600) - m) / 12; y = x / (1 - Math.pow((1+x), -300)); grossMort1 = z1/y; grossMort2 = z2/y; var m1 = returnSmaller(grossMort1, grossMort2); return moneyFormat(m1); } function moneyFormat(input) { var dolls = Math.floor(input); var output = dolls.toString() + "." + "00"; return output; } function returnSmaller(first, second) { if (first < second) return first; else return second; } function returnLarger(first, second) { if (first < second) return second; else return first; } function checkValue(value) { var num = parseFloat(value); return !(num == NaN); } function calculatePayments(mortAmt, intrateSelected, selectedFreq) { //convert the interest rate selection to a String var intRate = new String(intrateSelected); //get the position of the '@' char var startIndex = intRate.indexOf("@") + 1; //get the position of the '%' char var endIndex = intRate.indexOf("%"); //initialize i to interest rate var i = (new String(intrateSelected)).substring(startIndex, endIndex); var x; if(selectedFreq == "weekly") x = 52; else if(selectedFreq == "bi-weekly") x = 26; else if(selectedFreq == "semi-monthly") x = 24; else if(selectedFreq == "monthly") x = 12; var n = 25; var P = mortAmt; var leftSide = Math.pow(1 + i/200, (1/(x/2)))-1; var rightSide = 1- Math.pow(1+ leftSide, (-n*x)); var payment = (leftSide / rightSide) * P; return "$" + moneyFormat(payment); } function calculatePayments2(mortAmt, intrateSelected) { var m = mortAmt; var i = intrateSelected; // var payment = Math.floor(100*(PMT((1+(i)/200)^(1/6)-1,300,-m,0,0)))/100 var payment = Math.floor( 100*( PMT( Math.pow( (1+(i)/200), (1/6) )-1, 300, -m, 0 ) ) ) / 100; // return "$" + moneyFormat(payment); return "$" + payment; } function calcpayment(pv, ir, np){ // Supplied: =TRUNC(100*(PMT((1+(D9)/200)^(1/6)-1,300,-E4,0,0)))/100 //return Math.floor(100*(PMT2(Math.pow(1+ir/200, 1/6)-1, np, pv)))/100; var leftSide = Math.pow(1 + ir/200, (1/6))-1; var rightSide = 1- Math.pow(1+ leftSide, (-np*12)); var payment = (leftSide / rightSide) * pv; return payment; } function PMT(ir, np, pv, fv) { // return -(ir*(fv+(1+ir)^np*pv))/(-1+(1+ir)^np) return -( ir*( fv+Math.pow( (1+ir), np) *pv ) ) / (-1+Math.pow( (1+ir), np) ); } function PMT2( ir, np, pv ) { // Supplied: PMT=((1+i/2)^(1/6)-1)/(1-(1+i/2)^(-n*2))*PV var x = ir/100; var i = EQUIV(x); return (Math.pow(1+i/2, 1/6)-1) / (1-Math.pow(1+i/2, -np*2)) * pv; } function FV( pv, ir, np, pmt ) { // Supplied: FV=(PV*(1+i)^n)-(((1+i)^n-1)/i*pyt var i = EQUIV(ir)/100; return (pv*(Math.pow((1+i),np)) - Math.pow((1+i),(np)-1)) / (i*pmt); } function EQUIV( ir ) { // Supplied: EQUIV=(1+j/2)^(1/6)-1 return Math.pow(1+ir/2, 1/6)-1; }