// compressed for performance - uncompressed code and notice available at URI http://www.rbvrealestate.com/resources/js/calc_tax_uncompressed.js
function stripNum(num) { var iPercent
var iDollar
var iSpace
var iComma
var numLength = num.length
if(numLength > 0) { num=num.toString(); iPercent = num.indexOf("%"); if(iPercent >= 0) { num=num.substring(0,iPercent) + "" + num.substring(iPercent + 1,numLength); numLength=num.length;}
iDollar = num.indexOf("$"); if(iDollar >= 0) { num=num.substring(0,iDollar) + "" + num.substring(iDollar + 1,numLength); numLength=num.length;}
iSpace = num.indexOf(" "); if(iSpace >= 0) { num=num.substring(0,iSpace) + "" + num.substring(iSpace + 1,numLength); numLength=num.length;}
iComma = num.indexOf(","); if(iComma >= 0) { while(iComma >=1) { num=num.substring(0,iComma) + "" + num.substring(iComma + 1,numLength); numLength=num.length; iComma = num.indexOf(",");}
}
num = eval(num);} else { num = 0;}
return num;}
function computeMonthlyPayment(prin, numPmts, intRate) { var pmtAmt = 0; if(intRate == 0) { pmtAmt = prin / numPmts;} else { if (intRate >= 1.0) { intRate = intRate / 100.0;}
intRate /= 12; var pow = 1; for (var j = 0; j < numPmts; j++)
pow = pow * (1 + intRate); pmtAmt = (prin * pow * intRate) / (pow - 1);}
return pmtAmt;}
function formatNumberDec(num, places, comma) { var isNeg=0; if(num < 0) { num=num*-1; isNeg=1;}
var myDecFact = 1; var myPlaces = 0; var myZeros = ""; while(myPlaces < places) { myDecFact = myDecFact * 10; myPlaces = eval(myPlaces) + eval(1); myZeros = myZeros + "0";}
onum=Math.round(num*myDecFact)/myDecFact; integer=Math.floor(onum); if (Math.ceil(onum) == integer) { decimal=myZeros;} else{ decimal=Math.round((onum-integer)* myDecFact)
}
decimal=decimal.toString(); if (decimal.length<places) { fillZeroes = places - decimal.length; for (z=0;z<fillZeroes;z++) { decimal="0"+decimal;}
}
if(places > 0) { decimal = "." + decimal;}
if(comma == 1) { integer=integer.toString(); var tmpnum=""; var tmpinteger=""; var y=0; for (x=integer.length;x>0;x--) { tmpnum=tmpnum+integer.charAt(x-1); y=y+1; if (y==3 & x>1) { tmpnum=tmpnum+","; y=0;}
}
for (x=tmpnum.length;x>0;x--) { tmpinteger=tmpinteger+tmpnum.charAt(x-1);}
finNum=tmpinteger+""+decimal;} else { finNum=integer+""+decimal;}
if(isNeg == 1) { finNum = "-" + finNum;}
return finNum;}
function computeForm(form) { if(form.home_value.value == "") { alert("Please enter the home value."); form.home_value.focus();} else
if(form.loan_amount.value == "") { alert("Please enter the loan amount."); form.loan_amount.focus();} else
if(form.interest_rate.value == "") { alert("Please enter the loan amount."); form.interest_rate.focus();} else
if(form.loan_term.value == "") { alert("Please enter the term of the loan in years."); form.loan_term.focus();} else
if(form.loan_term.value == "") { alert("Please enter the term of the loan in years."); form.loan_term.focus();} else { var Vloan_amount = stripNum(form.loan_amount.value); var Vinterest_rate = stripNum(form.interest_rate.value); var Vloan_term = stripNum(form.loan_term.value); var Vnum_pmts = Vloan_term * 12; var Vpayment = computeMonthlyPayment(Vloan_amount, Vnum_pmts, Vinterest_rate); form.payment.value = "$" + formatNumberDec(Vpayment,2,1); var Vpoints = stripNum(form.pts.value); if(Vpoints >= 1) { Vpoints /= 100;}
var Vloan_points = Vloan_amount * Vpoints; form.loan_points.value = "$" + formatNumberDec(Vloan_points,2,1); var i = Vinterest_rate; if(i >= 1) { i /=100;}
i /=12; var first_period_int = Vloan_amount * i; var Vpurchase_month = form.purchase_month.options[form.purchase_month.selectedIndex].value; var Vinterest_paid = 0; var period_int = 0; var interest_bal = 12; var count = 0; var Vtest = 0; while(count <=12) { count += 1; if(count == 1) { period_int = first_period_int * 12 * .958333594; interest_bal = period_int;} else
if(count == 12) { interest_bal = first_period_int * .6;} else { interest_bal = eval(interest_bal) - eval(first_period_int);}
if(count == Vpurchase_month) { Vinterest_paid = interest_bal;}
}
form.interest_paid.value = "$" + formatNumberDec(Vinterest_paid,2,1); var Vstandard_deduction = 0; var Vfiling_status = form.filing_status.options[form.filing_status.selectedIndex].value; if(Vfiling_status == 1) { Vstandard_deduction = 4250;} else { Vstandard_deduction = 7100;}
form.standard_deduction.value = "$" + formatNumberDec(Vstandard_deduction,2,1); var Vinterest_points = eval(Vloan_points) + eval(Vinterest_paid); form.interest_points.value = "$" + formatNumberDec(Vinterest_points,2,1); var Vtotal_taxes = stripNum(form.real_estate_taxes.value); form.total_taxes.value = "$" + formatNumberDec(Vtotal_taxes,2,1); var Vmedical_dental = stripNum(form.medical_dental.value); var Vgifts_charity = stripNum(form.gifts_charity.value); var Vtheft_losses = stripNum(form.theft_losses.value); var Vjob_expenses = stripNum(form.job_expenses.value); var Vother_deductions = eval(Vmedical_dental) + eval(Vgifts_charity) + eval(Vtheft_losses) + eval(Vjob_expenses); form.other_deductions.value = "$" + formatNumberDec(Vother_deductions,2,1); var Vitemized_deductions = eval(Vinterest_points) + eval(Vtotal_taxes) + eval(Vother_deductions); form.itemized_deductions.value = "$" + formatNumberDec(Vitemized_deductions,2,1); var Vadditional = eval(Vitemized_deductions) - eval(Vstandard_deduction); form.additional.value = "$" + formatNumberDec(Vadditional,2,1); var Vtax_rate = form.tax_rate.options[form.tax_rate.selectedIndex].value; var Vstate_tax_rate = stripNum(form.state_tax_rate.value); if(Vstate_tax_rate >= 1) { Vstate_tax_rate /= 100;}
var total_tax_rate = eval(Vtax_rate) + eval(Vstate_tax_rate); var Vtax_benefit = Vadditional * total_tax_rate; form.tax_benefit.value = "$" + formatNumberDec(Vtax_benefit,2,1); var monthly_tax_reduct = 0; if(Vpurchase_month < 12) { monthly_tax_reduct = Vtax_benefit / (eval(12) - eval(Vpurchase_month));} else { monthly_tax_reduct = Vtax_benefit * 10;}
var Vafter_tax_pmt = eval(Vpayment) - eval(monthly_tax_reduct); form.after_tax_pmt.value = "$" + formatNumberDec(Vafter_tax_pmt,2,1);}
}
function clearResults(form) { form.payment.value = ""; form.loan_points.value = ""; form.interest_paid.value = ""; form.standard_deduction.value = ""; form.interest_points.value = ""; form.total_taxes.value = ""; form.other_deductions.value = ""; form.itemized_deductions.value = ""; form.additional.value = ""; form.tax_benefit.value = ""; form.after_tax_pmt.value = "";}