function calc_monthly_payment(principal, rate, years) {
    rate = rate / 100 / 12;
    var x = Math.pow( 1 + rate, years * 12 );
    return ( principal * x * rate ) / ( x - 1 );
}

function format_money(amount) {
    var str     = amount.toString();
    var dp      = str.indexOf('.');
    var wp      = '';
    var i;
    
    if ( dp == -1 ) {
        str += '.00';
        dp = str.length + 1;
    } else {
        str += '00';
    }
    
    for ( i = dp; i > 3; i -= 3 )
        wp = ","  + str.substr(i - 3, 3) + wp
    wp = str.substr(0,i) + wp;
    
    return "$" + wp + "." + str.substr(dp + 1, 2);
}

function fix_num(n) {
    return n.replace(/[^0-9.]+/g, '')
}
    

function calc_mortgage() {
    var princ   = parseFloat( fix_num(document.mortgage.principal.value) );
    var rate    = parseFloat( fix_num(document.mortgage.rate.value)      );
    var years   = parseInt(   fix_num(document.mortgage.years.value)     );
    
    var mp      = calc_monthly_payment(princ, rate, years);
    var yp      = mp * 12;
    var tp      = yp * years;
    var ic      = tp - princ;
    
    document.mortgage.monthly.value  = format_money(mp);
    document.mortgage.yearly.value   = format_money(yp);
    document.mortgage.total.value    = format_money(tp);
    document.mortgage.interest.value = format_money(ic);
}

