var availDS = null;
var availPinadosDS = null;
var trechoAtual = null;
var t = new Template("Aereo");
var totalSelecionadosVoos = 0;
var moedaTotal = null;

///
/// Ordena o resultado do DataSet de acordo com a coluna desejada
/// se nao tiver ordem ordena crescente, senao inverte a ordenacao
///
function ordenaResultadoAirAvail(coluna,coluna2,numTrecho, trocaAba)
{

    Aereo.Disponibilidade.ultimoOrdenacao[numTrecho-1][0] = coluna;
    Aereo.Disponibilidade.ultimoOrdenacao[numTrecho-1][1] = coluna2;
    
    var ordemAtual = htOrdenacaoAirAvail.getValue(coluna);
    //var ordemAtual = ORDEM_CRESCENTE;
    
    htOrdenacaoAirAvail.add('cias', SEM_ORDEM);
    htOrdenacaoAirAvail.add('escalas', SEM_ORDEM);
    //htOrdenacaoAirAvail.add('precoOW', SEM_ORDEM);
    //htOrdenacaoAirAvail.add('precoRT', SEM_ORDEM);    
    htOrdenacaoAirAvail.add('preco', SEM_ORDEM);
    htOrdenacaoAirAvail.add('duracao', SEM_ORDEM);
    htOrdenacaoAirAvail.add('dataSaida', SEM_ORDEM);
    htOrdenacaoAirAvail.add('dataChegada', SEM_ORDEM);

    
    switch(ordemAtual)
    {
        case SEM_ORDEM:
        case ORDEM_DECRESCENTE:
            htOrdenacaoAirAvail.add(coluna, ORDEM_DECRESCENTE);
            break;
        case ORDEM_CRESCENTE:
            htOrdenacaoAirAvail.add(coluna, ORDEM_CRESCENTE);
            break;
    }
    		
    if(trocaAba && availDS.tables[getDataTableTrecho(numTrecho)]._isSorted == true)
        return;
        
        
        
     //debugger;
     for(var j = 0; j < availDS.tables[getDataTableTrecho(numTrecho)].rows.count(); j++)
     {
    
    
        // Primeiro formata o campo com duas casas decimais
        if ( availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco.toString().indexOf('000') == -1 )
        {
            availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco = availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco.toFixed(2).toString();
        
            var zerosAntes = '0';
            
            // insere N zeros antes da string (assumi um tamanho máximo de 15 caracteres para tamanho do campo) 
            zerosAntes = zerosAntes.replicate(eval(15 - availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco.toString().length)); 
            
            // Depois insere N zeros antes da string 
            availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco = zerosAntes + availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco;
        }
     }
     //debugger;
     
     // Após o campo formatado, ordena
    availDS.tables[getDataTableTrecho(numTrecho)].sort([coluna,coluna2]);
}

///
/// Monto a disponibilidade do trecho desejado a partir do dataset
///
function montaVoosDisponibilidade(numeroTrecho, pageIndex, pageSize)
{
    //debugger;
    //
    // variaveis
    //
    var itVoos ;
    var itOpcoesVoos;
    var itTrechos;
    //var itOpcoesDeVoos_Tarifas;
    var itClasses;
    //var itTarifas;
    var opcaoVoo = null;
    var voo = null;
    var classeReserva = null;
    //var t = new Template("Aereo");
    var rowSpan = 0;
    var sResultado = new StringBuilder();
    var sClasses = new StringBuilder();
    var sPrecos = new StringBuilder();
    var classePadrao = "";
    var codTarifaMenorValorOW = "";
    var codTarifaMenorValorRT = "";
    var arrCodClassesSelecionadas = [];
    var codOpcaoSelecionada = 0;
    var jaAchouPrecoClasseSelecionada = false;
    var classeEstiloVoo = 'voo2';
    var countTotalResults;
    var countFilterResults;
    //var labelIdaVolta = "";
    var DataTableIdVolta ="";
    var count = (pageIndex-1) * pageSize;
    var DataTableIdVolta = getDataTableTrecho(numeroTrecho);

    //debugger;
    // Inicio tratamento de erros
    if(availDS.tables.Erros.rows.length > 0)
    {
        var mensErros = '';
        for (var i=0; i<availDS.tables.Erros.rows.length; i++)
        {
            mensErros += '\n\n' + availDS.tables.Erros.rows[i].GDSCode + ':  ' + availDS.tables.Erros.rows[i].Message + ' ' + availDS.tables.Erros.rows[i].ShortText;
        }
    }

    if(availDS.tables[DataTableIdVolta] == null || availDS.tables[DataTableIdVolta].rows.count() == 0 )
    {
         alert('Não foram encontrados voos com os critérios informados. Por favor refaça a busca.' + mensErros);
         history.back(-2);
    }
    // Fim tratamento de erros


    //debugger;
  
    // Rosimeire
    // Se estou renderizando a ida entao escondo a aba de volta
    if (numeroTrecho == 1)
    {
        $('btnVolta').disabled = true;
    }
    else
    {
        $('btnVolta').disabled = false;
    }
    
    trechoAtual = numeroTrecho;

    itTrechos = availDS.tables["Trechos"].getIterator('codTrecho');
    itTrechos.findByKey(numeroTrecho);
    itTrechos.moveFirst();
    var trecho = itTrechos.row;

    t.Disponibilidade.tblResultadoBusca.Linhas = "";

    t.Disponibilidade.tblResultadoBusca.EstiloCiaCrescente = htOrdenacaoAirAvail.getValue('cias') == ORDEM_CRESCENTE ? "selected" : "";
    t.Disponibilidade.tblResultadoBusca.EstiloPrecoCrescente = htOrdenacaoAirAvail.getValue('preco') == ORDEM_CRESCENTE ? "selected" : "";
    t.Disponibilidade.tblResultadoBusca.EstiloDuracaoCrescente = htOrdenacaoAirAvail.getValue('duracao') == ORDEM_CRESCENTE ? "selected" : "";
    t.Disponibilidade.tblResultadoBusca.EstiloHoraSaidaCrescente = htOrdenacaoAirAvail.getValue('dataSaida') == ORDEM_CRESCENTE ? "selected" : "";
    t.Disponibilidade.tblResultadoBusca.EstiloHoraChegadaCrescente = htOrdenacaoAirAvail.getValue('dataChegada') == ORDEM_CRESCENTE ? "selected" : "";
    //======================================================================================================================================
    

    itOpcoesVoos = availDS.tables[DataTableIdVolta].getIterator('filtrosAplicados');
    itOpcoesVoos.findByKey(0);
    //debugger;
    
    
    itVoos = availDS.tables["Voos"].getIterator('codOpcaoDeVoo');

    countTotalResults = availDS.tables[DataTableIdVolta].rows.length;
    countFilterResults = itOpcoesVoos.count();
    if (availPinadosDS != null)
    {
        var itOpcoesVoosPin = availPinadosDS.tables[DataTableIdVolta].getIterator('codTrecho');
        itOpcoesVoosPin.findByKey(numeroTrecho);
        //Verifica se existe nas opcoes
        var itOpcoesVoosSel = null;
        for(itOpcoesVoosPin.moveFirst; itOpcoesVoosPin.hasNext(); itOpcoesVoosPin.moveNext())
        {
            itOpcoesVoosSel = availDS.tables[DataTableIdVolta].getIterator('codOpcaoDeVoo');
            itOpcoesVoosSel.findByKey(itOpcoesVoosPin.row.codOpcaoDeVoo);
            if(itOpcoesVoosSel.row)
            {
                if(itOpcoesVoosSel.row.filtrosAplicados == 0)
                    countFilterResults -= 1;
            }
        }
        if(itOpcoesVoosSel)
            itOpcoesVoosSel.dispose();
        //countFilterResults -= itOpcoesVoosPin.count();
    }
    
    var countResults = 0;
    for(itOpcoesVoos.goTo(count); itOpcoesVoos.hasNext(); itOpcoesVoos.moveNext())
    {
        // row atual
        opcaoVoo = itOpcoesVoos.row;

        //debugger;
        //leandro lopes
        // verifica se deve exibir ou nao parcelamento em ate 6x caso seja gol
        var sourceCode = opcaoVoo.ciaPrincipal;
        switch(sourceCode)
        {
            case "G3":
                t.Disponibilidade.trOpcaoVoo.idQtdeParcelas = "idQtdeParcelas_" + itOpcoesVoos.index;
                t.Disponibilidade.trOpcaoVoo.idDisplay = 'block';
            break;
            
            default:
                t.Disponibilidade.trOpcaoVoo.idQtdeParcelas = "idQtdeParcelas_" + itOpcoesVoos.index;
                t.Disponibilidade.trOpcaoVoo.idDisplay = 'none';
            break;                
        }

        // verifica se a opção não está "pinada"
        var opPin = false;
        if (availPinadosDS != null)
        {
            for (var iOpPin = 0; iOpPin < availPinadosDS.tables[DataTableIdVolta].rows.count(); iOpPin++)
            {
                if (availPinadosDS.tables[DataTableIdVolta].rows[iOpPin]["codTrecho"] == numeroTrecho &&
                    availPinadosDS.tables[DataTableIdVolta].rows[iOpPin]["codOpcaoDeVoo"] == opcaoVoo.codOpcaoDeVoo)
                {
                    opPin = true;
                    break;
                }
            }
        }
    
        if (opPin == false)
        {
            countResults += 1;
            if(countResults > pageSize)
                break;
        
            // Filtro os Voos da opcao
            itVoos.findByKey(opcaoVoo.codOpcaoDeVoo);

            // calculo o total de linhas de cada opcao para poder montar o template corretamente        
            rowSpan = itVoos.count();

            // nome da classe caso queira diferenciar uma linha de opcao da outra, cores diferentes por exemplo
            //classeEstiloVoo = classeEstiloVoo=="voo1" ? "voo2" : "voo1";

            t.Disponibilidade.trOpcaoVoo.Detalhes = "";
            t.Disponibilidade.trOpcaoVoo.Preco = opcaoVoo.preco;
            //busca o moeda de acordo com a pesquisada
            t.Disponibilidade.trOpcaoVoo.moeda = getMoeda(opcaoVoo.moeda);
            
            //var precoInteiro = parseInt(opcaoVoo.preco);
            //var precoDecimal = parseInt((opcaoVoo.preco - precoInteiro) * 100);
            
            
            var precoInteiro = parseFloat(opcaoVoo.preco).formatNumber(2,true);
            var precoDecimal = 0;
            
            t.Disponibilidade.trOpcaoVoo.PrecoInteiro = precoInteiro;
            //t.Disponibilidade.trOpcaoVoo.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
            t.Disponibilidade.trOpcaoVoo.PrecoDecimal = '';
            
            
            
            //t.Disponibilidade.trOpcaoVoo.Cia = itVoos.row.companhia;
            t.Disponibilidade.trOpcaoVoo.nomeCia = itVoos.row.nomeCia;
            t.Disponibilidade.trOpcaoVoo.NumeroVoo = itVoos.row.numero;
            t.Disponibilidade.trOpcaoVoo.HoraSaida = opcaoVoo.dataSaida.toString('HH:mm');
            t.Disponibilidade.trOpcaoVoo.HoraChegada = opcaoVoo.dataChegada.toString('HH:mm');
            t.Disponibilidade.trOpcaoVoo.Duracao = formatTime(opcaoVoo.duracao);
            //t.Disponibilidade.trOpcaoVoo.IncluirRemoverPino = 0;
            //t.Disponibilidade.trOpcaoVoo.Escalas = itVoos.count()-1;
            t.Disponibilidade.trOpcaoVoo.ThumbCia = itVoos.row.imagemCia;
            //t.Disponibilidade.trOpcaoVoo.ClasseEscalasVoos = itVoos.count() == 1 ? "flightDirect" : "flightStop";
            t.Disponibilidade.trOpcaoVoo.CodOpcaoDeVoo = opcaoVoo.codOpcaoDeVoo;
            t.Disponibilidade.trOpcaoVoo.IncluirRemoverPino = 0;
            //t.Disponibilidade.trOpcaoVoo.CodTrecho = trecho.codTrecho;
            t.Disponibilidade.trOpcaoVoo.DataSaida = itVoos.row.dataHoraSaida.toString('dd/MM/yyyy').capitalize();
            //Iatas
            t.Disponibilidade.trOpcaoVoo.iataOrigem = itVoos.row.origem;
            //======================================================================
            
            //Esconder os Detalhes quando for Renderizar
            //t.Disponibilidade.trOpcaoVoo.modoDetails = 'modeHide';
            //Verifica se o voo possui escalas
            //t.Disponibilidade.trOpcaoVoo.ClasseEscalasVoos = (itVoos.row.escalas == 0 ? 'flightDirect'  :'flightStop');
            
            itVoos.moveLast();
            //t.Disponibilidade.trOpcaoVoo.CidadeDestino = itVoos.row.cidadeDestino;
            t.Disponibilidade.trOpcaoVoo.iataDestino = itVoos.row.destino;
            
            //var sOpcoesVoo = new StringBuilder();
            var arrEscalas = [];
            //
            // varrendo os VOOS
            //
            for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
            {   
                // row atual
                voo = itVoos.row;
                //debugger;
                if(/*!itVoos.isFirst() &&*/itVoos.count() > 1)
                {   
                   
                   arrEscalas[arrEscalas.length] = voo.origem ;
                   
                   if(itVoos.isFirst())
                   {
                        t.Disponibilidade.trOpcaoVoo.cidadeOrigem = voo.cidadeOrigem;
                   }
                   if(itVoos.isLast())
                   {
                        t.Disponibilidade.trOpcaoVoo.cidadeDestino = voo.cidadeDestino;
                   }
                   
                }
                else
                {
                    t.Disponibilidade.trOpcaoVoo.cidadeOrigem = voo.cidadeOrigem;
                    t.Disponibilidade.trOpcaoVoo.cidadeDestino = voo.cidadeDestino;
                }

                
            }
            
            
            var escalas = "";
            
            if(arrEscalas.length > 0)
            {
                escalas = (arrEscalas.length-1) + " Escala(s)<br/>(escalas em ";
                for(var i=1; i<arrEscalas.length; i++)
                {
                    if(i != 1)
                        escalas += ", ";
                        
                    escalas += arrEscalas[i];
                }
                escalas += ")";
            }

            t.Disponibilidade.trOpcaoVoo.Escalas = escalas;
            //t.Disponibilidade.trOpcaoVoo.Detalhes = sOpcoesVoo.toString();
            sResultado.append(t.Disponibilidade.trOpcaoVoo.getHtml());  
        }
    }
    
    itVoos.dispose();
    t.Disponibilidade.tblResultadoBusca.Linhas += sResultado.toString();
    itTrechos.dispose();
    //itTarifas.dispose();
    //itOpcoesDeVoos_Tarifas.dispose();
    itOpcoesVoos.dispose();

    return [t.Disponibilidade.tblResultadoBusca.getHtml(),countTotalResults,countFilterResults];

}


//Monta Tabela de Melhores Precos
function montaMelhorPrecoReduzida(tpl,idaVolta,pagina)
{
    //debugger 

    var tplExterno = tpl.externo;
    var tplInterno = tpl.interno;
    var dtOpcao = availDS.tables["Cias"].copy();

    var sb = new StringBuilder();
    var count = ((pagina-1) * 4 +((pagina > 1 ? 1 : 0)) ) - 1;
    var maxReg = 1;
    var existePaginacao = false;
    //Filtra as opcoes para ida e volta
    
    dtOpcao.sort(['companhia','menorPreco']);
    dtOpcao.filter('ida_volta',idaVolta,filterMode.equals,caseType.CSAS);
    //=============================================================================

    // filtra a cia.
    var tblOpcao = getDataTableOpcaoVoo(idaVolta);
    
    //debugger
    var ciasSelecionadas = new Array();
    var chkCiasAereas = document.getElementsByName("chkCiaAerea");


     //debugger;    
     // início - insere zeros antes da string para ordenar corretamente
     for(var j = 0; j < dtOpcao.rows.count(); j++)
     {
        // Primeiro formata o campo com duas casas decimais
        dtOpcao.rows[j].menorPreco = dtOpcao.rows[j].menorPreco.toFixed(2).toString();

        var zerosAntes = '0';
        
        // insere N zeros antes da string (assumi um tamanho máximo de 15 caracteres para tamanho do campo) 
        zerosAntes = zerosAntes.replicate(eval(15 - dtOpcao.rows[j].menorPreco.toString().length)); 
        
        // Depois insere N zeros antes da string 
        dtOpcao.rows[j].menorPreco = zerosAntes + dtOpcao.rows[j].menorPreco;
     }
    // fim - insere zeros antes da string para ordenar corretamente

    for (var i = 0; i < chkCiasAereas.length; i++)
    {
        if (chkCiasAereas[i].checked == true) 
        {
            // Verifico na matriz global de cias selecionadas e só monto a matriz de melhores preços das cias que estiverem nela
            if ( (listaCiasSelecionadas.contains(chkCiasAereas[i].value) == true) || (listaCiasSelecionadas.length == 0) ) 
                ciasSelecionadas[ciasSelecionadas.length] = chkCiasAereas[i].value;
                
                //alert(ciasSelecionadas[ciasSelecionadas.length]);
        }
    }
    
    //debugger;
    var arrayCias = new Array();
     
    dtOpcao.sort(['menorPreco', 'companhia']);
    
    for(var i=0;i<dtOpcao.rows.length;i++)
    {
        if(ciasSelecionadas.contains(dtOpcao.rows[i].companhia) == true && arrayCias.indexOf(dtOpcao.rows[i].companhia) == -1)
        {
            if(maxReg <= (4*pagina))
            {
                arrayCias[arrayCias.length] = dtOpcao.rows[i].companhia;
                if (i >= count) 
                {
                    tplInterno.Imagem = dtOpcao.rows[i].imagem;
                    tplInterno.Cia = dtOpcao.rows[i].nomeCia;
                    tplInterno.MenorPreco = undefined;
                    tplInterno.DuasParadas = undefined;
                    tplInterno.UmaParada = undefined;
                    tplInterno.Direto = undefined;
                    
                    while ((dtOpcao.rows[i] != null) && (dtOpcao.rows[i].nomeCia == tplInterno.Cia)) 
                    {
                        //debugger;
                        
                        //var precoInteiro = parseInt(dtOpcao.rows[i].menorPreco);
                        //var precoDecimal = parseInt((dtOpcao.rows[i].menorPreco - precoInteiro) * 100);
                        
                        var precoInteiro = parseFloat(dtOpcao.rows[i].menorPreco).formatNumber(2,true);
                        var precoDecimal = ''
                       
                        
                        
                        var paradas =  dtOpcao.rows[i].numParadas;                          
                        //var valor = getMoeda(dtOpcao.rows[i].moeda) + " " + precoInteiro + "," + (precoDecimal < 10 ? '0' + precoDecimal : precoDecimal)
                        var valor = getMoeda(dtOpcao.rows[i].moeda) + " " + precoInteiro; 
                    
                        tpl.interno2.Link = "javascript:somenteVooCompanhia('" + dtOpcao.rows[i].companhia + "')";
                        //tpl.interno2.Voo = "SEI LA";
                        tpl.interno2.Valor = valor;
                    
                        if (tplInterno.MenorPreco == undefined) tplInterno.MenorPreco = tpl.interno2.getHtml();
                        if (paradas > 1) tplInterno.DuasParadas = tpl.interno2.getHtml();
                        if (paradas == 1) tplInterno.UmaParada = tpl.interno2.getHtml();
                        if (paradas == 0) tplInterno.Direto = tpl.interno2.getHtml();
                        i++;
                    };
                    i--;
                    
                    if (tplInterno.MenorPreco == undefined) tplInterno.MenorPreco = "---";
                    if (tplInterno.DuasParadas == undefined) tplInterno.DuasParadas = "---";
                    if (tplInterno.UmaParada == undefined) tplInterno.UmaParada = "---";
                    if (tplInterno.Direto == undefined) tplInterno.Direto = "---";
                                        
                    sb.append(tplInterno.getHtml());
                    
                }
            }
            maxReg++;
        }
    }

    //debugger;
    
    if(maxReg > 5 || pagina>1)
        existePaginacao = true;
    
    if(existePaginacao)
       tplExterno.maisOpcoes = tpl.maisOpcoes.getHtml();
    else
        tplExterno.maisOpcoes = '';

    
    tplExterno.Items = sb.toString();
    
    return tplExterno.getHtml();
};





//Monta a paginacao de acordo com as quantidades de paginas
//
function montaPaginacao(qtdePaginas)
{
    var pagina = Aereo.Disponibilidade.pageIndex;
    var paginaInicial = pagina - 7;
    if (paginaInicial  + 14 > qtdePaginas)
    {
        paginaInicial = qtdePaginas - 14;
    }
    if (paginaInicial < 1)
    {
        paginaInicial = 1;
    }

    //var t = new Template("Aereo");
    t = new Template("Aereo");
    var sb = new StringBuilder();
    var tplPag = t.Disponibilidade.itemPaginacao;
    
    tplPag.classe = '';
    for (var p = paginaInicial - 1; p < (paginaInicial + 14) && p < qtdePaginas; p++)
    { 
        if (p != pagina - 1)
        {
            tplPag.clickPag = 'Aereo.Disponibilidade.mudarPagina('+ (p + 1) + ')';
            tplPag.valor = (p + 1);
            sb.append(tplPag.getHtml());
        }
        else
        {
            t.Disponibilidade.itemPaginacaoAtual.valor = (p + 1);
            t.Disponibilidade.itemPaginacaoAtual.classe = 'selected'
            sb.append(t.Disponibilidade.itemPaginacaoAtual.getHtml());
        }
        
        if((p+1) < (paginaInicial + 14) && (p+1) < qtdePaginas)
        {
            sb.append(' | ');
        }
    }
  
    t.Disponibilidade.paginacao.paginas = sb.toString();
    return t.Disponibilidade.paginacao.getHtml();
};

function montaDetalhes(codOpcaoVoo,numeroTrecho)
{
    var labelIdaVolta = (numeroTrecho==1 ? "Ida" : "Volta");

    //var t = new Template("Aereo");
    t = new Template("Aereo");
    var itVoos, itOpcoesDeVoos_Tarifas, itTarifas;
    var itOpcoesVoos;
    var DataTableIdVolta = getDataTableTrecho(numeroTrecho);
    
    itOpcoesDeVoos_Tarifas = availDS.tables["OpcoesDeVoos_Tarifas"].getIterator('codOpcaoDeVoo');
    itOpcoesVoos = availDS.tables[DataTableIdVolta].getIterator('codOpcaoDeVoo');
    itOpcoesVoos.findByKey(codOpcaoVoo);
    itVoos = availDS.tables["Voos"].getIterator('codOpcaoDeVoo');
    itVoos.findByKey(codOpcaoVoo);
    itTarifas = availDS.tables["Tarifas"].getIterator('codTarifa');
   
    var tplOpc = t.Disponibilidade.tblDetalhes;
    //Cidade de origem
    tplOpc.Cabine = pegaNomeCabine(itVoos.row.cabine);
    tplOpc.Equipamento = itVoos.row.equipamento;
    tplOpc.ThumbCia = itVoos.row.imagemCia;
    tplOpc.moeda = getMoeda(itOpcoesVoos.row.moeda);
    tplOpc.CodOpcaoDeVoo = codOpcaoVoo;

    //var precoInteiro = parseInt(itOpcoesVoos.row.preco);
    //var precoDecimal = parseInt((itOpcoesVoos.row.preco - precoInteiro) * 100);

    //debugger;
    
    var precoInteiro = parseFloat(itOpcoesVoos.row.preco).formatNumber(2,true);
    var precoDecimal = 0 ;



    tplOpc.PrecoInteiro = precoInteiro;
    tplOpc.PrecoDecimal = '';
    //tplOpc.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
    
    
    itVoos.moveLast();
    
    
    
    var sOpcoesVoo = new StringBuilder();
    for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
    {   
            // row atual
            voo = itVoos.row;
            
            t.Disponibilidade.trVoo.NumeroVoo = voo.numero;
            t.Disponibilidade.trVoo.ThumbCia = voo.imagemCia;
            t.Disponibilidade.trVoo.DataSaida = voo.dataHoraSaida.toString('dd/MM/yyyy');
            t.Disponibilidade.trVoo.HoraSaida = voo.dataHoraSaida.toString('HH') + 'h' + voo.dataHoraSaida.toString('mm');
            t.Disponibilidade.trVoo.AeroportoOrigem = voo.aeroportoOrigem;
            t.Disponibilidade.trVoo.Origem = voo.origem;
            t.Disponibilidade.trVoo.AeroportoDestino = voo.aeroportoDestino;
            t.Disponibilidade.trVoo.Destino = voo.destino;
            t.Disponibilidade.trVoo.DataChegada = voo.dataHoraChegada.toString('dd/MM/yyyy');
            t.Disponibilidade.trVoo.HoraChegada = voo.dataHoraChegada.toString('HH') + 'h' + voo.dataHoraChegada.toString('mm');
            
            
//            itOpcoesDeVoos_Tarifas.findByKey(codOpcaoVoo);
//            if(itOpcoesDeVoos_Tarifas.count() > 0)
//            {
//                var codTarifaMenorValorOW = 0;
//                var codTarifaMenorValorRT = 0;
//                for(itOpcoesDeVoos_Tarifas.moveFirst(); itOpcoesDeVoos_Tarifas.hasNext(); itOpcoesDeVoos_Tarifas.moveNext())
//                {
//                    if(itOpcoesDeVoos_Tarifas.row.menorValorRT)
//                    {
//                        codTarifaMenorValorOW = itOpcoesDeVoos_Tarifas.row.codTarifaMenorValorOW;
//                        codTarifaMenorValorRT = itOpcoesDeVoos_Tarifas.row.codTarifaMenorValorRT;
//                    }
//                }
//                
//                if(codTarifaMenorValorOW != 0)
//                    itTarifas.findByKey(codTarifaMenorValorOW);
//                else
//                    itTarifas.findByKey(codTarifaMenorValorRT);
//                    
//                //t.Disponibilidade.trVoo.Cabine = pegaNomeCabine(itTarifas.row.cabine);
//            }
            
            sOpcoesVoo.append(t.Disponibilidade.trVoo.getHtml());
            
    }
    itVoos.dispose();
    itOpcoesDeVoos_Tarifas.dispose();
    itTarifas.dispose();
    tplOpc.Detalhes = sOpcoesVoo.toString();
    return tplOpc.getHtml();
};

function setaOpcaoPinada(codTrecho, codOpcaoDeVoo)
{
    var itOpcaoVoos;
    var itVoos;
    var itClasses;
    
    if(availPinadosDS == null)
        availPinadosDS = availDS.clone();

    availPinadosDS.removeTable('Trechos');
    availPinadosDS.removeTable('OpcoesMP_OpcoesDeVoo');
    availPinadosDS.removeTable('OpcoesMP');

    //tiraOrdenacaoAvailDS();

    for(var i=0; i<availDS.tables['Tarifas'].rows.length; i++)
    {
        availPinadosDS.tables['Tarifas'].addRow(availDS.tables['Tarifas'].rows[i]);
    }
    
    for(var i=0; i<availDS.tables['OpcoesDeVoos_Tarifas'].rows.length; i++)
    {
        availPinadosDS.tables['OpcoesDeVoos_Tarifas'].addRow(availDS.tables['OpcoesDeVoos_Tarifas'].rows[i]);
    }

    
    var tbOpcao = getDataTableTrecho(codTrecho);
    
    itOpcaoVoos = availDS.tables[tbOpcao].getIterator('codOpcaoDeVoo');
    itVoos = availDS.tables["Voos"].getIterator("codOpcaoDeVoo");
    itClasses = availDS.tables["ClassesDeReserva"].getIterator("codVoo");
    
    itOpcaoVoos.findByKey(codOpcaoDeVoo);
    for( itOpcaoVoos.moveFirst(); itOpcaoVoos.hasNext(); itOpcaoVoos.moveNext() )
    {
        availPinadosDS.tables[tbOpcao].addRow(itOpcaoVoos.row);

        itVoos.findByKey( itOpcaoVoos.row.codOpcaoDeVoo );
        for( itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext() )
        {
            availPinadosDS.tables["Voos"].addRow(itVoos.row);
            
            itClasses.findByKey( itVoos.row.codVoo );
            for( itClasses.moveFirst(); itClasses.hasNext(); itClasses.moveNext() )
            {
                if(itClasses.row.escolha)
                {
                    availPinadosDS.tables["ClassesDeReserva"].addRow(itClasses.row);
                    break;
                }
            }
        }
    }
    itVoos.dispose();
    itClasses.dispose();
    itOpcaoVoos.dispose();
};

function retiraOpcaoPinada(codTrecho, codOpcaoDeVoo)
{
    var itOpcaoVoos;
    var itVoos;
    var itClasses;
    var arrOpcoes = [];
    var arrVoos = [];
    var arrClasses = [];

    tiraOrdenacaoAvailDS();
    
    var tbOpcao = getDataTableTrecho(codTrecho);
    
    itOpcaoVoos = availDS.tables[tbOpcao].getIterator('codOpcaoDeVoo');
    itVoos = availDS.tables["Voos"].getIterator("codOpcaoDeVoo");
    itClasses = availDS.tables["ClassesDeReserva"].getIterator("codVoo");
    
    itOpcaoVoos.findByKey(codOpcaoDeVoo);
    for( itOpcaoVoos.moveFirst(); itOpcaoVoos.hasNext(); itOpcaoVoos.moveNext() )
    {
        arrOpcoes[arrOpcoes.length] = itOpcaoVoos.row.codOpcaoDeVoo;

        itVoos.findByKey( itOpcaoVoos.row.codOpcaoDeVoo );
        for( itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext() )
        {
            arrVoos[arrVoos.length] = itVoos.row.codVoo;
            
            itClasses.findByKey( itVoos.row.codVoo );
            for( itClasses.moveFirst(); itClasses.hasNext(); itClasses.moveNext() )
            {
                if(itClasses.row.escolha)
                {
                    arrClasses[arrClasses.length] = itClasses.row.codClasseDeReserva;
                    break;
                }
            }
        }
    }
    itVoos.dispose();
    itClasses.dispose();
    itOpcaoVoos.dispose();
    
//    reordenaAvailDS();
    
    for(var i=0; i<arrOpcoes.length; i++)
    {
        availPinadosDS.tables[tbOpcao].removeRow(availPinadosDS.tables[tbOpcao].indexOf('codOpcaoDeVoo', arrOpcoes[i]));
    }
    
    for(var i=0; i<arrVoos.length; i++)
    {
        availPinadosDS.tables['Voos'].removeRow(availPinadosDS.tables['Voos'].indexOf('codVoo', arrVoos[i]));
    }

    for(var i=0; i<arrClasses.length; i++)
    {
        availPinadosDS.tables['ClassesDeReserva'].removeRow(availPinadosDS.tables['ClassesDeReserva'].indexOf('codClasseDeReserva', arrClasses[i]));
    }
    
};

function montaOpcoesPinadas(numTrecho)
{
    var itOpcoesVoos;
    var itVoos;
    //var itTarifas;
    //var itOpcoesDeVoos_Tarifas;
    var sResultado = new StringBuilder();
    //var t = new Template("Aereo");
    t = new Template("Aereo");
    var dtOpcaoVoos = getDataTableTrecho(numTrecho);
    
    if(availPinadosDS==null || availPinadosDS.tables[dtOpcaoVoos]==null || availPinadosDS.tables[dtOpcaoVoos].rows.length == 0)
        return "";
    
    itVoos = availPinadosDS.tables["Voos"].getIterator('codOpcaoDeVoo');
    
    for( var iOp=0; iOp<availPinadosDS.tables[dtOpcaoVoos].rows.length; iOp++ )
    {
        // row atual
        var opcaoVoo = availPinadosDS.tables[dtOpcaoVoos].rows[iOp];

        // Filtro os Voos da opcao
        itVoos.findByKey(opcaoVoo.codOpcaoDeVoo);

        // calculo o total de linhas de cada opcao para poder montar o template corretamente        
        var rowSpan = itVoos.count();

        // nome da classe caso queira diferenciar uma linha de opcao da outra, cores diferentes por exemplo
        var classeEstiloVoo = classeEstiloVoo=="voo1" ? "voo2" : "voo1";

        t.Disponibilidade.trOpcaoVooPinada.IdaVolta = (numTrecho == 1 ? "Ida" : "Volta");
        t.Disponibilidade.trOpcaoVooPinada.Detalhes = "";
        t.Disponibilidade.trOpcaoVooPinada.Preco = opcaoVoo.preco;
        t.Disponibilidade.trOpcaoVooPinada.moeda = getMoeda(opcaoVoo.moeda);
        
        //var precoInteiro = parseInt(opcaoVoo.preco);
        //var precoDecimal = parseInt((opcaoVoo.preco - precoInteiro) * 100);
        
        var precoInteiro = parseFloat(opcaoVoo.preco).formatNumber(2,true);
        var precoDecimal = 0;
        
        //t.Disponibilidade.trOpcaoVooPinada.PrecoInteiro = precoInteiro;
        //t.Disponibilidade.trOpcaoVooPinada.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
        
        t.Disponibilidade.trOpcaoVooPinada.PrecoInteiro = precoInteiro;
        t.Disponibilidade.trOpcaoVooPinada.PrecoDecimal = '';
        
        t.Disponibilidade.trOpcaoVooPinada.Cia = itVoos.row.companhia;
        t.Disponibilidade.trOpcaoVooPinada.nomeCia = itVoos.row.nomeCia;
        t.Disponibilidade.trOpcaoVooPinada.NumeroVoo = itVoos.row.numero;
        t.Disponibilidade.trOpcaoVooPinada.HoraSaida = opcaoVoo.dataSaida.toString('HH:mm');
        t.Disponibilidade.trOpcaoVooPinada.HoraChegada = opcaoVoo.dataChegada.toString('HH:mm');
        t.Disponibilidade.trOpcaoVooPinada.Duracao = formatTime(opcaoVoo.duracao);
        t.Disponibilidade.trOpcaoVooPinada.IncluirRemoverPino = 1;
        //t.Disponibilidade.trOpcaoVoo.Escalas = itVoos.count()-1;
        t.Disponibilidade.trOpcaoVooPinada.ThumbCia = itVoos.row.imagemCia;
        t.Disponibilidade.trOpcaoVooPinada.ClasseEscalasVoos = itVoos.count() == 1 ? "flightDirect" : "flightStop";
        t.Disponibilidade.trOpcaoVooPinada.CodOpcaoDeVoo = opcaoVoo.codOpcaoDeVoo;
        t.Disponibilidade.trOpcaoVooPinada.CodTrecho = opcaoVoo.codTrecho;
        //t.Disponibilidade.trOpcaoVooPinada.CidadeOrigem = itVoos.row.cidadeOrigem;
        t.Disponibilidade.trOpcaoVooPinada.DataIda = itVoos.row.dataHoraSaida.toString('dddd dd/MM/yyyy').capitalize();
        //Iatas
        t.Disponibilidade.trOpcaoVooPinada.iataOrigem = itVoos.row.origem;
        //======================================================================
        
        //Esconder os Detalhes quando for Renderizar
        t.Disponibilidade.trOpcaoVooPinada.modoDetails = 'modeHide';
        //Verifica se o voo possui escalas
        //t.Disponibilidade.trOpcaoVoo.ClasseEscalasVoos = (itVoos.row.escalas == 0 ? 'flightDirect'  :'flightStop');
        
        itVoos.moveLast();
        //t.Disponibilidade.trOpcaoVooPinada.CidadeDestino = itVoos.row.cidadeDestino;
        t.Disponibilidade.trOpcaoVooPinada.iataDestino = itVoos.row.destino;
        
        var sOpcoesVoo = new StringBuilder();
        var arrEscalas = [];
        //
        // varrendo os VOOS
        //
        for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
        {   
            // row atual
            voo = itVoos.row;

            if(/*!itVoos.isFirst() &&*/ itVoos.count() > 1)
                arrEscalas[arrEscalas.length] = voo.origem ;
            
        }
        
        
        var escalas = "";
        
        if(arrEscalas.length > 0)
        {
            escalas = (arrEscalas.length-1) + " Escala(s)<br/>(escalas em ";
            for(var i=1; i<arrEscalas.length; i++)
            {
                if(i != 1)
                    escalas += ", ";
                    
                escalas += arrEscalas[i];
            }
            escalas += ")";
        }

        t.Disponibilidade.trOpcaoVooPinada.Escalas = escalas;
        sResultado.append(t.Disponibilidade.trOpcaoVooPinada.getHtml());  
    }
    
    itVoos.dispose();
    
    return sResultado.toString();

};

function marcaSelecaoOpcaoVoo(codTrecho, codOpcaoDeVoo)
{
    var tbOpcaoVoo = getDataTableTrecho(codTrecho);
    var itOpcaoVoo = availDS.tables[tbOpcaoVoo].getIterator('escolha');
    itOpcaoVoo.findByKey(true);
    for(itOpcaoVoo.moveFirst(); itOpcaoVoo.hasNext(); itOpcaoVoo.moveNext())
    {
        itOpcaoVoo.row.escolha = false;
    }
    itOpcaoVoo.dispose();
    
    itOpcaoVoo = availDS.tables[tbOpcaoVoo].getIterator('codOpcaoDeVoo');
    itOpcaoVoo.findByKey(codOpcaoDeVoo);
    for(itOpcaoVoo.moveFirst(); itOpcaoVoo.hasNext(); itOpcaoVoo.moveNext())
    {
        itOpcaoVoo.row.escolha = true;
    }
    itOpcaoVoo.dispose();
    
    return montaSelecaoVoos();
    
};

function desmarcaSelecaoOpcaoVoo(codTrecho)
{
    //debugger;
    
    var tbOpcaoVoo = getDataTableTrecho(codTrecho);
    var itOpcaoVoo = availDS.tables[tbOpcaoVoo].getIterator('escolha');
    itOpcaoVoo.findByKey(true);
    for(itOpcaoVoo.moveFirst(); itOpcaoVoo.hasNext(); itOpcaoVoo.moveNext())
    {
        itOpcaoVoo.row.escolha = false;
    }
    itOpcaoVoo.dispose();
    
    return montaSelecaoVoos();
    
};

function VoosSomenteIda()
{
    return (availDS.tables["Trechos"].rows.length == 1);
};

///
/// Monta Cesta com os voos selecionados
///
function montaSelecaoVoos()
{
    //debugger;
    //
    // Variaveis
    //
    var trecho;
    var opcaoVoo;
    var voo;
    var classeReserva;
    var t;
    var rowSpan;
    var sClasses = new StringBuilder();
    var sPrecos = new StringBuilder();
    var sResultado = new StringBuilder();
    var inseriuOpcao = false;
    var itOpcoesVoo;
    var itVoos;
    var itClasses;
    
    totalSelecionadosVoos = 0;
    
    //
    // Carregando os templates
    //
    t = new Template("Aereo");
    t.Cesta.Disponibilidade.divVoosSelecionados.Linhas = "";
    
    
    itVoos = availDS.tables["Voos"].getIterator("codOpcaoDeVoo");
    itClasses = availDS.tables["ClassesDeReserva"].getIterator("codVoo");
    
    for(var i=0; i<availDS.tables["Trechos"].rows.length; i++)
    {
        trecho = availDS.tables["Trechos"].rows[i];
        
        var nomeTabelaOpcao =  getDataTableTrecho(trecho.codTrecho);
        itOpcoesVoo = availDS.tables[nomeTabelaOpcao].getIterator('escolha');
        itOpcoesVoo.findByKey(true);
        for(itOpcoesVoo.moveFirst(); itOpcoesVoo.hasNext(); itOpcoesVoo.moveNext())
        {
            // cada trecho cai ter apenas uma opcao selecionada, por isso pego so o primeiro registro
            opcaoVoo = itOpcoesVoo.row;

            var sOpcoesVoo = new StringBuilder();
            var arrEscalas = [];
            
            itVoos.findByKey(opcaoVoo.codOpcaoDeVoo);

            rowSpan = itVoos.count();
            
            
                        
            if(trecho.codTrecho == 1)
            {
                if(!VoosSomenteIda()){
                    var itOpcaoVolta = availDS.tables[getDataTableTrecho(2)].getIterator('escolha');
                    itOpcaoVolta.findByKey(true);
                    if(itOpcaoVolta.count() == 0){
                        t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.IdaVolta = "VOLTA";
                        t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Volta;
                        t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooVolta = t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.getHtml();
                        t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooIda = "";
                    }
                    else
                    {
                        t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooVolta = "";
                        t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooIda = "";
                    }
                    itOpcaoVolta.dispose();
                } 
                else 
                {
                    t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooIda = "";
                    t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooVolta = t.Cesta.Disponibilidade.divComprar.getHtml();
                }
            } 
            else 
            {
                var itOpcaoIda = availDS.tables[getDataTableTrecho(1)].getIterator('escolha');
                itOpcaoIda.findByKey(true);
                if(itOpcaoIda.count() == 0)
                {
                    t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.IdaVolta = "IDA";
                    t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Ida;
                    t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooIda = t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.getHtml();
                    t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooVolta = "";
                }
                else
                {
                    t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooVolta = t.Cesta.Disponibilidade.divComprar.getHtml();
                    t.Cesta.Disponibilidade.divOpcaoVooSelecionado.opcaoVooIda = "";
                }
                itOpcaoIda.dispose();
            }
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Detalhes = "";
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.moeda = getMoeda(opcaoVoo.moeda);
            
            //var precoInteiro = parseInt(opcaoVoo.preco);
            //var precoDecimal = parseInt((opcaoVoo.preco - precoInteiro) * 100);


            var precoInteiro = parseFloat(opcaoVoo.preco).formatNumber(2,true);
            var precoDecimal = 0;
            
            moedaTotal = opcaoVoo.moeda;
            //Soma o total de voos
            totalSelecionadosVoos += opcaoVoo.preco;
            
            //t.Cesta.Disponibilidade.divOpcaoVooSelecionado.PrecoInteiro = precoInteiro;
            //t.Cesta.Disponibilidade.divOpcaoVooSelecionado.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
            
            
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.PrecoInteiro = precoInteiro;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.PrecoDecimal = '';
            
            
            
            
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Cia = itVoos.row.companhia;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.nomeCia = itVoos.row.nomeCia;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.NumeroVoo = itVoos.row.numero;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.HoraSaida = opcaoVoo.dataSaida.toString('HH:mm');
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.HoraChegada = opcaoVoo.dataChegada.toString('HH:mm');
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Duracao = formatTime(opcaoVoo.duracao);
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Escalas = itVoos.count();
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.ThumbCia = itVoos.row.imagemCia;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Equipamento = itVoos.row.equipamento;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.ThumbCia = itVoos.row.imagemCia;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Cabine = pegaNomeCabine(itVoos.row.cabine);
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.DataSaida = itVoos.row.dataHoraSaida.toString('dddd dd/MM/yyyy').capitalize();
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.IdaVolta = (trecho.codTrecho == 1 ? "Ida" : "Volta");
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.CodTrecho = trecho.codTrecho;
            
            //debugger;
            //Iatas
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.iataOrigem = itVoos.row.origem;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.cidadeOrigem = itVoos.row.cidadeOrigem;
            
            //======================================================================
            
            //Esconder os Detalhes quando for Renderizar
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.modoDetails = 'modeHide';
            //Verifica se o voo possui escalas
            itVoos.moveLast();
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.cidadeDestino = itVoos.row.cidadeDestino;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.iataDestino = itVoos.row.destino;

            for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
            {   
                // row atual
                voo = itVoos.row;
                
                if( itVoos.count() > 1)
                    arrEscalas[arrEscalas.length] = voo.origem ;

                // template da opcao atual
                t.Cesta.Disponibilidade.trVooSelecionado.Origem = voo.origem;
                t.Cesta.Disponibilidade.trVooSelecionado.Destino = voo.destino;
                t.Cesta.Disponibilidade.trVooSelecionado.AeroportoOrigem = voo.aeroportoOrigem;
                t.Cesta.Disponibilidade.trVooSelecionado.AeroportoDestino = voo.aeroportoDestino;
                //t.Cesta.Disponibilidade.trVooSelecionado.Cia = voo.companhia;
                //t.Cesta.Disponibilidade.trVooSelecionado.ThumbCia = voo.imagemCia;
                t.Cesta.Disponibilidade.trVooSelecionado.NumeroVoo = voo.numero;
                t.Cesta.Disponibilidade.trVooSelecionado.DataSaida = voo.dataHoraSaida.toString('dd/MM/yyyy');
                t.Cesta.Disponibilidade.trVooSelecionado.HoraSaida = voo.dataHoraSaida.toString('HH:mm');
                t.Cesta.Disponibilidade.trVooSelecionado.DataChegada = voo.dataHoraChegada.toString('dd/MM/yyyy');
                t.Cesta.Disponibilidade.trVooSelecionado.HoraChegada = voo.dataHoraChegada.toString('HH:mm');
                sOpcoesVoo.append(t.Cesta.Disponibilidade.trVooSelecionado.getHtml());
//                sResultado.append(t.Cesta.Disponibilidade.trVooSelecionado.getHtml());
            }
            
            var escalas = "";
            
            if(arrEscalas.length > 0)
            {
                escalas = arrEscalas.length + " Escala(s)<br/>(escalas em ";
                for(var x=0; x<arrEscalas.length; x++)
                {
                    if(x != 0)
                        escalas += ", ";
                        
                    escalas += arrEscalas[x];
                }
                escalas += ")";
            }

            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Escalas = escalas;
            t.Cesta.Disponibilidade.divOpcaoVooSelecionado.Detalhes = sOpcoesVoo.toString();
            sResultado.append(t.Cesta.Disponibilidade.divOpcaoVooSelecionado.getHtml());  
            
            break;
        }
        itOpcoesVoo.dispose();    
    }
    
    itVoos.dispose();
    itClasses.dispose();
    if(sResultado.toString() == '')
    {
    
    
        
        if(availDS.tables["Trechos"].rows.length == 1)
        {
            t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.IdaVolta = 'IDA';
            t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Ida;
            sResultado.append(t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.getHtml());
            t.Cesta.Disponibilidade.divVoosSelecionados.Linhas = sResultado.toString();
        }
        else
        {
            t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.IdaVolta = 'IDA';
            t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Ida;
            sResultado.append(t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.getHtml());
            t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.IdaVolta = 'VOLTA';
            t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Volta;
            sResultado.append(t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.getHtml());
            t.Cesta.Disponibilidade.divVoosSelecionados.Linhas = sResultado.toString();
        }
    }
    else
    {
        t.Cesta.Disponibilidade.divVoosSelecionados.Linhas = sResultado.toString();
    }
    
    
    return t.Cesta.Disponibilidade.divVoosSelecionados.getHtml();
};
//Limpa os status de ordenacao
function limpaOrdenacaoAvailDs()
{
    for(i=0;i<htOrdenacaoAirAvail.count();i++)
    {
        htOrdenacaoAirAvail.add(htOrdenacaoAirAvail.keys[i], SEM_ORDEM);
    }
};

function marcaVoo(codTrecho,codOpcaoVoo)
{
    /*var tblOpcao = getDataTableOpcaoVoo(Aereo.Disponibilidade.Modo);
    
    for (var i = 0; i < tblOpcao.rows.count(); i++)
    {
        tblOpcao.rows[i]['filtrosAplicados']++;
        tblOpcao.rows[i]['escolha'] = false;
        
    }*/


        var itOpcoesVoo;
        var nomeTabelaOpcao =  getDataTableTrecho(codTrecho);
        
        itOpcoesVoo = availDS.tables[nomeTabelaOpcao].getIterator('codOpcaoDeVoo');
        itOpcoesVoo.findByKey(codOpcaoVoo);
        for(itOpcoesVoo.moveFirst(); itOpcoesVoo.hasNext(); itOpcoesVoo.moveNext())
        {
            itOpcoesVoo.row.escolha = false;
            itOpcoesVoo.row.filtrosAplicados++;
        }
        itOpcoesVoo.dispose();
        
};

function confirmarVoosEscolhidos(isMP)
{
    var filteredDS = pegaDadosTarifada(false); 

    _Disponibilidade.FiltrarAvailDS(filteredDS, confirmarVoosEscolhidos_callback);
};

function confirmarVoosEscolhidos_callback(res)
{
    //debugger;
    if(res.error == null)
    {
        if(res.value != null)
        {
            if(res.value == false)
            {
                alert('Erro ao tentar pegar os dados para Tarifar: res.value == false');
            }
            else
            {
                
                window.location = 'TarifadaAereo.aspx';
            }            
        }
        else
        {
            alert('Erro ao tentar pegar os dados para Tarifar: res.value == null');
        }
    }
    else
    {
        alert('Erro ao tentar pegar os dados para Tarifar: ' + res.error.message);
    }
};