// This is the master calculator scripts with all functions function checkNumber(input, min, max, msg){ msg = msg + " field has invalid data: " + input.value; var str = input.value; for (var i = 0; i < str.length; i++){ var ch = str.substring(i, i + 1) if ((ch < "0" || "9" < ch) && ch != '.'){ alert(msg); return false; } } var num = 0 + str if (num < min || max < num) { alert(msg + " not in range [" + min + ".." + max + "]"); return false; } input.value = str; return true; } function NumFormat( __StringNumber ) { InString = _Trim(__StringNumber); OutString = ""; InLength = InString.length; for(__x=InLength; __x!=0; __x--) { if(OutString.length == 3 | OutString.length == 7 | OutString.length == 11) { OutString = "," + OutString; OutString = InString.substring(__x-1,__x) + OutString; } else { OutString = InString.substring(__x-1,__x) + OutString; } } return OutString; } function _Trim( str ) { astr = String( str ); t_str = String(""); LastCharAt = 0; for(x=astr.length-1;x>=0;x--) { if( astr.charAt(x) != " " ) { LastCharAt = x+1; break; } } return astr.substring(0,LastCharAt); } function _StrTran( _str2b_chg, _substr2_look4, _substr2_sub ) { var _Str_2B_Chg = String( _str2b_chg ); var _Str_2_Look_4 = String( _substr2_look4 ); var _Str_2_Sub = String( _substr2_sub ); var _Out_Str = ""; _len2chg = _Str_2B_Chg.length; _len2lk4 = _Str_2_Look_4.length; for( _stepr=0; _stepr<_len2chg; _stepr++ ) { if(_Str_2B_Chg.substring(_stepr,_stepr+_len2lk4) == _Str_2_Look_4) _Out_Str += _Str_2_Sub; else _Out_Str += _Str_2B_Chg.substring(_stepr,_stepr+_len2lk4) } return _Out_Str; } function clearForm(form) { form.yrterm.value = ""; form.interest.value = ""; form.principal.value = ""; } function computeField(input) { if (input.value != null && input.value.length != 0) input.value = "" + NumFormat(parseInt(input.value)); } // Affordability Script function computeAffordabilityForm(form) { if ((form.down.value == null || form.down.value.length == 0) || (form.interest.value == null || form.interest.value.length == 0) || (form.term.value == null || form.term.value.length == 0) || (form.payment.value == null || form.payment.value.length == 0)) { return; } if (!checkNumber(form.term, 1, 480, "# of payments") || !checkNumber(form.interest, .001, 99, "Interest")) { form.principle.value = "Invalid"; return; } var thenumberofpayments = form.term.value * 12; var theinterestrate = form.interest.value; var thedown = form.down.value; var i = theinterestrate; if (i == 0) i = .001; if (i > 1.0) { i = i / 100.0; //form.interest.value = i; } { if(form.interest.value == "" || form.down.value == "" || form.payment.value == "" || form.term.value == "") { form.principle.value = ""; } else { i = (form.interest.value) / 100; i = i / 12; n = (form.term.value) * 12; M = parseInt(_StrTran(form.down.value,",","")); tmp = (1/i) * (1 - Math.pow(1/(1+i), n)); tmp = (_StrTran(form.payment.value,",","")) * tmp; tmp = tmp + (_StrTran(form.down.value,",","")); tmp = Math.round(tmp*100) / 100 + M; form.principle.value = NumFormat(parseInt(tmp)); if(form.principle.value == null || form.principle.value.length == 0 || form.principle.value == "NaN") { form.principle.value = ""; } } } } function compute30or15Form(form) { if ((form.yrterm.value == null || form.yrterm.value.length == 0) || (form.interest.value == null || form.interest.value.length == 0) || (form.principal.value == null || form.principal.value.length == 0)) { return; } if (!checkNumber(form.yrterm, 1, 480, "# of payments") || !checkNumber(form.interest, 0, 99, "Interest")) { form.payment.value = "Invalid"; return; } var thenumberofpayments = form.yrterm.value * 12; var theinterestrate = form.interest.value; var theprincipal = _StrTran(form.principal.value,",",""); var i = theinterestrate; if (i == 0) i = .001; if (i > 1.0) { i = i / 100.0; //form.interest.value = i; } i /= 12; var pow = 1; for (var j = 0; j < thenumberofpayments; j++) pow = pow * (1 + i); var mpaymnt = (theprincipal * pow * i) / (pow - 1); form.payment.value = "$"+NumFormat(parseInt(mpaymnt)); form.yrpayment.value = "$"+NumFormat(parseInt(mpaymnt*12)); form.tpayment.value = "$"+NumFormat(parseInt((mpaymnt*12)*(form.yrterm.value))); form.mprinciple.value = "$"+NumFormat(parseInt(((mpaymnt*12)*(form.yrterm.value))-(_StrTran(form.principal.value,",","")))); } // 30 or 15 Script function compute30or15Form2(form) { if ((form.yrterm2.value == null || form.yrterm2.value.length == 0) || (form.interest.value == null || form.interest.value.length == 0)) { return; } if (!checkNumber(form.yrterm2, 1, 480, "# of payments") || !checkNumber(form.interest, 0, 99, "Interest")) { form.bipayment.value = "Invalid"; return; } var thenumberofpayments = form.yrterm2.value * 12; var thenumberofpayments2 = form.yrterm.value * 12; var theinterestrate = form.interest.value; var theprincipal = _StrTran(form.principal.value,",",""); i /= 12; var pow = 1; for (var j = 0; j < thenumberofpayments2; j++) pow = pow * (1 + i); var mpaymnt = (theprincipal * pow * i) / (pow - 1); var i = theinterestrate; if (i == 0) i = .001; if (i > 1.0) { i = i / 100.0; } i /= 12; var pow = 1; for (var j = 0; j < thenumberofpayments; j++) pow = pow * (1 + i); var xpayment = (theprincipal * pow * i) / (pow - 1); form.bipayment.value = "$"+NumFormat(parseInt(xpayment)); form.biyrpayment.value = "$"+NumFormat(parseInt(xpayment*12)); form.bitpayment.value = "$"+NumFormat(parseInt(xpayment*12*form.yrterm2.value)); form.bprinciple.value = "$"+NumFormat(parseInt((xpayment*12*form.yrterm2.value)-_StrTran(form.principal.value,",",""))); } // Monthly Payment Scripts function computeMonthlyPaymentsForm(form) { if ((form.payments.value == null || form.payments.value.length == 0) || (form.interest.value == null || form.interest.value.length == 0) || (form.perdown.value == null || form.perdown.value.length == 0) || (form.principal.value == null || form.principal.value.length == 0)) { return; } if (!checkNumber(form.payments, 1, 480, "# of payments") || !checkNumber(form.interest, .001, 99, "Interest") || !checkNumber(form.perdown, 0, 99, "Percent Down")) { form.payment.value = "Invalid"; return; } var thenumberofpayments = form.payments.value * 12; var theinterestrate = form.interest.value; var theprincipal = _StrTran(form.principal.value,",",""); var thedownpayment = form.perdown.value; // // Check / Set percent down to correct value! // if (thedownpayment > 1.0) { thedownpayment = thedownpayment / 100.0; } var adjamt = theprincipal * thedownpayment; theprincipal = theprincipal - adjamt; var i = theinterestrate; if (i == 0) i = .001; if (i > 1.0) { i = i / 100.0; //form.interest.value = i; } i /= 12; var pow = 1; for (var j = 0; j < thenumberofpayments; j++) pow = pow * (1 + i); var mpaymnt = (theprincipal * pow * i) / (pow - 1); form.payment.value = "$"+NumFormat(parseInt(mpaymnt)); form.netpayment.value = "$"+NumFormat(parseInt(mpaymnt+(_StrTran(form.taxes.value,",","")/12)+(_StrTran(form.HOinsurance.value,",","")/12))); } // Monthly vs. BiWeekly Script function computeMonthlyVsBiweeklyForm(form) { if ((form.yrterm.value == null || form.yrterm.value.value == 30) || (form.interest.value == null || form.interest.value.length == 0)) { return; } if (!checkNumber(form.yrterm, 1, 480, "# of payments") || !checkNumber(form.interest, 3, 16, "Interest")) { form.payment.value = "Invalid"; return; } var thenumberofpayments = form.yrterm.value * 12; var theinterestrate = form.interest.value; var theprincipal = _StrTran(form.principal.value,",",""); var i = theinterestrate; if (i > 1.0) { i = i / 100.0; } i /= 12; var pow = 1; for (var j = 0; j < thenumberofpayments; j++) pow = pow * (1 + i); var mpaymnt = (theprincipal * pow * i) / (pow - 1) form.biterm.value = parseInt(form.yrterm.value - form.interest.value + 1); form.payment.value = "$"+NumFormat(parseInt(mpaymnt)); form.bipayment.value = "$"+NumFormat(parseInt(mpaymnt/2)); form.yrpayment.value = "$"+NumFormat(parseInt(mpaymnt*12)); form.biyrpayment.value = "$"+NumFormat(parseInt((mpaymnt/2)*26)); form.tpayment.value = "$"+NumFormat(parseInt(mpaymnt*12)*(form.yrterm.value)); form.bitpayment.value = "$"+NumFormat(parseInt((mpaymnt/2)*26)*(form.biterm.value)); form.mprinciple.value = "$"+NumFormat(parseInt(((mpaymnt*12)*(form.yrterm.value))-(_StrTran(form.principal.value,",","")))); form.bprinciple.value = "$"+NumFormat(parseInt((((mpaymnt/2)*26)*(form.biterm.value))-(_StrTran(form.principal.value,",","")))); form.savings2.value = "$"+NumFormat(parseInt((((mpaymnt*12)*(form.yrterm.value))-(_StrTran(form.principal.value,",","")))-parseInt((((mpaymnt/2)*26)*(form.biterm.value))-(_StrTran(form.principal.value,",",""))))); } // Options Scripts function computeOptionsForm(form) { var timeinhouse = (form.time1.value*12); xx = Number((_StrTran(form.payment1.value,",",""))*timeinhouse); xx += Number(_StrTran(form.penalty1.value,",","")); xx += Number(_StrTran(form.points1.value,",","")); xx += Number(_StrTran(form.remaining1.value,",","")); form.cost1.value = "$"+NumFormat(parseInt(xx)); yy = Number((_StrTran(form.payment2.value,",",""))*timeinhouse); yy += Number(_StrTran(form.penalty2.value,",","")); yy += Number(_StrTran(form.points2.value,",","")); yy += Number(_StrTran(form.remaining2.value,",","")); form.cost2.value = "$"+NumFormat(parseInt(yy)); } // Refinance Form Scripts function computeRefinanceForm(form) { var pmt1 = form.payment.value; var prin1 = form.principal.value; var intPort1 = 0; var prinPort1 = 0; var accumInt1 = 0; var accumPrin1 = 0; var i1 = form.intRate.value; if (i1 > 1.0) { i1 = i1 / 100.0; //BF //form.intRate.value = i1; } var i1 = i1 / 12; var i2 = form.intRate2.value; if (i2 > 1.0) { i2 = i2 / 100.0; } var i2 = i2 / 12; var count1 = 0; while(prin1 > 0) { intPort1 = prin1 * i1; prinPort1 = pmt1 - intPort1; prin1 = prin1 - prinPort1; accumPrin1 = accumPrin1 + prinPort1; accumInt1 = accumInt1 + intPort1; count1 = count1 + 1; if(count1 > 600) {break; } else {continue; } } form.origInt.value = "$" + parseInt(accumInt1,10); var pow = 1; for (var j = 0; j < form.nper2.value *12; j++) pow = pow * (1 + i2); var fpayment2 = (form.principal.value * pow * i2) / (pow - 1); form.payment2.value = "$" + parseInt(fpayment2,10) + "." + parseInt(fpayment2 % 1 * 100,10); var fmoSave = form.payment.value - fpayment2; form.moSave.value = "$" + parseInt(fmoSave,10) + "." + parseInt(fmoSave % 1 *100,10); var ftotInt2 = (fpayment2 * form.nper2.value *12) - form.principal.value; form.totInt2.value = "$" + parseInt(ftotInt2,10); var fintSave = accumInt1 - ftotInt2; if (fintSave < 0) fintSave *= (-1); form.intSave.value = "$" + parseInt(fintSave,10); form.closeMo.value = parseInt(form.closingCost.value / fmoSave,10); var fnetSave = fintSave - form.closingCost.value; if (fnetSave < 0) fnetSave *= (-1); form.netSave.value = "$" + parseInt(fnetSave,10); } function clearRefinanceForm(form) { form.principal.value = ""; form.payment.value = ""; form.interest.value = ""; form.interest2.value = ""; form.term.value = ""; form.closingCost.value = ""; form.payment2.value = ""; form.savings.value = ""; form.breakeven.value = ""; form.IntSaved.value = ""; form.netSave.value = ""; form.Rinterest.value = ""; } // Rent vs Purchase Script function computeRentVsPurchaseForm(form) { if ((form.payments.value == null || form.payments.value.length == 0) || (form.interest.value == null || form.interest.value.length == 0) || (form.perdown.value == null || form.perdown.value.length == 0) || (form.principal.value == null || form.principal.value.length == 0)) { return; } if (!checkNumber(form.payments, 1, 480, "# of payments") || !checkNumber(form.interest, .001, 99, "Interest") || !checkNumber(form.perdown, 0, 99, "Percent Down")) { form.payment.value = "Invalid"; return; } var thenumberofpayments = form.payments.value * 12; var theinterestrate = form.interest.value; var theprincipal = _StrTran(form.principal.value,",",""); var thedownpayment = form.perdown.value; var thetaxbracket = form.taxbracket.value; if (thedownpayment > 1.0) { thedownpayment = thedownpayment / 100.0; } var adjamt = theprincipal * thedownpayment; theprincipal = theprincipal - adjamt; var i = theinterestrate; if (i == 0) i = .001; if (i > 1.0) { i = i / 100.0; } if (thetaxbracket > 1.0) { thetaxbracket = thetaxbracket / 100.0; } i /= 12; var pow = 1; for (var j = 0; j < thenumberofpayments; j++) pow = pow * (1 + i); var mpaymnt = (theprincipal * pow * i) / (pow - 1); form.payment.value = "$"+NumFormat(parseInt(mpaymnt)); form.netpayment.value = "$"+NumFormat(parseInt(mpaymnt+(_StrTran(form.taxes.value,",","")/12)+(_StrTran(form.HOinsurance.value,",","")/12))); form.TRent.value = "$"+NumFormat(parseInt(_StrTran(form.rent.value,",","")*12*form.years.value)); form.TMortgage.value = "$"+NumFormat(parseInt(((mpaymnt+(_StrTran(form.taxes.value,",","")/12)+(_StrTran(form.HOinsurance.value,",","")/12))*12*form.years.value)-((((form.interest.value*theprincipal)/12)+(_StrTran(form.taxes.value,",","")/12))*thetaxbracket))); }