﻿function calculate_balance(PMT, IR, NP) {
    var PV = PMT * (1 - Math.pow(1 + IR, -NP)) / IR
    return round_decimals(PV, 0)
}

function fn_loan_balance() {
    var monthly_payment = CleanString(document.getElementById('monthly_payment').value);
    //var interest_rate = CleanString(document.getElementById('interest_rate').value) / 100;
    //var term_remaining = CleanString(document.getElementById('term_remaining').value);

    // var loan_balance = calculate_balance(monthly_payment, interest_rate / 12, term_remaining * 12);


    var str = '';
    var strE = '';
    var bool = true;

    //Entete du tableau
    strE += hcol.replace('valeur', '<img border="0" src="images/Calculatrice/CarreTabl.gif" width="25" height="23">');
    strE = strE.replace('hcol', '')
    for (r in rate) {
        strE += hcol.replace('valeur', FormatNumber(100 * rate[r], 2, true, true, true) + ' %');
    }
    strE = tr_header.replace('valeur', strE);
    //le tableau
    for (t in term) {
        str = '';
        str += hrow.replace('valeur', FormatNumber(term[t] / 12, 0, true, false, true));
        for (r in rate) {
            loan_balance = calculate_balance(monthly_payment, rate[r] / 12, term[t]);

            str += cel.replace('valeur', FormatNumber(loan_balance, 0, true, false, true));
        }
        if (bool == true) {
            bool = false

            str = tr_cel.replace('valeur', str);

        } else {
            bool = true
            str = tr_cel_alternatif.replace('valeur', str);
        }
        strE = strE + str;
    }
    document.getElementById("resultat_MontantEmpruntable").innerHTML = '<table border="0" cellspacing="0" width="95%" id="table151" cellpadding="0">' + strE + '</table>';

}

function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals);
    var result2 = Math.round(result1);
    var result3 = result2 / Math.pow(10, decimals);
    return (result3);
}

function CleanString(str) {
    var reg = new RegExp(',', 'g');
    var f;
    f = str.replace(reg, '.');

    reg = new RegExp('[^0-9/.]', 'gi');
    f = f.replace(reg, '');
    return f;
}

function fn_borrowing_capacity() {
    var str = '';
    var strE = '';
    var bool = true;
    var reg = new RegExp('[^0-9/.]', 'gi');
    var loan_balance;

    var ra = (12*CleanString(document.getElementById('ra').value) - 12*CleanString(document.getElementById('ca').value)- 12*CleanString(document.getElementById('locatif').value)) * CleanString(document.getElementById('es').value) / 100

    ra = ra-12*CleanString(document.getElementById('credit').value);
   
    ra = ra / 12;
   // document.getElementById("capendettement").innerHTML = 


    //Entete du tableau
    strE += hcol.replace('valeur', '<img border="0" src="images/Calculatrice/CarreTabl.gif" width="25" height="23">');
    strE = strE.replace('hcol','')
    for (r in rate) {
        strE += hcol.replace('valeur', FormatNumber(100 * rate[r], 2, true, true, true) + ' %');
    }
    strE = tr_header.replace('valeur', strE);

    //le tableau
    for (t in term) {
        str = '';
        str += hrow.replace('valeur', FormatNumber(term[t] / 12, 0, true, false, true));
        for (r in rate) {
            loan_balance = calculate_balance(ra, rate[r] / 12, term[t]);
            str += cel.replace('valeur', FormatNumber(loan_balance, 0, true, false, true));
        }
        if (bool == true) {
            bool = false

            str = tr_cel.replace('valeur', str);

        } else {
            bool = true
            str = tr_cel_alternatif.replace('valeur', str);
        }
        strE = strE + str;
    }

    document.getElementById("cafi").innerHTML = '<table border="0" cellspacing="0" width="95%" id="table151" cellpadding="0">' + strE + '</table>';
    document.getElementById("resultat_cal1").innerHTML = FormatNumber(ra, 0, true, false, true) + ' &euro;/mois</span>';
}

function fn_monthly_payment() {
    var capital = CleanString(document.getElementById('pv').value) - CleanString(document.getElementById('apport').value);
    var taux = CleanString(document.getElementById('taux').value);
    var duree = CleanString(document.getElementById('duree').value);

    var MonthlyPayment = (capital * taux / 100 / 12) / (1 - Math.pow((1 + taux / 100 / 12), (-12 * duree)));
    document.getElementById('resultat_me').innerHTML = FormatNumber(MonthlyPayment, 0, true, true, true) + ' €/mois';
}

function FormatNumber(num, decimalNum, bolLeadingZero, bolParens, bolCommas)
/**********************************************************************
IN:
NUM - the number to format
decimalNum - the number of decimal places to format the number to
bolLeadingZero - true / false - display a leading zero for
numbers between -1 and 1
bolParens - true / false - use parenthesis around negative numbers
bolCommas - put commas as number separators.
 
RETVAL:
The formatted number!
**********************************************************************/
{
    if (isNaN(parseInt(num))) return "NaN";

    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1; 	// Get sign of number

    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10, decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10, decimalNum);
    tmpNum *= iSign; 				// Readjust for sign


    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);

    // See if we need to strip out the leading zero or not.
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
        if (num > 0)
        tmpNumStr = tmpNumStr.substring(1, tmpNumStr.length);
    else
        tmpNumStr = "-" + tmpNumStr.substring(2, tmpNumStr.length);

    // See if we need to put in the commas
    if (bolCommas && (num >= 1000 || num <= -1000)) {
        var iStart = tmpNumStr.indexOf(",");
        if (iStart < 0)
            iStart = tmpNumStr.length;

        iStart -= 3;
        while (iStart >= 1) {
            tmpNumStr = tmpNumStr.substring(0, iStart) + " " + tmpNumStr.substring(iStart, tmpNumStr.length)
            iStart -= 3;
        }
    }

    // See if we need to use parenthesis
    if (bolParens && num < 0)
        tmpNumStr = "(" + tmpNumStr.substring(1, tmpNumStr.length) + ")";

    return tmpNumStr; 	// Return our formatted string!
}