﻿/********
Author: David Fernandes
MEC: 496324
Date: July 2009
*********/


//baseada no documente de especificacao:
//010709-AF-Simulador_RendasV001.doc
function calculaRendaVitalicia(capital, capitalComparacao, rendaVitaliciaConstante) {
    var valorRenda = 0;
    
    //regra de 3 simples
    var dividendo = capital * rendaVitaliciaConstante;
    var divisor = capitalComparacao;

    valorRenda = dividendo / divisor;

    return valorRenda;
}

//baseada no documente de especificacao:
//010709-AF-Simulador_RendasV001.doc
function calculaCapitalAlteracaoRendaVitalicia(rendaVitalicia, capitalComparacao, rendaVitaliciaConstante) {
    var capital = 0;

    //regra de 3 simples
    var dividendo = rendaVitalicia * capitalComparacao;
    var divisor = rendaVitaliciaConstante;

    capital = dividendo / divisor;

    return capital;
}

//baseada no documente de especificacao:
//010709-AF-Simulador_RendasV001.doc
function calculaRendaProgramada(rentabilidade, capital, prazo) {
    var pr = 12;
    var valorRenda = 0;

    if (rentabilidade == "0") {

        valorRenda = capital / (prazo * pr);

    } else {

        var dividendo = capital * Math.pow(1 + rentabilidade, prazo) * (1 - Math.pow(1 + rentabilidade, 1 / pr));

        var divisor = (1 - Math.pow(1 + rentabilidade, prazo)) * Math.pow(1 + rentabilidade, 1 / pr);

        valorRenda = dividendo / divisor;
    }

    return valorRenda;
}

//baseada no documente de especificacao:
//010709-AF-Simulador_RendasV001.doc
function calculaCapitalAlteracaoRendaProgramada(rentabilidade, rendaProgramada, prazo) {
    var pr = 12;
    var capital = 0;

    if (rentabilidade == "0") {

        capital = rendaProgramada * prazo * pr;

    } else {

        var dividendo = rendaProgramada * (1 - Math.pow(1 + rentabilidade, prazo)) * Math.pow(1 + rentabilidade, 1 / pr);

        var divisor = Math.pow(1 + rentabilidade, prazo) * (1 - Math.pow(1 + rentabilidade, 1 / pr));

        capital = dividendo / divisor;
    }

    return capital;
}

//baseado num email
function valorFinalCalculo(capital, rentabilidade, prazo, rendaProgramada) {

   // alert("Capital: " + capital + " Rentabilidade: " + rentabilidade + " Prazo: " + prazo + " Renda: " + rendaProgramada);
    
    var pr = 12;
    
    if(rentabilidade == 0)
        return 0;
    
    var primeiraParcela = capital * Math.pow(1 + rentabilidade, prazo);
    var segundaParcela = ((1 - Math.pow(1 + rentabilidade, prazo)) / (1 - Math.pow(1 + rentabilidade, 1 / pr))) * rendaProgramada;

    var valorFinal = primeiraParcela - segundaParcela;

    return valorFinal;
}
