﻿function jHotelPacote()
{
    var jDT, jDTOpcoesHotel, jDTOpcaoHotel_2,jDTacomod_Alim_Pedido;
    var jDSCountTransporte;
    var tpl;
    //var tplCommon = new Template("Common");
    var pCodPacote,pCodPedido;
    var arrayCidades = [];
    var TarifaSGL,TarifaDBL,TarifaTPL, TarifaQDP,TarifaINF,TarifaCHD1;
    var pNumeroApto; 
    var ArrayOpcoesHospedagem =[];
    var ArrayOpcaoHotel =[];
    var ArrayTarifas = [];
    var ArrayTarifasHotel = [];
    var valorHotel, valorTarifaDiaria,valorHotelTotal, valorHotelUnico,valorPedido;
    var valorAvancarAereo;
    var pArrItensOpcaoHotelDestinoPacote = '';
    var jDTValoresFinais;    
    var formSelected;
    var radioSelected = 0;
    var cancelar = 0;
    var totalAereo,totalRodov, totalServicos;
    var This = this;
    var opcaoHotel = 0;
    var pArrOpcaoHotelPacote = '';

    this.codPacoteGlobal = pCodPacote;
    this.opcaoHotelGeral = opcaoHotel;
    this.codPacote = pCodPacote;
    this.arrItensOpcaoHotelDestinoPacote = pArrItensOpcaoHotelDestinoPacote;
    this.arrOpcaoHotelPacote = pArrOpcaoHotelPacote;

    var render = {
        montaArrayItensOpcaoHotelDestinoPacote_HOTELDEFAULT: function(indiceOpcaoHosp, pCodOpcaoHoteis) {
            //Lista Opcao de Hotel Destino Pacote
            var jDTOpcaoHotel = new jDatatable(clHotelPacote.lerOpcaoHotel(pCodOpcaoHoteis).value);
            var tarifario = jDTOpcaoHotel.getDrValue(indiceOpcaoHosp, "CodTarifarioHotel");
            totalOpcao = parseInt(jDTOpcaoHotel.getTotRegs());

            var pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT = "";
            for (var j = 0; j < totalOpcao; j++) {
                pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT = render.listaTarifasTiposAcomAlim_Tarifas_HOTELDEFAULT(
                                                                            pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT,
                                                                            pCodOpcaoHoteis, j, jDTOpcaoHotel.getDrValue(j, "CodTarifarioHotel"),
                                                                            jDTOpcaoHotel.getDrValue(j, "CodOpcaoHotelDestinoPacote"),
                                                                            jDTOpcaoHotel.getDrValue(j, "Markup"),
                                                                            jDTOpcaoHotel.getDrValue(j, "NumeroNoites"));

            };
            return pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT;
        },
        listaTarifasTiposAcomAlim_Tarifas_HOTELDEFAULT: function(pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT, pCodOpcaoHoteis, indiceHotel, pCodTarifario, pCodOpcaoHotelDestinoPacote, pMarkup, pNumeroNoites) {
            // Lista Tarifas de uma Opcao Destino Pacote
            var jDTacomod_Alim = new jDatatable(clHotelPacote.lerTarifasTipoAlimenTipoAcomod(pCodTarifario, pCodOpcaoHotelDestinoPacote).value);

            //sb.append(render.optionSelecione());
            for (var i = 0; i < jDTacomod_Alim.getTotRegs(); i++) {
                if (i == 0) pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT += jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote") + ',';
            };
            return pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT;
        },
        formHotelPacote: function() {
            //Lista todas as opções de Hoteis
            jDTOpcoesHotel = new jDatatable(clHotelPacote.listarOpcoesHoteis(pCodPacote).value);
            This.codPacote = pCodPacote;
            var sb = new StringBuilder();
            var total = parseInt(jDTOpcoesHotel.getTotRegs());


            //--- verificar qual o hotel mais barato e seta esta opcao com default
            var _valorTotalHotel = 999999999999;
            var _opcHotelMaisBarto = 0;
            var pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT = "";
            for (var i = 0; i < total; i++) {
                pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT += render.montaArrayItensOpcaoHotelDestinoPacote_HOTELDEFAULT(i, jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote"));
            };
            for (var i = 0; i < total; i++) {
                var jDTValores = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                                jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote"),
                                                pCodPacote,
                                                pArrItensOpcaoHotelDestinoPacote_HOTELDEFAULT,
                                                0,
                                                0,
                                                0).value);

                for (var j = 0; j < jDTValores.getTotRegs(); j++) {
                    var valorHtl = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL"));
                    if (valorHtl < _valorTotalHotel) {
                        _valorTotalHotel = valorHtl;
                        _opcHotelMaisBarto = parseInt(jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote"));
                    };
                };
            };
            //---------------------------------------------------------------------

            for (var i = 0; i < total; i++) {
                var checked = '';
                if (_opcHotelMaisBarto != 0) {
                    if (jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote") == _opcHotelMaisBarto)//(i == 0)
                        checked = 'checked="checked"';
                } else {
                    if (i == 0) {
                        checked = 'checked="checked"';
                    };
                };
                tpl.novo.tpl_HotelPacote.checked = checked;
                tpl.novo.tpl_HotelPacote.tituloOpcao = jDTOpcoesHotel.getDrValue(i, "Nome");
                tpl.novo.tpl_HotelPacote.opcoes = render.formOpcaoHoteis(i, jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote"));
                tpl.novo.tpl_HotelPacote.divCodOpcaoHoteis = jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote");
                tpl.novo.tpl_HotelPacote.valor = render.renderSubtotal(jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote"));
                tpl.novo.tpl_HotelPacote.indice = i.toString();
                tpl.novo.tpl_HotelPacote.codOpcao = jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote");
                pArrOpcaoHotelPacote = pArrOpcaoHotelPacote + jDTOpcoesHotel.getDrValue(i, "CodOpcaoHotelPacote") + ',';
                sb.append(tpl.novo.tpl_HotelPacote.getHtml());
            };

            //-- By Wagner = Para preencher o valor do Header da primeira opção
            if (total > 0) {
                if (_opcHotelMaisBarto == 0) {
                    _opcHotelMaisBarto = jDTOpcoesHotel.getDrValue(0, "CodOpcaoHotelPacote");
                }
                render.renderSubtotal(_opcHotelMaisBarto); //(jDTOpcoesHotel.getDrValue(0, "CodOpcaoHotelPacote"));
                opcaoHotel = (_opcHotelMaisBarto); //parseInt(jDTOpcoesHotel.getDrValue(0, "CodOpcaoHotelPacote"));
                radioSelected = opcaoHotel;
                This.opcaoHotelGeral = (_opcHotelMaisBarto); //parseInt(jDTOpcoesHotel.getDrValue(0, "CodOpcaoHotelPacote"));
            };

            This.arrOpcaoHotelPacote = pArrOpcaoHotelPacote;
            pArrOpcaoHotelPacote = '';
            tpl.novo.tpl_mainResultado.headerPacote = DetalhesPacote.goTo.renderHeader(pCodPacote, pCodPedido);
            tpl.novo.tpl_mainResultado.trResultado = sb.toString();
            tpl.novo.tpl_mainResultado.pax = render.listaPax(4);
            tpl.novo.tpl_mainResultado.eventOnChangePax = 'javascript:HotelPacote.on.changePax(this)';
            tpl.novo.tpl_mainResultado.onclickVoltar = 'javascript:DetalhesPacote.goTo.roteiros(' + pCodPacote + ')';
            return tpl.novo.tpl_mainResultado.getHtml();
        },
        renderSubtotal: function(pCodOpcaoHotelPacote) {
            opcaoHotel = pCodOpcaoHotelPacote;
            This.opcaoHotelGeral = opcaoHotel;

            var valorAereo = 0;
            var valorRodoviario = 0;
            var valorServico = 0;
            try {
                valorAereo = AereosPacote.valorTotalAereo;
                if (AereosPacote.codAereo == 0) { valorAereo = 0; };
            } catch (ex) { valorAereo = 0; };

            try {
                valorRodoviario = Rodoviario.valorTotal;
            } catch (ex) { valorRodoviario = 0; };

            try {
                valorServico = ServicosPacote.valorTotalServico;
            } catch (ex) { valorServico = 0; };

            This.arrItensOpcaoHotelDestinoPacote = pArrItensOpcaoHotelDestinoPacote;

            var qrdeHospede = $get('numeroPessoas') == "" ? 1 : $get('numeroPessoas');
            var jDTValores = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                                pCodOpcaoHotelPacote,
                                                pCodPacote,
                                                pArrItensOpcaoHotelDestinoPacote,
                                                (valorAereo / qrdeHospede), //-- Divisão add by Wagner - 24/09/2010
                                                valorServico,
                                                valorRodoviario).value);

            for (var j = 0; j < jDTValores.getTotRegs(); j++) {
                //alert(qrdeHospede);
                switch (parseInt(qrdeHospede)) {
                    case 1:
                        var valorSGL = parseFloat(jDTValores.getDrValue(j, "ValorConsSGL")).formatNumber(2, true);
                        var valorDBL = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                        var descricaoAcomodacao = "single";

                        if (valorSGL <= 0) {
                            valorSGL = valorDBL
                            //descricaoAcomodacao = "Double";
                        };

                        tpl.novo.tpl_subtotal_opcao.Valor = 'R$ ' + valorSGL;
                        tpl.novo.tpl_subtotal_opcao.Nome = '<b>Acomodação <br>' + descricaoAcomodacao + '</b>';

                        if (radioSelected == pCodOpcaoHotelPacote) {
                            var jDTValorHeader = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                pCodOpcaoHotelPacote,
                                pCodPacote,
                                pArrItensOpcaoHotelDestinoPacote,
                                valorAereo,
                                valorServico,
                                valorRodoviario).value);

                            HotelPacote.on.setHeaderValue(valorSGL);
                        };
                        break;
                    case 2:
                        tpl.novo.tpl_subtotal_opcao.Valor = 'R$ ' + parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                        tpl.novo.tpl_subtotal_opcao.Nome = '<b>Acomodação <br>double</b>';

                        if (radioSelected == pCodOpcaoHotelPacote) {
                            var jDTValorHeader = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                pCodOpcaoHotelPacote,
                                pCodPacote,
                                pArrItensOpcaoHotelDestinoPacote,
                                (valorAereo / qrdeHospede), //-- Divisão add by Wagner - 24/09/2010
                                valorServico,
                                valorRodoviario).value);

                            HotelPacote.on.setHeaderValue(parseFloat(jDTValorHeader.getDrValue(j, "ValorConsDBL")).formatNumber(2, true));
                        };
                        break;
                    case 3:
                        tpl.novo.tpl_subtotal_opcao.Valor = 'R$ ' + parseFloat(jDTValores.getDrValue(j, "ValorConsTPL")).formatNumber(2, true);
                        tpl.novo.tpl_subtotal_opcao.Nome = '<b>Acomodação <br>triple</b>';

                        if (radioSelected == pCodOpcaoHotelPacote) {
                            var jDTValorHeader = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                pCodOpcaoHotelPacote,
                                pCodPacote,
                                pArrItensOpcaoHotelDestinoPacote,
                                (valorAereo / qrdeHospede), //-- Divisão add by Wagner - 24/09/2010
                                valorServico,
                                valorRodoviario).value);

                            HotelPacote.on.setHeaderValue(parseFloat(jDTValorHeader.getDrValue(j, "ValorConsTPL")).formatNumber(2, true));
                        };
                        break;
                    case 4:
                        tpl.novo.tpl_subtotal_opcao.Valor = 'R$ ' + parseFloat(jDTValores.getDrValue(j, "ValorConsDBL") * 2).formatNumber(2, true);
                        tpl.novo.tpl_subtotal_opcao.Nome = '<b>Acomodação <br>quadruple</b>';

                        if (radioSelected == pCodOpcaoHotelPacote) {
                            var jDTValorHeader = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                pCodOpcaoHotelPacote,
                                pCodPacote,
                                pArrItensOpcaoHotelDestinoPacote,
                                valorAereo,
                                valorServico,
                                valorRodoviario).value);

                            HotelPacote.on.setHeaderValue(parseFloat(jDTValorHeader.getDrValue(j, "ValorConsDBL") * 2).formatNumber(2, true));
                        };
                        break;
                };
            };
            //alert(descricaoAcomodacao);
            tpl.novo.tpl_subtotal_opcao.CodOpcaoHoteis = pCodOpcaoHotelPacote;

            return tpl.novo.tpl_subtotal_opcao.getHtml();
        },
        formOpcaoHoteis: function(indiceOpcaoHosp, pCodOpcaoHoteis) {
            //Lista Opcao de Hotel Destino Pacote
            var jDTOpcaoHotel = new jDatatable(clHotelPacote.lerOpcaoHotel(pCodOpcaoHoteis).value);
            var tarifario = jDTOpcaoHotel.getDrValue(indiceOpcaoHosp, "CodTarifarioHotel");
            totalOpcao = parseInt(jDTOpcaoHotel.getTotRegs());
            var sb = new StringBuilder();

            for (var j = 0; j < totalOpcao; j++) {
                tpl.novo.tpl_mainForm.LocalDestino = jDTOpcaoHotel.getDrValue(j, "Nome");
                tpl.novo.tpl_mainForm.HotelDestino = jDTOpcaoHotel.getDrValue(j, "NomeFantasia");
                tpl.novo.tpl_mainForm.optionsAlimenAcom = render.listaTarifasTiposAcomAlim_Tarifas(pCodOpcaoHoteis, j, jDTOpcaoHotel.getDrValue(j, "CodTarifarioHotel"), jDTOpcaoHotel.getDrValue(j, "CodOpcaoHotelDestinoPacote"), jDTOpcaoHotel.getDrValue(j, "Markup"), jDTOpcaoHotel.getDrValue(j, "NumeroNoites"));

                tpl.novo.tpl_mainForm.codOpcaoHotel = pCodOpcaoHoteis;
                tpl.novo.tpl_mainForm.cods = pCodOpcaoHoteis + ',' + jDTOpcaoHotel.getDrValue(j, "CodOpcaoHotelDestinoPacote");

                sb.append(tpl.novo.tpl_mainForm.getHtml());
            };
            return sb.toString();
        },
        listaTarifasTiposAcomAlim_Tarifas: function(pCodOpcaoHoteis, indiceHotel, pCodTarifario, pCodOpcaoHotelDestinoPacote, pMarkup, pNumeroNoites) {
            // Lista Tarifas de uma Opcao Destino Pacote
            var jDTacomod_Alim = new jDatatable(clHotelPacote.lerTarifasTipoAlimenTipoAcomod(pCodTarifario, pCodOpcaoHotelDestinoPacote).value);
            var sb = new StringBuilder();

            //sb.append(render.optionSelecione());
            //CodItemOpcaoHotelDestinoPacote = 0;
            var arrayCodItemOpcaoHotelDestinoPacote = [];
            for (var i = 0; i < jDTacomod_Alim.getTotRegs(); i++) {

                //if (CodItemOpcaoHotelDestinoPacote != jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote")) {
                if (!arrayCodItemOpcaoHotelDestinoPacote.contains(jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote"))) {
                    //CodItemOpcaoHotelDestinoPacote = jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote");
                    arrayCodItemOpcaoHotelDestinoPacote.push(jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote"));
                    if (i == 0) pArrItensOpcaoHotelDestinoPacote += jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote") + ',';

                    tpl.novo.tpl_option.indiceOpcao = pCodOpcaoHoteis;
                    tpl.novo.tpl_option.indiceTarifa = jDTacomod_Alim.getDrValue(i, "CodOpcaoHotelDestinoPacote");
                    tpl.novo.tpl_option.value = jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote");
                    tpl.novo.tpl_option.selected = (i == 0 ? "selected='selected'" : "");

                    tpl.novo.tpl_option.value = jDTacomod_Alim.getDrValue(i, "CodItemOpcaoHotelDestinoPacote");
                    tpl.novo.tpl_option.text = jDTacomod_Alim.getDrValue(i, "NomeAcomodacao") + ' / ' + jDTacomod_Alim.getDrValue(i, "NomeAlim");
                    sb.append(tpl.novo.tpl_option.getHtml());
                };
            };

            return sb.toString();
        },
        listaTipoPax: function() {

            var jDTtipoPax = new jDatatable(clHotelPacote.lerTiposPax().value);
            var sb = new StringBuilder();
            for (var i = 0; i < jDTtipoPax.getTotRegs(); i++) {
                var tipoPax;

                if (jDTtipoPax.getDrValue(i, "Nome") == "ADT") { tipoPax = "Adulto" };
                if (jDTtipoPax.getDrValue(i, "Nome") == "CHD") { tipoPax = "Criança" };
                if (jDTtipoPax.getDrValue(i, "Nome") == "INF") { tipoPax = "Bebê" };
                if (jDTtipoPax.getDrValue(i, "Nome") == "SNR") { tipoPax = "Melhor Idade" };

                tpl.tpl_option.value = jDTtipoPax.getDrValue(i, "CodTipoPax");
                tpl.tpl_option.text = tipoPax;
                tpl.tpl_option.selected = (jDTtipoPax.getDrValue(i, "Nome") == "ADT" ? "selected='selected'" : "");
                sb.append(tpl.tpl_option.getHtml());
            };
            return sb.toString();
        },
        listaPax: function(pNumeroPessoas) {
            var sb = new StringBuilder();
            for (var i = 0; i < pNumeroPessoas; i++) {
                tpl.tpl_pax.indicePax = i + 1;
                tpl.tpl_pax.tipoPax = render.listaTipoPax();
                sb.append(tpl.tpl_pax.getHtml());
            };
            return sb.toString();
        },
        ocultaListaPax: function(pApto) {
            for (var i = 1; i <= 4; i++) {
                $('pax_' + i).style.display = 'none';
            };
        },
        loading: function() {
            var sb = new StringBuilder();
            sb.append("<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />");
            sb.append("<center>");
            sb.append(tplCommon.tpl_loading.getHtml());
            sb.append("</center>");
            return sb.toString();
        }
    };

    this.on = {
        sort: function(pColuna, pReverse) {
            jDT.sort(pColuna, pReverse);
        },
        changeOpcaoHotel: function(thisObj) {
            for (var i = 0; i < document.forms.length; i++) {
                for (var j = 0; j < document.forms[i].length; j++) {
                    if (document.forms[i][j].type == 'radio') {
                        document.forms[i][j].checked = false;
                    }
                }
            }

            radioSelected = thisObj.value;
            formSelected = thisObj.form;
            thisObj.checked = true;

            opcaoHotel = radioSelected;
            This.opcaoHotelGeral = opcaoHotel;
            HotelPacote.on.setHeaderValue($get('divValorRendersubtotal_' + radioSelected));
        },
        changeOpcaoNumHospedes: function() {
            for (var i = 0; i < document.forms.length; i++) {
                var arrLst = '';
                var pCodOpcaoHoteis;
                var pCodOpcaoHotelPacote;
                for (var j = 0; j < document.forms[i].length; j++) {
                    if (document.forms[i][j].type == 'select-one') {
                        var radioGrp = document.forms[i][j];

                        if (radioGrp[radioGrp.selectedIndex].name != 'chk_' + pCodOpcaoHoteis + '_' + radioGrp[radioGrp.selectedIndex].value) {
                            if (radioGrp[radioGrp.selectedIndex].selected) {
                                arrLst += radioGrp[radioGrp.selectedIndex].value + ',';
                            };
                        };
                    };

                    if (document.forms[i][j].type == 'radio') {
                        pCodOpcaoHoteis = document.forms[i][j].value;

                        if (document.forms[i][j].checked)
                            radioSelected = pCodOpcaoHoteis;
                    };

                    if (document.forms[i][j].type == 'hidden') {
                        pCodOpcaoHotelPacote = document.forms[i][j].value;
                    };
                };

                pArrItensOpcaoHotelDestinoPacote = arrLst;
                This.arrItensOpcaoHotelDestinoPacote = arrLst;
                $html('divSubtotal_' + pCodOpcaoHoteis, render.renderSubtotal(pCodOpcaoHotelPacote));
                pArrItensOpcaoHotelDestinoPacote = '';
            }
        },
        changeOpcao: function(pCodOpcaoHoteis, pCodOpcaoHotelPacote, thisObj) 
        {
        
            /*  Tratamento para não excluir as demais opções selecionadas 
                Quando tem mais de uma opção e uma das opções tem mais de uma acomodacao/alimentacao limpava tudo
                e ao trocar novamente uma opção ou meio de transporte aparecia os valores sem a soma da hospedagem
                
                By Wagner Vieira - 24/09/2010
            */
            
            //-- Pega todas as opções do combo selecionado
            var arrLstAux = [];
            var opcaoSelecionada = "";
            for (var j = 0; j < thisObj.form.length; j++) {
                if (thisObj.form[j].type == 'select-one') {
                    var radioGrp = thisObj.form[j];

                    //if (radioGrp[radioGrp.selectedIndex].name != 'chk_' + pCodOpcaoHoteis + '_' + thisObj.value) {
                    for (var y = 0; y < radioGrp.length; y ++)
                    {
                        arrLstAux.push(radioGrp[y].value);
                        if (radioGrp[y].selected) {
                            opcaoSelecionada = radioGrp[radioGrp.selectedIndex].value;
                        };
                    };
                    //};
                };

                if (thisObj.form[j].type == 'radio') {
                    if (thisObj.form[j].checked)
                        radioSelected = thisObj.form[j].value;
                };
            };
            
            
            /* Como era antes = 24/09/2010
            var arrLst = '';            
            for (var j = 0; j < thisObj.form.length; j++) {
                if (thisObj.form[j].type == 'select-one') {
                    var radioGrp = thisObj.form[j];

                    if (radioGrp[radioGrp.selectedIndex].name != 'chk_' + pCodOpcaoHoteis + '_' + thisObj.value) {
                        if (radioGrp[radioGrp.selectedIndex].selected) {
                            arrLst += radioGrp[radioGrp.selectedIndex].value + ',';
                        };
                    };
                };

                if (thisObj.form[j].type == 'radio') {
                    if (thisObj.form[j].checked)
                        radioSelected = thisObj.form[j].value;
                };
            };
            End como era antes */

            //-- Agora faz um replace no novo selecionado apenas
            for (var x = 0; x < arrLstAux.length; x++)
            {
                if (arrLstAux[x] != opcaoSelecionada)
                    This.arrItensOpcaoHotelDestinoPacote = This.arrItensOpcaoHotelDestinoPacote.replace(arrLstAux[x], opcaoSelecionada);
            };
            
            
            
            /*pArrItensOpcaoHotelDestinoPacote = arrLst;
            This.arrItensOpcaoHotelDestinoPacote = arrLst;*/
            pArrItensOpcaoHotelDestinoPacote = This.arrItensOpcaoHotelDestinoPacote
            $html('divSubtotal_' + pCodOpcaoHoteis, render.renderSubtotal(pCodOpcaoHoteis));
            pArrItensOpcaoHotelDestinoPacote = undefined;
        },
        changeTarifa: function(pIndice, pIndiceTarifa) {
            //Evento Onchange na escolha do Hotel.
            $('selAcomAllim_' + pIndice + '_' + pIndiceTarifa).onchange = function() {
                render.calculaValorTarifariosArray();
            };
        },
        clickTarifa: function(pIndiceOpcao, pIndiceTarifa, pIndice) {
            render.calculaValorTarifariosArray(pIndiceOpcao, pIndiceTarifa, pIndice);
        },
        changePax: function(thisObj, first) {
            render.ocultaListaPax(thisObj.value);

            if (first == undefined) {
                for (var j = 1; j <= parseInt($get('numeroPessoas')); j++)
                    $('pax_' + j).style.display = '';



                if (radioSelected > 0) {
                    HotelPacote.on.setHeaderValue($get('divValorRendersubtotal_' + radioSelected), thisObj.value);
                    if (AereosPacote != undefined)
                        AereosPacote.exec.calculoValor();
                    else
                    {
                        AereosPacote = new jAereoPacote();
                        AereosPacote.exec.calculoValor();
                    }
                } else {
                    if (AereosPacote != undefined) {
                        AereosPacote.exec.calculoValor();
                    } else {
                        $set('valorPacoteHeader', (parseFloat($get('valorPacoteHeader').replace('R$ ', '').replace('.', '').replace(',', '.')) * $get('numeroPessoas')).formatNumber(2, true));
                    };
                };
            };


        },
        setHeaderValue: function(val, nPax) {
            if (nPax == undefined) nPax = parseInt($get('numeroPessoas'));

            $set('valorPacoteHeader', (parseFloat(val.toString().replace('R$ ', '').replace('.', '').replace(',', '.')) * nPax).formatNumber(2, true));
        },
        changeValores: function() {
            if ($get('numeroPessoas') == 1) {
                valorHotelUnico = parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL"));
                //valorPedido = parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL"));

                valorPedido = parseFloat(jDTValoresFinais.getDrValue(0, "ValorSGL")); ;
                if (valorPedido <= 0) {
                    valorPedido = parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL")); ;
                };
                
            };

            if ($get('numeroPessoas') == 2) {
                valorHotelUnico = parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL"));
                valorPedido = parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL") * 2);
            };
            if ($get('numeroPessoas') == 3) {
                valorHotelUnico = parseFloat(jDTValoresFinais.getDrValue(0, "ValorTPL"));
                valorPedido = parseFloat(jDTValoresFinais.getDrValue(0, "ValorTPL") * 3);
            };
            if ($get('numeroPessoas') == 4) {
                valorHotelUnico = parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL")) * 2;
                valorPedido = (parseFloat(jDTValoresFinais.getDrValue(0, "ValorDBL") * 4));
            };
        },
        changeTransporte: function() {
            if (totalAereo == 0) {
                $('divAereo').style.display = 'none';
            };
            if (totalRodov == 0) {
                $('divRodoviario').style.display = 'none';
            };

            if (totalAereo != 0) {
                if ($('idOpcaoAereo').checked) {
                    //--- CHAMA AEREO
                    $('pax_1').style.display = '';
                    initAereosPacote(pCodPedido, 0);

                    $('rodoviario').style.display = 'none';
                    $('aereo').style.display = '';
                };
            };
            if (totalRodov != 0) {
                if ($('idOpcaoRodoviario').checked) {
                    //--- CHAMA RODOVIARIO
                    $('pax_1').style.display = '';
                    initRodoviario(pCodPacote, pCodPedido);
                    $('aereo').style.display = 'none';
                    $('rodoviario').style.display = '';
                };
            };

            if (totalAereo != 0 && totalRodov == 0) {
                //--- CHAMA AÉREO DIRETO
                $('divAereo').style.display = 'none';
                $('pax_1').style.display = '';
                initAereosPacote(pCodPedido, 0);
                $('rodoviario').style.display = 'none';
                $('aereo').style.display = '';
            };
            if (totalRodov != 0 && totalAereo == 0) {
                //--- CHAMA RODOVIARIO DIRETO
                $('divRodoviario').style.display = 'none';
                $('pax_1').style.display = '';
                initRodoviario(pCodPacote, pCodPedido);
                $('aereo').style.display = 'none';
                $('rodoviario').style.display = '';
            };
        }
    };
    var mountStruct = {		
		montar: function()
		{
	    }
	};
    var ctrlRefs = {
        siteConteudo: function(){return $('siteConteudo');},
        divNumeroApto: function(){return $('divNumeroApto');},
        divFormOpcoesHoteis: function() {return $('divFormOpcoesHoteis');},
        divOpcaoHoteis: function(){return $('divOpcaoHoteis');},
        
        divSGL: function(){return $('SGL');},
        divDBL: function(){return $('DBL');},
        divTPL: function(){return $('TPL');},
        divQDL: function(){return $('QDL');},
        divINF: function(){return $('INF');},
        divCHD: function(){return $('CHD');},
        
        tr01: function(){return $('tr01');},
        tr02: function(){return $('tr02');},
        tr03: function(){return $('tr03');},
        tr04: function(){return $('tr04');},
        tr05: function(){return $('tr05');},
        tr06: function(){return $('tr06');}
    };

    var startEnv = {
        main: function() {
            $html(ctrlRefs.siteConteudo(), render.formHotelPacote());
            This.on.changeOpcaoHotel($('rbOpcaoHotel' + opcaoHotel));
        },

        hotel_2: function(pCodOpcaoHotelPacote, indOpcaoHoteis) {
            pNumeroApto = 1; //$get('numeroApto');
            //$("hotel_1").style.display = 'none';
            $html("hotel_2", render.formHotelPacote_2(pCodOpcaoHotelPacote, pNumeroApto));

            $set('valorPacoteHeader', valorHotelTotal);

            for (var i = 0; i < pNumeroApto; i++) {
                startEnv.hide_divTarifas();

                on.changePax(i, indOpcaoHoteis);
                $('pax_' + i + '_1').style.display = ''; // renderiza a primeira opcao = 1
                ctrlRefs.tr01().style.display = '';
            };
        },
        validaNomesUsuarios: function() {
            for (var i = 1; i <= pNumeroApto; i++) {
                if ($get("txtNome_0_" + i) == "" && $get("txtSobrenome_0_" + i) == "" && $get("Idade_0_" + i) == "") {
                    return false;
                };
            };
            return true;
        },
        inserir: function() {
            var pCodOpcaoHoteis;
            var pCodOpcaoHotelPacote;
            var arrLst = '';

            if (formSelected == undefined) {
                alert("Selecione uma opção de hospedagem.");
                return false;
            };

            var numeroPessoas = $get('numeroPessoas');
            var continuar = true;

            for (var i = 1; i <= numeroPessoas; i++) {
                var totalCriancas = 0;

                if ($get('txtNome_' + i) == "" || $get('txtSobrenome_' + i) == "" || $get('Idade_' + i) == "") {
                    continuar = false;
                    alert("Informe os dados dos hóspedes.");
                    return false;
                };

                if (parseInt($get('Idade_' + i)) > 120) {
                    continuar = false;
                    alert("Informe uma idade válida.");
                    return false;
                };

                if (parseInt($get('Idade_' + i)) < 18)
                    totalCriancas++;

                if (totalCriancas == numeroPessoas) {
                    continuar = false;
                    alert("Pelo menos um hóspede deve ser maior de 18 anos.");
                    return false;
                };
            };

            if (cancelar == 0) {
                if (continuar) {
                    cancelar = 1;

                    for (var j = 0; j < formSelected.length; j++) {
                        if (formSelected[j].type == 'select-one') {
                            var radioGrp = formSelected[j];

                            if (radioGrp[radioGrp.selectedIndex].name != 'chk_' + pCodOpcaoHoteis + '_' + radioGrp[radioGrp.selectedIndex].value) {
                                if (radioGrp[radioGrp.selectedIndex].selected) {
                                    arrLst += radioGrp[radioGrp.selectedIndex].value + ',';
                                };
                            };
                        };

                        if (formSelected[j].type == 'radio') {
                            pCodOpcaoHoteis = formSelected[j].value;
                        };

                        if (formSelected[j].type == 'hidden') {
                            pCodOpcaoHotelPacote = formSelected[j].value;
                        };
                    };

                    pArrItensOpcaoHotelDestinoPacote = arrLst;

                    //INSERIR VALIDAÇÃO DOS CAMPOS EM BRANCO.
                    if (!startEnv.validaNomesUsuarios()) {
                        alert("Informe os dados dos hóspedes.");
                        return false;
                    };

                    //-- LOADING
                    $("divLoading").style.display = '';

                    var valorRodoviario = 0;
                    var valorAereo = 0;
                    var valorServico = 0;
                    try {
                        valorAereo = AereosPacote.valorTotalAereo;
                    }
                    catch (ex) { };

                    try {
                        valorRodoviario = Rodoviario.valorTotal;
                    }
                    catch (ex) { };

                    try {
                        valorServico = ServicosPacote.valorTotalServico;
                    }
                    catch (ex) { };

                    jDTOpcaoHotel_2 = new jDatatable(clHotelPacote.lerOpcaoHotel(pCodOpcaoHotelPacote).value);
                    jDTValoresFinais = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX(
                                                jDTOpcaoHotel_2.getDrValue(0, "CodOpcaoHotelPacote"),
                                                pCodPacote,
                                                pArrItensOpcaoHotelDestinoPacote,
                                                0,
                                                0,
                                                0).value);

                    HotelPacote.on.changeValores();

                    //salva totalOpcao hotel
                    var valorHotelUpdate = valorPedido;
                    
                    var resPedido = clHotelPacote.AtualizaPedidoPacote(pCodPedido, valorHotelUpdate); //// 1 - Salva na Tabela Pedidos o valor total dos Hoteis multiplicado pelo número de pessoas

                    for (var i = 0; i < jDTOpcaoHotel_2.getTotRegs(); i++) {
                        jDTacomod_Alim_Pedido = new jDatatable(clHotelPacote.lerTarifasTipoAlimenTipoAcomod(jDTOpcaoHotel_2.getDrValue(i, "CodTarifarioHotel"), jDTOpcaoHotel_2.getDrValue(i, "CodOpcaoHotelDestinoPacote")).value);
                        var totalAcomo_Alim = parseInt(jDTacomod_Alim_Pedido.getTotRegs());

                        for (var m = 0; m < totalAcomo_Alim; m++) {
                            if (numeroPessoas == 1) { valorTarifaDiaria = jDTacomod_Alim_Pedido.getDrValue(0, "SGL"); } else
                                if (numeroPessoas == 2) { valorTarifaDiaria = jDTacomod_Alim_Pedido.getDrValue(0, "DBL"); } else
                                if (numeroPessoas == 3) { valorTarifaDiaria = jDTacomod_Alim_Pedido.getDrValue(0, "TPL"); } else
                                if (numeroPessoas == 4) { valorTarifaDiaria = jDTacomod_Alim_Pedido.getDrValue(0, "QBL"); };
                        };

                        valorTarifaDiaria = parseFloat(valorTarifaDiaria);
                        var valorTarifaMarkup = 0;
                        valorTarifaMarkup = parseFloat((valorTarifaDiaria * parseFloat(jDTOpcaoHotel_2.getDrValue(i, "Markup") / 100)) + valorTarifaDiaria);

                        var resQuartosHotel_Item;
                        var resPedidoQuarto = clHotelPacote.inserirPedido_Quarto(0, pCodPedido, valorTarifaDiaria, valorTarifaMarkup); // Salva na Tabela de Pedido_QuartosHoteis

                        if (resPedidoQuarto.value > 0) {
                            var sptItens = pArrItensOpcaoHotelDestinoPacote.split(',');
                            for (var k = 0; k < totalAcomo_Alim; k++) {
                                for (var l = 0; l < sptItens.length; l++) {
                                    if (jDTacomod_Alim_Pedido.getDrValue(k, "CodItemOpcaoHotelDestinoPacote") == sptItens[l])
                                        resQuartosHotel_Item = clHotelPacote.inserirQuartoHotel_ItemOpcaoHotel(resPedidoQuarto.value, parseInt(jDTacomod_Alim_Pedido.getDrValue(k, "CodItemOpcaoHotelDestinoPacote"))); //Grava na Tabela N / N - o Item de todos os Hoteis.
                                }
                            }
                        };

                        for (var k = 1; k <= numeroPessoas; k++) {
                            //--Salva na Tabela de Pax------------------//
                            var Nome = $get('txtNome_' + k);
                            var sobreNome = $get('txtSobrenome_' + k);
                            var tipoPax = 3; //$get('ADT_CHD_SEN_'+j+'_'+(k+1)); ************ 
                            var pIdade = $get('Idade_' + k); // Implementar o IDADE
                            if (resPedidoQuarto.value > 0) {
                                var resPax = clHotelPacote.inserirPax(resPedidoQuarto.value, tipoPax, Nome, sobreNome, pIdade); // Salva os Pax na Tabela de Pax
                            };
                        };
                    };
                };
            };
            cancelar = 0;
            return true;
        },
        recuperaTarifa: function(pIndice, pNumeroPessoas) {
            if (pNumeroPessoas == 1)
                valorHotel = parseFloat($get('SGL_Quarto_' + pIndice));

            if (pNumeroPessoas == 2)
                valorHotel = parseFloat($get('DBL_Quarto_' + pIndice));

            if (pNumeroPessoas == 3)
                valorHotel = parseFloat($get('TPL_Quarto_' + pIndice));

            if (pNumeroPessoas == 4)
                valorHotel = parseFloat($get('QDL_Quarto_' + pIndice));
        },
        somaValores_Aereo_servico_Hotel: function(pValorHotel, numeroPessoas) {
            if (numeroPessoas == undefined) {
                numeroPessoas = 1;
            };
            //var JDTSomaAereoServico = new jDatatable(clHotelPacote.lerValores_Aereo_Servico(pCodPacote).value);           
            var valorServicoAereo = 0; //JDTSomaAereoServico.getDrValue(0, "ValorServicoAereo");

            return parseFloat(valorServicoAereo + (pValorHotel * numeroPessoas));
        }
    };
    
    this.exec = {
        hotel_2: function(pCodOpcaoHotelPacote,i)
        {
            //$("hotel_2").style.display = '';
            $html("hotel_2", render.loading());
            startEnv.hotel_2(pCodOpcaoHotelPacote,i);
        },
        inserir: function(pCodOpcaoHotelPacote,pNumeroApto)
        {
            //$html(ctrlRefs.siteConteudo(), "<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><div align='center'><img src='imgs/load.gif' /><br /><br />Por favor, aguarde</div>");
            if(startEnv.inserir())
            { 
                return true;
                //Chamada do Aereo            
                //initAereosPacote(pCodPedido, valorHotel);
            }
            else
            {
                return false;
            };
        },
        changeTarifa: function(pIndice, pIndiceTarifa)
        {
            on.changeTarifa(pIndice,pIndiceTarifa);
        },
        clickTarifa: function(pIndiceOpcao, pIndiceTarifa, pIndice)
        {
            on.clickTarifa(pIndiceOpcao, pIndiceTarifa, pIndice);
        },
        SoNumeros: function(e)
        {
            try
            {
                var carCode = ( window.event ? event.keyCode : e.which );
                
                if ((carCode == 9) || (carCode == 46) || (carCode == 44) ||(carCode >= 96) || (carCode > 57)|| (carCode < 48))
                {
                    if((carCode == 8) || (carCode == 0))
                    {
                        return true;
                    };
        	        rdoviário
                    if((carCode == 46) || (carCode == 44))
                    {
                        return true;
                    };
	                return false;
                };
                return true;
            }
            catch(ex){};
        }
    };

    this.goTo = {
        main: function(cPacote, cPedido) {
        
            //$clHotelPacote.setTelaAcaoSession('Hotel'); // seta o nome da tela na session
            
            pCodPedido = cPedido;
            pCodPacote = cPacote;
            This.codPacoteGlobal = cPacote;
            pArrItensOpcaoHotelDestinoPacote = '';
            //var res = clPacotesVB.lerPacote(pCodPacote);

            startEnv.main();

            //--CHAMA TRANSPORTE----------------------------
            //Implementar - verificar se existe transporte

            jDSCountTransporte = new jDataset(clHotelPacote.verificaQuantRegistrosTransp(pCodPacote).value);

            totalAereo = parseInt(jDSCountTransporte.getDrValue("Table1", 0, "Total"));
            totalRodov = parseInt(jDSCountTransporte.getDrValue("Table", 0, "Total"));
            totalServicos = parseInt(jDSCountTransporte.getDrValue("Table2", 0, "Total"));

            //initAereosPacote(cPedido, 0);
            //initRodoviario(cPacote, pCodPedido);

            if (totalAereo == 0 && totalRodov == 0) {
                $('aereo').style.display = 'none';
                $('rodoviario').style.display = 'none';
                $('transporte').style.display = 'none';
            };
            if (totalRodov != 0 && totalAereo == 0) {
                $('aereo').style.display = 'none';
                $('divAereo').style.display = 'none';
                $('divRodoviario').style.display = 'none';
                initRodoviario(cPacote, pCodPedido);
                $('pax_1').style.display = '';
            };
            if (totalAereo != 0 && totalRodov == 0) {
                $('rodoviario').style.display = 'none';
                $('divRodoviario').style.display = 'none';
                $('divAereo').style.display = 'none';
                initAereosPacote(cPedido, 0);
                $('pax_1').style.display = '';
            };
            
            /*
            Serviços deve ser chamado mesmo se não houver serviços,
            Apenas tem um controle de Divs | Wagner Vieira - 12/03/2010
            */

            //-- CHAMA SERVICOS
            initServicosPacote(cPedido, 0);

            if (totalServicos > 0) {
                $('tituloServicoPacote').style.display = '';
                $('divConteudoServicosPacote').style.display = '';
            };


            //-- Seta tipo Aereo e já exibe div aéreo | 11/08/2010
            This.on.changeTransporte();
            //ServicosPacote.exec.tipoTransporte('Aereo');

            if (totalAereo == 0 && totalRodov == 0) {
                ServicosPacote.exec.tipoTransporte('');
            };
            if (totalRodov != 0 && totalAereo == 0) {
                ServicosPacote.exec.tipoTransporte('Rodo');
            };
            if (totalAereo != 0 && totalRodov == 0) {
                ServicosPacote.exec.tipoTransporte('Aereo');
            };
            if (totalAereo != 0 && totalRodov != 0) {
                ServicosPacote.exec.tipoTransporte('Aereo');
            };
            
            
            var obj = { value: "2" };
            This.on.changePax(obj);
        }
    };
    
    this.constructor = new function()
    {
        tpl = new Template("HotelPacote");
    };
};
