function checkNumber(input,min,max,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=parseFloat(str);if(num<min||max<num){alert(msg+" not in range ["+min+".."+max+"]");return false}input.value=str;return true}function computeField(input){if(input.value!=null&&input.value.length!=0)input.value=""+eval(input.value);}function computeForm(form){if((form.income.value==null||form.income.value.length==0)||(form.debt.value==null||form.debt.value.length==0)||(form.interest.value==null||form.interest.value.length==0)||(form.years.value==null||form.years.value.length==0)){return}if(!checkNumber(form.income,1,10000000,"income")||!checkNumber(form.debt,0,10000000,"debt")||!checkNumber(form.interest,.001,99,"interest")||!checkNumber(form.years,10,30,"years")||!checkNumber(form.down,0,1000000,"down")){form.payment.value="Invalid";return}annual=form.income.value;monthincome=annual/12;debtincome=monthincome*0.315;monthdebt=form.debt.value;monthexpence=debtincome-monthdebt;form.payment.value=0.8*monthexpence;i=form.interest.value;if(i>1.0){i/=100.0;form.interest.value=i}i/=12;y=form.years.value;var d=form.down.value;form.balance.value=fmt(form.payment.value*(1-1/Math.pow(1+i,y*12))/i);b=form.balance.value;form.price.value=fmt(eval(d)+eval(b))}function fmt(value){re=Math.floor(value)+".";var cents=100*(value-Math.floor(value))+0.5;re+=Math.floor(cents/10);re+=Math.floor(cents%10);return re}function clearForm(form){form.income.value="";form.debt.value="";form.interest.value="";form.years.value="";form.down.value=""}function formatCurrency(num){num=num.toString().replace(/\$|\,/g,'');if(isNaN(num))num="0";sign=(num==(num=Math.abs(num)));num=Math.floor(num*100+0.50000000001);cents=num%100;num=Math.floor(num/100).toString();if(cents<10)cents="0"+cents;for(var i=0;i<Math.floor((num.length-(1+i))/3);i++)num=num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));return(((sign)?'':'-')+num);}