var minimum_wage = 37000;

function calculate_ann(price, rate, downpayment, period) {
    var principal = price * (1-downpayment);
    var a = 1 - Math.pow(1+(rate/12),(-12*period));
    var b = rate / 12;
    var c = a/b;
    var d = principal / c;
    return d;
}

function calculate_simple(price, rate, downpayment, period, grace) {
    var principal = price * (1 - downpayment);
    var monthly_principal_pmt = principal / ((period - grace) * 12);
    var total_interest = grace ? (principal * rate * grace) : 0;
    var principal2 = principal;
    while (principal2 > 0 ) {
        total_interest += principal2 * (rate/12);
        principal2 -= monthly_principal_pmt;
    }
    return (total_interest + principal) / (period * 12);
}


function calculate () {
    var is_annuity = document.getElementById("method-annuity").checked;
    var is_simple  = document.getElementById("method-simple").checked;

    var price = parseInt(document.getElementById("price").value);
    var rate = parseInt(document.getElementById("rate").value)/100;
    var downpayment = parseInt(document.getElementById("downpayment").value)/100;
    var period = parseInt(document.getElementById("period").value);
    var grace = parseInt(document.getElementById("grace-period").value);

    var downpayment_amount = downpayment * price;

    if (!period || !price || !rate || !downpayment ) {
        return;
    }

    if (grace >= period) {
        window.alert("Grace period must be less than credit period");
        return document.getElementById("grace-period").select();
    }


    if (downpayment < 0.25) {
        window.alert("Минимальный взнос должна быть не менее 25%");
        return document.getElementById("downpayment").select();
    }

    if ((price * downpayment) > (2500 * minimum_wage)) {
        alert("Ипотечный кредит не может превышать 2 500 кратных минимальный зарплаты. Ваш кредит составляет " + (price * downpayment));
        return document.getElementById("price").select();
    }

    if (period > 15) {
        alert("Ипотечный период не должен превышать 15 лет");
        return document.getElementById("period").select();
    }

    var result_mp = document.getElementById("monthly-payment");
    var result_tp = document.getElementById("total-payment");
    var result_dp_amount = document.getElementById("downpayment-amount");

    var mp;
    if (is_annuity) {
        mp = calculate_ann(price, rate, downpayment, period);
    }
    else {
        mp = calculate_simple(price, rate, downpayment, period, grace);
    }

    result_mp.value = Math.ceil(mp);
    result_dp_amount.value = downpayment_amount;
    result_tp.value = Math.round(period * 12 * mp) + downpayment_amount;

    var pie_chart_args = 'x=Начальный взнос,Основной долг,Проценты банка;'
        + 'y=' + downpayment_amount + ','  + (price-downpayment_amount) + ',' + (result_tp.value - price);


    create_chart(pie_chart_args, 'pie');

    return false;
}

function toggleInfoBox (v) {
    var simple = document.getElementById("simple-info");
    var annuity= document.getElementById("annuity-info");
    var grace  = document.getElementById("grace-screen");

    if (v == "simple") {
        simple.style.display = "block";
        annuity.style.display="none";
        grace.style.display="block";

    }
    else {
        simple.style.display = "none";
        annuity.style.display="block";
        grace.style.display = "none";
    }
    return calculate();
}


function create_chart(args, type) {
    var el = document.getElementById('calc-chart');
    el.innerHTML = '<img width="335" height="180" alt="Chart" src="/cgi-bin/chart?t=' + type + ';' + args + '" />';
}



