﻿function jRodoviario()
{
    var This = this;
    var pCodPacote;
    var tpl;
    var jDT;

    this.valorTotal = 0;
    this.codRodoviario = 0;
    
    var render = {    
        main: function() 
        {
            tpl.tpl_main.divTrechoRodoviario = render.listarRodoviario();
            
            return tpl.tpl_main.getHtml();
        },        
        listarRodoviario: function()
        {
            var sb = new StringBuilder();
	        var total = jDT.getTotRegs();	        
	        
	        sb.append("<select class='form' id='comboRodoviario' onchange='javascript:Rodoviario.exec.calculoValor()'>");
	        
            for (var i = 0; i < total; i++)
            {               
                tpl.tpl_optionResultado.value = jDT.getDrValue(i, "CodTarifaRodoviario");
                tpl.tpl_optionResultado.text = jDT.getDrValue(i, "Nome");
                sb.append(tpl.tpl_optionResultado.getHtml());
	        };
	        
	        sb.append("</select>");
            return sb.toString();
        }
    };
    
    var ctrlRefs = {
        siteConteudo: function() { return $('siteConteudo'); }
    };

    var startEnv = {
        main: function() {
            if (jDT.getTotRegs() > 0) {
                $html("rodoviario", render.main());
                startEnv.calculoValor();
            }
        },
        calculoValor: function(numeroAdultos) {
            if (numeroAdultos == undefined) {
                try {
                    numeroAdultos = $get('numeroPessoas');
                }
                catch (e) {
                    numeroAdultos = 1;
                };
            };

            var tarRodoviario = parseInt($get('comboRodoviario'));
            This.codRodoviario = tarRodoviario;


            var jDTcalc = new jDatatable(clHotelPacote.calculaRodoviario(pCodPacote, numeroAdultos, tarRodoviario).value);

            if (jDTcalc.getTotRegs() > 0) {
                This.valorTotal = parseFloat(jDTcalc.getDrValue(0, "val"));
            }

            //-- calcula tela
            var valorTela = 0;
            var valorHotel = 0;
            var pCodOpcaoHotelPacote = 0;
            var pCodAereo = 0;
            var pCodServico = '';
            var pCodPacote = 0;
            var pArrItensOpcaoHotelDestinoPacote = '';
            var pArrOpcaoHotelPacote = '';

            try {
                pCodOpcaoHotelPacote = HotelPacote.opcaoHotelGeral;
            } catch (ex) { };

            try {
                pCodAereo = AereosPacote.codAereo;
            } catch (ex) { };

            try {
                pCodServico = ServicosPacote.codServico;
            } catch (ex) { };

            try {
                pCodPacote = HotelPacote.codPacote;
            } catch (ex) { };

            try {
                pArrItensOpcaoHotelDestinoPacote = HotelPacote.arrItensOpcaoHotelDestinoPacote;
            } catch (ex) { };

            try {
                pArrOpcaoHotelPacote = HotelPacote.arrOpcaoHotelPacote;
            } catch (ex) { };

            var pArrOpcaoHotelPacote = pArrOpcaoHotelPacote.split(',');

            //--- recebe os valores do aereo / servicoOpcionais / servicosInclusos / rodoviario
            var jDTValoresAereoServicosRodoviario = new jDataset(clDetalhesPedido.calculaValores(
                                                pCodPacote, pCodAereo, tarRodoviario, pCodServico).value);

            var ValorServico = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table", 0, "ValorServico")).formatNumber(2, true);
            if (ValorServico == "NaN,00") { ValorServico = 0 };
            
            var ValorRodoviario = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table2", 0, "ValorRodoviario")).formatNumber(2, true);
            if (ValorRodoviario == "NaN,00") { ValorRodoviario = 0 };
            This.valorTotal = parseFloat(ValorRodoviario.toString().replace('R$ ', '').replace('.', '').replace(',', '.')) * numeroAdultos;
            
            var ValorAereo = 0;
            if (ValorRodoviario == 0)
                ValorAereo = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table1", 0, "ValorAereo")).formatNumber(2, true);

            if (ValorAereo == "NaN,00") { ValorAereo = 0 };
            var ValorServicoOpcional = 0;
            
            if (jDTValoresAereoServicosRodoviario.getDrValue("Table3", 0, "ValorServicoOpcional") != 0)
                ValorServicoOpcional = parseFloat(jDTValoresAereoServicosRodoviario.getDrValue("Table3", 0, "ValorServicoOpcional")).formatNumber(2, true);
            if (ValorServicoOpcional == "NaN,00") { ValorServicoOpcional = 0 };

            for (var count = 0; count < pArrOpcaoHotelPacote.count(); count++) {
                var jDTValores = new jDatatable(clHotelPacote.lerValoresItensConsolidadosX_NOVO(
                                                pArrOpcaoHotelPacote[count],
                                                pCodPacote,
                                                pArrItensOpcaoHotelDestinoPacote).value);

                var qrdeHospede = numeroAdultos;
                for (var j = 0; j < jDTValores.getTotRegs(); j++) {
                    switch (parseInt(qrdeHospede)) {
                        case 1:
                            //valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsSGL")).formatNumber(2, true);
                            if (valorHotel <= 0) {
                                valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                            };
                            break;                            
                        case 2:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL")).formatNumber(2, true);
                            break;
                        case 3:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsTPL")).formatNumber(2, true);
                            break;
                        case 4:
                            valorHotel = parseFloat(jDTValores.getDrValue(j, "ValorConsDBL") * 2).formatNumber(2, true);
                            break;
                    };
                };
                valorTela = parseFloat(valorHotel.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorAereo.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorServico.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorRodoviario.toString().replace('R$ ', '').replace('.', '').replace(',', '.'))
                            + parseFloat(ValorServicoOpcional.toString().replace('R$ ', '').replace('.', '').replace(',', '.'));
                $set('divValorRendersubtotal_' + pArrOpcaoHotelPacote[count], (parseFloat(valorTela).formatNumber(2, true)));

                if (pArrOpcaoHotelPacote[count] == pCodOpcaoHotelPacote)
                    $set('valorPacoteHeader', (parseFloat(valorTela) * qrdeHospede).formatNumber(2, true));
            };
        }
    };
    
    this.goTo = {
        main: function(codPacote, codPedido)
        {           
            //$clHotelPacote.setTelaAcaoSession('Rodoviário');// seta o nome da tela na session
            
            try
            {
                pCodPacote = codPacote;
                pCodPedido = codPedido;
                
                jDT = new jDatatable(clHotelPacote.listarRodoviarios(codPacote).value);
                startEnv.main(); 
            }
            catch(err){
                alert(err);
            };
        }
    };
    
    this.exec = {
        calculoValor: function()
        {
            startEnv.calculoValor();
            
            try {
                HotelPacote.on.changeOpcaoNumHospedes();
            } catch(ex) {}
        },
        salvarRodoviario: function()
        {            
            startEnv.calculoValor();
            
            var retorno = clHotelPacote.salvarPedidoRodoviario(pCodPedido, parseInt($get('comboRodoviario')), 0, 0);
            var retornoPedidosPacotes = clHotelPacote.updatePedidosPacotesValorRodoviarioPacote(pCodPedido, This.valorTotal);
        }
    };
    
    this.constructor = new function()
    {
        tpl = new Template("Rodoviario");
    };
};
