Bay Area Mortgage Calculator
$0
function format(n){ return n.toLocaleString('en-US',{style:'currency',currency:'USD',maximumFractionDigits:0}); }
function mortgagePayment(loan,rate,months){ let r=rate/12; return loan*(r*Math.pow(1+r,months))/(Math.pow(1+r,months)-1); }
function sync(slider,box){ slider.addEventListener("input",()=>{box.value=slider.value;calc();}); box.addEventListener("input",()=>{slider.value=box.value;calc();}); }
sync(price,priceBox); sync(down,downBox); sync(rate,rateBox);
taxCounty.addEventListener("change",function(){ if(this.value!=="custom"){taxRate.value=this.value;calc();} });
insuranceArea.addEventListener("change",function(){ if(this.value!=="custom"){insuranceManual.value=this.value;calc();} });
function calc(){
let purchase=parseFloat(priceBox.value)||0; let downPct=(parseFloat(downBox.value)||0)/100; let rateVal=(parseFloat(rateBox.value)||0)/100;
let downAmt=purchase*downPct; let loan=purchase-downAmt;
let mortgage=mortgagePayment(loan,rateVal,360);
let taxPercent=(parseFloat(taxRate.value)||0)/100; let taxes=purchase*taxPercent/12;
let ins=parseFloat(insuranceManual.value)||0; let hoaVal=parseFloat(hoa.value)||0;
let pmi=0; if(downPct<0.20){pmi=(loan*0.007)/12;} let total=mortgage+taxes+ins+hoaVal+pmi; let incomeNeeded=(total/.45)*12; /* cash breakdown */ let lenderFees=loan*0.0075; let titleEscrow=purchase*0.003; let prepaidTaxes=taxes*3; let prepaidInsurance=ins*12; let impound=taxes*2+ins*2; let totalCash=downAmt+lenderFees+titleEscrow+prepaidTaxes+prepaidInsurance+impound; payment.innerText=format(total); breakdown.innerText="Mortgage "+format(mortgage)+" | Taxes "+format(taxes)+" | Insurance "+format(ins)+" | HOA "+format(hoaVal)+" | PMI "+format(pmi); income.innerText="Income Needed: "+format(incomeNeeded)+"/yr"; cashDetails.innerHTML= `
`;
cashTotal.innerText=format(totalCash); }
calc();
function sendText(){ let purchase=priceBox.value; let downPct=downBox.value; let total=payment.innerText; let incomeText=income.innerText; let address=document.getElementById("address").value || "a home I'm considering";
let message="Hi! I am looking at "+address+ "%0APrice: "+purchase+ "%0ADown: "+downPct+"%"+ "%0AEstimated Payment: "+total+ "%0A"+incomeText;
let phone="14155551234"; window.location.href="sms:"+phone+"?&body="+message; }
“`