﻿/*************************************************************************************************************************************************/
/*                                                                  FILTROS                                                                      */
/*************************************************************************************************************************************************/
function ExibirTodosVoos()
{
    ExibeAguardeComThread(textoFiltrandoBusca, function() {return ExibirTodosVoos_background();}, false);
}

function ExibirTodosVoos_background()
{
    try
    {
        // preenche os filtros
        renderFiltros(true);

        // limpa o filtro de paradas
        for (var i = 0; i < paradas.length; i++)
        {
            paradas[i] = false;
        }
        
        // limpa o filtros de cias aéreas
        for (var i = 0; i < ciasAereas.length; i++)
        {
            ciasAereas[i][1] = false;    
        }
            
        // limpa o filtros de aeroportos
        if (ds.tables.Trechos.rows.count() > 1)
        {
            $("chkIdaVoltaMesmoAeroporto").checked = false;
        }
        for (var i = 0; i < aeroportos.length; i++)
        {
            aeroportos[i][1] = false;    
        }
            
        // limpa os horário selecionados
        horarios[idxMenorSaidaIdaSelecionada] = horarios[idxMenorSaidaIda];
        horarios[idxMaiorSaidaIdaSelecionada] = horarios[idxMaiorSaidaIda];
        horarios[idxMenorChegadaIdaSelecionada] = horarios[idxMenorChegadaIda];
        horarios[idxMaiorChegadaIdaSelecionada] = horarios[idxMaiorChegadaIda];
        
        horarios[idxMenorSaidaVoltaSelecionada] = horarios[idxMenorSaidaVolta];
        horarios[idxMaiorSaidaVoltaSelecionada] = horarios[idxMaiorSaidaVolta];
        horarios[idxMenorChegadaVoltaSelecionada] = horarios[idxMenorChegadaVolta];
        horarios[idxMaiorChegadaVoltaSelecionada] = horarios[idxMaiorChegadaVolta];
        
        // limpa a duração selecionada
        duracao[idxMenorDuracaoSelecionada] = duracao[idxMenorDuracao];
        duracao[idxMaiorDuracaoSelecionada] = duracao[idxMaiorDuracao];

        // limpa os preços selecionados
        precos[idxMenorPrecoSelecionado] = precos[idxMenorPreco].formatNumber(2, true);
        precos[idxMaiorPrecoSelecionado] = precos[idxMaiorPreco].formatNumber(2, true);
        
        // limpa todos os filtros das opções MP
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            // limpa o número de filtros aplicados 
            ds.tables.OpcoesMP.rows[i]['filtrosAplicados'] = 0;
            // opções excluídas
            ds.tables.OpcoesMP.rows[i]['exibirOpcao'] = true;
            // paradas
            ds.tables.OpcoesMP.rows[i]['filtrarPorParadas'] = 0;
            // horários
            ds.tables.OpcoesMP.rows[i]['filtrarPorDatas'] = 0;
            // cias aéreas
            ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] = 0;
            // aeroportos
            ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos'] = 0;
            // duração
            ds.tables.OpcoesMP.rows[i]['filtrarPorDuracao'] = 0;
            // preços
            ds.tables.OpcoesMP.rows[i]['filtrarPorPrecos'] = 0;
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

// Marca a opção para não ser exibida na renderização das opções
function exclui(codOpcaoMP)
{
    iteratorOpcoesMP.findByKey(codOpcaoMP);
    if (iteratorOpcoesMP.count() > 0)
    {
        iteratorOpcoesMP.row["exibirOpcao"] = false;
        
        // caso a opção esteja selecionada, deseleciona
        iteratorOpcoesMP.row["selecionada"] = false;
        
         // remove a opção na lista de opções MP selecionadas
        var iSelec = listaOpcoesMPSelecionadas.indexOf(codOpcaoMP);
        if (iSelec >= 0 && iSelec < listaOpcoesMPSelecionadas.length)
        {
            listaOpcoesMPSelecionadas.remove(iSelec);
        }
        
        iteratorOpcoesMP.row["filtrosAplicados"]++;
    }
    
    renderBuscaVoo(paginaAtual);
}

// Marca a opção para ser exibida como selecionada na renderização das opções
function seleciona(codOpcaoMP)
{
    iteratorOpcoesMP.findByKey(codOpcaoMP);
    if (iteratorOpcoesMP.count() > 0)
    {
        iteratorOpcoesMP.row["selecionada"] = true;
        
        // inclui a opção na lista de opções MP selecionadas
        if (listaOpcoesMPSelecionadas.contains(codOpcaoMP) == false)
        {
            listaOpcoesMPSelecionadas[listaOpcoesMPSelecionadas.length] = codOpcaoMP;
        }
    }
    
    renderBuscaVoo(paginaAtual);
}

// Desmarca a opção para ser exibida como selecionada na renderização das opções
function deseleciona(codOpcaoMP)
{
    iteratorOpcoesMP.findByKey(codOpcaoMP);
    if (iteratorOpcoesMP.count() > 0)
    {
        iteratorOpcoesMP.row["selecionada"] = false;
        
        // remove a opção na lista de opções MP selecionadas
        var iSelec = listaOpcoesMPSelecionadas.indexOf(codOpcaoMP);
        if (iSelec >= 0 && iSelec < listaOpcoesMPSelecionadas.length)
        {
            listaOpcoesMPSelecionadas.remove(iSelec);
        }
    }
    
    renderBuscaVoo(paginaAtual);
}

function filtraVooParada(numParadas)
{
    ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtraVooParada_background(numParadas);}, false);
} 

function filtraVooParada_background(numParadas)
{
    try
    {
        paradas[numParadas] = !paradas[numParadas];
        
        // indica se deve filtrar qualquer opção com o número de paradas maior ou igual ao selecionado
        var filtrarDemaisOpcoes = false;
        
        // se for o último elemento de paradas na lista de filtros, filtra qualquer opção com o número de paradas maior ou igual ao selecionado
        if (numParadas == (paradas.length - 1))
        {
            filtrarDemaisOpcoes = true;
        }
        
        var numParadasAux = parseFloat(numParadas);
        
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            var numParadasIda = parseFloat(ds.tables.OpcoesMP.rows[i]['numParadasIda']);
            var numParadasVolta = parseFloat(ds.tables.OpcoesMP.rows[i]['numParadasVolta']);
            
            if ((numParadas == 0 && (numParadasIda == numParadasAux && numParadasVolta == numParadasAux)) || 
                (numParadas > 0 && filtrarDemaisOpcoes == false && (numParadasIda == numParadasAux ||numParadasVolta == numParadasAux)) || 
                (numParadas > 0 && filtrarDemaisOpcoes == true && (numParadasIda >= numParadasAux ||numParadasVolta >= numParadasAux)))
            {
                if (paradas[numParadas] == true)
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorParadas'] == 0)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorParadas']++;
                }
                else
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorParadas'] == 1)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorParadas']--;
                }
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

function filtraVooSaidaIda()
{
    $("lblHorarioIdaInicial").innerHTML = horarios[idxMenorSaidaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMenorSaidaIdaSelecionada].toString("mm");
    $("lblHorarioIdaFinal").innerHTML = horarios[idxMaiorSaidaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorSaidaIdaSelecionada].toString("mm");

    sliderHorarioIda.setRange(0, Date.diff(horarios[idxMenorSaidaIda], horarios[idxMaiorSaidaIda], "mm"), 15); 
    sliderHorarioIda.setPosition(Date.diff(horarios[idxMenorSaidaIda], horarios[idxMenorSaidaIdaSelecionada], "mm"));
    sliderHorarioIda.setPosition2(Date.diff(horarios[idxMenorSaidaIda], horarios[idxMaiorSaidaIdaSelecionada], "mm"));
}

function filtraVooChegadaIda()
{
    $("lblHorarioIdaInicial").innerHTML = horarios[idxMenorChegadaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMenorChegadaIdaSelecionada].toString("mm");
    $("lblHorarioIdaFinal").innerHTML = horarios[idxMaiorChegadaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorChegadaIdaSelecionada].toString("mm");

    sliderHorarioIda.setRange(0, Date.diff(horarios[idxMenorChegadaIda], horarios[idxMaiorChegadaIda], "mm"), 15); 
    sliderHorarioIda.setPosition(Date.diff(horarios[idxMenorChegadaIda], horarios[idxMenorChegadaIdaSelecionada], "mm"));
    sliderHorarioIda.setPosition2(Date.diff(horarios[idxMenorChegadaIda], horarios[idxMaiorChegadaIdaSelecionada], "mm"));
}

function exibirVooHorarioIdaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        if (document.getElementsByName("chkHorariosIda")[0].checked == true)
        {
            var auxMenorSaidaIda = horarios[idxMenorSaidaIda].addMinutes(pos);
            $("lblHorarioIdaInicial").innerHTML = auxMenorSaidaIda.toString("ddd HH").capitalize() + "h" + auxMenorSaidaIda.toString("mm");
        }
        else if (document.getElementsByName("chkHorariosIda")[1].checked == true)
        {
            var auxMenorChegadaIda = horarios[idxMenorChegadaIda].addMinutes(pos);
            $("lblHorarioIdaInicial").innerHTML = auxMenorChegadaIda.toString("ddd HH").capitalize() + "h" + auxMenorChegadaIda.toString("mm");
        }
    }
}

function exibirVooHorarioIdaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        if (document.getElementsByName("chkHorariosIda")[0].checked == true)
        {
            var range = Date.diff(horarios[idxMenorSaidaIda], horarios[idxMaiorSaidaIda], "mm");
            var auxMaiorSaidaIda = horarios[idxMaiorSaidaIda].addMinutes(pos - range);
            $("lblHorarioIdaFinal").innerHTML = auxMaiorSaidaIda.toString("ddd HH").capitalize() + "h" + auxMaiorSaidaIda.toString("mm");
        }
        else if (document.getElementsByName("chkHorariosIda")[1].checked == true)
        {
            var range = Date.diff(horarios[idxMenorChegadaIda], horarios[idxMaiorChegadaIda], "mm");
            var auxMaiorChegadaIda = horarios[idxMaiorChegadaIda].addMinutes(pos - range);
            $("lblHorarioIdaFinal").innerHTML = auxMaiorChegadaIda.toString("ddd HH").capitalize() + "h" + auxMaiorChegadaIda.toString("mm");
        }
    }
}

function filtrarVooHorarioIdaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (document.getElementsByName("chkHorariosIda")[0].checked == true)
        {
            if (horarios[idxMenorSaidaIdaSelecionada].compare(horarios[idxMenorSaidaIda].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMenorSaidaIdaSelecionada] = horarios[idxMenorSaidaIda].addMinutes(pos);
                $("lblHorarioIdaInicial").innerHTML = horarios[idxMenorSaidaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMenorSaidaIdaSelecionada].toString("mm");
            }
        }
        else if (document.getElementsByName("chkHorariosIda")[1].checked == true)
        {
            if (horarios[idxMenorChegadaIdaSelecionada].compare(horarios[idxMenorChegadaIda].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMenorChegadaIdaSelecionada] = horarios[idxMenorChegadaIda].addMinutes(pos);
                $("lblHorarioIdaInicial").innerHTML = horarios[idxMenorChegadaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMenorChegadaIdaSelecionada].toString("mm");
            }
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooHorario();}, false);
        }
    }
}

function filtrarVooHorarioIdaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (document.getElementsByName("chkHorariosIda")[0].checked == true)
        {
            var range = Date.diff(horarios[idxMenorSaidaIda], horarios[idxMaiorSaidaIda], "mm");
            if (horarios[idxMaiorSaidaIdaSelecionada].compare(horarios[idxMaiorSaidaIda].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMaiorSaidaIdaSelecionada] = horarios[idxMaiorSaidaIda].addMinutes(pos - range);
                $("lblHorarioIdaFinal").innerHTML = horarios[idxMaiorSaidaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorSaidaIdaSelecionada].toString("mm");
            }
        }
        else if (document.getElementsByName("chkHorariosIda")[1].checked == true)
        {
            var range = Date.diff(horarios[idxMenorChegadaIda], horarios[idxMaiorChegadaIda], "mm");
            if (horarios[idxMaiorChegadaIdaSelecionada].compare(horarios[idxMaiorChegadaIda].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMaiorChegadaIdaSelecionada] = horarios[idxMaiorChegadaIda].addMinutes(pos - range);
                $("lblHorarioIdaFinal").innerHTML = horarios[idxMaiorChegadaIdaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorChegadaIdaSelecionada].toString("mm");
            }
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooHorario();}, false);
        }
    }
}

function filtraVooSaidaVolta()
{
    $("lblHorarioVoltaInicial").innerHTML = horarios[idxMenorSaidaVolta].toString("ddd HH").capitalize() + "h" + horarios[idxMenorSaidaVolta].toString("mm");
    $("lblHorarioVoltaFinal").innerHTML = horarios[idxMaiorSaidaVolta].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorSaidaVolta].toString("mm");

    sliderHorarioVolta.setRange(0, Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMaiorSaidaVolta], "mm"), 15); 
    sliderHorarioVolta.setPosition(Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMenorSaidaVoltaSelecionada], "mm"));
    sliderHorarioVolta.setPosition2(Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMaiorSaidaVoltaSelecionada], "mm"));
}

function filtraVooChegadaVolta()
{
    $("lblHorarioVoltaInicial").innerHTML = horarios[idxMenorChegadaVolta].toString("ddd HH").capitalize() + "h" + horarios[idxMenorChegadaVolta].toString("mm");
    $("lblHorarioVoltaFinal").innerHTML = horarios[idxMaiorChegadaVolta].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorChegadaVolta].toString("mm");

    sliderHorarioVolta.setRange(0, Date.diff(horarios[idxMenorChegadaVolta], horarios[idxMaiorChegadaVolta], "mm"), 15); 
    sliderHorarioVolta.setPosition(Date.diff(horarios[idxMenorChegadaVolta], horarios[idxMenorChegadaVoltaSelecionada], "mm"));
    sliderHorarioVolta.setPosition2(Date.diff(horarios[idxMenorChegadaVolta], horarios[idxMaiorChegadaVoltaSelecionada], "mm"));
}

function exibirVooHorarioVoltaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        if (document.getElementsByName("chkHorariosVolta")[0].checked == true)
        {
            var auxMenorSaidaVolta = horarios[idxMenorSaidaVolta].addMinutes(pos);
            $("lblHorarioVoltaInicial").innerHTML = auxMenorSaidaVolta.toString("ddd HH").capitalize() + "h" + auxMenorSaidaVolta.toString("mm");
        }
        else if (document.getElementsByName("chkHorariosVolta")[1].checked == true)
        {
            var auxMenorChegadaVolta = horarios[idxMenorChegadaVolta].addMinutes(pos);
            $("lblHorarioVoltaInicial").innerHTML = auxMenorChegadaVolta.toString("ddd HH").capitalize() + "h" + auxMenorChegadaVolta.toString("mm");
        }
    }
}

function exibirVooHorarioVoltaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        if (document.getElementsByName("chkHorariosVolta")[0].checked == true)
        {
            var range = Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMaiorSaidaVolta], "mm");
            var auxMaiorSaidaVolta = horarios[idxMaiorSaidaVolta].addMinutes(pos - range);
            $("lblHorarioVoltaFinal").innerHTML = auxMaiorSaidaVolta.toString("ddd HH").capitalize() + "h" + auxMaiorSaidaVolta.toString("mm");
        }
        else if (document.getElementsByName("chkHorariosVolta")[1].checked == true)
        {
            var range = Date.diff(horarios[idxMenorChegadaVolta], horarios[idxMaiorChegadaVolta], "mm");
            var auxMaiorChegadaVolta = horarios[idxMaiorChegadaVolta].addMinutes(pos - range);
            $("lblHorarioVoltaFinal").innerHTML = auxMaiorChegadaVolta.toString("ddd HH").capitalize() + "h" + auxMaiorChegadaVolta.toString("mm");
        }
    }
}

function filtrarVooHorarioVoltaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (document.getElementsByName("chkHorariosVolta")[0].checked == true)
        {
            if (horarios[idxMenorSaidaVoltaSelecionada].compare(horarios[idxMenorSaidaVolta].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMenorSaidaVoltaSelecionada] = horarios[idxMenorSaidaVolta].addMinutes(pos);
                $("lblHorarioVoltaInicial").innerHTML = horarios[idxMenorSaidaVoltaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMenorSaidaVoltaSelecionada].toString("mm");
            }
        }
        else if (document.getElementsByName("chkHorariosVolta")[1].checked == true)
        {
            if (horarios[idxMenorChegadaVoltaSelecionada].compare(horarios[idxMenorChegadaVolta].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMenorChegadaVoltaSelecionada] = horarios[idxMenorChegadaVolta].addMinutes(pos);
                $("lblHorarioVoltaInicial").innerHTML = horarios[idxMenorChegadaVoltaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMenorChegadaVoltaSelecionada].toString("mm");
            }
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooHorario();}, false);
        }
    }
}

function filtrarVooHorarioVoltaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (document.getElementsByName("chkHorariosVolta")[0].checked == true)
        {
            var range = Date.diff(horarios[idxMenorSaidaVolta], horarios[idxMaiorSaidaVolta], "mm");
            if (horarios[idxMaiorSaidaVoltaSelecionada].compare(horarios[idxMaiorSaidaVolta].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMaiorSaidaVoltaSelecionada] = horarios[idxMaiorSaidaVolta].addMinutes(pos - range);
                $("lblHorarioVoltaFinal").innerHTML = horarios[idxMaiorSaidaVoltaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorSaidaVoltaSelecionada].toString("mm");
            }
        }
        else if (document.getElementsByName("chkHorariosVolta")[1].checked == true)
        {
            var range = Date.diff(horarios[idxMenorChegadaVolta], horarios[idxMaiorChegadaVolta], "mm");
            if (horarios[idxMaiorChegadaVoltaSelecionada].compare(horarios[idxMaiorChegadaVolta].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                horarios[idxMaiorChegadaVoltaSelecionada] = horarios[idxMaiorChegadaVolta].addMinutes(pos - range);
                $("lblHorarioVoltaFinal").innerHTML = horarios[idxMaiorChegadaVoltaSelecionada].toString("ddd HH").capitalize() + "h" + horarios[idxMaiorChegadaVoltaSelecionada].toString("mm");
            }
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooHorario();}, false);
        }
    }
}

function filtrarVooHorario()
{
    try
    {
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            // 0 = somente ida; 1 = ida & volta;
            if ((
                 ds.tables.OpcoesMP.rows[i]['dataSaidaIda'] >= (horarios[idxMenorSaidaIdaSelecionada]) && 
                 ds.tables.OpcoesMP.rows[i]['dataSaidaIda'] <= (horarios[idxMaiorSaidaIdaSelecionada]) && 
                 ds.tables.OpcoesMP.rows[i]['dataChegadaIda'] >= (horarios[idxMenorChegadaIdaSelecionada]) && 
                 ds.tables.OpcoesMP.rows[i]['dataChegadaIda'] <= (horarios[idxMaiorChegadaIdaSelecionada])
                ) && 
                (ds.tables.Trechos.rows.count() == 1 ||
                 (ds.tables.Trechos.rows.count() > 1 && 
                  ds.tables.OpcoesMP.rows[i]['dataSaidaVolta'] >= (horarios[idxMenorSaidaVoltaSelecionada]) && 
                  ds.tables.OpcoesMP.rows[i]['dataSaidaVolta'] <= (horarios[idxMaiorSaidaVoltaSelecionada]) &&
                  ds.tables.OpcoesMP.rows[i]['dataChegadaVolta'] >= (horarios[idxMenorChegadaVoltaSelecionada]) && 
                  ds.tables.OpcoesMP.rows[i]['dataChegadaVolta'] <= (horarios[idxMaiorChegadaVoltaSelecionada])
                 )
                )
               )
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorDatas'] == 1)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorDatas'] = 0;
            }
            else 
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorDatas'] == 0)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorDatas'] = 1;
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

function filtraVooCompanhia(indexCia)
{           
    ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtraVooCompanhia_background(indexCia);}, false);
}

function filtraVooCompanhia_background(indexCia)
{           
    try 
    {
        ciasAereas[indexCia][1] = !ciasAereas[indexCia][1];
        
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
//            if (ds.tables.OpcoesMP.rows[i]['cias'].indexOf(ciasAereas[indexCia][0]) > -1)
            if (ds.tables.OpcoesMP.rows[i]['ciaPrincipal'].indexOf(ciasAereas[indexCia][0]) > -1)
            {
                if (ciasAereas[indexCia][1] == true)
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] == 0)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorCias']++;
                }
                else
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] == 1)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorCias']--;
                }
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

function somenteVooCompanhia(indexCia)
{           
    ExibeAguardeComThread(textoFiltrandoBusca, function() {return somenteVooCompanhia_background(indexCia);}, false);
}

function somenteVooCompanhia_background(indexCia)
{
    try 
    {
        var chkCiasAereas = document.getElementsByName("chkCiaAerea");
        for (var i = 0; i < ciasAereas.length; i++)
        {
            if (i != indexCia && ciasAereas[i][1] == false)
            {
                chkCiasAereas[i].checked = false;
                ciasAereas[i][1] = true;
            }
        }

        chkCiasAereas[indexCia].checked = true;
        ciasAereas[indexCia][1] = false;
        
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
//            if (ds.tables.OpcoesMP.rows[i]['cias'].indexOf(ciasAereas[indexCia][0]) > -1)
            if (ds.tables.OpcoesMP.rows[i]['ciaPrincipal'].indexOf(ciasAereas[indexCia][0]) > -1)
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] == 1)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] = 0;
            }
            else
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] == 0)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorCias'] = 1;
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

function filtraVooMesmoAeroporto()
{
    ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtraVooMesmoAeroporto_background();}, false);
}

function filtraVooMesmoAeroporto_background()
{
    try 
    {
        voosMesmoAeroporto = !voosMesmoAeroporto;

        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            if (ds.tables.OpcoesMP.rows[i]['iataOrigemIda'] != ds.tables.OpcoesMP.rows[i]['iataDestinoVolta'])
            {
                if (voosMesmoAeroporto == true)
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos'] == 0)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos']++;
                }
                else
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos'] == 1)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos']--;
                }
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

function filtraVooAeroporto(indexAeroporto)
{
    ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtraVooAeroporto_background(indexAeroporto);}, false);
}

function filtraVooAeroporto_background(indexAeroporto)
{
    try 
    {
        aeroportos[indexAeroporto][1] = !aeroportos[indexAeroporto][1];
        
        var filtrarOpcao = false;

        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            switch (aeroportos[indexAeroporto][0])
            {
                case ds.tables.OpcoesMP.rows[i]['iataOrigemIda']:
                    filtrarOpcao = true;
                    break;
                case ds.tables.OpcoesMP.rows[i]['iataDestinoIda']:
                    filtrarOpcao = true;
                    break;
                case ds.tables.OpcoesMP.rows[i]['iataOrigemVolta']:
                    filtrarOpcao = true;
                    break;
                case ds.tables.OpcoesMP.rows[i]['iataDestinoVolta']:
                    filtrarOpcao = true;
                    break;
                default:
                    filtrarOpcao = false;
                    break;
            }
            if (filtrarOpcao == true)
            {
                if (aeroportos[indexAeroporto][1] == true)
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos'] == 0)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos']++;
                }
                else
                {
                    if (ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos'] == 1)
                    {
                        ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                    }
                    ds.tables.OpcoesMP.rows[i]['filtrarPorAeroportos']--;
                }
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
    
    return true;
}

function exibirVooDuracaoMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var auxMenorDuracao = duracao[idxMenorDuracao] + (pos / 100);
        
        var horas = parseInt(auxMenorDuracao, 10);
        if (horas < 10)
        {
            horas = "0" + horas;
        }
        var minutos = Math.floor((auxMenorDuracao - horas) * 60);
        if (minutos < 10)
        {
            minutos = "0" + minutos;
        }

        $("lblDuracaoInicial").innerHTML = horas + "h" + minutos;
    }
}

function exibirVooDuracaoMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var range = duracao[idxMaiorDuracao] - duracao[idxMenorDuracao];
        var auxMaiorDuracao = duracao[idxMaiorDuracao] + ((pos / 100) - range);
        
        var horas = parseInt(auxMaiorDuracao, 10);
        if (horas < 10)
        {
            horas = "0" + horas;
        }
        var minutos = Math.floor((auxMaiorDuracao - horas) * 60);
        if (minutos < 10)
        {
            minutos = "0" + minutos;
        }

        $("lblDuracaoFinal").innerHTML = horas + "h" + minutos;
    }
}

function filtrarVooDuracaoMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (duracao[idxMenorDuracaoSelecionada] != (duracao[idxMenorDuracao] + (pos / 100)))
        {
            duracao[idxMenorDuracaoSelecionada] = duracao[idxMenorDuracao] + (pos / 100);

            var horas = parseInt(duracao[idxMenorDuracaoSelecionada], 10);
            if (horas < 10)
            {
                horas = "0" + horas;
            }
            var minutos = Math.floor((duracao[idxMenorDuracaoSelecionada] - horas) * 60);
            if (minutos < 10)
            {
                minutos = "0" + minutos;
            }

            $("lblDuracaoInicial").innerHTML = horas + "h" + minutos;
            
            filtrarVoos = true;
        }
        
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooDuracao_background();}, false);
        }
    }
}

function filtrarVooDuracaoMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        var range = duracao[idxMaiorDuracao] - duracao[idxMenorDuracao];
        if (duracao[idxMaiorDuracaoSelecionada] != (duracao[idxMaiorDuracao] + ((pos / 100) - range)))
        {
            duracao[idxMaiorDuracaoSelecionada] = duracao[idxMaiorDuracao] + ((pos / 100) - range);

            var horas = parseInt(duracao[idxMaiorDuracaoSelecionada], 10);
            if (horas < 10)
            {
                horas = "0" + horas;
            }
            var minutos = Math.floor((duracao[idxMaiorDuracaoSelecionada] - horas) * 60);
            if (minutos < 10)
            {
                minutos = "0" + minutos;
            }

            $("lblDuracaoFinal").innerHTML = horas + "h" + minutos;
            
            filtrarVoos = true;
        }
        
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooDuracao_background();}, false);
        }
    }
}

function filtrarVooDuracao_background()
{
    try
    {
        var menorDuracao = parseFloat(duracao[idxMenorDuracaoSelecionada].toFixed(2));
        var maiorDuracao = parseFloat(duracao[idxMaiorDuracaoSelecionada].toFixed(2));
        
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            var duracaoIda = parseFloat(ds.tables.OpcoesMP.rows[i]['duracaoIda'].toFixed(2));
            var duracaoVolta = 0;
            try
            {
                if (ds.tables.OpcoesMP.rows[i]['duracaoVolta'] != null)
                {
                    duracaoVolta = parseFloat(ds.tables.OpcoesMP.rows[i]['duracaoVolta'].toFixed(2));
                }
            }
            catch (ex) { } 
            
            // 0 = somente ida; 1 = ida & volta;
            if ((duracaoIda >= menorDuracao && duracaoIda <= maiorDuracao) && 
                (ds.tables.Trechos.rows.count() == 1 || 
                 (ds.tables.Trechos.rows.count() > 1 && duracaoVolta >= menorDuracao && duracaoVolta <= maiorDuracao)))
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorDuracao'] == 1)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorDuracao'] = 0;
            }
            else 
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorDuracao'] == 0)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorDuracao'] = 1;
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

function exibirVooPrecosMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var auxMenorPreco = precos[idxMenorPreco] + pos;
        
        var auxMoeda = "";
        switch (moeda)
        {
            case "BRL":
                auxMoeda = "R$";
                break;
            default:
                auxMoeda = moeda;
                break;
        }

        $("lblPrecoInicial").innerHTML = auxMoeda + " " + Math.floor(auxMenorPreco).formatNumber(2, true);
    }
}

function exibirVooPrecosMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var range = precos[idxMaiorPreco] - precos[idxMenorPreco];
        var auxMaiorPreco = precos[idxMaiorPreco] + (pos - range);
        
        var auxMoeda = "";
        switch (moeda)
        {
            case "BRL":
                auxMoeda = "R$";
                break;
            default:
                auxMoeda = moeda;
                break;
        }

        $("lblPrecoFinal").innerHTML = auxMoeda + " " + Math.ceil(auxMaiorPreco).formatNumber(2, true);
    }
}

function filtrarVooPrecosMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (precos[idxMenorPrecoSelecionado] != precos[idxMenorPreco] + pos)
        {
            precos[idxMenorPrecoSelecionado] = precos[idxMenorPreco] + pos;

            var auxMoeda = "";
            switch (moeda)
            {
                case "BRL":
                    auxMoeda = "R$";
                    break;
                default:
                    auxMoeda = moeda;
                    break;
            }

            $("lblPrecoInicial").innerHTML = auxMoeda + " " + Math.floor(precos[idxMenorPrecoSelecionado]).formatNumber(2, true);

            filtrarVoos = true;
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooPrecos_background();}, false);
        }
    }
}

function filtrarVooPrecosMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        var range = precos[idxMaiorPreco] - precos[idxMenorPreco];
        if (precos[idxMaiorPrecoSelecionado] != (precos[idxMaiorPreco] + (pos - range)))
        {
            precos[idxMaiorPrecoSelecionado] = precos[idxMaiorPreco] + (pos - range);

            var auxMoeda = "";
            switch (moeda)
            {
                case "BRL":
                    auxMoeda = "R$";
                    break;
                default:
                    auxMoeda = moeda;
                    break;
            }

            $("lblPrecoFinal").innerHTML = auxMoeda + " " + Math.ceil(precos[idxMaiorPrecoSelecionado]).formatNumber(2, true);

            filtrarVoos = true;
        }
        
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(textoFiltrandoBusca, function() {return filtrarVooPrecos_background();}, false);
        }
    }
}

function filtrarVooPrecos_background()
{
    try
    {
        var menorPreco = parseFloat(precos[idxMenorPrecoSelecionado]);
        var maiorPreco = parseFloat(precos[idxMaiorPrecoSelecionado]);
        
        for (var i = 0; i < ds.tables.OpcoesMP.rows.count(); i++)
        {
            var tarifaADT = parseFloat(ds.tables.OpcoesMP.rows[i]['tarifaADT']);
            
            // 0 = somente ida; 1 = ida & volta;
            if ((tarifaADT >= menorPreco && tarifaADT <= maiorPreco) && 
                (ds.tables.Trechos.rows.count() == 1 || 
                 (ds.tables.Trechos.rows.count() > 1 && tarifaADT >= menorPreco && tarifaADT <= maiorPreco)))
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorPrecos'] == 1)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']--;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorPrecos'] = 0;
            }
            else 
            {
                if (ds.tables.OpcoesMP.rows[i]['filtrarPorPrecos'] == 0)
                {
                    ds.tables.OpcoesMP.rows[i]['filtrosAplicados']++;
                }
                ds.tables.OpcoesMP.rows[i]['filtrarPorPrecos'] = 1;
            }
        }
        
        // atualiza a página atual para exibir a primeira página
        paginaAtual = 1;

        renderBuscaVoo(paginaAtual);
    }
    catch (ex) { }
        
    return true;
}

