﻿function getDataTableOpcaoVoo(modo)
{
        return masterPricerDS.tables.OpcoesMP;
};

function exibirVooPrecosMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var auxMenorPreco = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPreco] + pos;
        
        var auxMoeda = getMoeda(Aereo.FiltroRenderMP.Moeda);
        

        $('divPrecoInicial').innerHTML = auxMoeda + " " + Math.floor(auxMenorPreco);
    }
};

function exibirVooPrecosMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var range = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPreco] - Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPreco];
        var auxMaiorPreco = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPreco] + (pos - range);
        
        var auxMoeda = getMoeda(Aereo.FiltroRenderMP.Moeda);
       

        $('divPrecoFinal').innerHTML = auxMoeda + " " + Math.ceil(auxMaiorPreco);
    }
};

function filtrarVooPrecosMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPrecoSelecionado] != Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPreco] + pos)
        {
            Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPrecoSelecionado] = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPreco] + pos;

            var auxMoeda = getMoeda(Aereo.FiltroRenderMP.Moeda);
            

            $('divPrecoInicial').innerHTML = auxMoeda + " " + Math.floor(Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPrecoSelecionado]);

            filtrarVoos = true;
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooPrecos_background();});
        }
    }
};

function filtrarVooPrecosMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        var range = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPreco] - Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPreco];
        if (Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPrecoSelecionado] != (Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPreco] + (pos - range)))
        {
            Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPrecoSelecionado] = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPreco] + (pos - range);

            var auxMoeda = getMoeda(Aereo.FiltroRenderMP.Moeda);
            

            $('divPrecoFinal').innerHTML = auxMoeda + " " + Math.ceil(Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPrecoSelecionado]);

            filtrarVoos = true;
        }
        
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooPrecos_background();});
        }
    }
};

function filtrarVooPrecos_background()
{
    try
    {
        var tblOpcao = masterPricerDS.tables.OpcoesMP;
        
        var menorPreco = parseFloat(Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPrecoSelecionado]);
        var maiorPreco = parseFloat(Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPrecoSelecionado]);
        
        for (var i = 0; i < tblOpcao.rows.count(); i++)
        {
            var tarifaADT = parseFloat(tblOpcao.rows[i]['tarifaADT']);
            
            // 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;

        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);
        Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
        
    return true;
};

/////////////////////////////////////////////////////////////////////////////

function exibirVooHorarioIdaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        if ($('rdoHorariosSaidaIda').checked) {
            var auxMenorSaidaIda = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIda].addMinutes(pos);
            $('divHorarioIdaInicial').innerHTML = auxMenorSaidaIda.toString("HH").capitalize() + "h" + auxMenorSaidaIda.toString("mm");   
        } else if ($('rdoHorariosChegadaIda').checked) {
            var auxMenorChegadaIda = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIda].addMinutes(pos);
            $('divHorarioIdaInicial').innerHTML = auxMenorChegadaIda.toString("HH").capitalize() + "h" + auxMenorChegadaIda.toString("mm");   
        }
    }
};

function exibirVooHorarioIdaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        if ($('rdoHorariosSaidaIda').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIda], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIda], "mm");
            var auxMaiorSaidaIda = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIda].addMinutes(pos - range);
            $('divHorarioIdaFinal').innerHTML = auxMaiorSaidaIda.toString("HH").capitalize() + "h" + auxMaiorSaidaIda.toString("mm");
        } else if ($('rdoHorariosChegadaIda').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIda], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIda], "mm");
            var auxMaiorChegadaIda = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIda].addMinutes(pos - range);
            $('divHorarioIdaFinal').innerHTML = auxMaiorChegadaIda.toString("HH").capitalize() + "h" + auxMaiorChegadaIda.toString("mm");
        }
    }
};

function exibirVooHorarioVoltaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        if ($('rdoHorariosSaidaVolta').checked) {
            var auxMenorSaidaVolta = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVolta].addMinutes(pos);
            $('divHorarioVoltaInicial').innerHTML = auxMenorSaidaVolta.toString("HH").capitalize() + "h" + auxMenorSaidaVolta.toString("mm");   
        } else if ($('rdoHorariosChegadaVolta').checked) {
            var auxMenorChegadaVolta = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVolta].addMinutes(pos);
            $('divHorarioVoltaInicial').innerHTML = auxMenorChegadaVolta.toString("HH").capitalize() + "h" + auxMenorChegadaVolta.toString("mm");   
        }
    }
};

function exibirVooHorarioVoltaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        if ($('rdoHorariosSaidaVolta').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVolta], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVolta], "mm");
            var auxMaiorSaidaVolta = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVolta].addMinutes(pos - range);
            $('divHorarioVoltaFinal').innerHTML = auxMaiorSaidaVolta.toString("HH").capitalize() + "h" + auxMaiorSaidaVolta.toString("mm");
        } else if ($('rdoHorariosChegadaVolta').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVolta], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVolta], "mm");
            var auxMaiorChegadaVolta = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVolta].addMinutes(pos - range);
            $('divHorarioVoltaFinal').innerHTML = auxMaiorChegadaVolta.toString("HH").capitalize() + "h" + auxMaiorChegadaVolta.toString("mm");
        }
    }
};

function filtrarVooHorarioIdaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if ($('rdoHorariosSaidaIda').checked) {
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIdaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIda].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIda].addMinutes(pos);
                $('divHorarioIdaInicial').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIdaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIdaSelecionada].toString("mm");
            }
        } else if ($('rdoHorariosChegadaIda').checked) {
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIdaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIda].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIda].addMinutes(pos);
                $('divHorarioIdaInicial').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIdaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIdaSelecionada].toString("mm");
            }
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooHorario();});
        }
    }
};

function filtrarVooHorarioIdaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
       
        if ($('rdoHorariosSaidaIda').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIda], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIda], "mm");
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIdaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIda].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIda].addMinutes(pos - range);
                $('divHorarioIdaFinal').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIdaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIdaSelecionada].toString("mm");
            }
        } else if ($('rdoHorariosChegadaIda').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIda], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIda], "mm");
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIdaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIda].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIda].addMinutes(pos - range);
                $('divHorarioIdaFinal').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIdaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIdaSelecionada].toString("mm");
            }
        }
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooHorario();});
        }
    }
};

function filtrarVooHorarioVoltaMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if ($('rdoHorariosSaidaVolta').checked) {
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVoltaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVolta].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVolta].addMinutes(pos);
                $('divHorarioVoltaInicial').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVoltaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVoltaSelecionada].toString("mm");
            }
        } else if ($('rdoHorariosChegadaVolta').checked) {
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVoltaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVolta].addMinutes(pos)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVolta].addMinutes(pos);
                $('divHorarioVoltaInicial').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVoltaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVoltaSelecionada].toString("mm");
            }
        }

        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooHorario();});
        }
    }
};

function filtrarVooHorarioVoltaMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
       
        if ($('rdoHorariosSaidaVolta').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVolta], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVolta], "mm");
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVoltaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVolta].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVolta].addMinutes(pos - range);
                $('divHorarioVoltaFinal').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVoltaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVoltaSelecionada].toString("mm");
            }
        } else if ($('rdoHorariosChegadaVolta').checked) {
            var range = Date.diff(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVolta], Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVolta], "mm");
            if (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVoltaSelecionada].compare(Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVolta].addMinutes(pos - range)) != 0)
            {
                filtrarVoos = true;
                Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVolta].addMinutes(pos - range);
                $('divHorarioVoltaFinal').innerHTML = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVoltaSelecionada].toString("HH").capitalize() + "h" + Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVoltaSelecionada].toString("mm");
            }
        }
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooHorario();});
        }
    }
};

function filtrarVooHorario()
{
    try
    {
        var tblOpcao = masterPricerDS.tables.OpcoesMP;
        for (var i = 0; i < tblOpcao.rows.count(); i++)
        {
            // 0 = somente ida; 1 = ida & volta;
            if ((tblOpcao.rows[i]['dataSaidaIda'] >= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIdaSelecionada]) && 
                 tblOpcao.rows[i]['dataSaidaIda'] <= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIdaSelecionada]) && 
                 tblOpcao.rows[i]['dataChegadaIda'] >= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaIdaSelecionada]) &&
                 tblOpcao.rows[i]['dataChegadaIda'] <= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaIdaSelecionada])) &&
                 
                 (tblOpcao.rows[i]['dataSaidaVolta'] >= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaVoltaSelecionada]) && 
                 tblOpcao.rows[i]['dataSaidaVolta'] <= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaVoltaSelecionada]) && 
                 tblOpcao.rows[i]['dataChegadaVolta'] >= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorChegadaVoltaSelecionada]) &&
                 tblOpcao.rows[i]['dataChegadaVolta'] <= (Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorChegadaVoltaSelecionada])))
            {
                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;

        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);
        Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
        
    return true;
};


function exibirVooDuracaoMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var auxMenorDuracao = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.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;
    }
}

function exibirVooDuracaoMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var range = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracao] - Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracao];
        var auxMaiorDuracao = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.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;
    }
}

function filtrarVooDuracaoMenor(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        if (Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracaoSelecionada] != (Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracao] + (pos / 100)))
        {
            Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracaoSelecionada] = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracao] + (pos / 100);

            var horas = parseInt(Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracaoSelecionada], 10);
            if (horas < 10)
            {
                horas = "0" + horas;
            }
            var minutos = Math.floor((Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracaoSelecionada] - horas) * 60);
            if (minutos < 10)
            {
                minutos = "0" + minutos;
            }

            $('divDuracaoInicial').innerHTML = horas + "h" + minutos;
            
            filtrarVoos = true;
        }
        
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooDuracao_background();});
        }
    }
}

function filtrarVooDuracaoMaior(pos)
{
    if (isNaN(pos) == false)
    {
        var filtrarVoos = false;
        
        var range = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracao] - Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracao];
        if (Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracaoSelecionada] != (Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracao] + ((pos / 100) - range)))
        {
            Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracaoSelecionada] = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracao] + ((pos / 100) - range);

            var horas = parseInt(Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracaoSelecionada], 10);
            if (horas < 10)
            {
                horas = "0" + horas;
            }
            var minutos = Math.floor((Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracaoSelecionada] - horas) * 60);
            if (minutos < 10)
            {
                minutos = "0" + minutos;
            }

            $('divDuracaoFinal').innerHTML = horas + "h" + minutos;
            
            filtrarVoos = true;
        }
        
        if (filtrarVoos == true)
        {
            ExibeAguardeComThread(function() {return filtrarVooDuracao_background();});
        }
    }
}

function filtrarVooDuracao_background()
{
    try
    {
        var tblOpcao = masterPricerDS.tables.OpcoesMP;
        
        var menorDuracao = parseFloat(Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracaoSelecionada].toFixed(2));
        var maiorDuracao = parseFloat(Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracaoSelecionada].toFixed(2));

        for (var i = 0; i < tblOpcao.rows.count(); i++)
        {
            var _duracaoIda = parseFloat(tblOpcao.rows[i]['duracaoIda'].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;

        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);
        Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
        
    return true;
};

function limparFiltrosVoos()
{
    var tblOpcao = getDataTableOpcaoVoo(Aereo.MasterPricer.Modo);
    
    // preenche os filtros
    //renderFiltros(true);

    // limpa o filtro de paradas
    /*for (var i = 0; i < paradas.length; i++)
    {
        paradas[i] = false;
    }*/
    var itParadas = masterPricerDS.tables.Paradas.getIterator("ida_volta");
    itParadas.findByKey((Aereo.MasterPricer.Modo-1));
    for(itParadas.moveFirst(); itParadas.hasNext(); itParadas.moveNext())
    {   
        itParadas.row.filtro = false;
    }
    itParadas.dispose();
    
    // limpa o filtros de cias aéreas
    var itCias = masterPricerDS.tables.Cias.getIterator("ida_volta");
    itCias.findByKey((Aereo.MasterPricer.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 = masterPricerDS.tables.Aeroportos.getIterator("ida_volta");
    itAeroportos.findByKey((Aereo.MasterPricer.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;    
    }*/
    
        
    // limpa os horário selecionados
    Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MenorSaidaIda];
    Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[Aereo.FiltroRenderMP.MaiorSaidaIda];
    //Aereo.FiltroRenderMP.Horarios[idxMenorChegadaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[idxMenorChegadaIda];
    //Aereo.FiltroRenderMP.Horarios[idxMaiorChegadaIdaSelecionada] = Aereo.FiltroRenderMP.Horarios[idxMaiorChegadaIda];
    
    //Aereo.FiltroRenderMP.Horarios[idxMenorSaidaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[idxMenorSaidaVolta];
    //Aereo.FiltroRenderMP.Horarios[idxMaiorSaidaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[idxMaiorSaidaVolta];
    //Aereo.FiltroRenderMP.Horarios[idxMenorChegadaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[idxMenorChegadaVolta];
    //Aereo.FiltroRenderMP.Horarios[idxMaiorChegadaVoltaSelecionada] = Aereo.FiltroRenderMP.Horarios[idxMaiorChegadaVolta];
    
    // limpa a duração selecionada
  
    Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracaoSelecionada] = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MenorDuracao];
    Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracaoSelecionada] = Aereo.FiltroRenderMP.Duracao[Aereo.FiltroRenderMP.MaiorDuracao];

    // limpa os preços selecionados
    Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPrecoSelecionado] = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MenorPreco];
    Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.MaiorPrecoSelecionado] = Aereo.FiltroRenderMP.Precos[Aereo.FiltroRenderMP.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;
    }
};

function ExibirTodosVoos()
{
    ExibeAguardeComThread(function() {return ExibirTodosVoos_background();});
};

function ExibirTodosVoos_background()
{
    try
    {
        limparFiltrosVoos();
        Aereo.FiltroVoo.init();
        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);        
        Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
        
    return true;
};

function filtraVooCompanhia(indexCia)
{           
    ExibeAguardeComThread(function(){return filtraVooCompanhia_background(indexCia);});
};

function filtraVooCompanhia_background(indexCia)
{           
    try 
    {
        var tblCias = masterPricerDS.tables["Cias"];
        var tblOpcao = getDataTableOpcaoVoo(Aereo.MasterPricer.Modo);
        var stateFiltro;
        for(var i=0;i < tblCias.rows.count(); i++)
        {   
            if(tblCias.rows[i].companhia == indexCia)
            {
                stateFiltro = tblCias.rows[i].ciaFiltrada = !tblCias.rows[i].ciaFiltrada;
            }
        }
        //================================================================
        
        var tblOpcao = masterPricerDS.tables.OpcoesMP;
        
        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;
        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);      
        Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
        
    return true;
};

function filtraVooAeroporto(indexAeroporto)
{
    ExibeAguardeComThread(function() {return filtraVooAeroporto_background(indexAeroporto);});
};

function filtraVooAeroporto_background(indexAeroporto)
{
    try 
    {
        //alert(indexAeroporto);
        //aeroportos[indexAeroporto][1] = !aeroportos[indexAeroporto][1];
        var stateFiltro;
        var itAeroportos = masterPricerDS.tables.Aeroportos.getIterator("iata");
        itAeroportos.findByKey(indexAeroporto);
        for(itAeroportos.moveFirst(); itAeroportos.hasNext(); itAeroportos.moveNext())
        {   
            //if(itAeroportos.row.ida_volta == (Aereo.MasterPricer.Modo-1))
            //{
                stateFiltro = itAeroportos.row.aeroportoFiltrado = !itAeroportos.row.aeroportoFiltrado;
            //}
        }
        itAeroportos.dispose();
        
        var tblOpcao = masterPricerDS.tables.OpcoesMP;
        
        var filtrarOpcao = false;

        for (var i = 0; i < tblOpcao.rows.count(); i++)
        {
            switch (indexAeroporto)
            {
                case tblOpcao.rows[i]['iataOrigemIda']:
                    filtrarOpcao = true;
                    break;
                case tblOpcao.rows[i]['iataDestinoIda']:
                    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;
        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);
       Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
    
    return true;
};

function filtraVooParada(numParadas)
{
    ExibeAguardeComThread(function() {return filtraVooParada_background(numParadas);});
} 

function filtraVooParada_background(numParadas)
{
    try
    {
        var tblOpcao = masterPricerDS.tables.OpcoesMP;        
        Aereo.FiltroRenderMP.paradas[numParadas] = !Aereo.FiltroRenderMP.paradas[numParadas];
        
        //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 == (Aereo.FiltroRenderMP.paradas.length - 1)) filtrarDemaisOpcoes = true;
        
        for (var i = 0; i < tblOpcao.rows.count(); i++) {
            //var numParadasIda = parseFloat(tblOpcao.rows[i]['numParadasIda']);
            //var numParadasVolta = parseFloat(tblOpcao.rows[i]['numParadasVolta']);
            if ((numParadas == tblOpcao.rows[i]['numParadasTotal']) || ((numParadas == Aereo.FiltroRenderMP.paradas.length-1) && (numParadas <= tblOpcao.rows[i]['numParadasTotal']))) {
                if(Aereo.FiltroRenderMP.paradas[numParadas] == 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']--;
                }
            }
        }

        paginaAtual = 1;
        //ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);
        Aereo.MasterPricer.mostraMasterPricer();
    }
    catch (ex) { }
        
    return true;
};

function somenteVooCompanhia(indexCia)
{           
    ExibeAguardeComThread(function() {return somenteVooCompanhia_background(indexCia);});
}

function somenteVooCompanhia_background(indexCia)
{
    var tblCias = masterPricerDS.tables["Cias"];
    var tblOpcao = getDataTableOpcaoVoo(Aereo.MasterPricer.Modo);
    
    var chkCiasAereas = document.getElementsByName("chkCiaAerea");
    for (var i = 0; i < chkCiasAereas.length; i++)
    {
        if (chkCiasAereas[i].value != indexCia)
        {
            chkCiasAereas[i].checked = false;
        }else{
            chkCiasAereas[i].checked = true;
        }
    }

    //var itCias = tblCias.getIterator("companhia");
    //itCias.findByKey((Aereo.MasterPricer.Modo-1));
    for(var i=0; i<tblCias.rows.count(); i++)
    {  
        if(tblCias.rows[i].companhia == indexCia)
        {
            tblCias.rows[i].ciaFiltrada = false;
        }else{
            tblCias.rows[i].ciaFiltrada = 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');

    ordenaResultadoMasterPricer(Aereo.MasterPricer.ultimoOrdenacao[0], Aereo.MasterPricer.ultimoOrdenacao[1]);
    Aereo.MasterPricer.mostraMasterPricer();
    
         
    return true;
}