﻿function jAereoPacote()
{
    var This = this;
    var pCodPacote;
    var tpl;
    var numeroAdultos =0;
    var numeroCHD = 0;
    var numeroINF = 0; 
    var ArrayCombo;
    var jListaTarifa;
    var codCiaAereaFiltro = 0;
    var pCodTarifaAereoPacote = 0;
    var valorTotalAereo = 0;
    var jListaPedidoPacote;
    var pCodPedido = 0;
    var valorAnterior;
    var valorTotal = 0;
    var TarifaAereo = 0;
    var valorParaSetarCombo = 0;
    this.valorTotalAereo = valorTotal;
    this.codAereo = TarifaAereo;

    var render = {

        main: function() {
            try {
                tpl.tpl_mainAereoPacote.headerPacote = DetalhesPacote.goTo.renderHeader(pCodPacote, pCodPedido);
            }
            catch (e) { }
            return tpl.tpl_mainAereoPacote.getHtml();
        },
        listarTrechos_Tarifas: function(res) {
            jListaTrechosAereosPacotesDT = new jDatatable(res.value);
            var sb = new StringBuilder();
            var total = jListaTrechosAereosPacotesDT.getTotRegs();

            sb.append("<select class='form' id='comboTrechos_Tarifas'onchange='javascript:AereosPacote.exec.calculoValor()'>"); //
            var selecionado = false;
            for (var i = 0; i < total; i++) {
                if (!selecionado) {
                    //if (jListaTrechosAereosPacotesDT.getDrValue(i, "TrechoDefault") == "selected") {
                    if (jListaTrechosAereosPacotesDT.getDrValue(i, "TrechoDefault") == jListaTrechosAereosPacotesDT.getDrValue(i, "CodTrechoAereoPacote")) { //-- Nova estrutura Aereo Pacote
                        tpl.TrechosAereo.tpl_optionResultado.selected = "selected='selected'";
                        selecionado = true;
                        valorParaSetarCombo = jListaTrechosAereosPacotesDT.getDrValue(i, "CodTarifaAereoPacote");
                    }
                    else 
                    {
                        if ((i == (total - 1)) && (valorParaSetarCombo == 0))
                        {
                            tpl.TrechosAereo.tpl_optionResultado.selected = "selected='selected'";
                            selecionado = true;
                            valorParaSetarCombo = jListaTrechosAereosPacotesDT.getDrValue(0, "CodTarifaAereoPacote"); //-- Seta o primeiro como default
                        }
                        else
                        {
                            tpl.TrechosAereo.tpl_optionResultado.selected = '';
                        };
                    };
                };

                tpl.TrechosAereo.tpl_optionResultado.value = jListaTrechosAereosPacotesDT.getDrValue(i, "CodTarifaAereoPacote");
                
                if (jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeOrigem_Volta") == "")
                {
                    tpl.TrechosAereo.tpl_optionResultado.text = "SAÍDA:" + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeOrigem") +
                                                                "/" + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeDestino") +
                                                                " " + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCiaAerea");
                }
                else
                {
                    tpl.TrechosAereo.tpl_optionResultado.text = "SAÍDA:" + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeOrigem") +
                                                                "/" + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeDestino") +
                                                                " " + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCiaAerea") +
                                                                " - VOLTA:" + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeOrigem_Volta") + 
                                                                "/" + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCidadeOrigem") +
                                                                " " + jListaTrechosAereosPacotesDT.getDrValue(i, "NomeCiaAerea_Volta");
                };                                                
                                                            //" - Classe: " + jListaTrechosAereosPacotesDT.getDrValue(i, "Classe");
                sb.append(tpl.TrechosAereo.tpl_optionResultado.getHtml());
            };

            sb.append("</select>");
            return sb.toString();
        }
    };
    
    var ctrlRefs = {
        siteConteudo: function() { return $('siteConteudo'); }
    };

    var startEnv = {
        main: function() {
            var dt_temp = clAereoPacote.listarTrechos_Tarifas(pCodPacote);
            if (new jDatatable(dt_temp.value).getTotRegs() > 0) {
                $html("aereo", render.main());
                $html("divTrechoAereoPacote", render.listarTrechos_Tarifas(dt_temp));
                $set('comboTrechos_Tarifas', valorParaSetarCombo);
                startEnv.calculoValor();
            }
        },
        listaOpcoesAereo: function() {
            $html("divOpcoesAereoPacote", render.listarOpcoesAereoPacote(clAereoPacote.listarOpcoesAereoPacoteB2C(pCodPacote, parseInt($get('comboTrechos')))));
        },
        calculoValor: function(numeroAdultos) {
            if (numeroAdultos == undefined) {
                try {
                    numeroAdultos = parseInt($get('numeroPessoas'));
                }
                catch (e) {
                    numeroAdultos = 1;
                };
            };
            
            var tipoAcomodacao = "";
            switch (numeroAdultos)
            {
                case 1:
                    tipoAcomodacao = "single";
                    break;
                case 2:
                    tipoAcomodacao = "double";
                    break;
                case 3:
                    tipoAcomodacao = "triple";
                    break;
                case 4:
                    tipoAcomodacao = "quadruple";
                    break;
            };
            
            TarifaAereo = ($get('comboTrechos_Tarifas') != "" ? parseInt($get('comboTrechos_Tarifas')) : 0);
            
            var retorno = clAereoPacote.contarValorTarifa(TarifaAereo, numeroAdultos, 0, 0);
            jLista = new jDatatable(retorno.value);

            valorTotalAereo = valorTotal = parseFloat(jLista.getDrValue(0, "valorTotal"));

            This.valorTotalAereo = valorTotal;
            This.codAereo = TarifaAereo;
            //            $set('valorPacoteHeader', (parseFloat(valorTotal.toString().replace('R$ ', '').replace('.', '').replace(',', '.')) * numeroAdultos).formatNumber(2, true));

            //---- calcula na tela
            var valorTela = 0;
            var valorHotel = 0;
            var pCodOpcaoHotelPacote = 0;
            var pCodRodoviario = 0;
            var pCodServico = '';
            var pCodPacote = 0;
            var pArrItensOpcaoHotelDestinoPacote = '';
            var pArrOpcaoHotelPacote = '';

            try {
                pCodOpcaoHotelPacote = HotelPacote.opcaoHotelGeral;
            } catch (ex) { };

            try {
                pCodRodoviario = Rodoviario.codRodoviario;
            } catch (ex) { };

            try {
                pCodServico = ServicosPacote.codServico;
            } catch (ex) { };

            try {
                pCodPacote = HotelPacote.codPacote;
            } catch (ex) { };

            try {
                pArrItensOpcaoHotelDestinoPacote = HotelPacote.arrItensOpcaoHotelDestinoPacote;
            } catch (ex) { };

            try {
                pArrOpcaoHotelPacote = HotelPacote.arrOpcaoHotelPacote;
            } catch (ex) { };

            var pArrOpcaoHotelPacote = pArrOpcaoHotelPacote.split(',');

            //--- recebe os valores do aereo / servicoOpcionais / servicosInclusos / rodoviario
            var jDTValoresAereoServicosRodoviario = new jDataset(clDetalhesPedido.calculaValores(
                                                pCodPacote, TarifaAereo, 0, pCodServico).value);

            var ValorServico = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table", 0, "ValorServico")).formatNumber(2, true);
            if (ValorServico == "NaN,00") { ValorServico = 0 };

            var ValorAereo = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table1", 0, "ValorAereo")).formatNumber(2, true);
            if (ValorAereo == "NaN,00") { ValorAereo = 0 };

            //-- Comment by Wagner Vieira - 22/09/2010 * Não precisa multiplicar novamente pelo numero de passageiros, já vem calculado do NajaMethod
            //This.valorTotalAereo = parseFloat(ValorAereo.toString().replace('R$ ', '').replace('.', '').replace(',', '.')) * numeroAdultos;

            var ValorRodoviario = 0;
            if (ValorAereo == 0)
                ValorRodoviario = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table2", 0, "ValorRodoviario")).formatNumber(2, true);

            if (ValorRodoviario == "NaN,00") { ValorRodoviario = 0 };
            var ValorServicoOpcional = 0;
            if (jDTValoresAereoServicosRodoviario.getDrValue("Table3", 0, "ValorServicoOpcional") != 0)
                ValorServicoOpcional = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table3", 0, "ValorServicoOpcional")).formatNumber(2, true);

            if (ValorServicoOpcional == "NaN,00") { ValorServicoOpcional = 0 };

            for (var count = 0; count < pArrOpcaoHotelPacote.count(); count++) {
                var jDTValores = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX_NOVO(
                                                pArrOpcaoHotelPacote[count],
                                                pCodPacote,
                                                pArrItensOpcaoHotelDestinoPacote).value);

                var qrdeHospede = numeroAdultos;
                for (var j = 0; j < jDTValores.getTotRegs(); j++) {
                    switch (parseInt(qrdeHospede)) {
                        case 1:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsSGL")).formatNumber(2, true);
                            if (valorHotel == "0,00")
                                valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);

                            break;
                        case 2:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                            break;
                        case 3:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsTPL")).formatNumber(2, true);
                            if (valorHotel == "0,00")
                                valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                            break;
                        case 4:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL") * 2).formatNumber(2, true);
                            break;
                    };
                };
                valorTela = parseFloat(valorHotel.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorAereo.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorServico.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorRodoviario.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorServicoOpcional.toString().replace('R$ ', '').replace('.', '').replace(',', '.'));
                $set('divValorRendersubtotal_' + pArrOpcaoHotelPacote[count], (parseFloat(valorTela).formatNumber(2, true)));
                $set('divTipoAcomodacao_' + pArrOpcaoHotelPacote[count], "Acomodação<br />" + tipoAcomodacao );
                
                if (pArrOpcaoHotelPacote[count] == pCodOpcaoHotelPacote)
                    $set('valorPacoteHeader', (parseFloat(valorTela) * qrdeHospede).formatNumber(2, true));
            };
        }
    };
    
    this.goTo = {
        main: function(codPedido, valor)
        {
            valorAnterior = valor;
            pCodPedido = codPedido;
            if(pCodPedido > 0)
            {
                var retorno = clAereoPacote.deletePedidosPacotes_Aereo(pCodPedido);
                try
                {
                    var retorno = clAereoPacote.getCodPacote(pCodPedido);
                    jListaPedidoPacote = new jDatatable(retorno.value);                
                    pCodPacote = parseInt(jListaPedidoPacote.getDrValue(0, "CodPacote"));
                    if(pCodPacote>0)
                    {
                        startEnv.main();
                    };
                }
                catch(err){};
            };
        }
    };
    
    this.exec = {
        calculoValor: function()
        {
            startEnv.calculoValor();
            
            try {
                HotelPacote.on.changeOpcaoNumHospedes();
            } catch(ex) {}
        },
        montaAereosPacote: function()
        {            
            startEnv.calculoValor(parseInt($get('numeroPessoas')));
            
            var retorno = clAereoPacote.salvarPedidoAereoPacote(pCodPedido, TarifaAereo, 0, 0);
            var valorAereoNovo = This.valorTotalAereo;
            var retornoPedidosPacotes = clAereoPacote.updatePedidosPacotesValorAereoPacote(pCodPedido, valorAereoNovo);
        }
    };
    
    this.constructor = new function()
    {
        tpl = new Template("AereoPacote");
        if (ServicosPacote != undefined)
        {
            ServicosPacote = new jServicosPacote();
        };    
    };
};
