﻿function jReserva(){

    try {
        document.domain = "vaibrasil.com.br";
    }
    catch (e) {
        try {
            document.domain = "10.14.47.145";
        }
        catch (e) { };
    };

    //variaveis privativas 
    var jDS;
    var jRP;
    var tmpCNT;
    var tmpUI;
    
    var pagAgencia = 1;
    var jDSAgencias;
    var vFiltroAgencias = "";
    var vCodLocAgencias;
    var codOperadora;

    var codPais = 21; // Brasil
    var codEstado = 0;
    var codCidade = 0;
    var codBairro = 0;
    var nomeFantasia = '';
    var countAgenciasDisponiveis = 0;
    
    var containsPgtoOff = false;
    
    var This = this;
    var _codCoeficienteParc;
    var _valorPedido;
    var valorTotalGlobal;
    
    //membros publicos
    
    //metodos privativos
    
    //HTML render(pNomeTemplate)
    var render = {
        main: function() {
            //    		return '<div style="text-align: center;" align="center">' + 
            //                   '<img src="http://novovb.vaibrasil.com.br/images/loading_vb.gif" alt="Carregando" title="Por favor, aguarde." />' +
            //                   '</div>';
            return '';
        },

        // render.reserva()
        reserva: function() {

            //detaque localidade destino
            codOperadora = parseInt(jDS.getDrValue("Pacotes", 0, "CodEmpresaOperadora"));

            if (jDS.getTotRegs("ImagensPacote") > 0) {
                tmpCNT.ReservaVMMI.CNT_Reserva.locThumb = jDS.getDrValue("ImagensPacote", 0, "PathImg") + jDS.getDrValue("ImagensPacote", 0, "UrlImagem");
            } else {
                tmpCNT.ReservaVMMI.CNT_Reserva.locThumb = jDS.getDrValue("Localidades", jDS.findRow("Localidades", "CodCidade", Portlet.getViagem().codLocalidadePara), "UrlImagem");
            }

            tmpCNT.ReservaVMMI.CNT_Reserva.locNome = jDS.getDrValue("Localidades", jDS.findRow("Localidades", "CodCidade", Portlet.getViagem().codLocalidadePara), "Nome");

            var vLocDesc = jDS.getDrValue("Localidades", jDS.findRow("Localidades", "CodCidade", Portlet.getViagem().codLocalidadePara), "Descricao");
            if (vLocDesc.length > 300) {
                vLocDesc = vLocDesc.substring(0, 300) + '...';
            };
            vLocDesc = vLocDesc.replace('size="2"', "");
            vLocDesc = vLocDesc.replace('<font >', "");
            vLocDesc = vLocDesc.replace('</font>', "");
            vLocDesc = vLocDesc.replace('<p align="justify">', "<p align=\"justify\" style=\"font-size: 12px;\" id=\"descricaoLoc\">");
            tmpCNT.ReservaVMMI.CNT_Reserva.locDescricao = vLocDesc;
            
            //resumo da viagem
            tmpCNT.ReservaVMMI.CNT_Reserva.Titulo = jDS.getDrValue("Pacotes", 0, "Nome");

            var nomeLocOrigem = jDS.getDrValue("Localidades", jDS.findRow("Localidades", "CodCidade", Portlet.getViagem().codLocalidadeDe), "Nome");
            if (nomeLocOrigem == "") {
                nomeLocOrigem = jDS.getDrValue("OpcoesRodoviarioPacote", jDS.findRow("OpcoesRodoviarioPacote", "Selected", 1), "NomeCidadeOrigem");
            };

            tmpCNT.ReservaVMMI.CNT_Reserva.displaySaindoDe = '';
            //-- Se continuar vazio
            if (nomeLocOrigem == "") {
                tmpCNT.ReservaVMMI.CNT_Reserva.displaySaindoDe = 'none';
            };

            tmpCNT.ReservaVMMI.CNT_Reserva.locOrigem = nomeLocOrigem;
            tmpCNT.ReservaVMMI.CNT_Reserva.locDestino = jDS.getDrValue("Localidades", jDS.findRow("Localidades", "CodCidade", Portlet.getViagem().codLocalidadePara), "Nome");
            tmpCNT.ReservaVMMI.CNT_Reserva.dataSaida = Portlet.getViagem().dataEmbarque.toString("dd/MM/yyyy"); //jDS.getDrValue("PedidosPacotes",0,"CodSaidaPacote");
            tmpCNT.ReservaVMMI.CNT_Reserva.totDias = jDS.getDrValue("Pacotes", 0, "NumerosDias");
            //tmpCNT.ReservaVMMI.CNT_Reserva.totDias = Portlet.getViagem().totDias;
            tmpCNT.ReservaVMMI.CNT_Reserva.selTotPax = Portlet.getViagem().Paxes.totPaxes();
            tmpCNT.ReservaVMMI.CNT_Reserva.DetPacote = render.detPacote();
            //tmpCNT.ReservaVMMI.CNT_Reserva.ResPagamento = render.opcoesPagamento();

            tmpCNT.ReservaVMMI.CNT_Reserva.DetAgencias = "aguarde...";

            return tmpCNT.ReservaVMMI.CNT_Reserva.getHtml();
        },

        opcsMT: function() {

            tmpCNT.ReservaVMMI.CNT_DetOpcsMT.OpcsMT = render.opcMT();
            tmpCNT.ReservaVMMI.CNT_DetOpcsMT.displayMT = "";
            if (parseInt(jDS.getTotRegs("OpcoesAereoPacote")) == 0 && parseInt(jDS.getTotRegs("OpcoesRodoviarioPacote")) == 0)
                tmpCNT.ReservaVMMI.CNT_DetOpcsMT.displayMT = "none";

            return tmpCNT.ReservaVMMI.CNT_DetOpcsMT.getHtml();
        },

        opcMT: function() {

            //debugger;
            var sb = new StringBuilder();
            var totOpcs = jDS.getTotRegs("OpcoesAereoPacote");
            var totIOpcs = jDS.getTotRegs("ItensOpcaoAereoPacote");
            //var totCatOpcs = jDS.getTotRegs("CategoriasOpcaoHoteisPacote");
            var primOpc = false;

            //-- abaixo era o codopcao usado antes da nova estrutura
            //for (var i = 0; i < totOpcs; i++) {
            //var codOpcao = jDS.getDrValue("OpcoesAereoPacote", i, "CodTrechoAereoPacoteDefault");

            //sb.append("<tr><td>");
            //sb.append("<input name='opcMT' id='opcMT" + codOpcao + "' type='checkbox' value='" + codOpcao + "'>" + jDS.getDrValue("OpcoesAereoPacote",i,"Nome") + "</input>");
            //sb.append("</td><td>");
            //prepara os itens da opcao
            //sb.append("<select id='opcMTSub"+codOpcao+"'>");
            //debugger;
            for (var io = 0; io < totIOpcs; io++) {

                //-- CodOpcao nova estrutura - Wagner 29/09/2010
                var codOpcao = jDS.getDrValue("ItensOpcaoAereoPacote", io, "CodTrechoAereoPacote");

                //-- Comentado IF nova estrutura
                //if (jDS.getDrValue("ItensOpcaoAereoPacote", io, "CodTrechoAereoPacote") == codOpcao) {
                var totTarifas = jDS.getTotRegs("TarifasAereoPacote");
                for (var trf = 0; trf < totTarifas; trf++) {
                    if (primOpc == false) {
                        sb.append("<tr style='border-bottom:1px solid #4AC4EB;'><td colspan='2'><strong>Aéreo</strong></td></tr>");
                        primOpc = true;
                    }
                    sb.append("<tr><td>");
                    sb.append("<span name='opcMT' id='opcMTSubSub" + jDS.getDrValue("TarifasAereoPacote", trf, "CodTarifaAereoPacote") + "' value='" + codOpcao + "," + jDS.getDrValue("ItensOpcaoAereoPacote", io, "CodTrechoAereoPacote") + "," + jDS.getDrValue("TarifasAereoPacote", trf, "CodTarifaAereoPacote") + "'>" + jDS.getDrValue("OpcoesAereoPacote", i, "Nome") + "</span>");
                    sb.append("</td><td>");

                    //sb.appendFormat("<span id='{0}'>{3} - vôo de {1} para {2}</span>",codOpcao + ',' + jDS.getDrValue("ItensOpcaoAereoPacote",io,"CodTrechoAereoPacote"),jDS.getDrValue("ItensOpcaoAereoPacote",io,"NomeCidadeOrigem"),jDS.getDrValue("ItensOpcaoAereoPacote",io,"NomeCidadeDestino"),jDS.getDrValue("TarifasAereoPacote",trf,"Nome"));                            
                    //sb.appendFormat("<span id='{0}'>{3} - vôo de {1} para {2}</span>", codOpcao + ',' + jDS.getDrValue("ItensOpcaoAereoPacote", io, "CodTrechoAereoPacote"), jDS.getDrValue("Localidades", jDS.findRow("Localidades", "CodCidade", Portlet.getViagem().codLocalidadeDe), "Nome"), jDS.getDrValue("ItensOpcaoAereoPacote", io, "NomeCidadeDestino"), jDS.getDrValue("TarifasAereoPacote", trf, "Nome")); //-- Antiga estrutura
                    sb.appendFormat("<span id='{0}'>- vôo de {1} para {2} | {3}</span>", codOpcao + ',' + jDS.getDrValue("ItensOpcaoAereoPacote", io, "CodTrechoAereoPacote"), jDS.getDrValue("ItensOpcaoAereoPacote", io, "NomeCidadeOrigem"), jDS.getDrValue("ItensOpcaoAereoPacote", io, "NomeCidadeDestino"), jDS.getDrValue("ItensOpcaoAereoPacote", io, "CiaAerea")); //-- Nova estrutura | Wagner 29/09/2010

                    //sb.appendFormat("</td><td>{0}</td></tr>",jDS.getDrValue("TarifasAereoPacote",trf,"ValorADT"));
                    //eliminar valor
                    //sb.appendFormat("</td><td>{0}</td></tr>",(parseFloat(jDS.getDrValue("TarifasAereoPacote",trf,"ValorADT"))<=0?"---":parseFloat(jDS.getDrValue("TarifasAereoPacote",trf,"ValorADT")).formatValue(2)));
                    sb.append("</td></tr>");
                    //sb.appendFormat("<option id='' value='{0}'>{3} - vôo de {1} para {2}</option>",codOpcao + ',' + jDS.getDrValue("ItensOpcaoAereoPacote",io,"CodTrechoAereoPacote"),jDS.getDrValue("ItensOpcaoAereoPacote",io,"NomeCidadeOrigem"),jDS.getDrValue("ItensOpcaoAereoPacote",io,"NomeCidadeDestino"),jDS.getDrValue("TarifasAereoPacote",trf,"Nome"));

                }
                //}
            }
            //sb.append("</select><select id='opcMTSubSub"+codOpcao+"'><option>selecione voo para ver as opções</option></select>");
            //sb.append("</td><td>valor</td></tr>");
            //}

            //rodoviario
            var totOpcsRodo = jDS.getTotRegs("OpcoesRodoviarioPacote");
            //var totCatOpcs = jDS.getTotRegs("CategoriasOpcaoHoteisPacote");
            for (var i = 0; i < totOpcsRodo; i++) {
                var codOpcao = jDS.getDrValue("OpcoesRodoviarioPacote", i, "CodOpcaoRodoviarioPacote");
                if (i == 0) { sb.append("<tr style='border-bottom:1px solid #4AC4EB;'><td colspan='2'><strong>Rodoviário</strong></td></tr>"); }
                sb.append("<tr><td>");
                sb.appendFormat("<span>{0}</span>", jDS.getDrValue("OpcoesRodoviarioPacote", i, "Nome"));
                sb.append("</td><td>");
                sb.appendFormat("<span id='txtRO{0}'>{3} Transporte Rodoviário de {1} para {2}</span>", codOpcao, jDS.getDrValue("OpcoesRodoviarioPacote", i, "NomeCidadeOrigem"), jDS.getDrValue("OpcoesRodoviarioPacote", i, "NomeCidadeDestino"), jDS.getDrValue("OpcoesRodoviarioPacote", i, "Descricao_HTML"));
                //Eliminar exibição do valor
                //sb.appendFormat("</td><td>{0}</td></tr>",(parseFloat(jDS.getDrValue("TarifasAereoPacote",trf,"ValorADT"))<=0?"---":jDS.getDrValue("TarifasAereoPacote",trf,"SimboloMoeda") + ' ' + parseFloat(jDS.getDrValue("TarifasAereoPacote",trf,"ValorADT"))));
                sb.append("</td></tr>");
            }
            return sb.toString();

        },

        opcsSVC: function() {

            tmpCNT.ReservaVMMI.CNT_DetOpcsSVC.OpcsSVC = render.opcSVC();
            return tmpCNT.ReservaVMMI.CNT_DetOpcsSVC.getHtml();
        },

        opcSVC: function() {
            var sb = new StringBuilder();
            var totOpcs = jDS.getTotRegs("OpcoesServicosPacote");
            var totIOpcs = jDS.getTotRegs("ItensOpcaoServicosPacote");
            //var totCatOpcs = jDS.getTotRegs("CategoriasOpcaoHoteisPacote");
            for (var i = 0; i < totOpcs; i++) {
                var codOpcao = jDS.getDrValue("OpcoesServicosPacote", i, "CodGrupoServicoPacote");

                //prepara os itens da opcao
                for (var io = 0; io < totIOpcs; io++) {
                    if (jDS.getDrValue("ItensOpcaoServicosPacote", io, "CodGrupoServicoPacote") == codOpcao) {
                        sb.append("<tr><td>");
                        sb.append("<span name='itemSCV' id='itemSVC" + jDS.getDrValue("ItensOpcaoServicosPacote", io, "CodServicoPacote") + "' value='" + codOpcao + "," + jDS.getDrValue("ItensOpcaoServicosPacote", io, "CodServicoPacote") + "'>" + jDS.getDrValue("ItensOpcaoServicosPacote", io, "Titulo") + (jDS.getDrValue("ItensOpcaoServicosPacote", io, "Incluso_Opcional") == "true" ? " (* Opcional)" : " (* Incluso)") + "</span>");
                        sb.append("</td><td>");

                        //sb.appendFormat("<input name='itemSVC' id='itemSVC{0}' type='radio' id='' value='{0}'>{1}</input>",jDS.getDrValue("ItensOpcaoServicosPacote",io,"CodServicoPacote"),jDS.getDrValue("ItensOpcaoServicosPacote",io,"Titulo")+"("+(jDS.getDrValue("ItensOpcaoServicosPacote",io,"ValorADT"))+")");
                        //sb.appendFormat("<span style='display:block;clear:both;'>{0}</span>", jDS.getDrValue("ItensOpcaoServicosPacote", io, "Descricao_HTML") + '&nbsp;' + (jDS.getDrValue("ItensOpcaoServicosPacote", io, "Incluso_Opcional") == "true" ? "(" + (parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote", io, "ValorADT")) <= 0 ? "---" : jDS.getDrValue("ItensOpcaoServicosPacote", io, "SimboloMoeda") + " " + parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote", io, "ValorADT")).formatNumber(2)) + ")" : ""));
                        sb.appendFormat("<span style='display:block;clear:both;'>{0}</span>", jDS.getDrValue("ItensOpcaoServicosPacote", io, "Descricao_HTML") + '&nbsp;' + (jDS.getDrValue("ItensOpcaoServicosPacote", io, "Incluso_Opcional") == "true" ? "(" + (parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote", io, "ValorADT")) <= 0 ? "---" : "R$" + " " + parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote", io, "ValorADT")).formatNumber(2)) + ")" : ""));

                        //eliminar valor
                        //sb.appendFormat("</td><td id='vlrSVC{0}'>{1}</td></tr>",codOpcao,(parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote",io,"ValorADT"))<=0?"---":parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote",io,"ValorADT")).formatNumber(2)));
                        sb.append("</td></tr>");
                    }
                }
            }
            return sb.toString();

        },

        opcsHSP: function() {

            tmpCNT.ReservaVMMI.CNT_DetOpcsHSP.OpcsHSP = render.opcHSP();
            return tmpCNT.ReservaVMMI.CNT_DetOpcsHSP.getHtml();
        },
        opcHSP: function() {
            var sb = new StringBuilder();
            var totOpcs = jDS.getTotRegs("OpcoesHoteisPacote");
            var totIOpcs = jDS.getTotRegs("ItensOpcaoHoteisPacote");
            var totCatOpcs = jDS.getTotRegs("CategoriasOpcaoHoteisPacote");
            for (var i = 0; i < totOpcs; i++) {
                var codOpcao = jDS.getDrValue("OpcoesHoteisPacote", i, "CodOpcaoHotelPacote");

                //prepara os itens da opcao
                for (var io = 0; io < totOpcs; io++) {
                    if (jDS.getDrValue("ItensOpcaoHoteisPacote", io, "CodOpcaoHotelPacote") == codOpcao) {
                        var codSubOpcao = jDS.getDrValue("ItensOpcaoHoteisPacote", io, "CodOpcaoHotelDestinoPacote");
                        for (var trf = 0; trf < totCatOpcs; trf++) {
                            if (jDS.getDrValue("CategoriasOpcaoHoteisPacote", trf, "CodOpcaoHotelDestinoPacote") == codSubOpcao) {
                                sb.append("<tr><td>");
                                sb.appendFormat("<span>{0}</span>", "Hospedagem " + jDS.getDrValue("OpcoesHoteisPacote", i, "Nome"));
                                sb.append("</td><td>");

                                sb.appendFormat("<span style='display:block;clear:both;'>{0} - {1}</span>", jDS.getDrValue("CategoriasOpcaoHoteisPacote", trf, "TipoAcomodacao"), jDS.getDrValue("CategoriasOpcaoHoteisPacote", trf, "TipoRefeicao"));
                                sb.append("</td></tr>");
                            }
                        }
                    }
                }
            }
            return sb.toString();
        },

        detPacote: function() {

            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Descricao = jDS.getDrValue("Pacotes", 0, "Nome");
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Operadora = jDS.getDrValue("Pacotes", 0, "Operadora");
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Hospedagem = "";
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Transporte = "";

            var vInclui = jDS.getDrValue("Pacotes", 0, "Incluidos");
            var vNaoInclui = jDS.getDrValue("Pacotes", 0, "NaoIncluidos");
            var vCondicoes = jDS.getDrValue("Pacotes", 0, "TermosCondicoes");
            var vRequisitos = jDS.getDrValue("Pacotes", 0, "Requisitos");
            var vObs = jDS.getDrValue("Pacotes", 0, "Observacoes");

            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Detalhes = "";
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Detalhes += "<tr style='border-bottom:dotted 1px;'><td>Inclui</td><td colspan='2'>" + vInclui + "</td></tr>";
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Detalhes += "<tr style='border-bottom:dotted 1px;'><td>Não Inclui</td><td colspan='2'>" + vNaoInclui + "</td></tr>";
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Detalhes += "<tr style='border-bottom:dotted 1px;'><td>Requisitos</td><td colspan='2'>" + vRequisitos + "</td></tr>";
            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Detalhes += "<tr style='border-bottom:dotted 1px;'><td>Observações</td><td colspan='2'>" + vObs + "</td></tr>";

            tmpCNT.ReservaVMMI.CNT_ResDetPacote.displayTermos = "";

            if (vCondicoes == "")
                tmpCNT.ReservaVMMI.CNT_ResDetPacote.displayTermos = "none";

            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Termos = vCondicoes;

            tmpCNT.ReservaVMMI.CNT_ResDetPacote.SVCS = "";
            if (parseInt(jDS.getTotRegs("OpcoesServicosPacote")) > 0)
                tmpCNT.ReservaVMMI.CNT_ResDetPacote.SVCS = render.opcsSVC();


            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Transporte = "";
            if (parseInt(jDS.getTotRegs("OpcoesAereoPacote")) > 0 || parseInt(jDS.getTotRegs("OpcoesRodoviarioPacote")) > 0)
                tmpCNT.ReservaVMMI.CNT_ResDetPacote.Transporte = render.opcsMT();

            tmpCNT.ReservaVMMI.CNT_ResDetPacote.Hospedagem = render.opcsHSP();

            //valor do pacote
            var valorTotalPCT = startEnv.calcValor();
            if (valorTotalPCT > 0) {
                tmpCNT.ReservaVMMI.CNT_ResDetPacote.VALORTOTPACOTE = "R$" + ' ' + (valorTotalPCT.formatNumber(2)); //jDS.getDrValue("Pacotes", 0, "SimboloMoeda") + ' ' + (valorTotalPCT.formatNumber(2));
            } else {
                tmpCNT.ReservaVMMI.CNT_ResDetPacote.VALORTOTPACOTE = "Configure sua viagem";
            }

            return tmpCNT.ReservaVMMI.CNT_ResDetPacote.getHtml();
            //return render.opcsSVC();
        },

        detTituloCategoria: function() {
            var tit = "";
            return tit;
        },

        abaConteudo: function(pNomeAba) {
            var retVal = "";
            var codOPCSel = Portlet.getViagem().codOpcaoSel;
            switch (pNomeAba) {
                case "Descricao":
                    retVal = "<strong>Pacote: </strong>" + jDS.getDrValue("PacotesVB", 0, "Nome") + "<br/>";
                    switch (codOPCSel) {
                        case 1:
                            retVal += "<strong>Hospedagem: </strong>" + jDS.getDrValue("PacotesVB", 0, "MH_Turistico") + "<br/>";
                            break;
                        case 2:
                            retVal += "<strong>Hospedagem: </strong>" + jDS.getDrValue("PacotesVB", 0, "MH_Superior") + "<br/>";
                            break;
                        case 3:
                            retVal += "<strong>Hospedagem: </strong>" + jDS.getDrValue("PacotesVB", 0, "MH_Luxo") + "<br/>";
                            break;
                        default:
                            retVal += "<strong>Hospedagem: </strong>" + jDS.getDrValue("PacotesVB", 0, "MH_Turistico") + "<br/>";
                            break;
                    }

                    retVal += "<strong>Regime: </strong>" + jDS.getDrValue("PacotesVB", 0, "Regime_MH") + "<br/>";
                    retVal += "<strong>Transporte: </strong>" + jDS.getDrValue("PacotesVB", 0, "Nome_Cia") + "<br/>";
                    retVal += "<strong>Operadora: </strong>" + jDS.getDrValue("PacotesVB", 0, "Operadora") + "<br/>";
                    break;
                case "Inclui":
                    retVal = jDS.getDrValue("PacotesVB", 0, "Inclui");
                    break;
                case "NaoInclui":
                    retVal = jDS.getDrValue("PacotesVB", 0, "Nao_Inclui");
                    break;
                case "Condicoes":
                    retVal = jDS.getDrValue("PacotesVB", 0, "Condicao_Especial");
                    break;
                case "FormaPagto":
                    retVal = jDS.getDrValue("PacotesVB", 0, "FormaPagamento");
                    break;
                default:
            }
            return "<span>" + retVal + "</span>";
        },

        // render.motorAgencias()
        motorAgencias: function() {
            var res = clPacotesVMMI.getEstadosAgencias();
            if (res.error == null) {
                var tbEstados = res.value;

                var sb = new StringBuilder();
                sb.append("<option value=''>Escolha o estado</option>");

                for (var i = 0; i < tbEstados.rows.length; i++) {
                    var dr = tbEstados.rows[i];
                    //não selecionada
                    sb.appendFormat("<option value='{0}'>{1}</option>", dr.CodEstado, dr.Nome);
                };

                tmpCNT.ReservaVMMI.CNT_ResAgencias.selOptionsEstado = sb.toString();
            };

            return tmpCNT.ReservaVMMI.CNT_ResAgencias.getHtml();
        },

        // render.agencias()
        agencias: function() {

            var dtAgencias = jDSAgencias;
            var ttAgs = dtAgencias.rows.length;

            var renderRet = "";
            //tmpCNT.ReservaVMMI.CNT_ResAgencias.Agencias = "";
            if (ttAgs > 0) {
                if (pagAgencia < 1) {
                    pagAgencia = 1;
                };

                if ((pagAgencia * 10) > ttAgs) {
                    pagAgencia = parseInt(ttAgs / 10);

                    if (pagAgencia < 1) {
                        pagAgencia = 1;
                    };
                };

                var iniReg = (pagAgencia - 1) * 10;
                var fimReg = iniReg + 10;
                //alert("ini:" + iniReg + " fim:" + fimReg + " tot:" + ttAgs);
                if (fimReg >= ttAgs) {
                    fimReg = ttAgs;
                };

                //renderRet += "<tr><td colspan='2'>Existem " + ttAgs + " agências próximas à sua localidade. Escolha a agência de sua preferência e clique em Selecionar.</td><td><input id='pagAnterAg' type='button' value='<<' /></td><td>Pág: " + pagAgencia + " / " + parseInt(ttAgs/10) + "</td><td><input id='pagProxAg' type='button' value='>>' /></td></tr>";
                renderRet += "<tr><td colspan='4'>Escolha a agência de sua preferência e clique em Selecionar.<span style='display:none;'><input id='pagAnterAg' type='button' value='<<' />Pág: " + pagAgencia + " / " + parseInt(ttAgs / 10) + "<input id='pagProxAg' type='button' value='>>' /></span></td></tr>";
                renderRet += "<tr style='background-color:#4AC4EB;color:#FFFFFF;font-size:100%;padding:7px 0 4px;text-transform:uppercase;'><th>Nome / Endereço</th><th>Contato</th><th>Bairro</th><th>Cidade</th><th align=\"center\">Selecionar</th></tr>";


                //                for(var i=iniReg; i < fimReg;i++){
                //                    renderRet += render.agencia(dtAgencias.rows[i],i);
                //                }

                for (var i = 0; i < ttAgs; i++) {
                    renderRet += render.agencia(dtAgencias.rows[i], i);
                };

            } else {
                var dtEmpresa = clDetalhesPacote.getNomeEmpresa(codOperadora).value;
                var nomeOperadora = '';

                if (clDetalhesPacote.getNomeEmpresa(codOperadora).value.rows.count() > 0) {
                    nomeOperadora = ' ' + clDetalhesPacote.getNomeEmpresa(codOperadora).value.rows[0].NomeFantasia;
                };

                var mensagemNaoEncontrado = 'Não há agências credenciadas nessa localidade pelo operador';
                renderRet += mensagemNaoEncontrado + nomeOperadora + '.';
                //renderRet += "<tr><td colspan='5'>Não há agências disponíveis nesta localidade.</td></tr>";
            };
            //tmpCNT.ReservaVMMI.CNT_ResAgencias.totAgencias = ttAgs;
            //return tmpCNT.ReservaVMMI.CNT_ResAgencias.getHtml();
            return "<table class='qdrAgencias'>" + renderRet + "</table>";
        },

        // render.agencia()
        agencia: function(pDrReg, pNumReg) {
            tmpCNT.ReservaVMMI.CNT_ResAgencia.classe = (pNumReg % 2 == 0) ? '' : 'cor'
            tmpCNT.ReservaVMMI.CNT_ResAgencia.IDAgencia = pDrReg.CodEmpresa;
            tmpCNT.ReservaVMMI.CNT_ResAgencia.NomeFantasia = pDrReg.NomeFantasia;
            tmpCNT.ReservaVMMI.CNT_ResAgencia.Endereco = pDrReg.Endereco; //pDrReg.Logradouro;
            tmpCNT.ReservaVMMI.CNT_ResAgencia.Contato = pDrReg.Telefone;
            tmpCNT.ReservaVMMI.CNT_ResAgencia.Bairro = pDrReg.Bairro; //pDrReg.Complemento;
            tmpCNT.ReservaVMMI.CNT_ResAgencia.Cidade = pDrReg.Cidade;

            return tmpCNT.ReservaVMMI.CNT_ResAgencia.getHtml();
        },

        opcoesPagamento: function() {
            //return tmpCNT.ReservaVMMI.CNT_ResFormasPagto.getHtml();

            var indiceContainsPgtoOff;
            var total = parseInt(jDS.getTotRegs("OpcoesPagamento"));

            for (var i = 0; i < total; i++) {
                //-- 13 - Pgto OFFLINE
                if (13 == jDS.getDrValue("OpcoesPagamento", i, "CodRef")) {
                    containsPgtoOff = true;
                    indiceContainsPgtoOff = i;
                };
            };

            var sbFormas = new StringBuilder();

            if (containsPgtoOff) {
                sbFormas.appendFormat("<input type='radio' name='OpcaoPagamento' id='OP{0}' value='{0}'><img src='{3}' alt='{2} {1}'/></input>&nbsp;&nbsp;", jDS.getDrValue("OpcoesPagamento", indiceContainsPgtoOff, "CodRef"), jDS.getDrValue("OpcoesPagamento", indiceContainsPgtoOff, "Nome"), jDS.getDrValue("OpcoesPagamento", indiceContainsPgtoOff, "Tipo"), jDS.getDrValue("OpcoesPagamento", indiceContainsPgtoOff, "Logo"));
            }
            else {
                var totFormas = jDS.getTotRegs("OpcoesPagamento");
                for (var i = 0; i < totFormas; i++) {
                    sbFormas.appendFormat("<input type='radio' name='OpcaoPagamento' id='OP{0}' value='{0}'><img src='{3}' alt='{2} {1}'/></input>&nbsp;&nbsp;", jDS.getDrValue("OpcoesPagamento", i, "CodRef"), jDS.getDrValue("OpcoesPagamento", i, "Nome"), jDS.getDrValue("OpcoesPagamento", i, "Tipo"), jDS.getDrValue("OpcoesPagamento", i, "Logo"));
                };
            };

            tmpCNT.ReservaVMMI.CNT_ResPagamento.formasPagamento = sbFormas.toString();
            //tmpCNT.ReservaVMMI.CNT_ResPagamento.FormaPagamento = jDS.getDrValue("Pacotes",0,"FormaPagamento");
            return tmpCNT.ReservaVMMI.CNT_ResPagamento.getHtml();
        },
        opcoesParcelamento: function(pCodRef) {
            //return tmpCNT.ReservaVMMI.CNT_ResFormasPagto.getHtml();
            var totFormas = jDS.getTotRegs("OpcoesParcelamento");
            var sbFormas = new StringBuilder();
            var vTipoOpcao = jDS.getDrValue("OpcoesPagamento", jDS.findRow("OpcoesPagamento", "CodRef", pCodRef), "Tipo");


            for (var i = 0; i < totFormas; i++) {
                if (jDS.getDrValue("OpcoesParcelamento", i, "CodRef") == pCodRef) {
                    var vCodPacoteBandeiraCC = jDS.getDrValue("OpcoesParcelamento", i, "CodPacote_BandeiraCC");
                    var vNome = jDS.getDrValue("OpcoesParcelamento", i, "Nome");
                    var vTotParcelas = parseInt(jDS.getDrValue("OpcoesParcelamento", i, "Parcelas"));
                    var vCoefParcelas = parseFloat(jDS.getDrValue("OpcoesParcelamento", i, "CoeficienteParcelas"));
                    var vCoefEntrada = parseFloat(jDS.getDrValue("OpcoesParcelamento", i, "CoeficienteEntrada"));
                    var vJuros = jDS.getDrValue("OpcoesParcelamento", i, "Juros");
                    var vTotalPacote = parseFloat(startEnv.calcValor());
                    var vValorEntrada = parseFloat((vTotalPacote * vCoefEntrada) / 100);
                    var vValorParc = ((vTotalPacote - vValorEntrada) / vTotParcelas);
                    var vValorParcela = parseFloat((vValorParc * (vCoefParcelas / 100) + vValorParc));
                    var vCodCoeficiente = parseInt(jDS.getDrValue("OpcoesParcelamento", i, "CodCoeficienteParcelamento"));

                    var vDescricao = '';

                    var valorTotal = 0;
                    valorTotal = vValorEntrada + ((vTotParcelas > 0 ? vTotParcelas : 1) * vValorParcela);

                    var vOnclickCoeficiente = 'javascript:Portlet.changeCoefParcelamento(' + vCodCoeficiente + ', ' + valorTotal + ')';

                    if (i == 0) {
                        _codCoeficienteParc = vCodCoeficiente;
                        _valorPedido = valorTotal;
                    };

                    if (vTipoOpcao == "CC") {

                        if (vValorEntrada > 0) {
                            vDescricao += ' Entrada de R$ ' + (vValorEntrada.formatNumber(2)) + ' + ';
                        }
                        vDescricao += vTotParcelas + ' parcela' + (vTotParcelas > 1 ? 's ' : ' ') + 'de R$ ' + vValorParcela.formatNumber(2);

                        //if (vJuros == 0) {
                        if (vCoefParcelas == 0) { // Change by Wagner 31/08/2010
                            vDescricao += ' sem juros.';
                        } else {
                            vDescricao += ' com juros.';
                        }
                        //apenda a bandeira do cartao
                        if (!containsPgtoOff) {
                            vDescricao += ' No Cartão de Crédito ' + jDS.getDrValue("OpcoesPagamento", jDS.findRow("OpcoesPagamento", "CodRef", pCodRef), "Nome");
                        }
                        else {
                            vDescricao += ' ' + jDS.getDrValue("OpcoesPagamento", jDS.findRow("OpcoesPagamento", "CodRef", pCodRef), "Nome");
                        };
                        sbFormas.appendFormat("<input type='radio' name='OpcaoParcelamento' id='OF{0}' value='{0}' onchange='{2}' /><span> {1}</span><br/>", vCodPacoteBandeiraCC, vDescricao, vOnclickCoeficiente);
                    } else {
                        sbFormas.appendFormat("<input type='radio' name='OpcaoParcelamento' id='OF{0}' value='{0}' onchange='{3}' /><span> {1} - {2}</span><br/>", vCodPacoteBandeiraCC, vNome, vDescricao, vOnclickCoeficiente);
                    }
                }
            };

            if (vTipoOpcao == "CC") {
                //cartao de credito, apresenta campo para pegar o numero do cartão

                if (!containsPgtoOff) {
                    sbFormas.appendFormat("<br/><hr /><br/><table><tbody><tr><td colspan='2'><strong>Dados do Cartão</strong></td></tr>");
                    sbFormas.appendFormat("<tr><td colspan='2'>Nome impresso no Cartão<br/><input type='text' id='CCTitular' class='campo' size='30' /></td></tr>");
                    sbFormas.appendFormat("<tr><td colspan='2'>CPF do Titular do Cartão<br/><input type='text' id='CCCpf' class='campo' size='30' /></td></tr>");
                    sbFormas.appendFormat("<tr><td>Número do Cartão<br/><input type='text' id='CCNumero' class='campo' size='22'/></td><td>Código de Segurança<br/><input type='text' class='campo' id='CCCodSeg' size='2' /></td></tr>");
                    sbFormas.appendFormat("<tr><td>Validade Mês<br/>");
                    sbFormas.appendFormat("<select id='CCMesVal'>");
                    sbFormas.appendFormat("<option value=''></option>");
                    for (var meses = 0; meses < 12; meses++) {
                        sbFormas.appendFormat("<option value='{0}'>{0}</option>", meses + 1);
                    }
                    sbFormas.appendFormat("</select>");

                    sbFormas.appendFormat("</td><td>Validade Ano<br/>");
                    sbFormas.appendFormat("<select id='CCAnoVal'>");
                    sbFormas.appendFormat("<option value=''></option>");

                    var dataAtual = new Date();
                    var anoAtual = dataAtual.getFullYear();
                    var anoFuturo = anoAtual + 11;

                    for (var anos = anoAtual; anos < anoFuturo; anos++) {
                        sbFormas.appendFormat("<option value='{0}'>{0}</option>", anos);
                    }
                    sbFormas.appendFormat("</select>");

                    sbFormas.appendFormat("</td></tr>");
                    sbFormas.appendFormat("</tbody></table>");
                };
                //                sbFormas.appendFormat("<br/><label>Nome Impresso no Cartão:</label><input type='text' id='CCTitular' class='campo' size='24' />");
                //                sbFormas.appendFormat("<br/><label>Número do Cartão de Crédito:&nbsp;</label><input type='text' id='CCNumero' class='campo' size='30'/>");
                //                sbFormas.appendFormat("&nbsp;<label>Código de Segurança:</label><input type='text' class='campo' id='CCCodSeg' size='2' />");
                //                sbFormas.appendFormat("<br/><label>Validade do Cartão:</th>");

            }

            if (vTipoOpcao == "TX") {
                //cartao de credito, apresenta campo para pegar o numero do cartão
                sbFormas.appendFormat("<br/><br/><label>Observações quanto ao Pagamento:&nbsp;</label><input type='text' id='OBSPagamento'/><br/>");
            }

            return sbFormas.toString();
        },

        pagamento: function() {
            //return tmpCNT.ReservaVMMI.CNT_ResFormasPagto.getHtml();
            tmpCNT.ReservaVMMI.CNT_ResPagamento.FormaPagamento = jDS.getDrValue("Pacotes", 0, "FormaPagamento");
            return tmpCNT.ReservaVMMI.CNT_ResPagamento.getHtml();
        },

        // Passageiros
        passageiros: function() {
            tmpCNT.Reserva.CNT_tblPassageiros.tblPassageirosItens = render.passageirosItens();
            tmpCNT.Reserva.CNT_tblPassageiros.tblPassageirosItens += render.passageirosItens();
            tmpCNT.Reserva.CNT_tblPassageiros.tblPassageirosItens += render.passageirosItens();
            tmpCNT.Reserva.CNT_tblPassageiros.tblPassageirosItens += render.passageirosItens();
            tmpCNT.Reserva.CNT_tblPassageiros.tblPassageirosItens += render.passageirosItens();
            return tmpCNT.Reserva.CNT_tblPassageiros.getHtml();
        },

        // Passageiros
        //        passageiros: function(){
        //            var paxSB =  new StringBuilder();
        //        
        //            for(var paxCont = 0; paxCont < jDS.tables.MyTable.rows.count(); paxCont++){
        //                paxSB.append(render.passageirosItens());
        //            }
        //            
        //            tmpCNT.Reserva.CNT_tblPassageiros.tblPassageirosItens = paxSB.toString();
        //            return tmpCNT.Reserva.CNT_tblPassageiros.getHtml();
        //        },

        passageirosItens: function() {
            tmpCNT.Reserva.CNT_tblPassageirosItens.CodPax = "13";
            tmpCNT.Reserva.CNT_tblPassageirosItens.NomePax = "David";
            tmpCNT.Reserva.CNT_tblPassageirosItens.IdadePax = "26";
            tmpCNT.Reserva.CNT_tblPassageirosItens.SexoPax = "Masc";
            return tmpCNT.Reserva.CNT_tblPassageirosItens.getHtml();
        },

        // Trechos
        trechos: function() {
            tmpCNT.Reserva.CNT_tblTrechos.tblTrechosItens = render.trechosItens();
            tmpCNT.Reserva.CNT_tblTrechos.tblTrechosItens += render.trechosItens();
            tmpCNT.Reserva.CNT_tblTrechos.tblTrechosItens += render.trechosItens();
            tmpCNT.Reserva.CNT_tblTrechos.tblTrechosItens += render.trechosItens();
            tmpCNT.Reserva.CNT_tblTrechos.tblTrechosItens += render.trechosItens();

            tmpCNT.Reserva.CNT_tblTrechos.Moeda = "BRL";
            tmpCNT.Reserva.CNT_tblTrechos.Preco = "125,00";
            return tmpCNT.Reserva.CNT_tblTrechos.getHtml();
        },

        trechosItens: function() {
            tmpCNT.Reserva.CNT_tblTrechosItens.Origem = "SAO";
            tmpCNT.Reserva.CNT_tblTrechosItens.Destino = "BUE";
            tmpCNT.Reserva.CNT_tblTrechosItens.Moeda = "BRL";
            tmpCNT.Reserva.CNT_tblTrechosItens.Preco = "22.500,00";
            return tmpCNT.Reserva.CNT_tblTrechosItens.getHtml();
        },

        // Abas
        abas: function() {
            tmpCNT.Reserva.CNT_areaAbas.areaAbasItens = render.abasItensTr();
            tmpCNT.Reserva.CNT_areaAbas.qdrTabelaItensTr = render.tabelaItens();
            tmpCNT.Reserva.CNT_areaAbas.iconePendencia = "";
            //tmpCNT.Reserva.CNT_areaAbas.listaCheckItens = render.checkItens();
            tmpCNT.Reserva.CNT_areaAbas.listaCheckItens = "";
            tmpCNT.Reserva.CNT_areaAbas.qdrTabelaItensOpcionais = "";
            return tmpCNT.Reserva.CNT_areaAbas.getHtml();
        },

        abasItensTr: function() {
            tmpCNT.Reserva.CNT_areaAbasItensTr.CodSemana = "";
            tmpCNT.Reserva.CNT_areaAbasItensTr.qdrTabelaItensTd = render.abasItensTd();
            return tmpCNT.Reserva.CNT_areaAbasItensTr.getHtml();
        },

        abasItensTd: function() {
            tmpCNT.Reserva.CNT_areaAbasItensTd.TipoServico = "Tipo de serviço";
            tmpCNT.Reserva.CNT_areaAbasItensTd.Classe = "ativo";
            return tmpCNT.Reserva.CNT_areaAbasItensTd.getHtml();
        },

        // Tabela itens
        tabelaItens: function() {
            tmpCNT.Reserva.CNT_gdrTabelaItens.Preco = "999,00";
            return tmpCNT.Reserva.CNT_gdrTabelaItens.getHtml();
        },

        // Check itens
        checkItens: function() {
            //            tmpCNT.Reserva.CNT_listaCheckItens.NomePax = "SABRE Testes";
            //            return tmpCNT.Reserva.CNT_listaCheckItens.getHtml();
            return "";
        },

        // Trf pacotes
        trfPacotes: function() {
            tmpCNT.Tarifada.CNT_trfPacote.ClasseInsumo = "trfHospedagem";
            tmpCNT.Tarifada.CNT_trfPacote.TipoInsumo = "Traslado";

            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteDetalhe = render.trfPacoteDetalhes();
            tmpCNT.Tarifada.CNT_trfPacote.lblTipo = "detalhes da reserva";

            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteTblItens = render.trfPacotesTblItens();
            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteTblItens += render.trfPacotesTblItens();
            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteTblItens += render.trfPacotesTblItens();
            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteTblItens += render.trfPacotesTblItens();

            tmpCNT.Tarifada.CNT_trfPacote.Moeda = "";
            tmpCNT.Tarifada.CNT_trfPacote.ValorTotal = "";
            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteQdr = "";
            tmpCNT.Tarifada.CNT_trfPacote.trfPacoteQdrFechado = render.trfPacotesQdr();
            return tmpCNT.Tarifada.CNT_trfPacote.getHtml();
        },

        trfPacotesTblItens: function() {
            tmpCNT.Tarifada.CNT_trfPacoteTblItens.Tipo = "";
            tmpCNT.Tarifada.CNT_trfPacoteTblItens.Qtde = "1";
            tmpCNT.Tarifada.CNT_trfPacoteTblItens.QtdePax = "1";
            tmpCNT.Tarifada.CNT_trfPacoteTblItens.Moeda = "BRL";
            tmpCNT.Tarifada.CNT_trfPacoteTblItens.Preco = "125,00";
            return tmpCNT.Tarifada.CNT_trfPacoteTblItens.getHtml();
        },

        trfPacotesQdr: function() {
            tmpCNT.Reserva.CNT_trfPacoteQdrFechado.Termos = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; est usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores legere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.";
            tmpCNT.Reserva.CNT_trfPacoteQdrFechado.ID = "rrrr";
            return tmpCNT.Reserva.CNT_trfPacoteQdrFechado.getHtml();
        },

        trfPacoteDetalhes: function() {
            tmpCNT.Tarifada.CNT_trfPacoteDetalhe.ThumbInsumo = "imagem/foto.jpg";
            tmpCNT.Tarifada.CNT_trfPacoteDetalhe.TipoInsumo = "id_trf";
            tmpCNT.Tarifada.CNT_trfPacoteDetalhe.Titulo = "TAM";
            tmpCNT.Tarifada.CNT_trfPacoteDetalhe.TrechoOrigem = "SAO";
            tmpCNT.Tarifada.CNT_trfPacoteDetalhe.TrechoDestino = "RIO";
            tmpCNT.Tarifada.CNT_trfPacoteDetalhe.ResumoDetalhes = "Embarque: 02/02/2009 7:20h";
            return tmpCNT.Tarifada.CNT_trfPacoteDetalhe.getHtml();
        },

        // Qdr cartão
        qdrCartao: function() {
            return tmpCNT.Reserva.CNT_QdrCartao.getHtml();
        }
    };
    
    //DOM node ctrlRefs
    var ctrlRefs = {    
    
    
        siteConteudo: function(){return $('siteCentro');},
        conteudoQuadroArea: function(){return $('cntQdrAreaPesquisa');},
        btnEtapa: function(pNumEtapa){return $('btnEtapa'+pNumEtapa);},
        abaDetalhe: function(pNomeAba){return $('aba'+pNomeAba);},
        abaInclui: function(){return $('abaInclui');},
        abaNaoInclui: function(){return $('abaNaoInclui');},
        abaCondicoes: function(){return $('abaCondicoes');},
        abaFormaPagto: function(){return $('abaFormaPagto');},
        abaArea: function(){return $('abaArea');},
        btnConfirmar: function() { return $('btnConfirmar'); },
        areaAgencias: function() { return $('qdrAgencias'); },
        qdrAgencias: function() { return $('qdrAgencias'); },
        areaResultadoAgencias: function() { return $('areaAgencias'); },

        selEstadoAgencias: function() { return $('selEstadoAgencia'); }, // obsoleto
        selOrigAgencias: function() { return $('selCidadeAgencia'); }, // obsoleto
        selEstadoAgencia: function() { return $('selEstadoAgencia'); },
        selCidadeAgencia: function() { return $('selCidadeAgencia'); },
        selBairroAgencia: function() { return $('selBairroAgencia'); },
        
        txtFiltroAgencias: function(){return $('txtFiltro');},
        
        selAgencia: function(pCodAgencia){return $('selAgencia'+pCodAgencia);},
        selAgencias: function(pCodAgencia){return $('selAgencias'+pCodAgencia);}, 
        btMostrarAgs: function(){return $('btMostrarAgs');},       
        resumoAgenciaSel: function(){return $('resumoAgSel');},
        qdrAgenciaSel: function(){return $('qdrAgenciaSel');},
        //txtEmailContato:function(){return $('txtEmailContato');},
        //txtFoneContato:function(){return $('txtFoneContato');},
        txtObsCliente:function(){return $('txtObsCliente');},
        btnAumentaFnt: function(){return $('btnMaior');},
        btnDiminuiFnt: function(){return $('btnMenor');},
        btnSaibaMais: function() { return $('btnSaibaMais'); },
        btnPagAnterAg: function() { return $('pagAnterAg'); },
        btnPagProxAg: function(){return $('pagProxAg');},
        chkAceito: function(){return $('chkAceito');},
        abaArea: function(pNomeArea){return $('selarea'+pNomeArea);},
        divArea: function(pNomeArea){return $('area'+pNomeArea);},
        valorTotal: function() {return $('spValorPacote');},
        
        opcaoPagamento: function(pCodRef){return $('OP'+pCodRef);},
        opcoesParcelamento: function(){return $('formasParcelamento');},
        opcaoParcelamento: function(pCodRef){return $('OF'+pCodRef);},
        ccNumero: function(){return $('CCNumero');},        
        ccCodSeg: function(){return $('CCCodSeg');},        
        ccTitular: function(){return $('CCTitular');},
        ccMesVal: function(){return $('CCMesVal');},
        ccAnoVal: function(){return $('CCAnoVal');},
        //ccMesVal...ccAnoVal: function(){return $('CCAnoVal');},
        obsPagamento: function(){return $('OBSPagamento');}

    };
    
    //tratativas de eventos da UI
    var on = {
        clickBla: function() { },
        filter: function() { },
        sort: function() { },

        clickBtnEtapa: function(pNumEtapa) {
            switch (pNumEtapa) {
                case 1:
                    Portlet.goTo.home();
                    break;
                case 2:
                    Portlet.goTo.pesquisa();
                    break;
                case 3:
                    Portlet.goTo.detalhes();
                    break;
                case 4:
                    Portlet.goTo.reserva();
                    break;
                default:
                    break;
            }
        },

        clickAceite: function() {
            alert('Aceitei');
        },

        clickAbaDetalhe: function(pIDAba) {
            ctrlRefs.abaDetalhe('Descricao').className = "";
            ctrlRefs.abaDetalhe('Inclui').className = "";
            ctrlRefs.abaDetalhe('NaoInclui').className = "";
            ctrlRefs.abaDetalhe('Condicoes').className = "";
            //ctrlRefs.abaDetalhe('FormaPagto').className = "";
            ctrlRefs.abaDetalhe(pIDAba).className = "ativo";
            ctrlRefs.abaArea().innerHTML = render.abaConteudo(pIDAba); // "<span>"+ pIDAba +"</span>";
        },

        clickAbaArea: function(pIDAba) {
            ctrlRefs.abaArea('Det').className = "";
            //ctrlRefs.abaArea('Pagto').className = "";
            ctrlRefs.abaArea('Agencia').className = "";
            ctrlRefs.abaArea('Contato').className = "";
            ctrlRefs.abaArea(pIDAba).className = "ativo";
            ctrlRefs.divArea('Det').style.display = "none";
            //ctrlRefs.divArea('Pagto').style.display = "none";
            ctrlRefs.divArea('Agencia').style.display = "none";
            ctrlRefs.divArea('Contato').style.display = "none";
            ctrlRefs.divArea(pIDAba).style.display = "";
        },

        getCidades: function(pCodEstado) {
            //$('selBairroAgencia').innerHTML = '';
            //codBairro = 0;
            on.getBairros(codBairro);

            var combo = $('selCidadeAgencia');
            combo.innerHTML = '';

            var optn = document.createElement("OPTION");
            optn.value = 0;
            optn.text = 'Escolha a cidade';
            combo.options.add(optn);

            if (pCodEstado == '') {
                return;
            };

            var res = clPacotesVMMI.getCidadesAgencias(pCodEstado);
            if (res.error == null) {
                var tb = res.value;
                for (var i = 0; i < tb.rows.length; i++) {
                    optn = document.createElement("OPTION");
                    optn.value = tb.rows[i].CodCidade;
                    optn.text = tb.rows[i].Nome;
                    combo.options.add(optn);
                };
                //$set('selCidadeAgencia', codCidade);
            } else {
                alert('Erro ao obter cidades: ' + res.error.message);
            }
        },

        getBairros: function(pCodCidade) {
            var combo = $('selBairroAgencia');
            combo.innerHTML = '';

            var optn = document.createElement("OPTION");
            optn.value = 0;
            optn.text = 'Escolha o bairro';
            combo.options.add(optn);

            var res = clPacotesVMMI.getBairrosAgencias(pCodCidade);
            if (res.error == null) {
                var tb = res.value;
                for (var i = 0; i < tb.rows.length; i++) {
                    optn = document.createElement("OPTION");
                    optn.value = tb.rows[i].CodBairro;
                    optn.text = tb.rows[i].Nome;
                    combo.options.add(optn);
                };
                //$set('selBairroAgencia', codBairro);
            } else {
                alert('Erro ao obter bairros: ' + res.error.message);
            }
        },

        getAgencias: function() {
            var vCodEstado = $get('selEstadoAgencia'); //alteradoro
            var vCodCidade = $get('selCidadeAgencia');
            var vCodBairro = $get('selBairroAgencia');
            var res = clPacotesVMMI.getAgencias(vCodEstado, vCodCidade, vCodBairro, '', codOperadora);

            if (res.error == null) {
                jDSAgencias = res.value;
                startEnv.selAgencias();
            } else {
                jDSAgencias = null;
                alert('erro ao obter agências: ' + res.error.message);
            }
        },

        // on.getAgenciasBWList()
        getAgenciasBWList: function() {
            countAgenciasDisponiveis = 0;
            // se o Estado não foi selecionado, passar -2 como parâmetro na consulta vai fazer com que não sejam encontrados resultados...
            // como não há uma coluna nas agências do VMMI para Estado, não queremos exibir resultados de todos os Estados.
            var vCodEstado = $get('selEstadoAgencia') === '' ? -2 : $get('selEstadoAgencia');
            var vCodCidade = $get('selCidadeAgencia');
            var vCodBairro = $get('selBairroAgencia');
            var vNomeFantasia = $get('txtFiltro');

            var res = clPacotesVMMI.getAgenciasBWList(codOperadora, vCodEstado, vCodCidade, vCodBairro, vNomeFantasia);

            if (res.error == null) {
                var dtMetadados = res.value.tables.Metadados;
                jDSAgencias = res.value.tables.Dados;
                countAgenciasDisponiveis = jDSAgencias.rows.count();

                startEnv.selAgencias();
            } else {
                jDSAgencias = null;
                alert('erro ao obter agências: ' + res.error.message);
            }
        },

        // startEnv.btnConfirmar().onclick = on.clickConfirmar()
        clickConfirmar: function() {
            //Portlet.goTo.confirmacao();
            //valida os dados requeridos para poder continuar na reserva

            // permite vender o pacote sem agência, com o código da operadora, 
            // caso não haja nenhuma agência disponível na listagem
            if (countAgenciasDisponiveis == 0 && $get('selEstadoAgencia') != '') {
                Portlet.getViagem().Pedido.codAgencia = codOperadora;

                var dtEmpresa = clDetalhesPacote.getNomeEmpresa(codOperadora).value;
                if (dtEmpresa.error == null && dtEmpresa.rows.count() > 0) {
                    var email = dtEmpresa.rows[0].EmailRecebimentoPedidos;
                    if (email == null || email.replace(/^\s+|\s+$/g, '') == '') {
                        email = dtEmpresa.rows[0].Email;
                    };
                };
            };

            var vCodAgencia = Portlet.getViagem().Pedido.codAgencia;
            //var vEmailContato = Portlet.getViagem().Pedido.emailContato;
            //var vFoneContato = Portlet.getViagem().Pedido.foneContato;

            var strErro = "";
            var abaErro = "";

            if (vCodAgencia == null || vCodAgencia == 0 || vCodAgencia == "") {
                strErro = "\nFavor Selecionar uma Agência";
                abaErro = "Agencia";
            }

            /*
            if (vEmailContato == null) {
            vEmailContato = "";
            }
			
    		//valida o email de contato
            if (vEmailContato != "") {
            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            if (reg.test(vEmailContato) == false) {
            strErro += "\no e-mail de contato digitado é invalido";
            }
            }

    		if (vFoneContato == null) {
            vFoneContato = "";
            }

    		if (vEmailContato == "" && vFoneContato == "") {
            strErro += "\nFavor Preencher ao menos um dos dados para contato (e-mail e/ou telefone)";
            abaErro = "Contato";
            }
            */

            if (ctrlRefs.chkAceito().get() != true) {
                strErro += "\nÉ necessário a leitura e aceite dos Termos e Condições do Serviço";
                abaErro = "Det";
            }

            //    		if (Portlet.getViagem().Pedido.OpcaoParcelamento == -1) {
            //    			strErro += "\nFavor selecionar a forma de pagamento desejada na aba Pagamento";
            //    			abaErro = "Pagto";
            //    		} else {
            //    		   
            //    			if (Portlet.getViagem().Pedido.TipoPagamento == "CC" && !containsPgtoOff) {
            //    			    
            //    			    var ccNumeroCartao = "";
            //    			    var sizeNumeroCartaoSemEspaco = 0;
            //    			    var ccNumeroCartaoSemEspaco = Portlet.getViagem().Pedido.NumeroCartao;
            //    			    
            //    			    if (ccNumeroCartaoSemEspaco == null){
            //    			      ccNumeroCartaoSemEspaco == "";
            //    			    } 
            //    			    else{    	    			    
            //    			       for(i = 0; i < ccNumeroCartaoSemEspaco.length; i++){
            //                          if(ccNumeroCartaoSemEspaco.charAt(i) != ' ')
            //                            ccNumeroCartao += ccNumeroCartaoSemEspaco.charAt(i);
            //                       };    			    		    
            //                       ccNumeroCartaoSemEspaco = ccNumeroCartao;	                       
            //                       sizeNumeroCartaoSemEspaco = parseInt(ccNumeroCartaoSemEspaco.length);
            //                    }                     
            //                                         
            //      				if (ccNumeroCartaoSemEspaco == '' || sizeNumeroCartaoSemEspaco != 19) {
            //    					strErro += "\nFavor informar corretamente o número do cartão de crédito na aba Pagamento";
            //    					abaErro = "Pagto";
            //    				};
            //    				
            //    				var ccCodSegSemEspaco = Portlet.getViagem().Pedido.ccCodSeg;
            //    				var ccCod = "";
            //    				var sizeCodSegSemEspaco = 0;
            //    				
            //    				if (ccCodSegSemEspaco == null){
            //    			        ccCodSegSemEspaco = "";
            //    			    }
            //    			    else {  			    			      
            //    				    for(i = 0; i < ccCodSegSemEspaco.length; i++){
            //                          if(ccCodSegSemEspaco.charAt(i) != ' ')
            //                            ccCod += ccCodSegSemEspaco.charAt(i);
            //                        };
            //                        ccCodSegSemEspaco = ccCod;
            //                        sizeCodSegSemEspaco = parseInt(ccCodSegSemEspaco.length);
            //    				};
            //    				
            //    				if (ccCodSegSemEspaco == '' || sizeCodSegSemEspaco < 3) {
            //    					strErro += "\nFavor informar corretamente o código de segurança do cartão de crédito na aba Pagamento";
            //    					abaErro = "Pagto";
            //    				};
            //    				
            //    				var ccTitularSemEspaco = Portlet.getViagem().Pedido.ccTitular;
            //    				var ccTitular = "";
            //    				
            //    				if (ccTitularSemEspaco == null){
            //    			        ccTitularSemEspaco == "";
            ////    			    }  
            ////    				else {
            ////    				    //ccTitularSemEspaco = Portlet.getViagem().Pedido.ccTitular.replace(" ", "");	
            ////    				    for(i = 0; i < ccTitularSemEspaco.length; i++){
            ////                          if(ccTitularSemEspaco.charAt(i) != ' ')
            ////                            ccTitular += ccTitularSemEspaco.charAt(i);
            ////                        };	
            ////                        ccTitularSemEspaco = ccTitular;
            //    				};
            //    				
            //    				Portlet.getViagem().Pedido.CodCoeficienteParcelamento = _codCoeficienteParc;
            //    				Portlet.getViagem().Pedido.vlr_Pedido = _valorPedido;
            //    				Portlet.getViagem().Pedido.ccCpf = $get('CCCpf');    				
            //    				
            //    				if (Portlet.getViagem().Pedido.ccCpf == null || Portlet.getViagem().Pedido.ccCpf == '')
            //    				{
            //    				    strErro += "\nFavor informar o cpf do titular do cartão de crédito na aba Pagamento";
            //    					abaErro = "Pagto";
            //    				};    				
            //    				if (ccTitularSemEspaco == '') {
            //    					strErro += "\nFavor informar o nome do titular do cartão de crédito na aba Pagamento";
            //    					abaErro = "Pagto";
            //    				};    				
            //    				if (Portlet.getViagem().Pedido.ccMesVal == null || Portlet.getViagem().Pedido.ccMesVal == '') {
            //    					strErro += "\nFavor informar o mês da validade do cartão de crédito na aba Pagamento";
            //    					abaErro = "Pagto";
            //    				};
            //                    if (Portlet.getViagem().Pedido.ccAnoVal == null || Portlet.getViagem().Pedido.ccAnoVal == '') {
            //    					strErro += "\nFavor informar o ano da validade do cartão de crédito na aba Pagamento";
            //    					abaErro = "Pagto";
            //    				};    				
            //    			};
            //    		};

            if (strErro == "") {
                //--- nao é mais chamado pois primeiro se chama a nova tela de pagamento
                //Portlet.goTo.confirmacao();
                //window.scroll(0, 0);   
                         
                var vCodTarifaIda = Portlet.getViagem().codTarifaIda;
                var vCodTarifaVolta = Portlet.getViagem().codTarifaVolta;
                var vDataSaida = Portlet.getViagem().dataEmbarque;
                var vNumeroNoites = parseInt(jDS.getDrValue("Pacotes", 0, "NumeroNoites"));
                var totPax = Portlet.getViagem().Paxes.totPaxes();

                /*******************************************************
                * Nova estrutura Aéreo - Pesquisa se tem estoque
                ********************************************************/

                var resIda = 0;
                var resVolta = 0;
                //-- Primeiro faz um IF para saber se tem pelo menos a tarifa de ida, assim já sabe que no pacote tem opção aéreo
                if (vCodTarifaIda != null && vCodTarifaVolta != null) {
                    var temEstoqueIda = true, temEstoqueVolta = true;

                    var dataVolta = vDataSaida;
                    dataVolta = dataVolta.addDays(vNumeroNoites);

                    resIda = clPacotesVMMI.verificarQtdAssentosDisponiveis(vCodTarifaIda, vDataSaida.toString(), vDataSaida.toString()).value;
                    resVolta = clPacotesVMMI.verificarQtdAssentosDisponiveis(vCodTarifaVolta, dataVolta.toString(), dataVolta.toString()).value;

                    if (resIda <= 0)
                        temEstoqueIda = false;

                    if (resVolta <= 0)
                        temEstoqueVolta = false;
                };
                
                if (parseInt(jDS.getTotRegs("ItensOpcaoAereoPacote")) > 0) //-- Verifica estoque aereo
                {
                    if ((temEstoqueIda && temEstoqueVolta) && (((resIda - totPax) >= 0) && ((resVolta - totPax) >= 0))) 
                        on.popupPgto();
                    else
                        alert("Desculpe-nos! Caro cliente, não há mais disponibilidade para esta data de saída.");
                }
                else
                {
                    on.popupPgto();
                };
            } 
            else 
            {
                alert("Atenção, corrija os seguintes itens antes de prosseguir:" + strErro);
                if (abaErro != "") 
                    on.clickAbaArea(abaErro);
            };
        },
        popupPgto: function()
        {
            var codEmpresa = codOperadora;
            var codPedidoPacote = Portlet.getPedido().codPedido;
            var codUsuario = PubLogin.getSession('CodUsuario');
            var valorTotal = valorTotalGlobal;
            var hashPgto = clDetalhesPedido.getUrlPgtoPacote_VMMI(codUsuario, valorTotal.toString().replace(".", ","), codEmpresa, codPedidoPacote).value;
            openModalDialog(hashPgto, "", "HEIGHT=600,WIDTH=820");
            //window.open(hashPgto, "", "HEIGHT=600,WIDTH=820");
        },

        /*
        changeEmailContato: function(pvalor) {
        Portlet.getViagem().Pedido.emailContato = pvalor;
        //jDS.setDrValue("PedidoVB",0,"emailContato",pvalor);
        //Portlet.getViagem().Paxes.getPax
        },

    	changeFoneContato: function(pvalor) {
        Portlet.getViagem().Pedido.foneContato = pvalor;
        //jDS.setDrValue("PedidoVB",0,"foneContato",pvalor);
        },
        */

        changeObs: function(pvalor) {
            Portlet.getViagem().Pedido.obs_Usuario = pvalor;
            //jDS.setDrValue("PedidoVB",0,"foneContato",pvalor);
        },

        clickSaibaMais: function(pCodLocalidade) {
            Portlet.goTo.destinos(pCodLocalidade, "reserva");
        },

        // on.selAgencia(pNumReg) --> seleciona uma agência
        selAgencia: function(pNumReg) {
            var vCodEmpresa = jDSAgencias.rows[pNumReg].CodEmpresa;
            //jDSAgencias.setDrValue("AgenciasVB",pNumReg,"selection","1");
            Portlet.getViagem().Pedido.codAgencia = vCodEmpresa;
            //ctrlRefs.resumoAgenciaSel().innerHTML = 'Agência Selecionada :<br/>' + jDSAgencias.rows[pNumReg].NomeFantasia + '<br/>' + jDSAgencias.rows[pNumReg].Logradouro + '<br/>' + jDSAgencias.rows[pNumReg].Complemento + ' - ' + jDSAgencias.rows[pNumReg].Cidade;
            //ctrlRefs.qdrAgenciaSel().innerHTML = '<strong>Agência Selecionada :</strong><br/>' + jDSAgencias.rows[pNumReg].NomeFantasia + '<br/>' + jDSAgencias.rows[pNumReg].Logradouro + '<br/>' + jDSAgencias.rows[pNumReg].Complemento + ' - ' + jDSAgencias.rows[pNumReg].Cidade + '<br/><br/><input id="btMostrarAgs" type="button" value="selecionar outra agencia"/>';

            var msg = '<strong>Agência Selecionada :</strong><br />';
            if (jDSAgencias.rows[pNumReg].NomeFantasia) {
                msg += jDSAgencias.rows[pNumReg].NomeFantasia + '<br />';
            };
            if (jDSAgencias.rows[pNumReg].Endereco) {
                msg += jDSAgencias.rows[pNumReg].Endereco + '<br />';
            };
            if (jDSAgencias.rows[pNumReg].Bairro) {
                msg += jDSAgencias.rows[pNumReg].Bairro + '<br />';
            };
            msg += '<br /><br /><input id="btMostrarAgs" type="button" value="selecionar outra agencia" />';

            ctrlRefs.qdrAgenciaSel().innerHTML = msg;

            //esconde a lista de agencias
            ctrlRefs.qdrAgencias().style.display = 'none';
            ctrlRefs.qdrAgenciaSel().style.display = '';
            //seta botao para escolher outra agencia
            ctrlRefs.btMostrarAgs().onclick = function() {
                ctrlRefs.qdrAgencias().style.display = '';
                ctrlRefs.qdrAgenciaSel().style.display = 'none';
            }
        },

        // obsoleto?
        // on.selAgencias(pNumReg, pValue)
        selAgencias: function(pNumReg, pValue) {
            var vCodEmpresa = jDSAgencias.getDrValue("AgenciasVB", pNumReg, "codEmpresa");
            //var vSel = "0";
            //if (pValue == true) {
            //	vSel = "1";
            //}
            var vSel = pValue ? "1" : "0";

            //valida para não selecionar mais de uma agencia
            var ttAgs = jDSAgencias.getTotRegs("AgenciasVB");
            var ttSel = 0;
            for (var c = 0; c < ttAgs; c++) {
                if (jDSAgencias.getDrValue("AgenciasVB", c, "selection") == "1") {
                    ttSel++;
                }
            }

            if (ttSel >= 1 && vSel == "1") {
                alert("favor selecionar somente uma agência");
                return false;
            } else {
                jDSAgencias.setDrValue("AgenciasVB", pNumReg, "selection", vSel);
                Portlet.getViagem().Pedido.codAgencia = vCodEmpresa;
                //if(vSel=="1"){
                //return true;
                //}else{
                //return false;
                //}
                return vSel == "1";
            }
            //alert(pNumReg + " - " + pValue);
        },

        pagAgencia: function(pSentido) {
            switch (pSentido) {
                case "+":
                    pagAgencia++;
                    break;
                case "-":
                    pagAgencia--;
                    break;
            }
            startEnv.selAgencias();
        },

        selOrigAgencia: function(pCodLocalidade) {
            //This.exec.getAgencias(pCodLocalidade);
        },

        selOpcaoPagamento: function(pCodRef) {
            ctrlRefs.opcoesParcelamento().innerHTML = render.opcoesParcelamento(pCodRef);
            startEnv.opcoesParcelamento(pCodRef);
            Portlet.getViagem().Pedido.OpcaoParcelamento = -1;

        },

        selOpcaoParcelamento: function(pCodOpcao, pTipoOpcao) {
            //alert('Cod: ' + pCodOpcao + ' Tipo: ' + pTipoOpcao);
            Portlet.getViagem().Pedido.TipoPagamento = pTipoOpcao;
            Portlet.getViagem().Pedido.OpcaoParcelamento = pCodOpcao;
            Portlet.getViagem().Pedido.TextoParcelamento = ctrlRefs.opcaoParcelamento(pCodOpcao).nextSibling.innerText;
        }
    };
    
    var openModalDialog = function(theURL, winName) 
    {
        window.showModalDialog(theURL, winName, "dialogwidth: 820px; dialogheight: 500px; resizable: no");
//        if (result != undefined && result  > 0)
//        {
//            codPedidoVB = result;
//            This.exec.pagamentoPopup(result);
//        }
//        else
//        {
//            //alert("Desculpe-nos! Não foi possível realizar seu pedido");
//        };
        if (clDetalhesPedido.verificarStatusPedido(Portlet.getPedido().codPedido, "P").value > 0)
        {
            This.exec.pagamentoPopup(Portlet.getPedido().codPedido);
        }
    };
    
    //void startEbv()
    var startEnv = {
        main: function() 
        {
            ctrlRefs.siteConteudo().innerHTML = render.main();
        },
        listaAgenciasInicial: function() 
        {
            countAgenciasDisponiveis = 0;
            codEstado = 26;     // SP
            codCidade = 5318;   // São Paulo
            codBairro = 0;      // sem bairro definido

            /* endereço do usuário */
            var codUsrLogado;
            try {
                // codUsrLogado = PubLogin.getSession("CodUsuario");
                // nesse ponto, durante os testes, PubLogin frequentemente está indefinido, então usamos o procedimento abaixo:
                var rq = new AsyncRequest();
                var vRes = rq.getResponse('login.aspx', 'Acao=getSessionVar&var=CodUsuario', null, 'POST');
                if (vRes.text.indexOf('SUCCESS') >= 0) 
                {
                    var vInicio = vRes.text.indexOf('SUCCESS#');
                    var vTermino = vRes.text.indexOf('#', vInicio + 8);
                    codUsrLogado = vRes.text.substring(vInicio + 8, vTermino);
                    codUsrLogado = codUsrLogado == null ? "" : codUsrLogado;
                }
            } 
            catch (up) 
            {
                codUsrLogado = "";
            };

            var enderecoUsr = clDetalhesPedido.lerEnderecoUsuario(codUsrLogado).value;
            if (enderecoUsr != null && enderecoUsr.rows.length > 0) {
                if (!isNaN(parseInt(enderecoUsr.rows[0].CodEstado))) {
                    codEstado = parseInt(enderecoUsr.rows[0].CodEstado);
                };
                if (!isNaN(parseInt(enderecoUsr.rows[0].CodCidade))) {
                    codCidade = parseInt(enderecoUsr.rows[0].CodCidade);
                };
                if (!isNaN(parseInt(enderecoUsr.rows[0].CodBairro))) {
                    codBairro = parseInt(enderecoUsr.rows[0].CodBairro);
                };
            } else {
                codEstado = 26;
                codCidade = 5318;
                codBairro = 0;
            };
            /* endereço do usuário */

            var res = clPacotesVMMI.getAgenciasBWListRecursive(codOperadora, codEstado, codCidade, codBairro, nomeFantasia);
            if (res.error == null) {
                var dtMetadados = res.value.tables.Metadados;
                jDSAgencias = res.value.tables.Dados;

                codEstado = dtMetadados.rows[0].CodEstado;
                codCidade = dtMetadados.rows[0].CodCidade;
                codBairro = dtMetadados.rows[0].CodBairro;

                countAgenciasDisponiveis = jDSAgencias.rows.count();
                startEnv.selAgencias();
            };

            $set('selEstadoAgencia', codEstado);
            on.getCidades(codEstado);
            $set('selCidadeAgencia', codCidade);
            on.getBairros(codCidade);
            $set('selBairroAgencia', codBairro);
        },

        btnEtapas: function() {
            ctrlRefs.btnEtapa('1').onclick = function() { on.clickBtnEtapa(1); };
            ctrlRefs.btnEtapa('2').onclick = function() { on.clickBtnEtapa(2); };
            ctrlRefs.btnEtapa('3').onclick = function() { on.clickBtnEtapa(3); };
            ctrlRefs.btnEtapa('4').onclick = function() { on.clickBtnEtapa(4); };
        },

        // startEnv.reserva()
        reserva: function() {
            ctrlRefs.siteConteudo().innerHTML = render.reserva();

            startEnv.btnEtapas();
            startEnv.abasAreas();
            //startEnv.txtEmail();
            //startEnv.txtFoneContato();
            startEnv.txtObsCliente();
            startEnv.btnConfirmar();
            startEnv.btnSaibaMais();
            //startEnv.selAgencias();
            //startEnv.opcoesPagamento();

            ctrlRefs.btnAumentaFnt().onclick = function() { Portlet.exec.AumentaFonte(); };
            ctrlRefs.btnDiminuiFnt().onclick = function() { Portlet.exec.DiminuiFonte(); };
            startEnv.drawValor();
        },

        abasAreas: function() {
            ctrlRefs.abaArea('Det').onclick = function() { on.clickAbaArea('Det'); };
            //ctrlRefs.abaArea('Pagto').onclick = function() { on.clickAbaArea('Pagto'); };
            ctrlRefs.abaArea('Agencia').onclick = function() { on.clickAbaArea('Agencia'); };
            ctrlRefs.abaArea('Contato').onclick = function() { on.clickAbaArea('Contato'); };
        },

        abasDetalhes: function() {
            ctrlRefs.abaDetalhe('Descricao').onclick = function() { on.clickAbaDetalhe('Descricao'); };
            ctrlRefs.abaDetalhe('Inclui').onclick = function() { on.clickAbaDetalhe('Inclui'); };
            ctrlRefs.abaDetalhe('NaoInclui').onclick = function() { on.clickAbaDetalhe('NaoInclui'); };
            ctrlRefs.abaDetalhe('Condicoes').onclick = function() { on.clickAbaDetalhe('Condicoes'); };
            //ctrlRefs.abaDetalhe('FormaPagto').onclick = function() { on.clickAbaDetalhe('FormaPagto'); };
        },

        /*
        txtEmail: function() {
        ctrlRefs.txtEmailContato().onchange = function() { on.changeEmailContato(this.value); };
        },

    	txtFoneContato: function() {
        var o = ctrlRefs.txtFoneContato();
        o.maskData = ['( ## ) ####-####', '( __ ) ____-____'];
        InputMask(o);

    		ctrlRefs.txtFoneContato().onblur = function() { on.changeFoneContato(this.value); };
        },
        */

        txtObsCliente: function() {
            ctrlRefs.txtObsCliente().onchange = function() { on.changeObs(this.value); };
        },

        // startEnv.btnConfirmar()
        btnConfirmar: function() {
            ctrlRefs.btnConfirmar().onclick = function() { on.clickConfirmar(); };
        },

        // startEnv.motorAgencias()
        motorAgencias: function() {
            ctrlRefs.areaAgencias().innerHTML = render.motorAgencias();

            //ctrlRefs.selEstadoAgencias().onchange = function() { on.getCidades(this.value); };
            //ctrlRefs.selOrigAgencias().onchange = function() { on.getBairros(this.value); };
            ctrlRefs.selEstadoAgencia().onchange = function() { on.getCidades(this.value); };
            ctrlRefs.selCidadeAgencia().onchange = function() { on.getBairros(this.value); };

            //$('btnVerAgencias').onclick = function(){on.getAgencias();};
            $('btnVerAgencias').onclick = function() { on.getAgenciasBWList(); };
        },

        // startEnv.selAgencias()
        selAgencias: function() {
            //ctrlRefs.areaAgencias().innerHTML = render.agencias();
            ctrlRefs.areaResultadoAgencias().innerHTML = render.agencias();

            //var ttAgs = jDSAgencias.getTotRegs("AgenciasVB");
            var ttAgs = jDSAgencias.rows.length;

            if (ttAgs > 0) {
                if (pagAgencia < 1) {
                    pagAgencia = 1;
                }

                if ((pagAgencia * 10) > ttAgs) {
                    pagAgencia = parseInt(ttAgs / 10);
                    if (pagAgencia < 1) {
                        pagAgencia = 1;
                    }
                }

                var iniReg = (pagAgencia - 1) * 10;
                var fimReg = iniReg + 10;
                if (fimReg >= ttAgs) {
                    fimReg = ttAgs;
                }

                //for (var i = iniReg; i < fimReg; i++) {
                for (var i = 0; i < ttAgs; i++) {
                    ctrlRefs.selAgencias(jDSAgencias.rows[i].CodEmpresa).NumReg = i;
                    ctrlRefs.selAgencias(jDSAgencias.rows[i].CodEmpresa).onclick = function() {
                        on.selAgencia(this.NumReg);
                    }
                };

                ctrlRefs.btnPagAnterAg().onclick = function() {
                    on.pagAgencia('-');
                };

                ctrlRefs.btnPagProxAg().onclick = function() {
                    on.pagAgencia('+');
                };

            };
            //            ctrlRefs.selOrigAgencias().onchange = function(){on.selOrigAgencia(this.value);};
            //            ctrlRefs.txtFiltroAgencias().onchange = function(){
            //                vFiltroAgencias = this.value;
            //                startEnv.selAgencias();
            //                
            //            };

        },

        btnSaibaMais: function() {
            ctrlRefs.btnSaibaMais().onclick = function() {
                on.clickSaibaMais(Portlet.getViagem().codLocalidadePara);
            };
        },

        opcoesPagamento: function() {

            var indiceContainsPgtoOff;
            var total = parseInt(jDS.getTotRegs("OpcoesPagamento"));
            for (var i = 0; i < total; i++) {
                //-- 13 - Pgto OFFLINE
                if (13 == jDS.getDrValue("OpcoesPagamento", i, "CodRef")) {
                    containsPgtoOff = true;
                    indiceContainsPgtoOff = i;
                };
            };

            if (containsPgtoOff) {
                //return tmpCNT.ReservaVMMI.CNT_ResFormasPagto.getHtml();
                var totFormas = jDS.getTotRegs("OpcoesPagamento");
                var sbFormas = new StringBuilder();

                var vCodRef = jDS.getDrValue("OpcoesPagamento", indiceContainsPgtoOff, "CodRef");
                ctrlRefs.opcaoPagamento(vCodRef).onclick = function() { on.selOpcaoPagamento(this.value); };

                ctrlRefs.opcaoPagamento(vCodRef).checked = true;
                on.selOpcaoPagamento(ctrlRefs.opcaoPagamento(vCodRef).value);

            }
            else {
                //return tmpCNT.ReservaVMMI.CNT_ResFormasPagto.getHtml();
                var totFormas = jDS.getTotRegs("OpcoesPagamento");
                var sbFormas = new StringBuilder();
                for (var i = 0; i < totFormas; i++) {
                    var vCodRef = jDS.getDrValue("OpcoesPagamento", i, "CodRef");
                    ctrlRefs.opcaoPagamento(vCodRef).onclick = function() { on.selOpcaoPagamento(this.value); };
                    //seta primeira opcão como selecionada

                    if (i == 0) {
                        ctrlRefs.opcaoPagamento(vCodRef).checked = true;
                        on.selOpcaoPagamento(ctrlRefs.opcaoPagamento(vCodRef).value);
                    };
                };
            };
        },
        opcoesParcelamento: function(pCodRef) {
            //return tmpCNT.ReservaVMMI.CNT_ResFormasPagto.getHtml();
            var totFormas = jDS.getTotRegs("OpcoesParcelamento");
            var vTipoOpcao = jDS.getDrValue("OpcoesPagamento", jDS.findRow("OpcoesPagamento", "CodRef", pCodRef), "Tipo");


            for (var i = 0; i < totFormas; i++) {
                if (jDS.getDrValue("OpcoesParcelamento", i, "CodRef") == pCodRef) {
                    var vCodPacoteBandeiraCC = jDS.getDrValue("OpcoesParcelamento", i, "CodPacote_BandeiraCC");
                    ctrlRefs.opcaoParcelamento(vCodPacoteBandeiraCC).TipoOpcao = vTipoOpcao;
                    ctrlRefs.opcaoParcelamento(vCodPacoteBandeiraCC).onclick = function() { on.selOpcaoParcelamento(this.value, this.TipoOpcao); };
                }
            };

            if (vTipoOpcao == "CC") {
                if (!containsPgtoOff) {
                    //cartao de credito, seta onchange do numero do cartão
                    //mudei para onblur pois o InputMask cancela o onchange
                    ctrlRefs.ccNumero().onblur = function() { Portlet.getViagem().Pedido.NumeroCartao = this.value; };
                    //sbFormas.appendFormat("<label>Número do Cartão de Crédito:&nbsp;</label><input type='text' id='CCNumero'/><br/>");
                    var o = ctrlRefs.ccNumero();
                    o.maskData = ['####.####.####.####', '    .    .    .    '];
                    InputMask(o);

                    ctrlRefs.ccCodSeg().onblur = function() { Portlet.getViagem().Pedido.ccCodSeg = this.value; };

                    var oi = ctrlRefs.ccCodSeg();
                    oi.maskData = ['###', '   '];
                    InputMask(oi);

                    ctrlRefs.ccTitular().onblur = function() { Portlet.getViagem().Pedido.ccTitular = this.value; };
                    ctrlRefs.ccMesVal().onchange = function() { Portlet.getViagem().Pedido.ccMesVal = this.value; };
                    ctrlRefs.ccAnoVal().onblur = function() { Portlet.getViagem().Pedido.ccAnoVal = this.value; };
                    //ctrlRefs.ccCodSeg().onblur = function() { Portlet.getViagem().Pedido.validadeCC = this.value; };
                };
            };

            if (vTipoOpcao == "TX") {
                //cartao de credito, seta onchange do numero do cartão
                ctrlRefs.obsPagamento().onchange = function() { Portlet.getViagem().Pedido.ObsPagamento = this.value; };
                //sbFormas.appendFormat("<label>Número do Cartão de Crédito:&nbsp;</label><input type='text' id='CCNumero'/><br/>");
            }

        },
        calcValor: function() {
            var valorTotal = 0;

            var vlrSvcs = 0;
            var vlrTrsp = 0;
            var vlrHosp = 0;

            var totIOpcsSVC = jDS.getTotRegs("ItensOpcaoServicosPacote");

            for (var io = 0; io < totIOpcsSVC; io++) {
                //if(jDS.getDrValue("ItensOpcaoServicosPacote",io,"Selected")=="true"){
                //valorTotal += parseFloat( jDS.getDrValue("ItensOpcaoServicosPacote",io,"ValorADT"));
                //}
                vlrSvcs += parseFloat(jDS.getDrValue("ItensOpcaoServicosPacote", io, "ValorADT") * parseInt(Portlet.getViagem().Paxes.totPaxes()));
            }
            var totTarifas = jDS.getTotRegs("TarifasAereoPacote");
            for (var io = 0; io < totTarifas; io++) {
                //if(jDS.getDrValue("TarifasAereoPacote",io,"Selected")=="true"){
                //valorTotal += parseFloat( jDS.getDrValue("TarifasAereoPacote",io,"ValorADT"));
                //}
                vlrTrsp += parseFloat(jDS.getDrValue("TarifasAereoPacote", io, "ValorADT") * parseInt(Portlet.getViagem().Paxes.totPaxes()));

            }

            //rodoviario
            var totOpcsRodo = jDS.getTotRegs("OpcoesRodoviarioPacote");
            for (var i = 0; i < totOpcsRodo; i++) {
                var codOpcao = jDS.getDrValue("OpcoesRodoviarioPacote", i, "CodOpcaoRodoviarioPacote");
                vlrTrsp += parseFloat(jDS.getDrValue("OpcoesRodoviarioPacote", i, "Valor") * parseInt(Portlet.getViagem().Paxes.totPaxes()));
            }

            //hospedagem
            var totHospedagem = 0;
            var totDiarias = jDS.getDrValue("Pacotes", 0, "NumeroNoites")
            var markupAcoplado = (jDS.getDrValue("Pacotes", 0, "MarkupAcoplado") != "" ? parseFloat(jDS.getDrValue("Pacotes", 0, "MarkupAcoplado")) : 1);

            var totOpcoes = jDS.getTotRegs("OpcoesHoteisPacote");
            var totItensOpcoes = jDS.getTotRegs("ItensOpcaoHoteisPacote");
            var totCategorias = jDS.getTotRegs("CategoriasOpcaoHoteisPacote");
            var vcodTarifarioHotel = 0;
            var vcodTipoAcomodacao = 0;
            var vcodTipoAlimentacao = 0;
            var vvalorPessoaHotel = 0;
            var vvalorDiariaHotel = 0;
            var vCodOpcaoHotelPacote = 0;
            var vCodOpcaoHotelDestinoPacote = 0;

            for (var ic = 0; ic < totOpcoes; ic++) {
                //if(jDS.getDrValue("OpcoesHoteisPacote",ic,"Selected")=="true"){
                vCodOpcaoHotelPacote = jDS.getDrValue("OpcoesHoteisPacote", ic, "CodOpcaoHotelPacote");

                for (var it = 0; it < totItensOpcoes; it++) {
                    if (jDS.getDrValue("ItensOpcaoHoteisPacote", it, "CodOpcaoHotelPacote") == vCodOpcaoHotelPacote) {

                        vCodOpcaoHotelDestinoPacote = jDS.getDrValue("ItensOpcaoHoteisPacote", ic, "CodOpcaoHotelDestinoPacote");

                        for (var io = 0; io < totCategorias; io++) {
                            if ((jDS.getDrValue("CategoriasOpcaoHoteisPacote", io, "CodOpcaoHotelDestinoPacote") == vCodOpcaoHotelDestinoPacote)) {
                                vcodTarifarioHotel = jDS.getDrValue("CategoriasOpcaoHoteisPacote", io, "CodTarifarioHotel");
                                vcodTipoAcomodacao = jDS.getDrValue("CategoriasOpcaoHoteisPacote", io, "CodTipoAcomodacao");
                                vcodTipoAlimentacao = jDS.getDrValue("CategoriasOpcaoHoteisPacote", io, "CodTipoAlimentacao");
                                //break;
                                //totHospedagem += parseFloat( jDS.getDrValue("ItensOpcaoHoteisPacote",io,"MinDBL"));

                                if (vcodTarifarioHotel > 0) {
                                    var totTarifas = jDS.getTotRegs("TarifasHotelPacote");
                                    for (var trf = 0; trf < totTarifas; trf++) {
                                        if ((jDS.getDrValue("TarifasHotelPacote", trf, "CodTarifarioHotel") == vcodTarifarioHotel)) {
                                            //achou a tarifa, valida capacidade
                                            switch (Portlet.getViagem().Paxes.totPaxes()) {
                                                case 1:
                                                    vvalorDiariaHotel = (parseFloat(jDS.getDrValue("TarifasHotelPacote", trf, "SGL")) > 0 ? parseFloat(jDS.getDrValue("TarifasHotelPacote", trf, "SGL")) : parseFloat(jDS.getDrValue("TarifasHotelPacote", trf, "DBL")) * 2);
                                                    //vvalorDiariaHotel = parseFloat( jDS.getDrValue("TarifasHotelPacote",trf,"SGL"));
                                                    break;
                                                case 2:
                                                    vvalorDiariaHotel = parseFloat(jDS.getDrValue("TarifasHotelPacote", trf, "DBL"));
                                                    break;
                                                case 3:
                                                    vvalorDiariaHotel = parseFloat(jDS.getDrValue("TarifasHotelPacote", trf, "TPL"));
                                                    break;
                                                case 4:
                                                    vvalorDiariaHotel = parseFloat(jDS.getDrValue("TarifasHotelPacote", trf, "QDP"));
                                                    break;
                                                default:
                                                    vvalorDiariaHotel = 0;
                                                    break;
                                            }
                                            //se tem valor sai do loop
                                            if (vvalorDiariaHotel > 0) {
                                                break;
                                            }
                                        }
                                    };

                                    if (vvalorDiariaHotel > 0) {
                                        //totHospedagem += (vvalorDiariaHotel * totDiarias);
                                        //atualiza o campo temporario de valor
                                        //jDS.setDrValue("CategoriasOpcaoHoteisPacote",io,"ValorTemporario",(vvalorDiariaHotel * totDiarias));
                                        //totHospedagem += ((vvalorDiariaHotel * totDiarias) * parseInt(Portlet.getViagem().Paxes.totPaxes()));
                                        totHospedagem = ((vvalorDiariaHotel) * parseInt(Portlet.getViagem().Paxes.totPaxes()));
                                    } else {
                                        //jDS.setDrValue("CategoriasOpcaoHoteisPacote",io,"ValorTemporario",0);
                                    }
                                }
                            }
                        };
                        //} 
                    };
                };
            }

            vlrHosp = totHospedagem;
            //alert(vlrHosp +" - "+ vlrTrsp+ " - " + vlrSvcs);
            //valorTotal = (valorTotal * Portlet.getViagem().Paxes.totPaxes());
            valorTotal = vlrHosp + vlrTrsp + vlrSvcs;
            //valorTotal = (valorTotal / markupAcoplado);
            valorTotalGlobal = valorTotal;
            return valorTotal;
        },

        drawValor: function() {
            var valorTotal = 0;
            valorTotal = startEnv.calcValor();
            if (valorTotal > 0) {
                ctrlRefs.valorTotal().innerHTML = "R$" + ' ' + (valorTotal.formatNumber(2)); //jDS.getDrValue("Pacotes", 0, "SimboloMoeda") + ' ' + (valorTotal.formatNumber(2));
            } else {
                ctrlRefs.valorTotal().innerHTML = "Configure sua viagem";
            };
        }
    };

    //metodos publicos
    this.exec = {
        Reserva: function() {
            var vCodPacoteVB = Portlet.getPedido().codPacote;
            var vCodPedidoPacoteVB = Portlet.getPedido().codPedido;
            var vTotPax = Portlet.getViagem().totPaxes;
            var vDataSaida = Portlet.getViagem().dataInicio;
            _codPacoteVB = vCodPacoteVB;
            //clPacotesVB.doDetalhes(vCodPacoteVB, parseInt(vTotPax), Date.parse(vDataSaida, "dd/MM/yyyy"),doReservaCB);
            clPacotesVMMI.getPedidoPacoteVMMI(0, vCodPedidoPacoteVB, 1, Portlet.getViagem().dataEmbarque, '', doReservaCB);
        },
        // OBSOLETO: este método não deve mais ser utilizado
        getAgencias: function(pCodLocalidade) {
            //faz chamada a najamethod para trazer agencias de viagem
            var res = clPacotesVMMI.getAgencias(pCodLocalidade);
            if (res.error == null) {
                jDSAgencias = new jDataset(res.value);
                vCodLocAgencias = pCodLocalidade;
                //renderiza as agencias
                startEnv.selAgencias();
            } else {
                alert('Erro ao pesquisar agências.');
            };
        },
        pagamentoPopup: function(codPedido) {
            Portlet.goTo.confirmacao();
            window.scroll(0, 0);
        }
    };

    this.changeCoefParcelamento = function(pCodCoef, pValorTotal)
    {
        _codCoeficienteParc = pCodCoef; 
        _valorPedido = pValorTotal;       
        $html('spValorPacote', pValorTotal.formatNumber(2, true));
    };
    
    
    var doReservaCB = function(res) 
    {
    	if (res.error == null) {
    		jDS = new jDataset(res.value);
    		startEnv.reserva();
    		startEnv.motorAgencias();
    		startEnv.listaAgenciasInicial();
	   		//var vLocGetAgencias = jDS.getDrValue("PedidoVB",0,"codLocalidadeDE");
    		//This.exec.getAgencias(10);
    		
    		//-- NOVA ESTRUTURA AÉREO
    		Portlet.getPedido().numeroNoites = parseInt(jDS.getDrValue("Pacotes", 0, "NumeroNoites"));
            var temAereoPedido = false;
            
            for (var x = 0; x < parseInt(jDS.getTotRegs("ItensOpcaoAereoPacote")); x++)
            {
                temAereoPedido = true;
                
                if (x == 0)
                    Portlet.getViagem().codTarifaIda = parseInt(jDS.getDrValue("ItensOpcaoAereoPacote", x, "CodTarifaAereo"));
                else
                    Portlet.getViagem().codTarifaVolta = parseInt(jDS.getDrValue("ItensOpcaoAereoPacote", x, "CodTarifaAereo"));
            };
            
            //debugger;
            //-- Verifica já agora se existe estoque para a Ida e a Volta do aéreo do pacote se existir opção de aéreo no pacote
            if (temAereoPedido)
            {
                var temEstoqueIda = true, temEstoqueVolta = true;
                var resIda = 0;
                var resVolta = 0;
                
                //-- Primeiro faz um IF para saber se tem pelo menos a tarifa de ida, assim já sabe que no pacote tem opção aéreo
                if (Portlet.getViagem().codTarifaIda != null && Portlet.getViagem().codTarifaVolta != null)
                {
                    var temEstoqueIda = true, temEstoqueVolta = true;
                    
                    var dataVolta = Portlet.getViagem().dataEmbarque;
                    dataVolta = dataVolta.addDays(Portlet.getPedido().numeroNoites);
                    
                    resIda = clPacotesVMMI.verificarQtdAssentosDisponiveis(Portlet.getViagem().codTarifaIda, Portlet.getViagem().dataEmbarque.toString(), Portlet.getViagem().dataEmbarque.toString()).value;
                    resVolta = clPacotesVMMI.verificarQtdAssentosDisponiveis(Portlet.getViagem().codTarifaVolta, dataVolta.toString(), dataVolta.toString()).value;
                    
                    if (resIda <= 0)
                        temEstoqueIda = false;
                        
                    if (resVolta <= 0)
                        temEstoqueVolta = false;
                };
            
                if (!(temEstoqueIda && temEstoqueVolta) && (((resIda - Portlet.getViagem().Paxes.totPaxes()) <= 0) && ((resVolta - Portlet.getViagem().Paxes.totPaxes()) <= 0)))
                {
                    alert("Desculpe-nos! Caro cliente, não há mais disponibilidade para esta data de saída.");
                    window.location = "pacotesVMMI.vxlpub?d=detalhes&codPacote=" + Portlet.getPedido().codPacote;
                };
    	    };
    	} 
    	else 
    	{
    		alert('Erro ao executar Tarifada.');
    	};
    }; 
    
    //construtor
    this.constructor = new function()
    {
        tmpUI = new Template('pctsVMMI').UI;
        tmpCNT = new Template('pctsVMMI').CNT;
        //startEnv.main();
    };
};
