var rates=new Array(0,0,0);


rates[0]=5.5500000;
rates[1]=5.2250000;
rates[2]=5.1750000;

var terms=[30,15,30];
var fields=null;

function initMortgage(){
    if (document.getElementById('i2'))
        document.getElementById('i2').value = '5.5500000';
    fields=null;
    upRate();
    doCalc()
}

function getFields(){
    fields={};
    var f=document.forms['calcForm']||document.calcForm||document.getElementById('calcForm')||null;
    var e=f&&f.elements||null;
    var i1=fields.i1=e&&(e['i1']||e.i1)||f&&f.i1||document.getElementsByName('i1')[0]||null;
    var i2=fields.i2=e&&(e['i2']||e.i2)||f&&f.i2||document.getElementsByName('i2')[0]||null;
    var i3=fields.i3=e&&(e['i3']||e.i3)||f&&f.i3||document.getElementsByName('i3')[0]||null;
    var i4=fields.i4=e&&(e['i4']||e.i4)||f&&f.i4||document.getElementsByName('i4')[0]||null;
    var i5=fields.i5=e&&(e['i5']||e.i5)||f&&f.i5||document.getElementsByName('i5')[0]||null;
    var i6=fields.i6=e&&(e['i6']||e.i6)||f&&f.i6||document.getElementsByName('i6')[0]||null;
    var o2=fields.o2=e&&(e['o2']||e.o2)||f&&f.o2||document.getElementsByName('o2')[0]||null;
    var o3=fields.o3=e&&(e['o3']||e.o3)||f&&f.o3||document.getElementsByName('o3')[0]||null;
    return i1&&i2&&i3&&i4&&o2&&fields;
}

function upRate(){
    var f=fields||getFields();
    f&&(f.i2.value=printPct(rates[f.i1.options[f.i1.selectedIndex||0].value||0],3));
    f&&(f.i5.value=terms[f.i1.options[f.i1.selectedIndex||0].value||0]);
    f&&(f.i6.value=f.i5.value*12); //terms[f.i1.options[f.i1.selectedIndex||0].value||0]*12);
}

function doCalc(){
    var f=fields||getFields();
    if(f){
        var loan=f.i1.options[f.i1.selectedIndex||0].value||0;
        var rate=Math.max(0,parsePct(f.i2)/100);
        var price=Math.max(0,parseCurrency(f.i3));
        var down=Math.min(1,Math.max(0,parsePct(f.i4)/100));
        var term=f.i5.value; //terms[loan];
        var downAmount=Math.round(price*down);
        var loanAmount=price-downAmount;
        var mpr=rate/12;
        var payment=Math.round((loanAmount*mpr*Math.pow(1+mpr,term*12))/(Math.pow(1+mpr,term*12)-1));
        f.i6.value=f.i5.value*12;
        f.o2.value=printCurrency(payment);
        f.o3.value=printCurrency(loanAmount);
//        f.o3.value=printCurrency(payment*f.i6.value);
    }
}

function formatCurrency(field){
    field.value=printCurrency(parseCurrency(field));
}

function parseCurrency(field){
    var f=''+field.value;
    var s='';
    var chars='0123456789.-';
    for(var i=0;i<f.length;i++){
        (chars.indexOf(f.substring(i,i+1))>-1)&&(s+=f.substring(i,i+1))}
    return s*1;
}

function printCurrency(v){
    v=v*1;
    var n=v<0;
    v=''+Math.floor(Math.abs(v));
    n=n&&(v*1)?'-':'';
    var s='';
    for(var i=1;i<=v.length;i++){
        s=v.substring(v.length-i,v.length-i+1)+s;
        if(!(i%3)&&(i<v.length)){
            s=','+s}}
    return '$'+n+s
}

function formatPct(field,digits){
    field.value=printPct(parsePct(field),digits);
}

function parsePct(field){
    var f=''+field.value;
    var s='';
    var chars='0123456789.';
    for(var i=0;i<f.length;i++){
        (chars.indexOf(f.substring(i,i+1))>-1)&&(s+=f.substring(i,i+1))}
    return s*1;
}

function printPct(v,d){
    var z='00000000';
    v=v*1;
    d=Math.min(z.length,Math.max(0,Math.floor(d*1)));
    var n=v<0;
    v=Math.abs(v);
    var f=''+(v-Math.floor(v))+z;
    v=''+Math.floor(v);
    n=n&&((v*1)||(f*1))?'-':'';
    var s=(d?('.'+f.substring(2,2+d)):'')+'%';
    for(var i=1;i<=v.length;i++){
        s=v.substring(v.length-i,v.length-i+1)+s;
        if(!(i%3)&&(i<v.length)){
            s=','+s}}
    return n+s;
}
