// JavaScript Document function compute_down(which){ var mortgage = document.MortgageForm; var percentvalue, down, loan; /* preprocess loanamount */ loan = mortgage.loanamount.value; while ((pos=loan.indexOf(",")) >= 0){ temp1 = loan.substring(0, pos); temp2 = loan.substring(pos+1, loan.length); loan = temp1 + temp2; } /* preprocess downamount */ down = mortgage.downamount.value; while ((pos=down.indexOf(",")) >= 0){ temp1 = down.substring(0, pos); temp2 = down.substring(pos+1, down.length); down = temp1 + temp2; } if (which == "downamount"){ percentvalue = Math.floor((parseFloat(down)/parseFloat(loan)*100.0)*100) / 100; mortgage.percent.value = percentvalue; } if (which == "percent"){ down = parseInt(parseFloat(loan) * parseFloat(mortgage.percent.value) / 100.0); mortgage.downamount.value = down; } /* put comma in dollar values */ mortgage.loanamount.value = comma_it(mortgage.loanamount.value); mortgage.downamount.value = comma_it(mortgage.downamount.value); } function compute(){ var mortgage = document.MortgageForm; var annualRate, monthRate, months, principle, payment; var loan, down, pos, temp1, temp2; /* validate certain values */ if (parseInt(mortgage.loanamount.value) <= 0){ if (parseInt(mortgage.loanamount.defaultValue) > 0){ mortgage.loanamount.value = mortgage.loanamount.defaultValue; } else { mortgage.loanamount.value = "250000"; } } if (parseInt(mortgage.downamount.value) < 0){ if (parseInt(mortgage.downamount.defaultValue) >= 0){ mortgage.downamount.value = mortgage.downamount.defaultValue; mortgage.percent.value = mortgage.percent.defaultValue; } else { mortgage.downamount.value = parseInt(parseFloat(mortgage.loanamount.value) * 20.0 / 100.0); mortgage.percent.value = "20.0"; } } if (parseInt(mortgage.percent.value) < 0){ if (parseInt(mortgage.percent.defaultValue) >= 0){ mortgage.downamount.value = mortgage.downamount.defaultValue; mortgage.percent.value = mortgage.percent.defaultValue; } else { mortgage.downamount.value = parseInt(parseFloat(mortgage.loanamount.value) * 20.0 / 100.0); mortgage.percent.value = "20.0"; } } if (parseFloat(mortgage.rate.value) < 0.0){ if (parseFloat(mortgage.rate.defaultValue) > 0.0){ mortgage.rate.value = mortgage.rate.defaultValue; } else { mortgage.rate.value = "8.5"; } } if (parseInt(mortgage.year.value) <= 0) { if (parseInt(mortgage.year.defaultValue) > 0) { mortgage.year.value = mortgage.year.defaultValue; } else { mortgage.year.value = "30"; } } /* preprocess loanamount */ loan = mortgage.loanamount.value; while ((pos=loan.indexOf(",")) >= 0) { temp1 = loan.substring(0, pos); temp2 = loan.substring(pos+1, loan.length); loan = temp1 + temp2; } /* preprocess downamount */ down = mortgage.downamount.value; while ((pos=down.indexOf(",")) >= 0) { temp1 = down.substring(0, pos); temp2 = down.substring(pos+1, down.length); down = temp1 + temp2; } /* the real computation */ annualRate = parseFloat(mortgage.rate.value) / 100; monthRate = annualRate / 12.0; months = parseInt(mortgage.year.value) * 12; principle = parseInt(loan) - parseInt(down); payment = Math.floor((principle*monthRate)/(1-Math.pow((1+monthRate),(-1*months)))*100)/100; /* put value up */ document.getElementById("mortgage.loan").innerHTML = formatNumber( principle, 2 ); document.getElementById("mortgage.numberof").innerHTML = months; document.getElementById("mortgage.monthly").innerHTML = formatNumber( payment, 2 ); /* put comma in dollar values */ mortgage.loanamount.value = comma_it(mortgage.loanamount.value); mortgage.downamount.value = comma_it(mortgage.downamount.value); } function comma_it(target){ var newtarget, decimal, pos, temp1, temp2, i; newtarget = ""; /* get rid of existing commas */ while ((pos=target.indexOf(",")) >= 0) { temp1 = target.substring(0, pos); temp2 = target.substring(pos+1, target.length); target = temp1 + temp2; } /* extract decimals for safe keeping */ decimal = ""; if ((pos=target.indexOf(".")) >= 0){ decimal = target.substring(pos, target.length); target = target.substring(0, pos); } /* here comes the real work */ for (i = target.length-1; i >= 0; i--) { if (((target.length-i-1) % 3) == 0) { if ((target.length-i-1) > 0) { newtarget = "," + newtarget; } } newtarget = target.substring(i,i+1) + newtarget; } /* add on any decimals */ newtarget = newtarget + decimal; return newtarget; }