﻿function make_PMT(PV, IR, NP) { var PMT = PV * (IR / (1 - Math.pow((1 + IR), -NP))); return PMT; };
function calc_leasing(pret, avans, nr_rate, tip) {
    var _dob; if (pret < 2000) _dob = 0.21 / 12; else if (pret < 10000) _dob = 0.17 / 17; else _dob = 0.15 / 12; var rata, rata_tva; if (isNaN(avans)) avans = 0; else avans = parseFloat((pret * avans) / 100); 
    var pmt = make_PMT((pret - avans), _dob, nr_rate); return pmt; if (nr_rate > 0) an = parseFloat(nr_rate / 12); }; function afiseaza_rate(valoare, avans, tip) { if ((avans < 20) || (avans > 50)) { avans = 20; document.getElementById('avans_val').innerHTML = parseFloat((valoare * avans) / 100); } else document.getElementById('error_avans').innerHTML = ""; if (isNaN(avans)) { avans = 20; document.getElementById('calc-avans').value = 20; } var plata1, pret; pret = valoare; var _dob; if (pret < 2000) _dob = 0.21 / 12; else if (pret < 10000) _dob = 0.17 / 17; else _dob = 0.15 / 12; document.getElementById('calc-taxa_management').innerHTML = (0.02 * valoare).toFixed(2); document.getElementById('avans_val').innerHTML = parseFloat((valoare * avans) / 100).toFixed(2); document.getElementById('calc-rate_12').innerHTML = calc_leasing(pret, avans, 12, tip).toFixed(2); document.getElementById('calc-rate_18').innerHTML = calc_leasing(pret, avans, 18, tip).toFixed(2); document.getElementById('calc-rate_24').innerHTML = calc_leasing(pret, avans, 24, tip).toFixed(2); if (tip == 3) document.getElementById('calc-rate_36').innerHTML = calc_leasing(pret, avans, 36, tip).toFixed(2); var sc; sc = document.getElementById('show_calendar').value; if (sc == 1) { var nr_r; nr_r = document.getElementById('nr_r').value; var val, credit, string, dobanda, rata, rata_fixa, tva; val = parseFloat(pret - (avans * pret) / 100); rata_fixa = calc_leasing(val, 0, nr_r, tip); string = '<table width="500" style="font-family:Arial, Helvetica, sans-serif; font-size:12px;border:solid" align=center>'; string += '<tr  bgcolor="#DDDDDD"><td align=center>Rata</td><td align=center>Credit </td><td align=center>Dobanda</td><td align=center>TVA</td><td align=center>Total</td></tr>'; for (var i = 0; i < nr_r; i++) { dobanda = _dob * val; credit = rata_fixa - dobanda; tva = 0.19 * credit; rata = rata_fixa + tva; val = parseFloat(val - credit); string += '<tr><td align=center>' + (i + 1) + '</td><td align=center>' + credit.toFixed(2) + '</td><td align=center>' + dobanda.toFixed(2) + '</td><td align=center>' + tva.toFixed(2) + '</td><td align=center>' + rata.toFixed(2) + '</td></tr><tr  bgcolor="#999999"><td height="1" colspan="5"></td></tr>'; } string += '</table>'; document.getElementById('calendar').innerHTML = string; } else { document.getElementById('calendar').innerHTML = ''; } }; function calendar(nr, mode) { document.getElementById('nr_r').value = nr; if (mode == 1) document.getElementById('show_calendar').value = 1; else document.getElementById('show_calendar').value = 0; afiseaza_rate(document.getElementById('calc-pret').innerHTML, document.getElementById('calc-avans').value, document.getElementById('tip_produs').value); }
// clasa de calculat rate
function Rate(costProdus, numarRate) {
    this.comision = 0.099; 					// comision banca 9.9%
    this.comisionPromo = 0.049; 			// comision banca promotional 4.9%
    this.sMin = 205; 						// suma minima de imprumut
    this.sMax = 20000; 						// suma maxima de imprumut
    this.finalDeRata = 0; 					// finalul de rata in functie de numarul de rate
    this.fdrMin = 0.049; 					// final de rata la suma maxima imprumutata fara avans si cu avans
    this.fdrMax = 0.229; 					// final de rata cand suma depaseste suma maxima imprumutata cu avans
    this.smiFaraAvans = 2000; 				// suma maxima imprumutata fara avans
    this.smiCuAvans = 2500; 				// suma maxima imprumutata cu avans
    this.rMin = 6; 							// numarul minim de rate
    this.rMax = 60; 						// numarul maxim de rate
    //operations data
    this.coeficientCrestere = 0; 			// cu cat creste costul produsului datorita creditului
    this.sumaPlata = 0; 					// suma integrala de plata cu tot cu rata
    this.costFinantare = 0; 				// costul finantarii
    this.valoareActuala = 0; 				// valoarea actuala a produsului
    this.rata = 0; 							// valoarea ratei lunare
    this.avans = 0; 							// valoarea avansului pentru a se incadra in promotie
    //input data
    this.costProdus = _readNumber(costProdus); // costul produsului cu TVA
    this.numarRate = _verifyNumber(numarRate); // numarul de rate
    //error
    this.error = false; 						// daca avem sau nu eroare
    this.errorRate = "--,--"					// ce afiseaza daca nu se introduc date corecte
    //metode
    this._stabilesteFinalDeRata = _stabilesteFinalDeRata;
    this._calculeazaValoareActuala = _calculeazaValoareActuala;
    this._calculeazaCoeficientCrestere = _calculeazaCoeficientCrestere;
    this._calculeazaSumaPlata = _calculeazaSumaPlata;
    this._calculeazaCostFinantare = _calculeazaCostFinantare;
    this._calculeazaRata = _calculeazaRata;
    this.ValoareActuala = ValoareActuala;
    this.CoeficientCrestere = CoeficientCrestere;
    this.ProcentCrestere = ProcentCrestere;
    this.SumaPlata = SumaPlata;
    this.CostFinantare = CostFinantare;
    this.Rata = Rata;
    this.Avans = Avans;
    this._numberFormat = _numberFormat;
    this._readNumber = _readNumber;
//this.costProdus < this.sMin
    if ( this.costProdus > this.sMax || this.numarRate < this.rMin || this.numarRate > this.rMax)
        this.error = "Nu au fost introduse date corecte\n============================\n suma minima: " + this.sMin + "RON\n suma maxima: " + this.sMax + "RON\n rate minime: " + this.rMin + " rate\n rate maxime: " + this.rMax + " rate";
    if (this.error) {
        this.rata = this.errorRate;
        alert(this.error);
        return false;
    }
    this._stabilesteFinalDeRata();
    this._calculeazaValoareActuala();
    this._calculeazaCoeficientCrestere();
    this._calculeazaSumaPlata();
    this._calculeazaCostFinantare();
    this._calculeazaRata();
    return false
}

function _stabilesteFinalDeRata() {
    /*
    if(this.costProdus <= this.smiFaraAvans)
    {
    this.finalDeRata = this.fdrMin;
    this.avans = 0;
    this.comision = this.comisionPromo;
    }
    else if(this.costProdus > this.smiFaraAvans && this.costProdus <= this.smiCuAvans)
    {
    this.finalDeRata = this.fdrMin;
    this.avans = this.costProdus - this.smiFaraAvans;
    this.comision = this.comisionPromo;
    this.costProdus = this.smiFaraAvans;
    }
    else if(this.costProdus > this.smiCuAvans)
    */
    {
        this.finalDeRata = this.fdrMax;
        this.avans = 0;
    }
}

function _calculeazaValoareActuala() {
    return this.valoareActuala = (this.costProdus / this.numarRate * (1 - this.comision)) * ((1 - 1 / Math.pow(1 + this.finalDeRata / 12, this.numarRate)) / (this.finalDeRata / 12));
}

function ValoareActuala() {
    return this._numberFormat(this.valoareActuala, 2, ",", ".");
}

function _calculeazaCoeficientCrestere() {
    return this.coeficientCrestere = this.costProdus / this.valoareActuala;
}

function CoeficientCrestere() {
    return this._numberFormat(this.coeficientCrestere, 4, ",", ".");
}

function ProcentCrestere() {
    return this._numberFormat(((this.coeficientCrestere - 1) * 100), 2, ",", ".");
}

function _calculeazaSumaPlata() {
    return this.sumaPlata = this.coeficientCrestere * this.costProdus;
}

function SumaPlata() {
    return this._numberFormat(this.sumaPlata, 2, ",", ".");
}

function _calculeazaCostFinantare() {
    return this.costFinantare = this.sumaPlata - this.costProdus;
}

function CostFinantare() {
    return this._numberFormat(this.costFinantare, 2, ",", ".");
}

function _calculeazaRata() {
    return this.rata = this.sumaPlata / this.numarRate;
}

function Rata() {
    return this._numberFormat(this.rata, 2, ",", ".");
}
function Avans() {
    if (this.avans)
        return this._numberFormat(this.avans, 2, ",", ".");
    return false;
}

function _numberFormat(number, decimals, dec_point, thousand) {
    if (this.rata == this.errorRate)
        return this.errorRate
    var y = new Array();
    var x = new Array();
    number = number.toFixed(decimals);
    x = number.split(".");
    intreg = x[0];
    i = 0;
    while (intreg.length > 3) {
        y[i++] = intreg.substr(-3, 3);
        intreg = intreg.replace(y[i - 1], "");
    }
    number = intreg;
    if (i) {
        j = 0;
        while (j < i) {
            number = number + thousand + y[j++];
        }
    }
    return number = number + dec_point + x[1];
}

function _readNumber(number) {
    if (number == this.errorRate)
        number = 0;
    number = number.replace(".", "");
    return number = _verifyNumber(number.replace(",", "."));
}

function _verifyNumber(number) {
    number = parseFloat(number);
    if (!isNaN(number))
        return number;
    return 0;

}

function CalculeazaRate(idCost, idRate, idWriteArea) {
    costProdus = document.getElementById(idCost).value;
    numarRate = document.getElementById(idRate).value;
    var rata = new Rate(costProdus, numarRate);
    var avans = rata.Avans();
    //document.getElementById(idWriteArea).innerHTML = "<strong>Rata:</strong> " + rata.Rata() + " RON/luna" +
    //	(avans == false ? "" : "<br/><strong>Avans:</strong> " + avans + " RON");
    document.getElementById(idWriteArea).value = rata.Rata();
    document.getElementById('ratalun').innerHTML = "<strong>Rata lunara</strong>: "+ rata.Rata()+" lei";
    
    return void (0);
}

