﻿function jServicosPacote()
{
    var This = this;
    var pCodPacote = 0;
    var tpl;
    var resListaServicos;
    var numeroAdultos = 0;
    var numeroCHD = 0;
    var numeroINF = 0;
    var arrayComboBoxServicosOpcionais = [];;
    var arrayComboBoxServicosInclusos = [];;
    var totalInclusos = 0, totalOpcionais = 0;
    var pCodPedido = 0;
    var arrayServicosOpcionais = [];
    var jValorIncluosos;
    var jValorOpcionais;
    var valorAnterior;
    var valorTotal;
    var tipoTransporte = '';
    
    this.valorTotalServico = valorTotal;
    this.cancelar = 0;
    this.codServico = 0;  
    
    var render = {
        main: function()
        {
            tpl.tpl_mainServicosPacote.onclickVoltar = 'javascript:DetalhesPacote.goTo.roteiros(' + pCodPacote + ')';
            tpl.tpl_mainServicosPacote.onclickAvancar = 'javascript:ServicosPacote.exec.montaServicosPacote(' + pCodPedido + ')';
            return tpl.tpl_mainServicosPacote.getHtml();
        },
        listarServicosInclusos: function()
        {
            var jListaServicoInclusoPacoteDT = new jDatatable(resListaServicos.value);
            var sb = new StringBuilder();
	        var total = jListaServicoInclusoPacoteDT.getTotRegs();
    	    var existeItemIncluso = false;
    	    arrayComboBoxServicosInclusos = new Array();
            for (var i = 0; i < total; i++)
            {
                if(jListaServicoInclusoPacoteDT.getDrValue(i, "Incluso_Opcional") == "false")
                {
                    tpl.tpl_trResultadoInclusos.nomeIncluso = jListaServicoInclusoPacoteDT.getDrValue(i, "Titulo");
                    tpl.tpl_trResultadoInclusos.id_Inclusos = jListaServicoInclusoPacoteDT.getDrValue(i, "CodServicoPacote");
                    arrayComboBoxServicosInclusos.push(jListaServicoInclusoPacoteDT.getDrValue(i, "CodServicoPacote"));
                    sb.append(tpl.tpl_trResultadoInclusos.getHtml());
                    existeItemIncluso = true;
                }
            };
            tpl.tpl_mainResultadoInclusos.trResultadoInclusos = sb.toString();
            if(existeItemIncluso)
            {
                ctrlRefs.divResultadoInclusos().style.display = '';
                ctrlRefs.td_Inclusos().style.display = '';
            };
            $html(ctrlRefs.divResultadoInclusos(), tpl.tpl_mainResultadoInclusos.getHtml());
            startEnv.listarServicosOpcionais();            
        },
        listarServicosOpcionais: function()
        {
            var jListaServicoOpcionaisPacoteDT = new jDatatable(resListaServicos.value);
            var sb = new StringBuilder();
	        var total = jListaServicoOpcionaisPacoteDT.getTotRegs();
    	    var existeItemOpcionais = false;
    	    arrayComboBoxServicosOpcionais = new Array();
            for (var i = 0; i < total; i++)
            {
                //Condicoes para retirar os que consomem tarifario, se quise retirar esta condicao retirar a comparacao tiposervico == avulso
                if(jListaServicoOpcionaisPacoteDT.getDrValue(i, "Incluso_Opcional") == "true" )
                    //&& jListaServicoOpcionaisPacoteDT.getDrValue(i, "TipoServico") == "Avulso")
                {
                    tpl.tpl_trResultadoOpcionais.nomeOpcionais = jListaServicoOpcionaisPacoteDT.getDrValue(i, "Titulo") + " - " +
                        "<b>Adulto</b>" + ': ' + "R$ " + parseFloat(jListaServicoOpcionaisPacoteDT.getDrValue(i, "ValorUnitarioADT")).formatNumber(2, false); // +
                        //"<b>Adulto</b>" + ': ' + jListaServicoOpcionaisPacoteDT.getDrValue(i, "Simbolo") + " " + parseFloat(jListaServicoOpcionaisPacoteDT.getDrValue(i, "ValorUnitarioADT")).formatNumber(2, false);// +
                        //" - <b>Criança</b>" + ': ' + jListaServicoOpcionaisPacoteDT.getDrValue(i, "Simbolo") + " " + parseFloat(jListaServicoOpcionaisPacoteDT.getDrValue(i, "ValorUnitarioCHD")).formatNumber(2, false) +
                        //" - <b>Infantil</b>" + ': ' + jListaServicoOpcionaisPacoteDT.getDrValue(i, "Simbolo") + " " + parseFloat(jListaServicoOpcionaisPacoteDT.getDrValue(i, "ValorUnitarioINF")).formatNumber(2, false);
                    tpl.tpl_trResultadoOpcionais.cbx_Opcionais = jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote");
                    arrayComboBoxServicosOpcionais.push(jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote"));                    
                    //tpl.tpl_trResultadoOpcionais.onclickOpcionais = 'javascript:ServicosPacote.exec.changeTarifa(' + parseInt(jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote")) + ');';
                    tpl.tpl_trResultadoOpcionais.div_Opcionais = "div_" + jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote");
                    tpl.tpl_trResultadoOpcionais.tr_Opcionais = "tr_" + jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote");
                    sb.append(tpl.tpl_trResultadoOpcionais.getHtml());
                    existeItemOpcionais = true;
                }
            };
            tpl.tpl_mainResultadoOpcionais.trResultadoOpcionais = sb.toString();
            if(existeItemOpcionais)
            {
                ctrlRefs.divResultadoOpcionais().style.display = '';
                ctrlRefs.td_Opcionais().style.display = '';
            };
            $html(ctrlRefs.divResultadoOpcionais(), tpl.tpl_mainResultadoOpcionais.getHtml());
        },
        somaValores : function() {
            return 'R$ ' + (parseFloat(valorAnterior) + parseFloat((totalInclusos == undefined? 0 : totalInclusos) 
                + totalOpcionais == undefined? 0 : totalOpcionais)).toFixed(2).toString().replace('.',',');
        }
    };
    
    var ctrlRefs = {
        siteConteudo: function() { return $('siteConteudo'); },
        divResultadoInclusos: function() { return $('divResultadoInclusos'); },
        divResultadoOpcionais: function() { return $('divResultadoOpcionais'); },
        td_Inclusos: function() { return $('td_Inclusos'); },
        td_Opcionais: function() {return $('td_Opcionais'); },
        valorTotalServicos: function() {return $('divValorTotalServicos'); }
    };

    var startEnv = {
        main: function() {
            $html("servicos", render.main());
            //$('servicos').style.display = '';
            //$('aereo').style.display = 'none';
            //$html("tituloPacotes", "Serviços");
            startEnv.listarServicosInclusos();
            $html(ctrlRefs.valorTotalServicos(), render.somaValores());
            $("divLoading").style.display = 'none';
        },
        listarServicosInclusos: function() {
            if (pCodPacote > 0) {
                clServicosPacote.listar(pCodPacote, 0, callbacks.listarServicosInclusos);
            }
            else {
                //$html(ctrlRefs.divResultadoInclusos(), "");
            };
        },
        listarServicosOpcionais: function() {
            render.listarServicosOpcionais();
        },
        formataNumeroDecimal: function(numero) {
            //		    var aux = new Array();
            //		    aux = numero.split(',');
            //		    if(aux[0] == "")
            //		    {
            //		        return "0," + aux[1];
            //		    }
            //		    else
            //		    {
            //		        return numero;
            //		    };
            return parseFloat(numero);
        },
        montaServicosPacote: function() {
            numeroAdultos = parseInt($get('numeroPessoas'));
            numeroCHD = 0;
            numeroINF = 0;

            //--- monata itens inclusos
            var codPacote = HotelPacote.codPacoteGlobal;

            var jListaServicoInclusoPacoteDT = new jDatatable(clServicosPacote.listar(codPacote, 0).value);
            var total = jListaServicoInclusoPacoteDT.getTotRegs();
            arrayComboBoxServicosInclusos = new Array();
            for (var i = 0; i < total; i++) {
                if (jListaServicoInclusoPacoteDT.getDrValue(i, "Incluso_Opcional") == "false") {
                    arrayComboBoxServicosInclusos.push(jListaServicoInclusoPacoteDT.getDrValue(i, "CodServicoPacote"));
                }
            };
            //--- monta itens nao inclusos
            var jListaServicoOpcionaisPacoteDT = jListaServicoInclusoPacoteDT;
            var total = jListaServicoOpcionaisPacoteDT.getTotRegs();
            arrayComboBoxServicosOpcionais = new Array();
            for (var i = 0; i < total; i++) {
                //Condicoes para retirar os que consomem tarifario, se quise retirar esta condicao retirar a comparacao tiposervico == avulso
                if (jListaServicoOpcionaisPacoteDT.getDrValue(i, "Incluso_Opcional") == "true") {
                    //&& jListaServicoOpcionaisPacoteDT.getDrValue(i, "TipoServico") == "Avulso") {
                    arrayComboBoxServicosOpcionais.push(jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote"));
                };
            };
            //------
            if (arrayComboBoxServicosInclusos.length > 0) {
                var servicoInclusos = "";
                for (var contInclusos = 0; contInclusos < arrayComboBoxServicosInclusos.length; contInclusos++) {
                    servicoInclusos = servicoInclusos + arrayComboBoxServicosInclusos[contInclusos] + ",";
                };
                if (servicoInclusos != "") {
                    var retorno = clServicosPacote.calculoServicos(servicoInclusos, 1, 0, 0); //numeroAdultos, numeroCHD, numeroINF);
                    jValorIncluosos = new jDatatable(retorno.value);
                    totalInclusos = parseFloat(jValorIncluosos.getDrValue(0, "valorTotal"))
                    totalInclusos = parseFloat(totalInclusos.formatNumber(2, true).replace('.', '').replace(',', '.')) * numeroAdultos;
                }
                else {
                    totalInclusos = 0;
                };
            };
            arrayServicosOpcionais = new Array();
            for (var contOpcionais = 0; contOpcionais < arrayComboBoxServicosOpcionais.length; contOpcionais++) {
                if ($('chk_opcinais_' + arrayComboBoxServicosOpcionais[contOpcionais]).checked) {
                    arrayServicosOpcionais.push(arrayComboBoxServicosOpcionais[contOpcionais]);
                }
                else {
                    $set('txt_opcionaisADT_' + arrayComboBoxServicosOpcionais[contOpcionais], "");
                    $set('txt_opcionaisCHD_' + arrayComboBoxServicosOpcionais[contOpcionais], "");
                    $set('txt_opcionaisINF_' + arrayComboBoxServicosOpcionais[contOpcionais], "");
                };
            };

            if (arrayServicosOpcionais.length > 0) {
                totalOpcionais = 0;
                var servicoOpcionais = "";
                var quantidadePax = "";
                for (var contOpcionais = 0; contOpcionais < arrayServicosOpcionais.length; contOpcionais++) {
                    if ($('tr_' + arrayServicosOpcionais[contOpcionais]).style.display == '') {
                        var total = parseInt($('div_quantTarifa_' + arrayServicosOpcionais[contOpcionais]).outerText);
                        for (var i = 0; i < total; i++) {
                            if ($('radio_' + arrayServicosOpcionais[contOpcionais] + "_" + i).checked == true) {
                                var value = $('radio_' + arrayServicosOpcionais[contOpcionais] + "_" + i).value;
                                servicoOpcionais = servicoOpcionais + value + "|";
                                break;
                            };
                        };
                    }
                    else {
                        servicoOpcionais = servicoOpcionais + arrayServicosOpcionais[contOpcionais] + "|";

                        var ADT = numeroAdultos;
                        var CHD = 0;
                        var INF = 0;
                        quantidadePax = quantidadePax + ADT + "|"
                                        + CHD + "|"
                                        + INF + "#";

                        /* 
                        
                        ABAIXO PARA DINÂMICO
                        
                        var ADT = 0;
                        if($('txt_opcionaisADT_'+arrayServicosOpcionais[contOpcionais]).value != "")
                        {
                        ADT = $('txt_opcionaisADT_'+arrayServicosOpcionais[contOpcionais]).value;
                        };
                        var CHD = 0;
                        if($('txt_opcionaisCHD_'+arrayServicosOpcionais[contOpcionais]).value != "")
                        {
                        CHD = $('txt_opcionaisCHD_'+arrayServicosOpcionais[contOpcionais]).value;
                        };
                        var INF = 0;
                        if($('txt_opcionaisINF_'+arrayServicosOpcionais[contOpcionais]).value != "")
                        {
                        INF = $('txt_opcionaisINF_'+arrayServicosOpcionais[contOpcionais]).value;
                        };
                        quantidadePax = quantidadePax + ADT + "|"
                        + CHD + "|"
                        + INF + "#";*/
                    };
                };
                if (servicoOpcionais != "") {
                    var retorno = clServicosPacote.calculoServicosOpcionaisPaxVariaveis(servicoOpcionais, quantidadePax);
                    jValorOpcionais = new jDatatable(retorno.value);
                    totalOpcionais = parseFloat(totalOpcionais) + parseFloat(jValorOpcionais.getDrValue(0, "valorTotal"));
                    totalOpcionais = parseFloat(totalOpcionais.formatNumber(2, true).replace('.', '').replace(',', '.')) * quantidadePax.split('|')[0];
                    This.codServico = servicoOpcionais.replace('|', ',');
                }
                else {
                    totalOpcionais = 0;
                    This.codServico = '';
                };
            }
            else {
                totalOpcionais = 0;
                This.codServico = '';
            };



            //-- ESSA LINHA PARA DINÂMICO
            //This.valorTotalServico = (parseFloat(totalInclusos) + parseFloat(totalOpcionais));

            //-- Comentado pois o numero de paxs pode variar de acordo com o que o cliente desejar.
            This.valorTotalServico = (parseFloat(totalInclusos) + parseFloat(totalOpcionais)) / numeroAdultos;

            totalInclusos = parseFloat(totalInclusos).formatNumber(2, true);
            totalOpcionais = parseFloat(totalOpcionais).formatNumber(2, true);

            //-- calcula tela
            var valorTela = 0;
            var valorHotel = 0;
            var pCodOpcaoHotelPacote = 0;
            var pCodAereo = 0;
            var pCodRodoviario = 0;
            var pCodServico = '';
            var pCodPacote = 0;
            var pArrItensOpcaoHotelDestinoPacote = '';
            var pArrOpcaoHotelPacote = '';

            try {
                pCodOpcaoHotelPacote = HotelPacote.opcaoHotelGeral;
            } catch (ex) { };

            try {
                pCodAereo = AereosPacote.codAereo;
            } catch (ex) { };

            try {
                pCodRodoviario = Rodoviario.codRodoviario;
            } catch (ex) { };

            try {
                pCodServico = This.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, pCodAereo, pCodRodoviario, pCodServico).value);

            var ValorServico = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table", 0, "ValorServico")).formatNumber(2, true);
            if (ValorServico == "NaN,00") { ValorServico = 0 };

            var ValorRodoviario = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table2", 0, "ValorRodoviario")).formatNumber(2, true);
            if (ValorRodoviario == "NaN,00") { ValorRodoviario = 0 };

            var ValorAereo = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table1", 0, "ValorAereo")).formatNumber(2, true);
            if (ValorAereo == "NaN,00") { ValorAereo = 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, "ValorConsDBL")).formatNumber(2, true);
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsSGL")).formatNumber(2, true);
                            if (valorHotel <= 0) {
                                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);
                            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)));

                if (pArrOpcaoHotelPacote[count] == pCodOpcaoHotelPacote)
                    $set('valorPacoteHeader', (parseFloat(valorTela) * qrdeHospede).formatNumber(2, true));
            };
        },
        changeTarifa: function(pCod) {
            if ($(pCod).checked == true) {
                var retorno = clServicosPacote.listarTarifas(pCod);
                var jListaDT = new jDatatable(retorno.value);
                var sb = new StringBuilder();
                var total = jListaDT.getTotRegs();
                var i = 0;
                if (total > 0) {
                    for (i; i < total; i++) {
                        tpl.tpl_trResultadoTarifa.nomeTarifa = jListaDT.getDrValue(i, "Nome");
                        tpl.tpl_trResultadoTarifa.radio_Opcionais = "radio_" + pCod + "_" + i;
                        tpl.tpl_trResultadoTarifa.name_Opcionais = "radio_" + pCod;
                        tpl.tpl_trResultadoTarifa.value_Opcionais = pCod + "_" + jListaDT.getDrValue(i, "CodTarifario") + "_" + jListaDT.getDrValue(i, "CodTarifa") + "_" + jListaDT.getDrValue(i, "NomeTipo");
                        //tpl.tpl_trResultadoTarifa.onclickRadio = 'javascript:ServicosPacote.exec.changePegaTarifa(' + parseInt(jListaDT.getDrValue(i, "CodTarifario")) + ',' + parseInt(jListaDT.getDrValue(i, "CodTarifa")) + ',' + "\'"+ jListaDT.getDrValue(i, "NomeTipo") +"\'"+ ');';
                        sb.append(tpl.tpl_trResultadoTarifa.getHtml());
                    };
                    tpl.tpl_mainResultadoTarifaServicoPacote.trResultadoTarifa = sb.toString();
                    $('tr_' + pCod + '').style.display = 'none';
                }
                tpl.tpl_mainResultadoTarifaServicoPacote.div_quantidadeTarifa = "div_quantTarifa_" + pCod;
                tpl.tpl_mainResultadoTarifaServicoPacote.quantTarifa = i;

                $html($('div_' + pCod), tpl.tpl_mainResultadoTarifaServicoPacote.getHtml());

                if (total > 0)
                    $('radio_' + pCod + '_0').checked = true;
            }
            else {
                $html($('div_' + pCod), "");
            };

            startEnv.montaServicosPacote();

            $html(ctrlRefs.valorTotalServicos(), render.somaValores());
        },
        trataLogin: function(res) {
            if (res) {
                //-- Atualiza CodUsuario no PedidoPacote
                clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");
                clDetalhesPedido.updatePedidosPacoteCodUsuario(parseInt(PubLogin.getSession("CodUsuario")), pCodPedido);

                initDetalhesPgtoPedido(pCodPedido);
                //initSSL(pCodPedido, pCodPacote);
            }
            else {
                This.cancelar = 1;
            }
        }
    };
    
    this.goTo = {
        main: function(codPedido, valor)
        {
            valorAnterior = valor;
            pCodPedido = codPedido;
            
            if(pCodPedido > 0) {
            	clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");
                var retorno = clServicosPacote.deletePedidosPacotes_Servicos(pCodPedido);
                try
                {
                    var retorno = clAereoPacote.getCodPacote(pCodPedido);
                    jListaPedidoPacote = new jDatatable(retorno.value);                
                    pCodPacote = parseInt(jListaPedidoPacote.getDrValue(0, "CodPacote"));
                    if(pCodPacote>0)
                    {
                        /*
                        var retorno = clAereoPacote.lerQuantidadePaxsPedidoPacote(pCodPedido);
                        var jListaPAX = new jDatatable(retorno.value);
                        var total = jListaPAX.getTotRegs();
                        numeroAdultos = 0;
                        numeroCHD = 0;
                        numeroINF = 0;
                        for(var i = 0; i < total; i++)
                        {
                            if(jListaPAX.getDrValue(i, "Nome") == "INF")
                            {
                                numeroINF++;
                            };                
                            if(jListaPAX.getDrValue(i, "Nome") == "CHD")
                            {
                                numeroCHD++;
                            };
                            if(jListaPAX.getDrValue(i, "Nome") == "ADT")
                            {
                                numeroAdultos++;
                            }
                            
                        }; 
                        */  
                        startEnv.main();            
                        startEnv.montaServicosPacote();
                    };
                }
                catch(err){};
            };
        },
        voltarAereo: function()
        {
            //$('servicos').style.display = 'none';
            //$('aereo').style.display = '';
            //$html("tituloPacotes", "Aéreo");
        }
    };
    
    var callbacks = {
        listarServicosInclusos: function(res)
        {
            if (res.error == undefined)
            {
                if (res.value != undefined)
                {       
                    resListaServicos = res;             
                    render.listarServicosInclusos();                    
                };
            };
        }
    };

    this.exec = {
        main: function(codPedido) {
            pCodPedido = codPedido;
            if (pCodPedido > 0) {
                var retorno = clServicosPacote.deletePedidosPacotes_Servicos(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) { };
            }
            else {
                //-- Senão tiver pedido deve voltar
            };
        },
        soNumeros: function(e) {
            return SoNumeros(e);
        },
        montaServicosPacote: function(cPedido) {
            window.scroll(0, 0);
            pCodPedido = cPedido;
            var continuar = true;

            //-- SALVA HOTEIS
            try {
                if (!HotelPacote.exec.inserir(0, 0))
                    continuar = false;
            }
            catch (e)
		    { };

            if (continuar) {
                //-- SALVA AÉREO

                if (tipoTransporte == 'Aereo') {
                    try {
                        AereosPacote.exec.montaAereosPacote();
                    }
                    catch (e)
		            { };
                } else {
                    if (tipoTransporte == 'Rodo') {
                        //-- SALVA RODOVIARIO
                        try {
                            Rodoviario.exec.salvarRodoviario();
                        }
                        catch (e)
		                { };
                    }
                    else {
                        if ($('rodoviario').style.display != 'none') {
                            Rodoviario.exec.salvarRodoviario();
                        };
                        if ($('aereo').style.display != 'none') {
                            AereosPacote.exec.montaAereosPacote();
                        };
                    };
                };
                //--- monta itens inclusos
                var retorno = clAereoPacote.getCodPacote(pCodPedido);
                jListaPedidoPacote = new jDatatable(retorno.value);
                var codPacote = parseInt(jListaPedidoPacote.getDrValue(0, "CodPacote"));

                var jListaServicoInclusoPacoteDT = new jDatatable(clServicosPacote.listar(codPacote, 0).value);
                var total = jListaServicoInclusoPacoteDT.getTotRegs();
                arrayComboBoxServicosInclusos = new Array();
                for (var i = 0; i < total; i++) {
                    if (jListaServicoInclusoPacoteDT.getDrValue(i, "Incluso_Opcional") == "false") {
                        arrayComboBoxServicosInclusos.push(jListaServicoInclusoPacoteDT.getDrValue(i, "CodServicoPacote"));
                    }
                };
                //--- monta itens nao inclusos
                var jListaServicoOpcionaisPacoteDT = jListaServicoInclusoPacoteDT;
                var total = jListaServicoOpcionaisPacoteDT.getTotRegs();
                arrayComboBoxServicosOpcionais = new Array();
                for (var i = 0; i < total; i++) {
                    //Condicoes para retirar os que consomem tarifario, se quise retirar esta condicao retirar a comparacao tiposervico == avulso
                    if (jListaServicoOpcionaisPacoteDT.getDrValue(i, "Incluso_Opcional") == "true") {
                        //&& jListaServicoOpcionaisPacoteDT.getDrValue(i, "TipoServico") == "Avulso") {
                        arrayComboBoxServicosOpcionais.push(jListaServicoOpcionaisPacoteDT.getDrValue(i, "CodServicoPacote"));
                    };
                };
                //----
                startEnv.montaServicosPacote();
                //-- COlocar link para ir para proxima janela
                //-- tem que ter como parametro ->
                var retorno;
                clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");

                clServicosPacote.excluirExistentes(pCodPedido);
                for (var i = 0; i < arrayServicosOpcionais.length; i++) {
                    retorno = clServicosPacote.salvarPedidoServicosPacote(pCodPedido, parseInt(arrayServicosOpcionais[i]), 0, 0);
                };
                for (var i = 0; i < arrayComboBoxServicosInclusos.length; i++) {
                    retorno = clServicosPacote.salvarPedidoServicosPacote(pCodPedido, parseInt(arrayComboBoxServicosInclusos[i]), 0, 0);
                };
                retorno = clServicosPacote.updatePedidosPacotesValorServicoPacote(pCodPedido, totalInclusos, totalOpcionais);
                //-- ZERA VARIAVEIS PARA CASO O CLIENTE RETORNE NAO FICA COM LIXO DE VALORES PASSADOS
                totalInclusos = 0;
                totalOpcionais = 0;
                $('transporte').style.display = 'none';


                if ($queryString('areaAgente') == "true") {
                    //-- Faz o login Area Agente
                    PubLogin.doLoginAreaAgente();

                    clDetalhesPedido.insertStatusPedido(
                                                        pCodPedido,
                                                        new statusPedido().Em_processo_compra_Hoteis,
                                                        PubLogin.getSession('CodUsuario'),
                                                        'Configure sua Viagem'
                                                        );

                    //-- Atualiza CodUsuario no PedidoPacote
                    clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");
                    clDetalhesPedido.updatePedidosPacoteCodUsuario(parseInt(PubLogin.getSession("CodUsuario")), pCodPedido);

                    //-- Start detalhes pgto pacote
                    initDetalhesPgtoPedido(pCodPedido);
                    //initSSL(pCodPedido, pCodPacote);	
                }
                else {
                    clDetalhesPedido.insertStatusPedido(
                                                        pCodPedido,
                                                        new statusPedido().Em_processo_compra_Hoteis,
                                                        PubLogin.getSession('CodUsuario'),
                                                        'Configure sua Viagem'
                                                        );

                    //-- Senão estiver logado
                    if (!PubLogin.isLogado()) {
                        $("divLoading").style.display = 'none';

                        //var hashLogin = clDetalhesPedido.getUrlLoginPacote_VB(pCodPedido, jListaPedidoPacote.getDrValue(0, "CodEmpresaPacote")).value;
                        //openModalLogin(hashLogin, "");
                        PubLogin.loginNovo(pCodPedido, 1);

                        /*$("divLoading").style.display = 'none';
                        initLogin(startEnv.trataLogin);
                        $('txtNomeUsuario').focus();*/
                    }
                    else {
                        //-- Atualiza CodUsuario no PedidoPacote
                        clLogin.setTelaAcaoSession("Inserir Pedido P - B2C");
                        clDetalhesPedido.updatePedidosPacoteCodUsuario(parseInt(PubLogin.getSession("CodUsuario")), pCodPedido);

                        //-- Start detalhes pgto pacote
                        initDetalhesPgtoPedido(pCodPedido);
                        //initSSL(pCodPedido, pCodPacote);	            
                    };
                };
            };
        },
        changeTarifa: function(pCod) {
            if ($('tr_' + pCod + '').style.display == "none")
                startEnv.changeTarifa(pCod);
            else
                $('tr_' + pCod + '').style.display = 'none';
        },
        changePegaTarifa: function(pCodTarifario, pCodTarifa, pTipoTarifario) {
            var teste = 0;
            $(pCodTarifario + '_' + pCodTarifa + '_' + pTipoTarifario);
        },
        calculaValor: function() {
            startEnv.montaServicosPacote();

            try {
                HotelPacote.on.changeOpcaoNumHospedes();
            } catch (ex) { }
        },
        check: function(number) {
            if ($('chk_opcinais_' + number).checked) {
                startEnv.montaServicosPacote();
                try {
                    HotelPacote.on.changeOpcaoNumHospedes();
                }
                catch (ex) { };
            }
            else {
                $('chk_opcinais_' + number).checked = true;
                startEnv.montaServicosPacote();
                try {
                    HotelPacote.on.changeOpcaoNumHospedes();
                }
                catch (ex) { };
            };
        },
        tipoTransporte: function(tipo) {
            tipoTransporte = tipo;
        }
    };
    
    this.continuarLogin = function()
    {
        initDetalhesPgtoPedido(pCodPedido);
    };
    
//    var openModalLogin = function(theURL, winName) 
//    {
//        window.showModalDialog(theURL, winName, "dialogwidth: 820px; dialogheight: 500px; resizable: no");
//        
//        if (clDetalhesPedido.verificarStatusLogin(pCodPedido, "P").value > 0)
//        {
//            initDetalhesPgtoPedido(pCodPedido);
//        };
//    };
    
    this.constructor = new function()
    {
        tpl = new Template("ServicosPacote");        
    };
};

function posSSL() {
    PubLogin = new jLogin();
    initDetalhesPacote();
    initRoteirosPacote();
    initHotelPacote($queryString('codPacote'), $queryString('p'));
    initDetalhesPgtoPedido($queryString('p'));
};
