﻿function reCalculateKt(changedObj) {ktArray = new Array();refreshVariables();ktArray["summary"] = new Array();ktArray["summary"]["monthly_interest_rate"] = (Math.pow(1+(ktArray["vars"]["interest_rate"]/100)/ktArray["vars"]["compound_period"], ktArray["vars"]["compound_period"]/ktArray["vars"]["periods_per_year"])-1)*100;var ii = Math.pow((1+(ktArray["vars"]["interest_rate"]/100)/ktArray["vars"]["compound_period"]), (ktArray["vars"]["compound_period"]/ktArray["vars"]["periods_per_year"]));var nn = ktArray["vars"]["periods_per_year"]*ktArray["vars"]["term_of_loan"];ktArray["summary"]["original_monthly_payment"] = ktArray["summary"]["monthly_payment"] = (ktArray["vars"]["loan_amount"]*(ii-1)/(1-Math.pow(ii,-nn)));if (ktArray["vars"]["interest_only_period"]) {ii = Math.pow((1+(ktArray["vars"]["interest_rate"]/100)/ktArray["vars"]["compound_period"]), (ktArray["vars"]["compound_period"]/ktArray["vars"]["periods_per_year"]));nn = ktArray["vars"]["periods_per_year"]*(ktArray["vars"]["term_of_loan"]-ktArray["vars"]["interest_only_period"]);ktArray["summary"]["monthly_payment"] = (ktArray["vars"]["loan_amount"]*(ii-1)/(1-Math.pow(ii,-nn)));}if (!ktArray["vars"]["extra_monthly_payment"]) ktArray["vars"]["extra_monthly_payment"] = 0;ktArray["summary"]["total_monthly_payment"] = ktArray["summary"]["monthly_payment"]+ktArray["vars"]["extra_monthly_payment"];ktArray["summary"]["adj_interest_rate"] = ktArray["vars"]["interest_rate"];ktArray["summary"]["monthly"] = new Array();ktArray["summary"]["credit"] = ktArray["vars"]["loan_amount"];ktArray["summary"]["total_interest"] = 0;ktArray["summary"]["total_extra_payments"] = 0;ktArray["summary"]["total_principal_paid"] = 0;ktArray["summary"]["total_payments"] = 0;ktArray["summary"]["est_max_rate"] = 0;ktArray["summary"]["est_max_payment"] = 0;while (ktArray["summary"]["credit"]>0) {var cnt = ktArray["summary"]["monthly"].length;ktArray["summary"]["monthly"][cnt] = new Array();if (cnt) {switch(ktArray["vars"]["periods_per_year"]) {case 1:paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));break;case 2:paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));break;case 4:paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));break;case 6:paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));break;case 12:paydate.setDate(paydate.getDate()+monthdays[paydate.getMonth()]+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0));break;case 24:if (cnt%2) {paydate.setDate(paydate.getDate()+14);} else {paydate.setDate(paydate.getDate()+(monthdays[paydate.getMonth()]-14)+(paydate.getFullYear()%4==0 && paydate.getMonth()==1 ? 1 : 0)); }break;case 26:paydate.setDate(paydate.getDate()+14);break;case 52:paydate.setDate(paydate.getDate()+7);break;case 365:case 364:case 360:paydate.setDate(paydate.getDate()+1);break;}}ktArray["summary"]["monthly"][cnt]["paydate"] = (paydate.getMonth()+1)+"/"+paydate.getDate()+"/"+paydate.getFullYear();ktArray["summary"]["monthly"][cnt]["interest_rate"] = ktArray["summary"]["adj_interest_rate"];if (cnt>((ktArray["vars"]["year_rate_fixed"]-1)*12) && (cnt-((ktArray["vars"]["year_rate_fixed"]-1)*12))%ktArray["vars"]["months_between_adjustments"]==0) {ktArray["summary"]["monthly"][cnt]["interest_rate"] = ktArray["summary"]["adj_interest_rate"] = (ktArray["summary"]["monthly"][cnt]["interest_rate"]+ktArray["vars"]["expected_adjustment"]);ii = Math.pow((1+(ktArray["summary"]["monthly"][cnt]["interest_rate"]/100)/ktArray["vars"]["compound_period"]), (ktArray["vars"]["compound_period"]/ktArray["vars"]["periods_per_year"]));nn = (ktArray["vars"]["periods_per_year"]*ktArray["vars"]["term_of_loan"])-cnt;ktArray["summary"]["total_monthly_payment"] = (ktArray["summary"]["credit"]*(ii-1)/(1-Math.pow(ii,-nn)));}if (ktArray["summary"]["est_max_rate"]<ktArray["summary"]["monthly"][cnt]["interest_rate"]) {ktArray["summary"]["est_max_rate"] = parseFloat(ktArray["summary"]["monthly"][cnt]["interest_rate"].toFixed(2));}ktArray["summary"]["monthly"][cnt]["payment_due"] = parseFloat(ktArray["summary"]["total_monthly_payment"].toFixed(2));if (ktArray["vars"]["interest_only_period"] && cnt<(ktArray["vars"]["interest_only_period"]*ktArray["vars"]["periods_per_year"])) {ktArray["summary"]["monthly"][cnt]["payment_due"] = ktArray["summary"]["interest_only_payment"];}if (ktArray["vars"]["additional_payment"+cnt]) {ktArray["summary"]["monthly"][cnt]["additional_payment"] = ktArray["vars"]["additional_payment"+cnt];} else {ktArray["summary"]["monthly"][cnt]["additional_payment"] = 0;}if (!cnt && ktArray["vars"]["payment_type_beginorend"]==2) {ktArray["summary"]["monthly"][cnt]["interest_due"] = 0;} else {ktArray["summary"]["monthly"][cnt]["interest_due"] = parseFloat(((Math.pow(1+ktArray["summary"]["adj_interest_rate"]/100/ktArray["vars"]["compound_period"], ktArray["vars"]["compound_period"]/ktArray["vars"]["periods_per_year"])-1)*ktArray["summary"]["credit"]).toFixed(2));ktArray["summary"]["total_interest"] += ktArray["summary"]["monthly"][cnt]["interest_due"];}if (cnt) {ktArray["summary"]["monthly"][cnt]["interest_paid"] = ktArray["summary"]["monthly"][cnt-1]["interest_paid"]+ktArray["summary"]["monthly"][cnt]["interest_due"];} else {ktArray["summary"]["monthly"][cnt]["interest_paid"] = ktArray["summary"]["monthly"][cnt]["interest_due"];}if ((ktArray["summary"]["credit"]-ktArray["summary"]["monthly"][cnt]["payment_due"]-ktArray["summary"]["monthly"][cnt]["additional_payment"])<(ktArray["summary"]["monthly"][cnt]["payment_due"]/10)) ktArray["summary"]["monthly"][cnt]["payment_due"] = ktArray["summary"]["credit"]+ktArray["summary"]["monthly"][cnt]["interest_due"];ktArray["summary"]["monthly"][cnt]["principal_paid"] = parseFloat((ktArray["summary"]["monthly"][cnt]["payment_due"]-ktArray["summary"]["monthly"][cnt]["interest_due"]+ktArray["summary"]["monthly"][cnt]["additional_payment"]).toFixed(2));ktArray["summary"]["total_principal_paid"] += ktArray["summary"]["monthly"][cnt]["principal_paid"];ktArray["summary"]["total_payments"] += ktArray["summary"]["monthly"][cnt]["payment_due"]+ktArray["summary"]["monthly"][cnt]["additional_payment"];ktArray["summary"]["monthly"][cnt]["balance"] = parseFloat((ktArray["summary"]["credit"]-ktArray["summary"]["monthly"][cnt]["principal_paid"]).toFixed(2));ktArray["summary"]["monthly"][cnt]["cum_interest"] = ktArray["summary"]["total_interest"];ktArray["summary"]["monthly"][cnt]["cum_principal"] = ktArray["summary"]["total_principal_paid"];ktArray["summary"]["credit"] = ktArray["summary"]["monthly"][cnt]["balance"];if (ktArray["summary"]["est_max_payment"]<ktArray["summary"]["monthly"][cnt]["payment_due"]) {ktArray["summary"]["est_max_payment"] = ktArray["summary"]["monthly"][cnt]["payment_due"];}if (ktArray["summary"]["credit"]<0) return 1;}ktArray["summary"]["number_of_payments"] = ktArray["summary"]["monthly"].length;ktArray["summary"]["number_of_years_to_payoff"] = ktArray["summary"]["number_of_payments"]/12;ktArray["summary"]["internal_rate_return"] = ((ktArray["summary"]["est_max_payment"]*0.0001*12)-1)*10;var balancemonth = (ktArray["vars"]["balance_at_year"]*12)-1;if (balancemonth) {ktArray["summary"]["outstanding_balance"] = ktArray["summary"]["monthly"][balancemonth]["balance"];ktArray["summary"]["interest_paid"] = ktArray["summary"]["monthly"][balancemonth]["interest_paid"];if (!ktArray["vars"]["original_down_payment"]) ktArray["vars"]["original_down_payment"] = 0;ktArray["summary"]["equity"] = ktArray["vars"]["loan_amount"]-ktArray["summary"]["outstanding_balance"]+ktArray["vars"]["original_down_payment"];}ktArray["summary"]["est_interest_savings"] = (ktArray["summary"]["number_of_payments"]*parseFloat(ktArray["summary"]["original_monthly_payment"])-ktArray["vars"]["loan_amount"]-parseFloat(ktArray["summary"]["total_interest"]));displayValues();}function displayValues() {for (var fieldId in ktArray["summary"]) {var fieldObj = document.getElementById(fieldId);if (fieldObj && ktArray["summary"][fieldId]) {fieldObj.innerHTML = numberFormat(ktArray["summary"][fieldId], fieldObj.getAttribute("valuetype"), fieldObj.getAttribute("valueformat"));}}var int=0, row, payment_shedule_content=document.getElementById("payment_shedule_content"), newDiv, borderbottom="";payment_shedule_content.innerHTML = "";while (row = ktArray["summary"]["monthly"][int]) {if ((int+1)%ktArray["vars"]["periods_per_year"]==0) {borderbottom = " borderBottom";} else {borderbottom = "";}if (!row["additional_payment"]) row["additional_payment"] = 0;newDiv = document.createElement("div");newDiv.className = "ps_no aligncenter"+borderbottom;newDiv.innerHTML = int+1;payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_paymentdate aligncenter"+borderbottom;newDiv.innerHTML = numberFormat(row["paydate"], "date", "");payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_paymentdue alignleft"+borderbottom;newDiv.innerHTML = numberFormat(row["interest_rate"], "percent", "0.3");payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_interestrate alignleft"+borderbottom;newDiv.innerHTML = numberFormat(row["payment_due"], "money", "0.2");payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_additionalpayment alignright"+borderbottom;newDiv.style.height = "20px";newDiv.innerHTML = "<input type='text' id='additional_payment"+int+"' value='"+numberFormat(row["additional_payment"], "money", "0.2")+"' valuetype='money' valueformat='0.0' onchange='reCalculateKt(this);'>";payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_interestdue aligncenter"+borderbottom;newDiv.innerHTML = numberFormat(row["interest_due"], "money", "0.2");payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_principalpaid aligncenter"+borderbottom;newDiv.innerHTML = numberFormat(row["principal_paid"], "money", "0.2");payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "ps_balance alignright"+borderbottom;newDiv.innerHTML = numberFormat(row["balance"], "money", "0.2");payment_shedule_content.appendChild(newDiv);newDiv = document.createElement("div");newDiv.className = "clearboth";newDiv.innerHTML = "";payment_shedule_content.appendChild(newDiv);int++;}}function stripnumb(numb) {var lespercent;var lesdollar;var lesspace;var lescomma;var lesnumamt = numb.length;if(lesnumamt > 0) {numb=numb.toString();lespercent = numb.indexOf("%");if(lespercent >= 0) {numb=numb.substring(0,lespercent) + "" + numb.substring(lespercent + 1,lesnumamt);lesnumamt=numb.length;}lesdollar = numb.indexOf("$");if(lesdollar >= 0) {numb=numb.substring(0,lesdollar) + "" + numb.substring(lesdollar + 1,lesnumamt);lesnumamt=numb.length;}lesspace = numb.indexOf(" ");if(lesspace >= 0) {numb=numb.substring(0,lesspace) + "" + numb.substring(lesspace + 1,lesnumamt);lesnumamt=numb.length;}lescomma = numb.indexOf(",");if(lescomma >= 0) {while(lescomma >=1) {numb=numb.substring(0,lescomma) + "" + numb.substring(lescomma + 1,lesnumamt);lesnumamt=numb.length;lescomma = numb.indexOf(",");}}numb = eval(numb);} else {numb = 0;}return numb;}function formatnumb(numb) {var negative=0;if(numb < 0) {numb=numb*-1;negative=1;}zeronumb=Math.round(numb*100)/100;integer=Math.floor(zeronumb);if (Math.ceil(zeronumb) == integer) {decimal="00";} else{decimal=Math.round((zeronumb-integer)*100)}decimal=decimal.toString();if (decimal.length<2) decimal="0"+decimal;integer=integer.toString();var tempnumb="";var tempinteger="";var x=0;for (z=integer.length;z>0;z--) {tempnumb=tempnumb+integer.charAt(z-1);x=x+1;if (x==3 & z>1) {tempnumb=tempnumb+",";x=0;}}for (z=tempnumb.length;z>0;z--) {tempinteger=tempinteger+tempnumb.charAt(z-1);}finalnumb=tempinteger+"."+decimal;if(negative == 1) {finalnumb = "-" + finalnumb;}return finalnumb;}function calculateform(form) {if(form.monrent.value == "" || form.monrent.value == 0) {alert("Please enter the amount of your monthly rent payment.");form.monrent.focus();} else if(form.purprice.value == "" || form.purprice.value == 0) {alert("Please enter the purchase price of the home.");form.purprice.focus();} else if(form.numbyears.value == "" || form.numbyears.value == 0) {alert("Please your number of years you are financing the home for.");form.numbyears.focus();} else if(form.annualrate.value == "" || form.annualrate.value == 0) {alert("Please enter the mortgage's annual interest rate.");form.annualrate.focus();} else if(form.livintime.value == "" || form.annualrate.value == 0) {alert("Please enter the number of years you plan to stay in this property.");form.annualrate.focus();} else {var monrentvar = stripnumb(form.monrent.value);var totalrentvar = 0;var monrentinsvar = stripnumb(form.monrentins.value);if(monrentinsvar == "" || monrentinsvar == 0) {monrentinsvar = 0}var anninflationvar = stripnumb(form.anninflation.value);if(anninflationvar == "" || anninflationvar == 0) {anninflationvar = 0} else if(anninflationvar >= 1) {anninflationvar = anninflationvar / 100;}anninflationvar = eval(anninflationvar) + eval(1);var livintimevar = stripnumb(form.livintime.value);var livinmonvar = livintimevar * 12;var countit = 0;var int = stripnumb(form.annualrate.value);if (int > 1.0) {int = int / 100.0;}int /= 12;var purpricevar = stripnumb(form.purprice.value);var numbyearsvar = stripnumb(form.numbyears.value);var dpamtvar = stripnumb(form.dpamt.value);var loanprincvar = eval(purpricevar) - eval(dpamtvar);var intamt = 0;var accumintvar = 0;var prinamt = 0;var principal = loanprincvar;var numbmon = numbyearsvar * 12;var pow = 1;for (var k = 0; k < numbmon; k++)pow = pow * (1 + int);var monpmt = (loanprincvar * pow * int) / (pow - 1);var expectappvar = stripnumb(form.expectapp.value);if(expectappvar == "" || expectappvar == 0) {expectappvar = 0;} else if(expectappvar >= 0) {expectappvar = expectappvar / 100;}expectappvar = eval(expectappvar) + eval(1);var accumappvar = purpricevar * expectappvar;var mtginsvar = stripnumb(form.mtgins.value);if(mtginsvar == 0 || mtginsvar == "") {mtginsvar = 0;} else if(mtginsvar >= .01) {mtginsvar = mtginsvar / 100;}mtginsvar = mtginsvar / 12;var mtginskt = 0;var accunmtginsvar = 0;var dppercentage = dpamtvar / purpricevar;if(dppercentage < .20) {mtginskt = 1;accunmtginsvar = 0;}var origfeevar = stripnumb(form.origfee.value);if(origfeevar == 0 || origfeevar == "") {origfeevar = 0;} else if(origfeevar >= 1 ) {origfeevar = origfeevar / 100;}var feeamtvar = loanprincvar * origfeevar;var discpointvar = stripnumb(form.discpoint.value);if(discpointvar == 0 || discpointvar == "") {discpointvar = 0;} else if(discpointvar >= 1 ) {discpointvar = discpointvar / 100;}var discpointamtvar = loanprincvar * discpointvar;var othercostvar= stripnumb(form.othercost.value);if(othercostvar == 0 || othercostvar == "") {othercostvar = 0;}var closecostvar = eval(discpointamtvar) + eval(feeamtvar) + eval(othercostvar);var invinterestvar = 0;var invprincipalvar = eval(dpamtvar) + eval(closecostvar);var earnedinterest = stripnumb(form.savintrate.value);if (earnedinterest >= 1.0) {earnedinterest = earnedinterest / 100.0;}earnedinterest /= 12;var inflatinterestvar = 1;while(countit < livinmonvar) {if(countit > 0 && countit % 12 == 0) {accumappvar = accumappvar * expectappvar;monrentvar = monrentvar * anninflationvar;inflatinterestvar = inflatinterestvar * anninflationvar;}totalrentvar = eval(totalrentvar) + eval(monrentvar);totalrentvar = eval(totalrentvar) + eval(monrentinsvar);if(countit < numbmon) {intamt = principal * int;accumintvar = eval(accumintvar) + eval(intamt);prinamt = eval(monpmt) - eval(intamt);principal = eval(principal) - eval(prinamt);}if(mtginskt == 1) {accunmtginsvar = eval(accunmtginsvar) + eval(mtginsvar * principal);}invinterestvar = earnedinterest * invprincipalvar;invprincipalvar = eval(invprincipalvar) + eval(invinterestvar);countit = eval(countit) + eval(1);}var assocduesvar = stripnumb(form.associationdues.value);if(assocduesvar == "" || assocduesvar == 0) {assocduesvar = 0;}var assocduetot = assocduesvar * 12 * livintimevar * inflatinterestvar;var proptaxvar = stripnumb(form.annualproptax.value);if(proptaxvar == "" || proptaxvar == 0) {proptaxvar = 0;}var totproptaxvar = proptaxvar * livintimevar * inflatinterestvar;var maintenvar = form.monmainten.value;if(maintenvar == "" || maintenvar == 0) {maintenvar = 0;}var totmaintcostvar = maintenvar * 12 * livintimevar * inflatinterestvar;var hminsratevar = stripnumb(form.hminsrate.value);if(hminsratevar == "" || hminsratevar == 0) {hminsratevar = 0;} else if(hminsratevar >= .01) {hminsratevar = hminsratevar / 100;}var hminstotvar = hminsratevar * purpricevar * livintimevar * inflatinterestvar;var homenetgainvar = eval(accumappvar) - eval(purpricevar);var tottaxdedvar = eval(accumintvar) + eval(totproptaxvar) + eval(feeamtvar);var incomtaxvar = stripnumb(form.incomtax.value);if(incomtaxvar == 0 || incomtaxvar == "") {incomtaxvar = 0;} else if(incomtaxvar >= 1) {incomtaxvar = incomtaxvar / 100;}var tottaxsavvar = incomtaxvar * tottaxdedvar;var realcommvar = stripnumb(form.realtorCom.value);if(realcommvar == 0 || realcommvar == "") {realcommvar = 0;} else if(realcommvar >= 1) {realcommvar = realcommvar / 100;}var sell_costvar = accumappvar * realcommvar;var investedearnvar = eval(invprincipalvar) - eval(dpamtvar) - eval(closecostvar);form.renttot.value = totalrentvar;form.mon_pmt.value = monpmt;form.accum_int.value = accumintvar;form.close_cost.value = closecostvar;form.totprop_tax.value = totproptaxvar;form.totmain_cost.value = totmaintcostvar;form.tothmins_cost.value = hminstotvar;form.home_netgain.value = homenetgainvar;form.mtgins_cost.value = accunmtginsvar;form.invested_earn.value = investedearnvar;form.aasoc_duetot.value = assocduetot;form.tottax_sav.value = tottaxsavvar;form.sell_cost.value = sell_costvar;var totrent_costvar = totalrentvar;form.totrent_cost.value = totrent_costvar;var totrent_benevar = investedearnvar;form.totrent_bene.value = totrent_benevar;var netrent_costvar = eval(totalrentvar) - eval(investedearnvar);var totbuy_costvar = eval(accumintvar) + eval(closecostvar) + eval(totproptaxvar) + eval(totmaintcostvar) + eval(hminstotvar) + eval(accunmtginsvar) + eval(assocduetot) + eval(sell_costvar);form.totbuy_cost.value = totbuy_costvar;var totbuy_benevar = eval(homenetgainvar) + eval(tottaxsavvar);form.totbuy_bene.value = totbuy_benevar;var netbuy_costvar = eval(totbuy_costvar) - eval(totbuy_benevar);form.netrent_cost.value = "$" + formatnumb(netrent_costvar);form.netbuy_cost.value = "$" + formatnumb(netbuy_costvar);var diff = 0;var summaryvar = "";if(netrent_costvar > netbuy_costvar) {diff = eval(netrent_costvar) - eval(netbuy_costvar);summaryvar = "You will save $" + formatnumb(diff) + " if you buy instead of rent."} else {diff = eval(netbuy_costvar) - eval(netrent_costvar);summaryvar = "You will save $" + formatnumb(diff) + " if you rent instead of buy."}form.summary.value = summaryvar;}}function de_tail(form) {calculateform(form);var part1 = ("<head><title>Rent Vs. Buying Detail</title><link rel='stylesheet' type='text/css' href='../rentvsbuyinghome.css'></head>" + "<body bgcolor = '#FFFFFF'>");var part2 = ("<div align=center class='whitebackground' id='kt'><table width=550 border=0 cellspacing=0 cellpadding=0><tr><td><img src=../media/box_top_left.gif width=11 height=11 border=0></td><td background=../media/top.gif><img src=../media/spacer.gif width='1' height='11' border='0' alt=''></td><td><img src=../media/box_top_right.gif width='11' height='11' border='0' alt=''></td></tr><tr><td align='right' background=../media/left.gif><img src=../media/spacer.gif width='11' height='0' border='0' alt=''></td><td align='center'><center><table border=0 cellspacing=0 cellpadding=0><tr><td colspan=2><div align='center' class='kt_header'><font face='arial'><big><b>Rent</b></big></font></div></td><td><div align='center' class='kt_header'><font face='arial'><big><b>vs.</b></big></font></div></td><td colspan=2><div align='center' class='kt_header'><font face='arial'><big><b>Buy</b></big></font></div></td></tr><tr><td colspan=2 valign=top><font face='arial'><small>Monthly Rent Payment: $" + formatnumb(form.monrent.value) + "<br>Annual Return on Investment: " + formatnumb(form.savintrate.value) + "%</small></font></td><td></td><td colspan=2><font face='arial'><small>Purchase Price: $" + formatnumb(form.purprice.value) + "<br>Down Payment: $" + formatnumb(form.dpamt.value) + "<br>Mortgage Term: " + form.numbyears.value + " years<br>Interest Rate: " + formatnumb(form.annualrate.value) + "%<br>Monthly Mortgage Payment: $" + formatnumb(form.mon_pmt.value) + "<br><br></small></font></td></tr><tr><td colspan=5><center><font face='arial'><big><b>Cost Benefit Analysis</b></big></font><br><font face='arial'><small><small>Calculations are based upon a " + form.anninflation.value + "% annual inflation rate over the course of " + form.livintime.value + " years (the time between now and when you estimate you would sell the home). Please allow for slight rounding differences.</small></small></font></center></td></tr><tr><td><div align='left' class='kt_header5'><font face='arial'><small><b>Renting Costs</b></small></font></div></td><td colspan='2'><div align='center' class='kt_header5'><font face='arial'><small><b>Amount</b></small></font></div></td><td><div align='left' class='kt_header5'><font face='arial'><small><b>Buying Costs</b></small></font></div></td><td><div align='right' class='kt_header5'><font face='arial'><small><b>Amount</b></small></font></div></td></tr>");var row1 = "<tr><td><font face='arial'><small>Rent & Insurance:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.renttot.value) + "</small></font></td><td> </td><td><font face='arial'><small>Interest Payments:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.accum_int.value) + "</small></font></td></tr>";var row2 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Closing Costs:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.close_cost.value) + "</small></font></td></tr>";var row3 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Property Tax Costs:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.totprop_tax.value) + "</small></font></td></tr>";var row4 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Maintenance Costs:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.totmain_cost.value) + "</small></font></td></tr>";var row5 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Homeowner's Insurance:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.tothmins_cost.value) + "</small></font></td></tr>";var row6 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Association Dues:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.aasoc_duetot.value) + "</small></font></td></tr>";var row7 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Mortgage Insurance:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.mtgins_cost.value) + "</small></font></td></tr>";var row7B = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Cost of selling home:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.sell_cost.value) + "</small></font></td></tr>";var row8 = "<tr><td align=left><font face='arial'><small><b>Total Costs</b></small></font></td><td align=right><font face='arial'><small><b>$" + formatnumb(form.totrent_cost.value) + "</b></small></font></td><td> </td><td align=left><font face='arial'><small><b>Total Costs</b></small></font></td><td align=right><font face='arial'><small><b>$" + formatnumb(form.totbuy_cost.value) + "</b></small></font></td></tr>";var spacer = "<tr><td height='12' align=right> </td><td> </td><td> </td><td> </td><td align=right></td></tr>";var row9 = "<tr><td><div align='left' class='kt_header5'><font face='arial'><small><b>Renting Benefits</b></small></font></div></td><td colspan='2'><div align='center' class='kt_header5'><font face='arial'><small><b>Amount</b></small></font></div></td><td><div align='left' class='kt_header5'><font face='arial'><small><b>Buying Benefits</b></small></font></div></td><td><div align='right' class='kt_header5'><font face='arial'><small><b>Amount</b></small></font></div></td></tr>";var row10 = "<tr><td><font face='arial'><small>Earned Interest:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.invested_earn.value) + "</small></font></td><td> </td><td><font face='arial'><small>Tax Savings:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.tottax_sav.value) + "</small></font></td></tr>";var row11 = "<tr><td align=right> </td><td> </td><td> </td><td><font face='arial'><small>Home Appreciation:</small></font></td><td align=right><font face='arial'><small>$" + formatnumb(form.home_netgain.value) + "</small></font></td></tr>";var row12 = "<tr><td align=left><font face='arial'><small><b>Total Benefits</b></small></font></td><td align=right><font face='arial'><small><b>$" + formatnumb(form.totrent_bene.value) + "</b></small></font></td><td> </td><td align=left><font face='arial'><small><b>Total Benefits</b></small></font></td><td align=right><font face='arial'><small><b>$" + formatnumb(form.totbuy_bene.value) + "</b></small></font></td></tr>";var row13 = "<tr><td align=left><font face='arial'><small><b>Net Cost of Renting:</b></small></font></td><td align=right><font face='arial'><small><b>" + form.netrent_cost.value + "</b></small></font></td><td> </td><td align=left><font face='arial'><small><b>Net Cost of Buying:</b></small></font></td><td align=right><font face='arial'><small><b>" + form.netbuy_cost.value + "</b></small></font></td></tr><tr><td height='12' colspan=5></td></tr>";var summary = "<tr><td colspan=5><div align='center' class='kt_header'><font face='arial'><small><b>Summary:</b> " + form.summary.value + "</small></font></div></td></tr>";var part4 = ("</table><br><center><form method='post'><input type=\'button\' value=\'Close\' onclick=\'window.close()\'></form></center></td><td background=../media/right.gif><img src=../media/spacer.gif width=1 height=1 border=0 alt=''></td></tr><tr><td><img src=../media/box_bottom_left.gif width=11 height=11 border=0 alt=''></td><td background=../media/bottom.gif><img src=../media/spacer.gif width=1 height=11 border=0 alt=''></td><td><img src=../media/box_bottom_right.gif width=11 height=11 border=0 alt=''></td></tr></table></div></body></html>");var schedule = (part1 + "" + part2 + "" + row1 + "" + row2 + "" + row3 + "" + row4 + "" + row5 + "" + row6 + "" + row7 + "" + row7B + "" + row8 + "" + spacer + "" + row9 + "" + row10 + "" + row11 + "" + row12 + "" + spacer + "" + row13 + "" + summary + "" + part4 + ""); reportWin = window.open("","","width=600,height=600,toolbar=no,menubar=yes,scrollbars=yes");reportWin.document.write(schedule);reportWin.document.close();}var helpTexts = new Array();helpTexts["mo_rent"] = "Enter the amount of the monthly rent payment.";helpTexts["mo_rent_ins"] = "Enter the monthly rental insurance premium.";helpTexts["annual_inf"] = "Enter the annual inflation rate. Enter 4% as 4. This is used to inflate the costs of rent, insurance, maintenance, dues and property taxes for the length of time you will own the home.";helpTexts["pur_price"] = "Enter the total purchase price of the home -- not including closing costs.";helpTexts["dp_amt"] = "Enter the amount you will have available to put down on the house after you have set aside the cash you will need to pay the closing costs.";helpTexts["mtg_term"] = "Enter the number of years you are financing the home for.";helpTexts["mtgrate"] = "Enter the annual interest rate of the morgage. Enter 8% as simply 8 (do not include percent sign).";helpTexts["disc_point"] = "Discount points are paid up front in order to reduce the interest rate of your mortgage. Each point represents 1% of your mortgage balance. Enter 1% as simply 1 (do not include percent sign).";helpTexts["orig_fee"] = "The percentage (often as high as 1% of the loan amount) that a lending institution charges for processing and originating a loan.";helpTexts["other_cost"] = "The total of other loan related costs, such as filing fees, appraiser fees, etc.";helpTexts["mtg_ins"] = "If your downpayment is less than 20% of the value of the home you are buying, you may be required to pay mortgage insurance of somewhere between 0.2% and 0.5% of your principal balance each month. Enter .04% simply as .4 (do not include percent sign).";helpTexts["owner_ins"] = "Your homeowner's insurance rate -- entered as a percentage of your home's value. Typical rate is 0.5%. Enter .5% simply as .5 (do not include percent sign).";helpTexts["assoc_due"] = "If you are a member of a homeowner's association, enter your monthly dues in this field.";helpTexts["maint"] = "Enter the amount you expect to spend on repairing and maintaining your home.";helpTexts["annual_tax"] = "Enter the amount of property taxes you expect to pay each year.";helpTexts["inc_tax"] = "Enter your combined state and federal income tax percentage rate. Enter 28% simply as 28 (do not include percent sign).";helpTexts["earn_int"] = "Enter the annual interest rate you expect to earn on the down payment and closing costs you will invest if you decide to rent instead of buy. Enter 7% simply as 7 (do not include percent sign).";helpTexts["expect_app"] = "Enter the percentage amount you expect your house to appreciate by each year. Enter 3% simply as 3 (do not include percent sign).";helpTexts["liv_in"] = "Enter the number of years you expect to rent or own the property you are considering. Typically, if you plan to move out of a home in less than 5 years from the date of purchase, you may be better off renting.";helpTexts["commish"] = "Enter the percentage of your home's selling price that you expect to pay a real estate agent or broker when it's time to sell your home. Enter 7% simply as 7 (do not include percent sign).";var ktArray = new Array();function kt_init() {var kt = document.getElementById("kt");if (kt) {var inputs=kt.getElementsByTagName("input"), selects=kt.getElementsByTagName("select"), el, int=0;while (el = inputs[int++]) {el.onchange = function () {reCalculateKt(this);}}int = 0;while (el = selects[int++]) {el.onchange = function () {reCalculateKt(this);}}}refreshVariables();reCalculateKt();applyHelpPopups();}function refreshVariables() {var kt = document.getElementById("kt");if (kt) {var inputs=kt.getElementsByTagName("input"), selects=kt.getElementsByTagName("select"), el, int=0;ktArray["vars"] = new Array();while (el = inputs[int++]) {if (el.id) {ktArray["vars"][el.id] = $(el.id, el.getAttribute("valuetype"));if (el.getAttribute("valuetype")!="raw") {el.value = numberFormat(ktArray["vars"][el.id], el.getAttribute("valuetype"), el.getAttribute("valueformat"));}}}int = 0;while (el = selects[int++]) {if (el.id) ktArray["vars"][el.id] = $(el.id, el.getAttribute("valuetype"));}}}function numberFormat(value, valuetype, valueformat) {if (value || value==0) {var formatparts = new Array();if (valueformat) formatparts = valueformat.split(".");var decimals = formatparts[1] ? formatparts[1] : 2;switch(valuetype) {case "money":if (value===0) {value = "";for (iii=0; iii<decimals; iii++) {if (!value) value += ".";value += "0";}value = "$0"+value;} else {value = value.toFixed(decimals);value = addCommas(value);value = "$"+value;}break;case "percent":value = value.toFixed(decimals)+"%";break;case "number":if (value===0) {value = "";for (iii=0; iii<decimals; iii++) {if (!value) value += ".";value += "0";}value = "0"+value;} else {value = value.toFixed(decimals);value = value;}break;}} else {value = "";}return value;}function $(id, type) {if (!type) type = "number";var returnVar = document.getElementById(id).value;if (type!="raw") {returnVar = returnVar.replace("$", "");returnVar = returnVar.replace("%", "");returnVar = returnVar.replace(/,/g, "");}if (type!="date" && type!="raw") returnVar = parseFloat(returnVar);return returnVar;}function addCommas(nStr){nStr += '';z = nStr.split('.');x1 = z[0];x2 = z.length > 1 ? '.' + z[1] : '';var rgx = /(\d+)(\d{3})/;while (rgx.test(x1)) {x1 = x1.replace(rgx, '$1' + ',' + '$2');}return x1 + x2;}function applyHelpPopups() {if (!helpTexts) return 0;for (var fieldId in helpTexts) {var fieldObj = document.getElementById(fieldId);fieldObj.onmouseover = function () {hideHelp();};if (!fieldObj) continue;if (fieldId.indexOf("help_")==0) {var prevSibling = fieldObj;} else {if (fieldObj.tagName=="INPUT" || fieldObj.tagName=="SELECT") {var fieldParent = fieldObj.parentNode;} else {var fieldParent = fieldObj;}if (!fieldParent) continue;var prevSibling = fieldParent.previousSibling;if (!prevSibling) continue;if (prevSibling.tagName!="DIV") prevSibling = prevSibling.previousSibling;if (!prevSibling) continue;}prevSibling.style.position = "relative";if (fieldId.indexOf("help_")==0) {var reddot = document.createElement("img");reddot.src="../media/question_icon.gif";reddot.className = "kt_reddot_img";} else {var reddot = document.createElement("div");reddot.className = "kt_reddot";}prevSibling.appendChild(reddot);prevSibling.setAttribute("help_id", fieldId);prevSibling.onclick = function () {showHelp(this, this.getAttribute("help_id"));};prevSibling.onmouseout = function () {setTimeout("hideHelp('"+this.getAttribute('help_id')+"')", 500);}}return 1;}var overHelp = 0;function showHelp(fieldObj, help_id) {if (!fieldObj || !help_id || !helpTexts[help_id]) return 0;var help_box = document.getElementById("help_box");if (!help_box) {help_box = document.createElement("div");help_box.id = "help_box";help_box.className = "help_box";help_box.onmouseover = function () {overHelp = 1;};help_box.onmouseout = function () {overHelp = 0;};document.body.appendChild(help_box);help_box = document.getElementById("help_box");}var field_top = findPosY(fieldObj);var field_left = findPosX(fieldObj);help_box.innerHTML = helpTexts[help_id];help_box.style.top = (field_top+10)+"px";help_box.style.left = (field_left+50)+"px";help_box.style.display = "block";help_box.setAttribute("help_id", help_id);}function hideHelp(help_id) {if (overHelp) return 1;var help_box = document.getElementById("help_box");if (help_box) {if (help_id && help_box.getAttribute("help_id")!=help_id) return 0;help_box.style.display = "none";}return 1;}function findPosX(obj) {var curleft = 0;if (obj.offsetParent) {while (obj.offsetParent) {curleft += obj.offsetLeft;obj = obj.offsetParent;}} else if (obj.z) curleft += obj.z;return curleft;}function findPosY(obj) {var curtop = 0;if (obj.offsetParent) {while (obj.offsetParent) {curtop += obj.offsetTop;obj = obj.offsetParent;}} else if (obj.x) curtop += obj.x;return curtop;}

