﻿
Aereo.FiltroNacional = {
    filtraVooCompanhia: function(indexCia)
    {           
        ExibeAguardeComThread(function(){return Aereo.FiltroNacional.filtraVooCompanhia_background(indexCia);});
    },

    getDataTableOpcaoVoo: function(modo)
    {
        if(modo==1)
            return availDS.tables.OpcoesDeVoo;
        else
            return availDS.tables.OpcoesDeVooVolta;
    },


    filtraVooCompanhia_background: function(indexCia)
    {           
        try 
        {
            //ciasAereas[indexCia][1] = !ciasAereas[indexCia][1];
            //Acha a companhia Aerea
            var stateFiltro;
            var itCias = availDS.tables.Cias.getIterator("companhia");
            itCias.findByKey(indexCia);
            for(itCias.moveFirst(); itCias.hasNext(); itCias.moveNext())
            {   
                if(itCias.row.ida_volta == (Aereo.Disponibilidade.Modo-1))
                {
                    stateFiltro = itCias.row.filtro = !itCias.row.filtro;
                }
            }
            itCias.dispose();
            //================================================================
            
            var tblOpcao = getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
            
            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {
                if (tblOpcao.rows[i]['ciaPrincipal'] == indexCia){
                    if (stateFiltro == true){
                        if (tblOpcao.rows[i]['filtrarPorCias'] == 0){
                            tblOpcao.rows[i]['filtrosAplicados']++;
                        }
                        tblOpcao.rows[i]['filtrarPorCias']++;
                    }
                    else{
                        if (tblOpcao.rows[i]['filtrarPorCias'] == 1){
                            tblOpcao.rows[i]['filtrosAplicados']--;
                        }
                        tblOpcao.rows[i]['filtrarPorCias']--;
                    }
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;
            
            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    },

    mostraResultadosDisp: function()
    {
        Aereo.Disponibilidade.pageIndex = 1;
        var res = montaVoosDisponibilidade(Aereo.Disponibilidade.Modo, Aereo.Disponibilidade.pageIndex, Aereo.Disponibilidade.pageSize);
        Aereo.Disponibilidade.mostraResultado(res);
    },


    filtraVooAeroporto: function(indexAeroporto)
    {
        ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtraVooAeroporto_background(indexAeroporto);});
    },

    filtraVooAeroporto_background: function(indexAeroporto)
    {
        try 
        {
            //aeroportos[indexAeroporto][1] = !aeroportos[indexAeroporto][1];
            var stateFiltro;
            var itAeroportos = availDS.tables.Aeroportos.getIterator("iata");
            itAeroportos.findByKey(indexAeroporto);
            for(itAeroportos.moveFirst(); itAeroportos.hasNext(); itAeroportos.moveNext())
            {   
                if(itAeroportos.row.ida_volta == (Aereo.Disponibilidade.Modo-1))
                {
                    stateFiltro = itAeroportos.row.filtro = !itAeroportos.row.filtro;
                }
            }
            itAeroportos.dispose();
            
            var tblOpcao = Aereo.FiltroNacional.getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
            
            var filtrarOpcao = false;

            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {
                switch (indexAeroporto)
                {
                    case tblOpcao.rows[i]['iataOrigem']:
                        filtrarOpcao = true;
                        break;
                    case tblOpcao.rows[i]['iataDestino']:
                        filtrarOpcao = true;
                        break;
                    /*case tblOpcao.rows[i]['iataOrigemVolta']:
                        filtrarOpcao = true;
                        break;
                    case tblOpcao.rows[i]['iataDestinoVolta']:
                        filtrarOpcao = true;
                        break;*/
                    default:
                        filtrarOpcao = false;
                        break;
                }
                if (filtrarOpcao == true){
                    if (stateFiltro == true){
                        if (tblOpcao.rows[i]['filtrarPorAeroportos'] == 0){
                            tblOpcao.rows[i]['filtrosAplicados']++;
                        }
                        tblOpcao.rows[i]['filtrarPorAeroportos']++;
                    }
                    else{
                        if (tblOpcao.rows[i]['filtrarPorAeroportos'] == 1){
                            tblOpcao.rows[i]['filtrosAplicados']--;
                        }
                        tblOpcao.rows[i]['filtrarPorAeroportos']--;
                    }
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;

           Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
        
        return true;
    },


    exibirVooPrecosMenor: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var precos = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.PrecosIda : Aereo.FiltroRender.PrecosVolta);
            var auxMenorPreco = precos[Aereo.FiltroRender.MenorPreco] + pos;
            
            var auxMoeda = Aereo.FiltroRender.getMoeda(moeda);
            

            $("divPrecoInicial").innerHTML = auxMoeda + " " + Math.floor(auxMenorPreco);
        }
    },

    exibirVooPrecosMaior: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var precos = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.PrecosIda : Aereo.FiltroRender.PrecosVolta);
            var range = precos[Aereo.FiltroRender.MaiorPreco] - precos[Aereo.FiltroRender.MenorPreco];
            var auxMaiorPreco = precos[Aereo.FiltroRender.MaiorPreco] + (pos - range);
            
            var auxMoeda = Aereo.FiltroRender.getMoeda(moeda);
           

            $("divPrecoFinal").innerHTML = auxMoeda + " " + Math.ceil(auxMaiorPreco);
        }
    },

    filtrarVooPrecosMenor: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var precos = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.PrecosIda : Aereo.FiltroRender.PrecosVolta);
            var filtrarVoos = false;
            
            if (precos[Aereo.FiltroRender.MenorPrecoSelecionado] != precos[Aereo.FiltroRender.Aereo.FiltroRender.MenorPreco] + pos)
            {
                precos[Aereo.FiltroRender.MenorPrecoSelecionado] = precos[Aereo.FiltroRender.MenorPreco] + pos;

                var auxMoeda = Aereo.FiltroRender.getMoeda(moeda);
                

                $("divPrecoInicial").innerHTML = auxMoeda + " " + Math.floor(precos[Aereo.FiltroRender.MenorPrecoSelecionado]);

                filtrarVoos = true;
            }

            if (filtrarVoos == true)
            {
                ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtrarVooPrecos_background();});
            }
        }
    },

    filtrarVooPrecosMaior: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var precos = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.PrecosIda : Aereo.FiltroRender.PrecosVolta);
            var filtrarVoos = false;
            
            var range = precos[Aereo.FiltroRender.MaiorPreco] - precos[Aereo.FiltroRender.MenorPreco];
            if (precos[Aereo.FiltroRender.MaiorPrecoSelecionado] != (precos[Aereo.FiltroRender.MaiorPreco] + (pos - range)))
            {
                precos[Aereo.FiltroRender.MaiorPrecoSelecionado] = precos[Aereo.FiltroRender.MaiorPreco] + (pos - range);

                var auxMoeda = Aereo.FiltroRender.getMoeda(moeda);
                

                $("divPrecoFinal").innerHTML = auxMoeda + " " + Math.ceil(precos[Aereo.FiltroRender.MaiorPrecoSelecionado]);

                filtrarVoos = true;
            }
            
            if (filtrarVoos == true)
            {
                ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtrarVooPrecos_background();});
            }
        }
    },

    filtrarVooPrecos_background: function()
    {
        try
        {
            var precos = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.PrecosIda : Aereo.FiltroRender.PrecosVolta);
            var tblOpcao = Aereo.FiltroNacional.getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
            
            var menorPreco = parseFloat(precos[Aereo.FiltroRender.MenorPrecoSelecionado]);
            var maiorPreco = parseFloat(precos[Aereo.FiltroRender.MaiorPrecoSelecionado]);
            
            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {
                var tarifaADT = parseFloat(tblOpcao.rows[i]['preco']);
                
                // 0 = somente ida; 1 = ida & volta;
                if ((tarifaADT >= menorPreco && tarifaADT <= maiorPreco))
                {
                    if (tblOpcao.rows[i]['filtrarPorPrecos'] == 1)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']--;
                    }
                    tblOpcao.rows[i]['filtrarPorPrecos'] = 0;
                }
                else 
                {
                    if (tblOpcao.rows[i]['filtrarPorPrecos'] == 0)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']++;
                    }
                    tblOpcao.rows[i]['filtrarPorPrecos'] = 1;
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;

            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    },


    exibirVooHorarioIdaMenor: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var horarios = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.HorariosIda : Aereo.FiltroRender.HorariosVolta);
            var auxMenorSaidaIda = horarios[Aereo.FiltroRender.MenorSaidaIda].addMinutes(pos);
            $("divHorarioInicial").innerHTML = auxMenorSaidaIda.toString("HH").capitalize() + "h" + auxMenorSaidaIda.toString("mm");   
        }
    },

    exibirVooHorarioIdaMaior: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var horarios = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.HorariosIda : Aereo.FiltroRender.HorariosVolta);
            var range = Date.diff(horarios[Aereo.FiltroRender.MenorSaidaIda], horarios[Aereo.FiltroRender.MaiorSaidaIda], "mm");
            var auxMaiorSaidaIda = horarios[Aereo.FiltroRender.MaiorSaidaIda].addMinutes(pos - range);
            $("divHorarioFinal").innerHTML = auxMaiorSaidaIda.toString("HH").capitalize() + "h" + auxMaiorSaidaIda.toString("mm");
        }
    },

    filtrarVooHorarioIdaMenor: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var horarios = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.HorariosIda : Aereo.FiltroRender.HorariosVolta);
            var filtrarVoos = false;
            
            if (horarios[Aereo.FiltroRender.MenorSaidaIdaSelecionada].compare(horarios[Aereo.FiltroRender.MenorSaidaIda].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                horarios[Aereo.FiltroRender.MenorSaidaIdaSelecionada] = horarios[Aereo.FiltroRender.MenorSaidaIda].addMinutes(pos);
                $("divHorarioInicial").innerHTML = horarios[Aereo.FiltroRender.MenorSaidaIdaSelecionada].toString("HH").capitalize() + "h" + horarios[Aereo.FiltroRender.MenorSaidaIdaSelecionada].toString("mm");
            }

            if (filtrarVoos == true)
            {
                ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtrarVooHorario();});
            }
        }
    },

    filtrarVooHorarioIdaMaior: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var horarios = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.HorariosIda : Aereo.FiltroRender.HorariosVolta);
            var filtrarVoos = false;
           
            var range = Date.diff(horarios[Aereo.FiltroRender.MenorSaidaIda], horarios[Aereo.FiltroRender.MaiorSaidaIda], "mm");
            if (horarios[Aereo.FiltroRender.MaiorSaidaIdaSelecionada].compare(horarios[Aereo.FiltroRender.MaiorSaidaIda].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                horarios[Aereo.FiltroRender.MaiorSaidaIdaSelecionada] = horarios[Aereo.FiltroRender.MaiorSaidaIda].addMinutes(pos - range);
                $("divHorarioFinal").innerHTML = horarios[Aereo.FiltroRender.MaiorSaidaIdaSelecionada].toString("HH").capitalize() + "h" + horarios[Aereo.FiltroRender.MaiorSaidaIdaSelecionada].toString("mm");
            }
            if (filtrarVoos == true)
            {
                ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtrarVooHorario();});
            }
        }
    },

    filtrarVooHorario: function()
    {
        try
        {
            var horarios = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.HorariosIda : Aereo.FiltroRender.HorariosVolta);
            var tblOpcao = Aereo.FiltroNacional.getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {
                // 0 = somente ida; 1 = ida & volta;
                if (tblOpcao.rows[i]['dataSaida'] >= (horarios[Aereo.FiltroRender.MenorSaidaIdaSelecionada]) && 
                     tblOpcao.rows[i]['dataSaida'] <= (horarios[Aereo.FiltroRender.MaiorSaidaIdaSelecionada]) &&
                     tblOpcao.rows[i]['dataChegada'] >= (horarios[Aereo.FiltroRender.MenorChegadaIdaSelecionada]) &&
                     tblOpcao.rows[i]['dataChegada'] <= (horarios[Aereo.FiltroRender.MaiorChegadaIdaSelecionada])) 
                {
                    if (tblOpcao.rows[i]['filtrarPorDatas'] == 1)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']--;
                    }
                    tblOpcao.rows[i]['filtrarPorDatas'] = 0;
                }
                else 
                {
                    if (tblOpcao.rows[i]['filtrarPorDatas'] == 0)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']++;
                    }
                    tblOpcao.rows[i]['filtrarPorDatas'] = 1;
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;

            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    },


    exibirVooDuracaoMenor: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var duracao = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.DuracaoIda : Aereo.FiltroRender.DuracaoVolta);
            var auxMenorDuracao = duracao[Aereo.FiltroRender.MenorDuracao] + (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;
            }

            $("divDuracaoInicial").innerHTML = horas + "h" + minutos;
        }
    },

    exibirVooDuracaoMaior: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var duracao = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.DuracaoIda : Aereo.FiltroRender.DuracaoVolta);
            var range = duracao[Aereo.FiltroRender.MaiorDuracao] - duracao[Aereo.FiltroRender.MenorDuracao];
            var auxMaiorDuracao = duracao[Aereo.FiltroRender.MaiorDuracao] + ((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;
            }

            $("divDuracaoFinal").innerHTML = horas + "h" + minutos;
        }
    },

    filtrarVooDuracaoMenor: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var duracao = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.DuracaoIda : Aereo.FiltroRender.DuracaoVolta);
            var filtrarVoos = false;
            
            if (duracao[Aereo.FiltroRender.MenorDuracaoSelecionada] != (duracao[Aereo.FiltroRender.MenorDuracao] + (pos / 100)))
            {
                duracao[Aereo.FiltroRender.MenorDuracaoSelecionada] = duracao[Aereo.FiltroRender.MenorDuracao] + (pos / 100);

                var horas = parseInt(duracao[Aereo.FiltroRender.MenorDuracaoSelecionada], 10);
                if (horas < 10)
                {
                    horas = "0" + horas;
                }
                var minutos = Math.floor((duracao[Aereo.FiltroRender.MenorDuracaoSelecionada] - horas) * 60);
                if (minutos < 10)
                {
                    minutos = "0" + minutos;
                }

                $("divDuracaoInicial").innerHTML = horas + "h" + minutos;
                
                filtrarVoos = true;
            }
            
            if (filtrarVoos == true)
            {
                ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtrarVooDuracao_background();});
            }
        }
    },

    filtrarVooDuracaoMaior: function(pos)
    {
        if (isNaN(pos) == false)
        {
            var duracao = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.DuracaoIda : Aereo.FiltroRender.DuracaoVolta);
            var filtrarVoos = false;
            
            var range = duracao[Aereo.FiltroRender.MaiorDuracao] - duracao[Aereo.FiltroRender.MenorDuracao];
            if (duracao[Aereo.FiltroRender.MaiorDuracaoSelecionada] != (duracao[Aereo.FiltroRender.MaiorDuracao] + ((pos / 100) - range)))
            {
                duracao[Aereo.FiltroRender.MaiorDuracaoSelecionada] = duracao[Aereo.FiltroRender.MaiorDuracao] + ((pos / 100) - range);

                var horas = parseInt(duracao[Aereo.FiltroRender.MaiorDuracaoSelecionada], 10);
                if (horas < 10)
                {
                    horas = "0" + horas;
                }
                var minutos = Math.floor((duracao[Aereo.FiltroRender.MaiorDuracaoSelecionada] - horas) * 60);
                if (minutos < 10)
                {
                    minutos = "0" + minutos;
                }

                $("divDuracaoFinal").innerHTML = horas + "h" + minutos;
                
                filtrarVoos = true;
            }
            
            if (filtrarVoos == true)
            {
                ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtrarVooDuracao_background();});
            }
        }
    },

    filtrarVooDuracao_background: function()
    {
        try
        {
            var duracao = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.DuracaoIda : Aereo.FiltroRender.DuracaoVolta);
            var tblOpcao = Aereo.FiltroNacional.getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
            
            var menorDuracao = parseFloat(duracao[Aereo.FiltroRender.MenorDuracaoSelecionada].toFixed(2));
            var maiorDuracao = parseFloat(duracao[Aereo.FiltroRender.MaiorDuracaoSelecionada].toFixed(2));

            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {
                var _duracaoIda = parseFloat(tblOpcao.rows[i]['duracao'].toFixed(2));
                //var duracaoVolta = parseFloat(tblOpcao.rows[i]['duracaoVolta'].toFixed(2));
                
                // 0 = somente ida; 1 = ida & volta;
                if ((_duracaoIda >= menorDuracao && _duracaoIda <= maiorDuracao))
                {
                    if (tblOpcao.rows[i]['filtrarPorDuracao'] == 1)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']--;
                    }
                    tblOpcao.rows[i]['filtrarPorDuracao'] = 0;
                }
                else 
                {
                    if (tblOpcao.rows[i]['filtrarPorDuracao'] == 0)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']++;
                    }
                    tblOpcao.rows[i]['filtrarPorDuracao'] = 1;
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;

            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    },

    filtraVooParada: function(numParadas)
    {
        ExibeAguardeComThread(function() {return Aereo.FiltroNacional.filtraVooParada_background(numParadas);});
    },

    filtraVooParada_background: function(numParadas)
    {
        try
        {
            var tblOpcao = Aereo.FiltroNacional.getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
            
           // paradas[numParadas] = !paradas[numParadas];
           var stateFiltro;
           var itParadas = availDS.tables.Paradas.getIterator("numParadas");
           itParadas.findByKey(numParadas);
           for(itParadas.moveFirst(); itParadas.hasNext(); itParadas.moveNext())
           {   
                if(itParadas.row.ida_volta == (Aereo.Disponibilidade.Modo-1))
                {
                    stateFiltro = itParadas.row.filtro = !itParadas.row.filtro;
                }
           }
            // 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;
            //}
            
            itParadas.dispose();
            
            //var numParadasAux = parseFloat(numParadas);
            
            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {
                var numParadasTotal = parseFloat(tblOpcao.rows[i]['numParadasTotal']);
                
                if (numParadas == numParadasTotal)
                {
                    if (stateFiltro == true)
                    {
                        if (tblOpcao.rows[i]['filtrarPorParadas'] == 0)
                        {
                            tblOpcao.rows[i]['filtrosAplicados']++;
                        }
                        tblOpcao.rows[i]['filtrarPorParadas']++;
                    }
                    else
                    {
                        if (tblOpcao.rows[i]['filtrarPorParadas'] == 1)
                        {
                            tblOpcao.rows[i]['filtrosAplicados']--;
                        }
                        tblOpcao.rows[i]['filtrarPorParadas']--;
                    }
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;

            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    },

    //Limpa todos os Filtros
    ExibirTodosVoos: function()
    {
        ExibeAguardeComThread(function() {return Aereo.FiltroNacional.ExibirTodosVoos_background();});
    },

    ExibirTodosVoos_background: function()
    {
        try
        {
            Aereo.FiltroNacional.limparFiltrosVoos();
            Aereo.FiltroVoo.init(false);
            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    },

    //Limpa todos os filtros dos voos
    limparFiltrosVoos: function()
    {
        var tblOpcao = getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
        
        // preenche os filtros
        //renderFiltros(true);

        // limpa o filtro de paradas
        /*for (var i = 0; i < paradas.length; i++)
        {
            paradas[i] = false;
        }*/
        var itParadas = availDS.tables.Paradas.getIterator("ida_volta");
        itParadas.findByKey((Aereo.Disponibilidade.Modo-1));
        for(itParadas.moveFirst(); itParadas.hasNext(); itParadas.moveNext())
        {   
            itParadas.row.filtro = false;
        }
        itParadas.dispose();
        
        // limpa o filtros de cias aéreas
        var itCias = availDS.tables.Cias.getIterator("ida_volta");
        itCias.findByKey((Aereo.Disponibilidade.Modo-1));
        for(itCias.moveFirst(); itCias.hasNext(); itCias.moveNext())
        {  
            itCias.row.filtro = false;
        }
        itCias.dispose();
        /*for (var i = 0; i < ciasAereas.length; i++)
        {
            ciasAereas[i][1] = false;    
        }*/
            
        //limpa os filtros de aeroportos
        var itAeroportos = availDS.tables.Aeroportos.getIterator("ida_volta");
        itAeroportos.findByKey((Aereo.Disponibilidade.Modo-1));
        for(itAeroportos.moveFirst(); itAeroportos.hasNext(); itAeroportos.moveNext())
        {   
            itAeroportos.row.filtro = false;
        }
        /*for (var i = 0; i < aeroportos.length; i++)
        {
            aeroportos[i][1] = false;    
        }*/
        
        var horarios = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.HorariosIda : Aereo.FiltroRender.HorariosVolta); 
            
        // limpa os horário selecionados
        horarios[Aereo.FiltroRender.MenorSaidaIdaSelecionada] = horarios[Aereo.FiltroRender.MenorSaidaIda];
        horarios[Aereo.FiltroRender.MaiorSaidaIdaSelecionada] = horarios[Aereo.FiltroRender.MaiorSaidaIda];
        //horarios[Aereo.FiltroRender.MenorChegadaIdaSelecionada] = horarios[Aereo.FiltroRender.MenorChegadaIda];
        //horarios[Aereo.FiltroRender.MaiorChegadaIdaSelecionada] = horarios[Aereo.FiltroRender.MaiorChegadaIda];
        
        //horarios[Aereo.FiltroRender.MenorSaidaVoltaSelecionada] = horarios[Aereo.FiltroRender.MenorSaidaVolta];
        //horarios[Aereo.FiltroRender.MaiorSaidaVoltaSelecionada] = horarios[Aereo.FiltroRender.MaiorSaidaVolta];
        //horarios[Aereo.FiltroRender.MenorChegadaVoltaSelecionada] = horarios[Aereo.FiltroRender.MenorChegadaVolta];
        //horarios[Aereo.FiltroRender.MaiorChegadaVoltaSelecionada] = horarios[Aereo.FiltroRender.MaiorChegadaVolta];
        
        // limpa a duração selecionada
        var duracao = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.DuracaoIda : Aereo.FiltroRender.DuracaoVolta); 
        
        duracao[Aereo.FiltroRender.MenorDuracaoSelecionada] = duracao[Aereo.FiltroRender.MenorDuracao];
        duracao[Aereo.FiltroRender.MaiorDuracaoSelecionada] = duracao[Aereo.FiltroRender.MaiorDuracao];

        var precos = (Aereo.Disponibilidade.Modo == 1 ? Aereo.FiltroRender.PrecosIda : Aereo.FiltroRender.PrecosVolta);
        // limpa os preços selecionados
        precos[Aereo.FiltroRender.MenorPrecoSelecionado] = precos[Aereo.FiltroRender.MenorPreco];
        precos[Aereo.FiltroRender.MaiorPrecoSelecionado] = precos[Aereo.FiltroRender.MaiorPreco];
        
        // limpa todos os filtros das opções MP
        for (var i = 0; i < tblOpcao.rows.count(); i++)
        {
            // limpa o número de filtros aplicados 
            tblOpcao.rows[i]['filtrosAplicados'] = 0;
            
            // opções excluídas
            tblOpcao.rows[i]['exibirOpcao'] = true;
            // paradas
            tblOpcao.rows[i]['filtrarPorParadas'] = 0;
            // horários
            tblOpcao.rows[i]['filtrarPorDatas'] = 0;
            // cias aéreas
            tblOpcao.rows[i]['filtrarPorCias'] = 0;
            // aeroportos
            tblOpcao.rows[i]['filtrarPorAeroportos'] = 0;
            // duração
            tblOpcao.rows[i]['filtrarPorDuracao'] = 0;
            // preços
            tblOpcao.rows[i]['filtrarPorPrecos'] = 0;
        }
    },


    somenteVooCompanhia: function(indexCia)
    {           
        ExibeAguardeComThread(function() {return Aereo.FiltroNacional.somenteVooCompanhia_background(indexCia);});
    },

    somenteVooCompanhia_background: function(indexCia)
    {
        //debugger;
        
        try 
        {
            var tblOpcao = Aereo.FiltroNacional.getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
        
            var chkCiasAereas = document.getElementsByName("chkCiaAerea");
            
            
            // Limpo todos os checkboxes e depois seto corretamente
            for (var i = 0; i < chkCiasAereas.length; i++)
            {
                chkCiasAereas[i].checked = false;
            }            
            
            for (var i = 0; i < chkCiasAereas.length; i++)
            {
                if (chkCiasAereas[i].value != indexCia)
                {
                    chkCiasAereas[i].checked = false;
                }else{
                    chkCiasAereas[i].checked = true;
                }
            }

            var itCias = availDS.tables.Cias.getIterator("ida_volta");
            itCias.findByKey((Aereo.Disponibilidade.Modo-1));
            for(itCias.moveFirst(); itCias.hasNext(); itCias.moveNext())
            {  
                if(itCias.row.companhia == indexCia)
                {
                    itCias.row.filtro = false;
                }else{
                    itCias.row.filtro = true;
                }
            }
            itCias.dispose();
            
            for (var i = 0; i < tblOpcao.rows.count(); i++)
            {

                if (tblOpcao.rows[i]['ciaPrincipal'].indexOf(indexCia) > -1)
                {
                    if (tblOpcao.rows[i]['filtrarPorCias'] == 1)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']--;
                    }
                    tblOpcao.rows[i]['filtrarPorCias'] = 0;
                }
                else
                {
                    if (tblOpcao.rows[i]['filtrarPorCias'] == 0)
                    {
                        tblOpcao.rows[i]['filtrosAplicados']++;
                    }
                    tblOpcao.rows[i]['filtrarPorCias'] = 1;
                }
            }
            
            // atualiza a página atual para exibir a primeira página
            paginaAtual = 1;
            
            //Ordena por preco
            tblOpcao.sort('preco');

            Aereo.FiltroNacional.mostraResultadosDisp();
        }
        catch (ex) { }
            
        return true;
    }

}