﻿/// <reference path="Produto.js" />
/// <reference path="Parcela.js" />
/// <reference path="FormaPagamento.js" />

MostraProd = function (labelPrecoDe,
                        labelPrecoPor,
                        labelNomeVariacao,
                        divMelhorParcelamento,
                        divOutrosParcelamentos,
                        divSeguro,
                        divPagDigital,
                        divPagSeguro,
                        linkVejaMaisPagto,
                        labelDisponibilidade,
                        labelPeso,
                        labelCubagem) {
    this.labelPrecoDe = labelPrecoDe;
    this.labelPrecoPor = labelPrecoPor;
    this.labelNomeVariacao = labelNomeVariacao;
    this.divMelhorParcelamento = divMelhorParcelamento;
    this.divOutrosParcelamentos = divOutrosParcelamentos;
    this.divSeguro = divSeguro;
    this.divPagDigital = divPagDigital;
    this.divPagSeguro = divPagSeguro;
    this.linkVejaMaisPagto = linkVejaMaisPagto;
    this.labelDisponibilidade = labelDisponibilidade;
    this.labelPeso = labelPeso;
    this.labelCubagem = labelCubagem;
}

MostraProd.prototype = {
    labelPrecoDe: this.labelPrecoDe,
    labelPrecoPor: this.labelPrecoPor,
    labelNomeVariacao: this.labelNomeVariacao,
    divMelhorParcelamento: this.divMelhorParcelamento,
    divOutrosParcelamentos: this.divOutrosParcelamentos,
    divSeguro: this.divSeguro,
    divPagDigital: this.divPagDigital,
    divPagSeguro: this.divPagSeguro,
    linkVejaMaisPagto: this.linkVejaMaisPagto,
    labelDisponibilidade: this.labelDisponibilidade,
    labelPeso: this.labelPeso,
    labelCubagem: this.labelCubagem,
    CarregaFormasPagamentos: function (produto, formasPagamentos) {

        var temPagtoSeguro = false;
        var temPagtoDigital = false;

        var melhorFormaPagamento = formasPagamentos[0];
        var valProd = ((produto.valorComDesconto > 0) ? produto.valorComDesconto : produto.valor);

        //Inicio carregando forma de pagamento com melhor parcelamento
        for (var i = 0; i < formasPagamentos.length; i++) {
            var parcMelhorPag = melhorFormaPagamento.GetMaiorParcelaSemJuros(valProd);
            var parcNovoPag = formasPagamentos[i].GetMaiorParcelaSemJuros(valProd);

            if (parcMelhorPag.numeroVezes < parcNovoPag.numeroVezes) {
                parcMelhorPag = parcNovoPag;
                melhorFormaPagamento = formasPagamentos[i];
            }
        }

        var parcMelhorPag = melhorFormaPagamento.GetMaiorParcelaSemJuros(valProd);

        //Caso o número de parcelas sem juros for igual a "1"(um), verificar o parcelamento sem juros
        if (melhorFormaPagamento.GetMaiorParcelaSemJuros(valProd).numeroVezes == 1) {
            for (var i = 0; i < formasPagamentos.length; i++) {
                //somente verifica a parcela com juros, caso o numero máximo de parcelas seja maior que "0"(zero)
                if (formasPagamentos[i].numeroMaximoParcelasComJuros > 0) {
                    var parcNovoPag = formasPagamentos[i].GetMaiorParcelaComJuros(valProd);

                    if (parcNovoPag != null) {
                        if (parcMelhorPag.numeroVezes < parcNovoPag.numeroVezes) {
                            parcMelhorPag = parcNovoPag;
                            melhorFormaPagamento = formasPagamentos[i];
                        }
                    }
                }
            }
        }
        //Fim carregando forma de pagamento com melhor parcelamento

        //Inicio Carregando div da melhor forma de pagamento
        var parcsMelhorPagto = melhorFormaPagamento.GetParcelas(valProd);
        var htmlMelhorFormaPagto = new String();
        var rows = parseInt(parcsMelhorPagto.length / 2);
        if ((rows + rows) < parcsMelhorPagto.length) {
            rows++;
        }

        htmlMelhorFormaPagto = "<div class=\"etiquetaPagto_detalhes etiquetaPagto_principal " + melhorFormaPagamento.nome + "\">" +
                                           "<div class=\"formaIndicadaInfo\"><div class=\"FormaIndicada_img\">" +
                                           "    <img alt=\"" + melhorFormaPagamento.nome + "\" src=\"" + melhorFormaPagamento.urlImage + "\" />" +
                                           "</div>" +
                                           "<div class=\"FormaIndicada_nome\">" + melhorFormaPagamento.nome + "</div>";

        if (melhorFormaPagamento.porcentagemDesconto > 0)
            htmlMelhorFormaPagto = htmlMelhorFormaPagto.concat("<div class=\"FormaIndicada_desconto\">" +
                                                                   "            + " + melhorFormaPagamento.porcentagemDesconto + "% de desconto" +
                                                                   "    </div>");

        htmlMelhorFormaPagto = htmlMelhorFormaPagto.concat("</div><div class=\"FormaIndicada_parcelas\">");

        var cols = 0;
        for (var j = 0; j < parcsMelhorPagto.length; j++) {

            htmlMelhorFormaPagto = htmlMelhorFormaPagto.concat('<div style="display:inline-table;width:160px;padding:5px;">' + parcsMelhorPagto[j].GetParcelaFormatada(false) + '</div>');

            /*cols++;
            if (cols == 2) {
            htmlMelhorFormaPagto = htmlMelhorFormaPagto.concat('</tr><tr>');
            cols = 0;
            }*/
        }

        /*if (htmlMelhorFormaPagto.substring(htmlMelhorFormaPagto.length - 4, htmlMelhorFormaPagto.length) == '<tr>') {
        htmlMelhorFormaPagto = htmlMelhorFormaPagto.substring(0, htmlMelhorFormaPagto.length - 4);
        } else {
        htmlMelhorFormaPagto = htmlMelhorFormaPagto.concat('</tr>');
        }*/

        htmlMelhorFormaPagto = htmlMelhorFormaPagto.concat('</div></div>');
        this.divMelhorParcelamento.innerHTML = htmlMelhorFormaPagto;
        //Fim Carregando div da melhor forma de pagamento

        for (var x = 0; x < formasPagamento.length; x++) {
            if (formasPagamento[x].codigo == 8) {
                temPagtoSeguro = true;
            }

            if (formasPagamento[x].codigo == 10) {
                temPagtoDigital = true;
            }
        }

        if (temPagtoSeguro == true || temPagtoDigital == true) {

            this.divSeguro.style.width = "40%";
            this.divSeguro.style.display = "";

            if (temPagtoSeguro == true) {
                this.divPagSeguro.style.display = "inline-table";
            } else {
                this.divPagSeguro.style.display = "none";
            }

            if (temPagtoDigital == true) {
                this.divPagDigital.style.display = "inline-table";
            } else {
                this.divPagDigital.style.display = "none";
            }

        } else {
            this.divSeguro.style.display = "none";
        }

        //Inicio Carregando div das outras formas de pagamento
        if (formasPagamento.length > 1) {

            this.linkVejaMaisPagto.style.display = "";

            var htmlOutrasFormasPagamento = new String();
            htmlOutrasFormasPagamento = "<div class=\"etiquetaPagto_detalhes\"><div class=\"formaPagtoAlternativa_titulo\">Outras formas de pagamento:</div>";

            var contador = 0;

            for (i = formasPagamento.length - 1; i >= 0; i--) {
                if (formasPagamento[i] != melhorFormaPagamento) {
                    var parcSemJuros = formasPagamento[i].GetMaiorParcelaSemJuros(valProd)
                    var parcComJuros = formasPagamento[i].GetMaiorParcelaComJuros(valProd);

                    htmlOutrasFormasPagamento = htmlOutrasFormasPagamento.concat("<div class=\"FormaPagtoAlternativa " + formasPagamento[i].nome + "\">" +
                                                                                 "        <div class=\"FormaPagtoAlternativa_img\">" +
                                                                                 "            <img alt=\"" + formasPagamento[i].nome + "\" src=\"" + formasPagamento[i].urlImage.replace('M.gif', 'P.gif') + "\" />" +
                                                                                 "        </div>" +
                                                                                 "        <div class=\"FormaPagtoAlternativa_nome\">" + formasPagamento[i].nome + "</div>"
                                                                                );

                    if (formasPagamento[i].porcentagemDesconto > 0)
                        htmlOutrasFormasPagamento = htmlOutrasFormasPagamento.concat("<div class=\"FormaPagtoAlternativa_desconto\">" +
                                                                                     "            + " + formasPagamento[i].porcentagemDesconto + "% de desconto" +
                                                                                     "    </div>"
                                                                                );

                    htmlOutrasFormasPagamento = htmlOutrasFormasPagamento.concat("<div class=\"FormaPagtoAlternativa_parcelasemjuros\">" +
                                                                                          parcSemJuros.GetParcelaFormatada(true) + ((parcComJuros != null) ? "<br/>" + parcComJuros.GetParcelaFormatada(true) : "") +
                                                                                 "    </div>" +
                                                                                 "</div>"
                                                                                );
                    contador++;
                }
            }
            htmlOutrasFormasPagamento = htmlOutrasFormasPagamento.concat("</div>");

            this.divOutrosParcelamentos.innerHTML = htmlOutrasFormasPagamento;
        }
        else {
            this.linkVejaMaisPagto.style.display = "none";
        }
        //Fim Carregando div das outras formas de pagamento

    },
    CarregandoDadosProduto: function (produto) {
        var funcoes = new Funcoes();
        this.labelNomeVariacao.innerHTML = ((produto.codigoVariacao > 0) ? "(" + produto.nomeVariacao + ")" : "");
        if (produto.carregaPreco == true) {
            this.labelPrecoDe.innerHTML = ((produto.valorComDesconto > 0) ? "de " + funcoes.FomatoMoeda(produto.valor) : "");
            var precoPor = ((produto.valorComDesconto > 0) ? produto.valorComDesconto : produto.valor);
            this.labelPrecoPor.innerHTML = ((precoPor > 0) ? "por " + funcoes.FomatoMoeda(precoPor) : "Consulte");

            if ((produto.qtdeEstoque > 0 && produto.qtdeEstoque >= produto.qtdeMinimaPedido) || produto.sobEncomenda == true) {
                if (produto.sobEncomenda == true && (produto.qtdeEstoque == 0 || produto.qtdeEstoque < produto.qtdeMinimaPedido)) {
                    this.labelDisponibilidade.innerHTML = "Sob Encomenda com chegada em " + produto.prazo + " dia(s) + frete";
                }
                else if (produto.finalizaOnLine == true) {
                    this.labelDisponibilidade.innerHTML = "Imediata";
                }
                else {
                    this.labelDisponibilidade.innerHTML = "Sob consulta";
                }

                lblDisponibilidade.style.visibility = 'visible';
                document.getElementById('txDisponibilidade').style.display = 'block';
            }
            else {
                lblDisponibilidade.style.visibility = 'hidden';
                this.labelPrecoDe.innerHTML = '';
                this.labelPrecoPor.innerHTML = 'Indisponível';
                document.getElementById('txDisponibilidade').style.display = 'none';
            }

            this.labelPeso.innerHTML = ((produto.peso > 0) ? produto.peso : " - ");
            this.labelCubagem.innerHTML = ((produto.cubagem > 0) ? produto.cubagem : " - ");
        }
    }
}
