﻿/// <reference path="Parcela.js" />

FormaPagamento = function ( codigo,
                            nome,
                            urlImage,
                            valorMinimoParcela,
                            numeroMaximoParcelas,
                            numeroMaximoParcelasComJuros,
                            porcentagemDesconto,
                            aceitaAVista) {
    this.codigo = codigo;
    this.nome = nome;
    this.urlImage = urlImage;
    this.valorMinimoParcela = valorMinimoParcela;
    this.numeroMaximoParcelas = numeroMaximoParcelas;
    this.numeroMaximoParcelasComJuros = numeroMaximoParcelasComJuros;
    this.porcentagemDesconto = porcentagemDesconto;
    this.aceitaAVista = aceitaAVista;
}

FormaPagamento.prototype = {
    codigo: this.codigo,
    nome: this.nome,
    urlImage: this.urlImage,
    valorMinimoParcela: this.valorMinimoParcela,
    numeroMaximoParcelas: this.numeroMaximoParcelas,
    numeroMaximoParcelasComJuros: this.numeroMaximoParcelasComJuros,
    porcentagemDesconto: this.porcentagemDesconto,
    aceitaAVista: this.aceitaAVista,
    GetParcelas: function(valor) {
        valor = parseFloat(valor.toString().replace(",", "."));
        var parcelas = new Array();

        parcelas[0] = new Parcela(1, valor, this.aceitaAVista, false, this.porcentagemDesconto);

        for (var i = 2; i <= this.numeroMaximoParcelas; i++) {
            var valorParcela = (valor / i);

            if (valorParcela >= this.valorMinimoParcela) {
                parcelas[i - 1] = new Parcela(i, valorParcela, this.aceitaAVista, false, this.porcentagemDesconto);
            }
        }

        if (this.numeroMaximoParcelas < this.numeroMaximoParcelasComJuros) {
            for (i; i <= this.numeroMaximoParcelasComJuros; i++) {
                var valorParcela = (valor / i);

                if (valorParcela >= this.valorMinimoParcela) {
                    parcelas[i - 1] = new Parcela(i, valorParcela, this.aceitaAVista, true, this.porcentagemDesconto);
                }
            }
        }

        return parcelas;
    },
    GetMaiorParcelaSemJuros: function(valor) {
        valor = parseFloat(valor.toString().replace(",", "."));
        var parcelas = new Array();

        parcelas[0] = new Parcela(1, valor, this.aceitaAVista, false, this.porcentagemDesconto);

        for (var i = 2; i <= this.numeroMaximoParcelas; i++) {
            var valorParcela = (valor / i);

            if (valorParcela >= this.valorMinimoParcela) {
                parcelas[i - 1] = new Parcela(i, valorParcela, this.aceitaAVista, false, this.porcentagemDesconto);
            }
        }

        return parcelas[parcelas.length - 1];
    },
    GetMaiorParcelaComJuros: function(valor) {
        valor = parseFloat(valor.toString().replace(",", "."));
        var parcelas = new Array();

        if (this.numeroMaximoParcelas < this.numeroMaximoParcelasComJuros) {
            for (var i = 1; i <= this.numeroMaximoParcelasComJuros; i++) {
                var valorParcela = (valor / i);

                if (valorParcela >= this.valorMinimoParcela) {
                    parcelas[i - 1] = new Parcela(i, valorParcela, this.aceitaAVista, true, this.porcentagemDesconto);
                }
            }
        }

        return parcelas[parcelas.length - 1];
    }
}
