﻿function apresentaResultadosDeAereo(numeroTab)
{
    /******************************/
    /* limpa o contexto desta aba */
    /******************************/
    ds = null;
    
    listaOpcoesMPSelecionadas = new Array();
    
    paginaAtual = 1;

    ordemCompanhiaCrescente = false;
    ordemAeroportoCrescente = false;
    ordemPartidaCrescente = false;
    ordemChegadaCrescente = false;
    ordemParadasCrescente = false;
    ordemPrecoCrescente = false;

    ordemColuna = 6;

    paradas = new Array();
    ciasAereas = new Array();
    voosMesmoAeroporto = false;
    aeroportos = new Array();
    horarios = new Array(16);
    duracao = new Array(4);
    moeda = "";
    precos = new Array(4);
    
    sourcesRanking = new Array();
    
    /******************************/

    // define o dataset desta aba
    ds = getTabDataSet(numeroTab);
    
    // define o iterador das opções MP
    if (iteratorOpcoesMP != null)
    {
        iteratorOpcoesMP.dispose();
    }
    iteratorOpcoesMP = ds.tables.OpcoesMP.getIterator("codOpcaoMP");
    
    // define o iterador dos vôos das opções MP
    if (iteratorVoosOpcoesMP != null)
    {
        iteratorVoosOpcoesMP.dispose();
    }
    iteratorVoosOpcoesMP = ds.tables.Voos.getIterator("codVoo");
    
    // define o iterador de cias aéreas
    if (iteratorCias != null)
    {
        iteratorCias.dispose();
    }
    iteratorCias = ds.tables.Cias.getIterator('companhia');
    
    // define o iterador de aeroportos
    if (iteratorAeroportos != null)
    {
        iteratorAeroportos.dispose();
    }
    iteratorAeroportos = ds.tables.Aeroportos.getIterator('iata');
    
    // verifica o contexto da tab
    var dtContexto = getTabContext(numeroTab);
    
    if($('divHeaderConteudoSEO').style.display == "none")
    {
        AtualizarDivsEstaticas
        (
            ds.tables["Trechos"].rows[0].origem, 
            ds.tables["Trechos"].rows[0].destino,
            ds.tables["Trechos"].rows[0].data.toString("dd/MM/yy"),
            (ds.tables["Trechos"].rows.count() > 1 ? ds.tables["Trechos"].rows[1].data.toString("dd/MM/yy") : "")
        );
    }
    
    // se ainda não tiver definido o contexto, constrói o HTML e os elementos
    if (dtContexto == null)
    {
        controiResultadoDeAereo(numeroTab);
        
        salvaContextoDaAba(numeroTab);
    }
    else // recupera o contexto desta aba
    {
        var drVariaveisDeAba = dtContexto.rows[0];
        
        listaOpcoesMPSelecionadas = drVariaveisDeAba.listaOpcoesMPSelecionadas;
        
        paginaAtual = drVariaveisDeAba.paginaAtual;
        
        ordemCompanhiaCrescente = drVariaveisDeAba.ordemCompanhiaCrescente;
        ordemCompanhiaCrescente = drVariaveisDeAba.ordemCompanhiaCrescente;
        ordemPartidaCrescente = drVariaveisDeAba.ordemPartidaCrescente;
        ordemChegadaCrescente = drVariaveisDeAba.ordemChegadaCrescente;
        ordemParadasCrescente = drVariaveisDeAba.ordemParadasCrescente;
        
        ordemPrecoCrescente = drVariaveisDeAba.ordemPrecoCrescente;
        
        ordemColuna = drVariaveisDeAba.ordemColuna;

        paradas = drVariaveisDeAba.paradas;
        ciasAereas = drVariaveisDeAba.ciasAereas;
        
        voosMesmoAeroporto = drVariaveisDeAba.voosMesmoAeroporto;
        
        aeroportos = drVariaveisDeAba.aeroportos;
        horarios = drVariaveisDeAba.horarios;
        duracao = drVariaveisDeAba.duracao;
        moeda = drVariaveisDeAba.moeda;
        precos = drVariaveisDeAba.precos;
        
        var filtros_img_estados = drVariaveisDeAba.filtros_img_estados;
        
        sourcesRanking = drVariaveisDeAba.sourcesRanking;
        
        $('divConteudo').innerHTML = drVariaveisDeAba.html;

        restauraFiltroParadas();
        restauraFiltroCiasAereas();
        restauraFiltroAeroportos();
        
        try
        {
            sliderHorarioIda = null;

            var width = "0%";
            
            if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1)
            {// Firefox
                width = "83%";
            }
            else
            { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
                width = "98%";
            }     

            $('divSliderIda').style.width = width;

            sliderHorarioIda = new Slider($('divSliderIda'), $('divBotaoSliderIda'), moveDirection.horizontal, $('divBotaoSliderIda2'));
            var maxRange = Date.diff(horarios[idxMenorSaidaIda], horarios[idxMaiorSaidaIda], "mm");
            sliderHorarioIda.setRange(0, maxRange, 15);
            sliderHorarioIda.setPosition2(Date.diff(horarios[idxMenorSaidaIda], horarios[idxMaiorSaidaIdaSelecionada], "mm"));
            sliderHorarioIda.setPosition(Date.diff(horarios[idxMenorSaidaIda], horarios[idxMenorSaidaIdaSelecionada], "mm"));
            sliderHorarioIda.onMove = exibirVooHorarioIdaMenor;
            sliderHorarioIda.onMove2 = exibirVooHorarioIdaMaior;
            sliderHorarioIda.onMoveStop = filtrarVooHorarioIdaMenor;
            sliderHorarioIda.onMoveStop2 = filtrarVooHorarioIdaMaior;
        }
        catch (ex) { }

        try
        {
            sliderHorarioVolta = null;

            var width = "0%";
            if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1)
            {// Firefox
                width = "83%";
            }
            else
            { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
                width = "98%";
            }     

            $('divSliderVolta').style.width = width;

            sliderHorarioVolta = new Slider($('divSliderVolta'), $('divBotaoSliderVolta'), moveDirection.horizontal, $('divBotaoSliderVolta2'));
            maxRange = Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMaiorSaidaVolta], "mm");
            sliderHorarioVolta.setRange(0, maxRange, 15);
            sliderHorarioVolta.setPosition2(Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMaiorSaidaVoltaSelecionada], "mm"));
            sliderHorarioVolta.setPosition(Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMenorSaidaVoltaSelecionada], "mm"));
            sliderHorarioVolta.onMove = exibirVooHorarioVoltaMenor;
            sliderHorarioVolta.onMove2 = exibirVooHorarioVoltaMaior;
            sliderHorarioVolta.onMoveStop = filtrarVooHorarioVoltaMenor;
            sliderHorarioVolta.onMoveStop2 = filtrarVooHorarioVoltaMaior;
        }
        catch (ex) {}

        try
        {
            sliderDuracao = null;
            var width = "0%";
            
            if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1)
            {// Firefox
                width = "83%";
            }
            else
            { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
                width = "98%";
            }     

            $('divSliderDuracao').style.width = width;

            sliderDuracao = new Slider($('divSliderDuracao'), $('divBotaoSliderDuracao'), moveDirection.horizontal, $('divBotaoSliderDuracao2'));
            var diferenca = (duracao[idxMaiorDuracao] - duracao[idxMenorDuracao]) * 100;
            sliderDuracao.setRange(0, diferenca, 8); 
            sliderDuracao.setPosition2((duracao[idxMaiorDuracaoSelecionada] - duracao[idxMenorDuracao]) * 100);
            sliderDuracao.setPosition((duracao[idxMenorDuracaoSelecionada] - duracao[idxMenorDuracao]) * 100);
            sliderDuracao.onMove = exibirVooDuracaoMenor;
            sliderDuracao.onMove2 = exibirVooDuracaoMaior;
            sliderDuracao.onMoveStop = filtrarVooDuracaoMenor;
            sliderDuracao.onMoveStop2 = filtrarVooDuracaoMaior;
        }
        catch (ex) { }

        try
        {
            sliderPrecos = null;

            var width = "0%";
            
            if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1)
            {// Firefox
                width = "83%";
            }
            else
            { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
                width = "98%";
            }     

            $('divSliderPrecos').style.width = width;

            sliderPrecos = new Slider($('divSliderPrecos'), $('divBotaoSliderPrecos'), moveDirection.horizontal, $('divBotaoSliderPrecos2'));
            diferenca = precos[idxMaiorPreco] - precos[idxMenorPreco];
            sliderPrecos.setRange(0, diferenca, 1);
            sliderPrecos.setPosition2(precos[idxMaiorPrecoSelecionado] - precos[idxMenorPreco]);
            sliderPrecos.setPosition(precos[idxMenorPrecoSelecionado] - precos[idxMenorPreco]);
            sliderPrecos.onMove = exibirVooPrecosMenor;
            sliderPrecos.onMove2 = exibirVooPrecosMaior;
            sliderPrecos.onMoveStop = filtrarVooPrecosMenor;
            sliderPrecos.onMoveStop2 = filtrarVooPrecosMaior;
        }
        catch (ex) { } 
        
        // restaura os estados dos filtros (minimizado ou expandido)
        restaura_filtros(filtros_img_estados);
    }
}

function controiResultadoDeAereo(numeroTab)
{
    // cria a página de resposta (template)
    var resultadoVoo = templates.ResultadoVoo; 
    var qs = $('txtUrl').value;
    
    resultadoVoo.linkExibirTodosVoos = "javascript:ExibirTodosVoos();";
    resultadoVoo.linkAtualizarResultado = "javascript:AtualizarResultado(" + numeroTab + ");";
    
    // define as divs e os links para ordenação dos resultados
    try
    {
        resultadoVoo.divOrdenaCompanhias = "'divOrdenacao'";
        resultadoVoo.imgOrdenaCompanhias = "'imgOrdenacao'";
        resultadoVoo.linkOrdenaCompanhias = "'javascript:OrdenaPorCompanhia(0);'";
        
        resultadoVoo.divOrdenaAeroportos = "'divOrdenacao'";
        resultadoVoo.imgOrdenaAeroportos = "'imgOrdenacao'";
        resultadoVoo.linkOrdenaAeroportos = "'javascript:OrdenaPorAeroporto(1);'";

        resultadoVoo.divOrdenaPartidas = "'divOrdenacao'";
        resultadoVoo.imgOrdenaPartidas = "'imgOrdenacao'";
        resultadoVoo.linkOrdenaPartidas = "'javascript:OrdenaPorPartida(2);'";

        resultadoVoo.divOrdenaChegadas = "'divOrdenacao'";
        resultadoVoo.imgOrdenaChegadas = "'imgOrdenacao'";
        resultadoVoo.linkOrdenaChegadas = "'javascript:OrdenaPorChegada(3);'";

        resultadoVoo.divOrdenaParadas = "'divOrdenacao'";
        resultadoVoo.imgOrdenaParadas = "'imgOrdenacao'";
        resultadoVoo.linkOrdenaParadas = "'javascript:OrdenaPorParadas(4);'";

        resultadoVoo.divOrdenaPrecos = "'divOrdenacao'";
        resultadoVoo.imgOrdenaPrecos = "'imgOrdenacao'";
        resultadoVoo.linkOrdenaPrecos = "'javascript:OrdenaPorPreco(5);'";
    }
    catch (ex1) {}
    
    // define os links para outros produtos
    // verifica se o itinerário é nacional ou internacional
    var destinoInternacional = (ds.tables.Busca != null && ds.tables.Busca.rows.count() > 0 ? ds.tables.Busca.rows[0]["destinoInternacional"] : false);
    
    var cidadeDestino = escape(ds.tables.Busca.rows[0]["cidadeDestino"]);
    
    if(QueryString("pr") != null)
    {
        cidadeDestino += "&pr=" + QueryString("pr");
    }
    
    if (destinoInternacional == true || destinoInternacional == "true")
    {
        resultadoVoo.linkHoteis = "http://preco2.buscape.com.br/hoteis-pousadas-internacionais.html?kw=" + cidadeDestino + $('txtLinksURL').value;
        resultadoVoo.linkCruzeiros = "http://preco2.buscape.com.br/cruzeiros-internacionais.html?kw=" + cidadeDestino + $('txtLinksURL').value;
        resultadoVoo.linkPacotes = "http://compare.buscapeviagens.com.br/procura?id=6613&kw=" + cidadeDestino + $('txtLinksURL').value;
    }
    else
    {
        resultadoVoo.linkHoteis = "http://preco2.buscape.com.br/hoteis-pousadas-nacionais.html?kw=" + cidadeDestino + $('txtLinksURL').value;
        resultadoVoo.linkCruzeiros = "http://preco2.buscape.com.br/cruzeiros-nacionais.html?kw=" + cidadeDestino + $('txtLinksURL').value;
        resultadoVoo.linkPacotes = "http://compare.buscapeviagens.com.br/procura?id=6612&kw=" + cidadeDestino + $('txtLinksURL').value;
    }
    
    resultadoVoo.linkCarros = "http://preco2.buscape.com.br/aluguel-de-automovel.html?kw=" + cidadeDestino + $('txtLinksURL').value;
    
    //inclui link banner 
    resultadoVoo.ifrmResult = $('txtResultadoVoo_1').value;

    // Atualizar informações do cabeçalho
    resultadoVoo.nomeOrigem = ds.tables.Busca.rows[0].cidadeOrigem;
    resultadoVoo.nomeDestino = ds.tables.Busca.rows[0].cidadeDestino;
    
    var listPax = ListagemPax();
    resultadoVoo.qtdePax = listPax.split('&')[0].capitalize();
    resultadoVoo.classe = listPax.split('&')[1].capitalize();
    
    resultadoVoo.saida = ds.tables.OpcoesMP.rows[0].dataSaidaIda.toString("dddd - dd/MM/yy").capitalize();
    
    resultadoVoo.retorno = "";
//    if(QueryString_SetQS(qs, "idaVolta").toString() != null && QueryString_SetQS(qs, "idaVolta").toString() == "1")
//    {
//        resultadoVoo.retorno = "Retorno: ";
//        resultadoVoo.retorno += ds.tables.OpcoesMP.rows[0].dataChegadaVolta.toString("dddd - dd/MM/yy").capitalize();
//    }
//    
    if(ds.tables.Trechos.rows.count() > 1)
    {
        resultadoVoo.retorno = "Retorno: ";
        resultadoVoo.retorno += ds.tables.OpcoesMP.rows[0].dataChegadaVolta.toString("dddd - dd/MM/yy").capitalize();
    }
    
    resultadoVoo.qtdeResultado = ds.tables.OpcoesMP.rows.count();
    resultadoVoo.qtdeLojas = ds.tables.Ranking.rows.count();
    
    var minPrice = ds.tables.Cias.rows[0].menorPreco;
    var maxPrice = ds.tables.Cias.rows[0].maiorPreco;
    
    // Definir menor a maior preço
    for(var j = 1; j < ds.tables.Cias.rows.count(); j++)
    {
        if((ds.tables.Cias.rows[j].menorPreco < minPrice && ds.tables.Cias.rows[j].menorPreco > 0) || minPrice == 0)
        {
            minPrice = ds.tables.Cias.rows[j].menorPreco;
        }
        
        if((ds.tables.Cias.rows[j].maiorPreco < maxPrice && ds.tables.Cias.rows[j].maiorPreco > 0) || maxPrice == 0)
        {
            maxPrice = ds.tables.Cias.rows[j].maiorPreco;
        }
    }
    
    resultadoVoo.minPrice = "R$ " + minPrice.formatNumber(2,true);
    resultadoVoo.maxPrice = "R$ " + maxPrice.formatNumber(2,true);
    
    // Redirecionar para a Home mantendo parametros de busca
    var redirHome = "";
    redirHome += "Home.aspx?pr=";
    redirHome += QueryString("pr");
    redirHome += "&origem=";
    redirHome += QueryString("origem");
    redirHome += "&destino=";
    redirHome += QueryString("destino");
    resultadoVoo.imgNovaPesquisaClick = redirHome;
    
    $('divConteudo').innerHTML = resultadoVoo.getHtml();
    
    // Esconder div de aguarde
    hideOverlay();
    
    // atualiza o número de resultados exibidos
    $('numeroOpcoesMPParcial').innerHTML = ds.tables.OpcoesMP.rows.count();
    $('numeroOpcoesMPTotal').innerHTML = ds.tables.OpcoesMP.rows.count();
    
    // inclui, na tabela que relaciona os vôos às opções MP, uma coluna que indica a linha do vôo na tabela de vôos
    ds.tables.OpcoesMP_Voos.addColumn('indiceVoo', 'System.Int32');
    
    // exibe a div de mais produtos do destino buscado
    $("spanMaisProdutos").innerHTML = "Mais " + (ds.tables.Busca != null && ds.tables.Busca.rows.count() > 0 ? ds.tables.Busca.rows[0]["cidadeDestino"] : "");

    // define a página atual e renderiza as opções
    paginaAtual = 1;
    renderBuscaVoo(paginaAtual); 
    renderFiltros(false);       
}

function ListagemPax()
{
    var sPax = "";
    var numAdt = 0;
    var numChd = 0;
    var numInf = 0;
    var qs = $('txtUrl').value;
    var classe = QueryString_SetQS(qs, "classe");
    classe = (classe == null ? "Todas" : classe);
    
    try
    {
        // Varrer url definindo o numero de passageiros
        for(var i = 0; i < 3; i++)
        {
            numAdt += (ds.tables.Busca.rows[i].numADT != null ? parseInt(ds.tables.Busca.rows[i].numADT) : 0);
            numChd += (ds.tables.Busca.rows[i].numCHD != null ? parseInt(ds.tables.Busca.rows[i].numCHD) : 0);
            numInf += (ds.tables.Busca.rows[i].numINF != null ? parseInt(ds.tables.Busca.rows[i].numINF) : 0);
        }
    }
    catch(ex){}
    
    // Definir qtde de Adultos
    sPax = numAdt;
    sPax += (numAdt > 1 ? " Adultos" : " Adulto");
    
    // Se existir crianças, definir qtde
    if(numChd > 0)
    {
        sPax += ", ";
        sPax += numChd;
        sPax += (numChd > 1 ? " Crianças" : " Criança");
    }
    
    // Se existir infantis, definir qtde
    if(numInf > 0)
    {
        sPax += ", ";
        sPax += numInf;
        sPax += (numInf > 1 ? " Crianças" : " Criança");
    }
    
    sPax += "&";
    sPax += (classe.toLowerCase() == "todas" ? "Todas as Classes" : classe);
    
    sPax += ", ";
    if(QueryString_SetQS(qs, "idaVolta") == "1")
    {
        sPax += "Ida e Volta";
    }
    else
    {
        sPax += "Somente Ida";
    }
    
    return sPax;
}

function DefineQuantidadePorPagina()
{
    pageSize = parseInt($('cboPageSize').options[$('cboPageSize').selectedIndex].value);
    renderBuscaVoo(paginaAtual);
//    ExibirTodosVoos();
}

function salvaContextoDaAba(numeroTab)
{
    if($("divAguarde").style.display != "none")
    {
        $("divAguarde").style.display != "none";
    }

    // salva o estado dos filtros
    var filtros_img_estados = busca_estado_filtros();
    
    // expande os filtros por causa do comportamento do slider caso o filtro esteja fechado
    expande_filtros();
    
    var dtContexto = dtVariaveisDeAba.clone();

    var drVariaveisDeAba = dtContexto.newRow();
    
    drVariaveisDeAba.listaOpcoesMPSelecionadas = listaOpcoesMPSelecionadas.copy();
    
    drVariaveisDeAba.paginaAtual = (paginaAtual * 1);
    
    drVariaveisDeAba.ordemCompanhiaCrescente = (ordemCompanhiaCrescente ? true : false);
    drVariaveisDeAba.ordemCompanhiaCrescente = (ordemCompanhiaCrescente ? true : false);
    drVariaveisDeAba.ordemPartidaCrescente = (ordemPartidaCrescente ? true : false);
    drVariaveisDeAba.ordemChegadaCrescente = (ordemChegadaCrescente ? true : false);
    drVariaveisDeAba.ordemParadasCrescente = (ordemParadasCrescente ? true : false);
    drVariaveisDeAba.ordemPrecoCrescente = (ordemPrecoCrescente ? true : false);
    
    drVariaveisDeAba.ordemColuna = (ordemColuna * 1);

    drVariaveisDeAba.paradas = paradas.copy();
    drVariaveisDeAba.ciasAereas = ciasAereas.copy();
    
    drVariaveisDeAba.voosMesmoAeroporto = (voosMesmoAeroporto ? true : false);
    
    drVariaveisDeAba.aeroportos = aeroportos.copy();
    drVariaveisDeAba.horarios = horarios.copy();
    drVariaveisDeAba.duracao = duracao.copy();
    
    drVariaveisDeAba.moeda = (moeda + "");
    
    drVariaveisDeAba.precos = precos.copy();
    
    drVariaveisDeAba.filtros_img_estados = filtros_img_estados.copy();
    
    drVariaveisDeAba.sourcesRanking = sourcesRanking;
    
    drVariaveisDeAba.html = $('divConteudo').innerHTML;
    
    dtContexto.addRow(drVariaveisDeAba);
    
    setTabContext(numeroTab, dtContexto.copy());

    // restaura os estados dos filtros (minimizado ou expandido)
    restaura_filtros(filtros_img_estados);
}