﻿var availDS = null;
var trechoAtual = null;
var t = new Template("Aereo");
var totalSelecionadosVoos = 0;
var moedaTotal = null;
var _codOpcaoDeVoo = 0;
var _codTrecho = 0;

///
/// 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 )
        {
            // voltar aqui depois rosimeire
            availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco = parseFloat(availDS.tables[getDataTableTrecho(numTrecho)].rows[j].preco);
            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 sempre em ordem crescente (o parametro 'false' abaixo passado para o sort)
    availDS.tables[getDataTableTrecho(numTrecho)].sort([coluna,coluna2, 'false']);
}

// Monto o resumo da Busca de acordo com a aba selecionada
function montaResumoBusca(numeroTrecho, tbl)
{
    if (numeroTrecho == "1") 
    {
        if(tbl.rows.count()>0)
        {
            DataIda = availDS.tables.Trechos.rows[0].data.toString("dd/MM/yyyy");

            t.Disponibilidade.trResumoBusca.IdaVolta = 'Ida';
            t.Disponibilidade.trResumoBusca.Cidade = tbl.rows[0].cidadeDestino;
            t.Disponibilidade.trResumoBusca.Pais = '';
            t.Disponibilidade.trResumoBusca.Data = tbl.rows[0].data.toString('dd') + ' de ' + tbl.rows[0].data.toString('MMMM') + ' de ' + tbl.rows[0].data.toString('yyyy');
        
            return t.Disponibilidade.trResumoBusca.getHtml();
        }
    }
    else
    {
        if(tbl.rows.count()>1)
        {
            t.Disponibilidade.trResumoBusca.IdaVolta = 'Volta';
            t.Disponibilidade.trResumoBusca.Cidade = tbl.rows[1].cidadeDestino;
            t.Disponibilidade.trResumoBusca.Pais = '';
            t.Disponibilidade.trResumoBusca.Data = tbl.rows[1].data.toString('dd') + ' de ' + tbl.rows[1].data.toString('MMMM') + ' de ' + tbl.rows[1].data.toString('yyyy'); ;
        
            return t.Disponibilidade.trResumoBusca.getHtml();
        }
    }        
}

///
/// 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 != null)
    {
        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;
  
    trechoAtual = numeroTrecho;

    itTrechos = availDS.tables["Trechos"].getIterator('codTrecho');
    itTrechos.findByKey(numeroTrecho);
    itTrechos.moveFirst();
    var trecho = itTrechos.row;

    var DataIda = ""; 
    var DataVolta = "";
    if(availDS.tables.Trechos.rows.count()>0)
    {
        DataIda = availDS.tables.Trechos.rows[0].data.toString("dd/MM/yyyy");
    }
    
    if(availDS.tables.Trechos.rows.count()>1)
    {
        DataVolta = availDS.tables.Trechos.rows[1].data.toString("dd/MM/yyyy");
    }
    
    t.Disponibilidade.Itens.trItem = "";
    if (numeroTrecho == 1) 
    {
        t.Disponibilidade.Itens.idAbaIdaVolta = 'flight_first_way_results';
    }
    else
    {
        t.Disponibilidade.Itens.idAbaIdaVolta = 'flight_back_way_results';
    }

    // exibe o resumo da busca de acordo com a aba selecionada
    
    
    t.Disponibilidade.Itens.trResumoBusca = montaResumoBusca(numeroTrecho, availDS.tables["Trechos"]);

    // exibe as abas (ida / volta)
    t.Disponibilidade.Abas.DataIda = DataIda; 
    
    if(DataVolta != "")
    {
        t.Disponibilidade.Abas.MostraAbaVolta = '';
        t.Disponibilidade.Abas.DataVolta = DataVolta; 
    }
    else
    {
        t.Disponibilidade.Abas.MostraAbaVolta = 'none';
        t.Disponibilidade.Abas.DataVolta = ""; 
    }

// comentei temporariamente (a tblResultadoBusca virou shopping_cart)
//    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();
    
    var countResults = 0;
    for(itOpcoesVoos.goTo(count); itOpcoesVoos.hasNext(); itOpcoesVoos.moveNext())
    {
        // row atual
        opcaoVoo = itOpcoesVoos.row;
        
        t.Disponibilidade.trItem.CodOpcaoDeVooDivFoot = opcaoVoo.codOpcaoDeVoo;
        t.Disponibilidade.trItem.CodTrechoDivFoot = numeroTrecho;
        
        //debugger;
        //leandro lopes
        // verifica se deve exibir ou nao parcelamento em ate 6x caso seja gol
        var sourceCode = opcaoVoo.ciaPrincipal;
        // comentei temporariamente
//        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;                
//        }

    
        //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";

            // comentei temporariamente
//            t.Disponibilidade.trOpcaoVoo.Detalhes = "";

            //busca o moeda de acordo com a pesquisada
            t.Disponibilidade.trItem.moeda = getMoeda(opcaoVoo.moeda);
            
            var precoInteiro = parseFloat(opcaoVoo.preco).formatNumber(2,true);
            var precoDecimal = 0;
            
            t.Disponibilidade.trItem.PrecoInteiro = precoInteiro;
            
            t.Disponibilidade.trItem.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
            
            t.Disponibilidade.trItem.PrecoDecimal = '';
            
            t.Disponibilidade.trItem.Cia = itVoos.row.companhia;

            t.Disponibilidade.trItem.nomeCia = itVoos.row.nomeCia;
            t.Disponibilidade.trItem.NumeroVoo = itVoos.row.numero;
            t.Disponibilidade.trItem.HoraSaida = opcaoVoo.dataSaida.toString('HH:mm');
            t.Disponibilidade.trItem.HoraChegada = opcaoVoo.dataChegada.toString('HH:mm');
            t.Disponibilidade.trItem.Duracao = formatTime(opcaoVoo.duracao);

            t.Disponibilidade.trItem.ThumbCia = itVoos.row.imagemCia;

            t.Disponibilidade.trItem.CodOpcaoDeVoo = opcaoVoo.codOpcaoDeVoo;

            t.Disponibilidade.trItem.DataSaida = itVoos.row.dataHoraSaida.toString('dd/MM/yyyy').capitalize();
//            //Iatas
            t.Disponibilidade.trItem.iataOrigem = itVoos.row.origem;
//            //======================================================================
            
            itVoos.moveLast();

            t.Disponibilidade.trItem.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;
                
                // lista disponibilidade
                //debugger;
                if(itVoos.count() > 1)
                {
                
                   arrEscalas[arrEscalas.length] = voo.origem;
                
                   if(itVoos.isFirst())
                   {
                        t.Disponibilidade.trItem.cidadeOrigem = voo.cidadeOrigem;
                   }
                   if(itVoos.isLast())
                   {
                        t.Disponibilidade.trItem.cidadeDestino = voo.cidadeDestino;
                   }
                }
                else
                {
                    t.Disponibilidade.trItem.cidadeOrigem = voo.cidadeOrigem;
                    t.Disponibilidade.trItem.cidadeDestino = voo.cidadeDestino;
                }
            }
            
 
            
            var escalas = "";
            
            if(arrEscalas.length > 0)
            {
                //debugger;
                escalas = (arrEscalas.length - 1) + " Parada(s) em ";
                for(var i=1; i<arrEscalas.length; i++)
                {
                    if(i != 1)
                        escalas += ", ";
                        
                    escalas += arrEscalas[i];
                }
                escalas += "";
            }
            if(escalas!="")
            {
                 escalas += " ";
            }
            else
            {
                 escalas += " Voo Direto";            
            }
            
            t.Disponibilidade.trItem.Escalas = escalas;

            sResultado.append(t.Disponibilidade.trItem.getHtml());  
            
        //}
    }
    
    itVoos.dispose();
    //t.Disponibilidade.tblResultadoBusca.Linhas += sResultado.toString();
    t.Disponibilidade.Itens.trItem += sResultado.toString();
    itTrechos.dispose();

    itOpcoesVoos.dispose();

    return [t.Disponibilidade.Itens.getHtml(), t.Disponibilidade.Abas.getHtml(),countTotalResults, countFilterResults];
}

//Monta Tabela de Melhores Precos
function montaMelhorPrecoReduzida(tpl,idaVolta,pagina)
{
    //debugger 

    var tplExterno = tpl.tblMelhoresPrecos;
    var tplInterno = tpl.tdMelhoresPrecos;
    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++)
     {
        if (dtOpcao.rows[j].menorPreco > 0 )
        {
            dtOpcao.rows[j].menorPreco = parseFloat(dtOpcao.rows[j].menorPreco);
        
            // 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;
            
            if (dtOpcao.rows[j].filtro == false)
            {
                ciasSelecionadas[j] = dtOpcao.rows[j].companhia
            }
        }            
     }
    // 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;
        }
    }
    
    //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 = parseFloat(dtOpcao.rows[i].menorPreco).formatNumber(2,true);
                        var precoDecimal = '';
                        
                        var paradas =  dtOpcao.rows[i].numParadas;                          
                        var valor = getMoeda(dtOpcao.rows[i].moeda) + " " + precoInteiro; 
                    
                        // comentado temporariamente - EMERSON
                        //tpl.interno.Link = "javascript:somenteVooCompanhia('" + dtOpcao.rows[i].companhia + "')";
                        
                        if (i == 0)
                        {
                            tpl.tdMelhoresPrecos.lowestfare = 'class="lowestfare"';  
                            // comentado temporariamente - EMERSON
                            //tpl.interno.LinkOnMouseOut = "javascript:hideLowestPriceWarning('" + dtOpcao.rows[i].companhia + "')";
                        }
                        else
                        {
                            tpl.tdMelhoresPrecos.lowestfare = '';  
                            // comentado temporariamente - EMERSON
                            //tpl.interno.LinkOnMouseOut = '';
                        }
                                            
                        if (i == 0)
                        {
                            // comentado temporariamente - EMERSON
                            //tpl.interno.LinkOnMouseOver = "javascript:showLowestPriceWarning('" + dtOpcao.rows[i].companhia + "')";
                        }
                        else
                        {
                            // comentado temporariamente - EMERSON
                            //tpl.interno.LinkOnMouseOver = '';
                        }
                        
                        tpl.interno.IdLink = dtOpcao.rows[i].companhia;
                        
                        tpl.interno.Valor = valor;
                    
                        if (tplInterno.MenorPreco == undefined)
                        {
                           tplInterno.MenorPreco = tpl.interno.getHtml();
                        }
                        
                        if (paradas > 1)
                        {
                            tplInterno.DuasParadas = tpl.interno.getHtml();
                        }
                        
                        if (paradas == 1)
                        {
                             tplInterno.UmaParada = tpl.interno.getHtml();
                        }
                        
                        if (paradas == 0) 
                        {
                            tplInterno.Direto = tpl.interno.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.tdMelhoresPrecos = sb.toString();
    
    return tplExterno.getHtml();
};



function montaDetalhes(codOpcaoVoo,numeroTrecho)
{
    //debugger;
    var labelIdaVolta = (numeroTrecho==1 ? "Ida" : "Volta");
    var totalHoras = 0;
    var totalMinutos = 0;
    var dataChegada = new Date();
    var dataSaida = new Date();
    
    t = new Template("Aereo");
    var itVoos, itOpcoesDeVoos_Tarifas, itTarifas;
    var itOpcoesVoos;
    var DataTableIdVolta = getDataTableTrecho(numeroTrecho);
    
    origemTrecho = availDS.tables.Trechos.rows[0].cidadeOrigem;
    destinoTrecho = availDS.tables.Trechos.rows[0].cidadeDestino;
    
    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;
    var tplItem = t.Disponibilidade.trItemDetalhes;
    
    var tplTrOpcapVooParada = t.Disponibilidade.trParadas;
    
    //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;
    
    //aqui
    tplOpc.IDA_VOLTA = labelIdaVolta;

    //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.trItemDetalhes.NumeroVoo = voo.numero;
            t.Disponibilidade.trItemDetalhes.Cia = voo.nomeCia;
            t.Disponibilidade.trItemDetalhes.ThumbCia = voo.imagemCia;
            t.Disponibilidade.trItemDetalhes.DataSaida = voo.dataHoraSaida.toString('dd/MM/yyyy');
            t.Disponibilidade.trItemDetalhes.HoraSaida = voo.dataHoraSaida.toString('HH') + 'h' + voo.dataHoraSaida.toString('mm');
            t.Disponibilidade.trItemDetalhes.AeroportoOrigem = voo.aeroportoOrigem;
            t.Disponibilidade.trItemDetalhes.CidadeOrigem = voo.cidadeOrigem;
            t.Disponibilidade.trItemDetalhes.Origem = voo.origem;
            t.Disponibilidade.trItemDetalhes.AeroportoDestino = voo.aeroportoDestino;
            t.Disponibilidade.trItemDetalhes.CidadeDestino = voo.cidadeDestino;
            t.Disponibilidade.trItemDetalhes.Destino = voo.destino;
            t.Disponibilidade.trItemDetalhes.DataChegada = voo.dataHoraChegada.toString('dd/MM/yyyy');
            t.Disponibilidade.trItemDetalhes.HoraChegada = voo.dataHoraChegada.toString('HH') + 'h' + voo.dataHoraChegada.toString('mm');
            
            tplOpc.IDA_VOLTA = labelIdaVolta.toString().toUpperCase();
            
            //debugger;
            if(voo.cidadeDestino != destinoTrecho)
            {
                var horaEspera;
                var minutoEspera;
                var vooAux;
                
                dataChegada = voo.dataHoraChegada;
                
                itVoos.moveNext();
                vooAux = itVoos.row;
                dataSaida = vooAux.dataHoraSaida;
                                 
                if(voo.cidadeDestino == vooAux.cidadeOrigem)
                {
                    horaEspera = calculaDiferencaHoras(dataChegada, dataSaida, "hours");
                    minutoEspera = calculaDiferencaHoras(dataChegada, dataSaida, "mins");
                    
                    if(dataChegada.getTime() > dataSaida.getTime())
                    {
                        totalHoras += dataChegada - dataSaida;
                        
                    }
                    else
                    {
                        totalHoras += dataSaida.getTime() - dataChegada.getTime();
                    }
                    
                    tplTrOpcapVooParada.aeroportoParada = voo.aeroportoDestino;
                    tplTrOpcapVooParada.cidadeAeroportoParada = voo.cidadeDestino;
                    tplTrOpcapVooParada.espera = horaEspera + "h" + minutoEspera + "min";
                    t.Disponibilidade.trItemDetalhes.trParadas = tplTrOpcapVooParada.getHtml();
                }
                
                itVoos.movePrevious();
            }
            else
            {
                t.Disponibilidade.trItemDetalhes.trParadas = "";
            }

            if(voo.cidadeDestino == origemTrecho)
            {
                t.Disponibilidade.trItemDetalhes.trParadas = "";
            } 
            
            
            //calcula total de horas
            dataChegada = voo.dataHoraChegada; 
            dataSaida =voo.dataHoraSaida;        
            
            //debugger;
            
            //if(dataChegada.getTime() > dataSaida.getTime())
            if(dataChegada > dataSaida)
            {
                totalHoras += dataChegada.getTime() - dataSaida.getTime();
            }
            else
            {
                totalHoras += dataSaida.getTime() - dataChegada.getTime();
            }
            
            if(itVoos.isLast())
            {
               tplOpc.DuracaoTotal = calculaTotalHorasMinutos(totalHoras); 
            }            
            
            sOpcoesVoo.append(t.Disponibilidade.trItemDetalhes.getHtml());    
    }
    
    itVoos.dispose();
    itOpcoesDeVoos_Tarifas.dispose();
    itTarifas.dispose();
    tplOpc.trItemDetalhes = sOpcoesVoo.toString();
    
    
    return tplOpc.getHtml();
};




function VoosSomenteIda()
{
    return (availDS.tables["Trechos"].rows.length == 1);
};

///
/// Monta Cesta com os voos selecionados
///
function montaSelecaoVoos()
{
    // 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 sParadas = new StringBuilder();
    var inseriuOpcao = false;
    var itOpcoesVoo;
    var itVoos;
    var itClasses;
    var destinoTrecho;
    
    totalSelecionadosVoos = 0;
    
    // Carregando os templates
    t = new Template("Aereo");
    t.Cesta.Disponibilidade.resumoCarrinho.tblItem = "";
    
    itVoos = availDS.tables["Voos"].getIterator("codOpcaoDeVoo");
    itClasses = availDS.tables["ClassesDeReserva"].getIterator("codVoo");
    destinoTrecho = availDS.tables.Trechos.rows[0].cidadeDestino;


            
    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.trItem.IdaVolta = "VOLTA";
                        t.Cesta.Disponibilidade.trItem.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;
                        t.Cesta.Disponibilidade.trItem.modo = "first_way";                        
                        t.Cesta.Disponibilidade.trItem.Way = "FirstWay";   
                    }
                    else
                    {
                        t.Cesta.Disponibilidade.trItem.modo = "first_way";                        
                        t.Cesta.Disponibilidade.trItem.Way = "FirstWay";             
                        t.Cesta.Disponibilidade.trItem.IdaVolta = "";
                        t.Cesta.Disponibilidade.trItem.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;                       
                    }
                    itOpcaoVolta.dispose();
                } 
                else 
                {
                    t.Cesta.Disponibilidade.trItem.IdaVolta = "";
                    t.Cesta.Disponibilidade.trItem.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;
                }
            } 
            else 
            {
                var itOpcaoIda = availDS.tables[getDataTableTrecho(1)].getIterator('escolha');
                itOpcaoIda.findByKey(true);
                if(itOpcaoIda.count() == 0)
                {
                    t.Cesta.Disponibilidade.trItem.IdaVolta = "IDA"; 
                    t.Cesta.Disponibilidade.trItem.modo = "back_way";                    
                    t.Cesta.Disponibilidade.trItem.Way = "BackWay";  
                    t.Cesta.Disponibilidade.trItem.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;
                }
                else
                {                        
                    t.Cesta.Disponibilidade.trItem.modo = "back_way";                    
                    t.Cesta.Disponibilidade.trItem.Way = "BackWay";                            
                    t.Cesta.Disponibilidade.trItem.opcaoVooIda = '';
                    t.Cesta.Disponibilidade.trItem.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;
                }

                itOpcaoIda.dispose();
            }

            var precoInteiro = parseFloat(opcaoVoo.preco);
            moedaTotal = getMoeda(opcaoVoo.moeda);
            //Soma o total de voos
            totalSelecionadosVoos = parseFloat(totalSelecionadosVoos) + parseFloat(precoInteiro);


            // *****************************************************************
            // render Item
            // *****************************************************************
                   
            t.Cesta.Disponibilidade.trItem.codTrecho = trecho.codTrecho;
            t.Cesta.Disponibilidade.trItem.ThumbCia = itVoos.row.imagemCia;
            t.Cesta.Disponibilidade.trItem.nomeCia = itVoos.row.nomeCia;
            t.Cesta.Disponibilidade.trItem.cidadeOrigem = itVoos.row.cidadeOrigem;
            t.Cesta.Disponibilidade.trItem.iataOrigem = itVoos.row.origem;
            t.Cesta.Disponibilidade.trItem.DataSaida = itVoos.row.dataHoraSaida.toString('dddd dd/MM/yyyy').capitalize();
            t.Cesta.Disponibilidade.trItem.HoraSaida = opcaoVoo.dataSaida.toString('HH:mm');

            t.Cesta.Disponibilidade.trItem.moedaTotal = moedaTotal;
            t.Cesta.Disponibilidade.trItem.PrecoInteiro = parseFloat(precoInteiro).formatNumber(2,true);
            t.Cesta.Disponibilidade.trItem.Cia = itVoos.row.companhia;
            t.Cesta.Disponibilidade.trItem.Duracao = formatTime(opcaoVoo.duracao);
            //nesse caso, as comparacoes estao sendo feitas sem diminuir 1. por isso =1 para ver se eh direto e =2 para fazer o singular
            if(itVoos.count()==1)
            {
                t.Cesta.Disponibilidade.trItem.Escalas = ' Voo Direto';
            }
            else
            {
                t.Cesta.Disponibilidade.trItem.Escalas = (itVoos.count()- 1) + (itVoos.count() == 2 ? ' Parada' : ' Paradas');
            }
            t.Cesta.Disponibilidade.trItem.Equipamento = itVoos.row.equipamento;
            t.Cesta.Disponibilidade.trItem.Cabine = pegaNomeCabine(itVoos.row.cabine);
            t.Cesta.Disponibilidade.trItem.IdaVolta = (trecho.codTrecho == 1 ? "Ida" : "Volta");
            t.Cesta.Disponibilidade.trItem.CodTrecho = trecho.codTrecho;
            t.Cesta.Disponibilidade.trItem.HoraChegada = opcaoVoo.dataChegada.toString('HH:mm');
            t.Cesta.Disponibilidade.trItem.DataChegada = itVoos.row.dataHoraChegada.toString('dddd dd/MM/yyyy').capitalize();

            itVoos.moveLast();
            t.Cesta.Disponibilidade.trItem.cidadeDestino = itVoos.row.cidadeDestino;
            t.Cesta.Disponibilidade.trItem.iataDestino = itVoos.row.destino;

            
            // *****************************************************************
            // render Item
            // *****************************************************************

            t.Cesta.Disponibilidade.trItemDetalhes.trParadas = "";                
            //Verifica se o voo possui escalas
            for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
            {   
                // row atual
                voo = itVoos.row;
                
                if( !itVoos.isFirst() /*itVoos.count() > 1*/)
                {
                    arrEscalas[arrEscalas.length] = voo.origem ;
                }

            
                // *****************************************************************
                // render Detalhes
                // *****************************************************************
                t.Cesta.Disponibilidade.trItemDetalhes.nomeCia = itVoos.row.nomeCia;
                t.Cesta.Disponibilidade.trItemDetalhes.NumeroVoo = itVoos.row.numero;
                t.Cesta.Disponibilidade.trItemDetalhes.DataSaida = itVoos.row.dataHoraSaida.toString('dddd dd/MM/yyyy').capitalize();
                t.Cesta.Disponibilidade.trItemDetalhes.HoraSaida = itVoos.row.dataHoraSaida.toString('HH:mm');
                t.Cesta.Disponibilidade.trItemDetalhes.HoraChegada = itVoos.row.dataHoraChegada.toString('HH:mm');
                t.Cesta.Disponibilidade.trItemDetalhes.DataChegada = itVoos.row.dataHoraChegada.toString('dddd dd/MM/yyyy').capitalize();
                t.Cesta.Disponibilidade.trItemDetalhes.cidadeOrigem = itVoos.row.cidadeOrigem;
                t.Cesta.Disponibilidade.trItemDetalhes.iataOrigem = itVoos.row.origem;
                t.Cesta.Disponibilidade.trItemDetalhes.AeroportoOrigem = itVoos.row.aeroportoOrigem;
                t.Cesta.Disponibilidade.trItemDetalhes.Origem = itVoos.row.origem;
                t.Cesta.Disponibilidade.trItemDetalhes.AeroportoDestino = itVoos.row.aeroportoDestino;
                t.Cesta.Disponibilidade.trItemDetalhes.Destino = itVoos.row.destino;
                
                //itVoos.moveLast();
                t.Cesta.Disponibilidade.trItemDetalhes.cidadeDestino = itVoos.row.cidadeDestino;
                t.Cesta.Disponibilidade.trItemDetalhes.iataDestino = itVoos.row.destino;
                // *****************************************************************
                // Fim - Render Detalhes 
                // *****************************************************************


                // template da opcao atual
                if(!itVoos.isLast())
                {
                    t.Cesta.Disponibilidade.trParadas.cidadeAeroportoParada = voo.cidadeDestino;
                    t.Cesta.Disponibilidade.trParadas.aeroportoParada= voo.aeroportoDestino;
                    t.Cesta.Disponibilidade.trParadas.iataAeroportoParada= voo.destino;
                    t.Cesta.Disponibilidade.trParadas.espera=calculaTempoParada(voo,itVoos,destinoTrecho);
                    
                    t.Cesta.Disponibilidade.trItemDetalhes.trParadas = t.Cesta.Disponibilidade.trParadas.getHtml();
                   
                   //ver se o que esta abaixo esta correto o que foi feito acima e provavelmente mudar para trItemDetalhes o gethmle e os parametros abaixo
                    //t.Cesta.Disponibilidade.trItemDetalhes.Origem = voo.origem;
                    //t.Cesta.Disponibilidade.trItemDetalhes.Destino = voo.destino;
                    //t.Cesta.Disponibilidade.trItemDetalhes.cidadeOrigem = voo.cidadeOrigem;
                    //t.Cesta.Disponibilidade.trItemDetalhes.AeroportoOrigem = voo.aeroportoOrigem;
                   // t.Cesta.Disponibilidade.trItemDetalhes.cidadeDestino= voo.cidadeDestino;
                   // t.Cesta.Disponibilidade.trItemDetalhes.AeroportoDestino = voo.aeroportoDestino;
                    //t.Cesta.Disponibilidade.trItemDetalhes.NumeroVoo = voo.numero;
                    //t.Cesta.Disponibilidade.trItemDetalhes.nomeCia= voo.nomeCia;
                   // t.Cesta.Disponibilidade.trItemDetalhes.DataSaida = voo.dataHoraSaida.toString('dd/MM/yyyy');
                   // t.Cesta.Disponibilidade.trItemDetalhes.HoraSaida = voo.dataHoraSaida.toString('HH:mm');
                   // t.Cesta.Disponibilidade.trItemDetalhes.DataChegada = voo.dataHoraChegada.toString('dd/MM/yyyy');
                   // t.Cesta.Disponibilidade.trItemDetalhes.HoraChegada = voo.dataHoraChegada.toString('HH:mm');
                    
                }
                else 
                {
                    t.Cesta.Disponibilidade.trItemDetalhes.trParadas = "";                
                }
                
                sParadas.append(t.Cesta.Disponibilidade.trItemDetalhes.getHtml());
                
            }

            var escalas = "";
            
            if(arrEscalas.length > 0)
            {
                // debugger;
                escalas = arrEscalas.length + " Parada(s) em ";
                for(var x=0; x<arrEscalas.length; x++)
                {
                    if(x != 0)
                        escalas += ", ";
                        
                    escalas += arrEscalas[x];
                }
                escalas += "";
            }
            
            //alterado por Emerson 
            //t.Cesta.Disponibilidade.trItemDetalhes.trParadas = sParadas;    
            //t.Cesta.Disponibilidade.trItem.trItemDetalhes = t.Cesta.Disponibilidade.trItemDetalhes.getHtml();
         
            t.Cesta.Disponibilidade.trItem.trItemDetalhes = sParadas;

 
            sOpcoesVoo.append(t.Cesta.Disponibilidade.trItem.getHtml());
            
    
            sResultado.append(sOpcoesVoo.toString());  
            
            sParadas.clear();

   
            break;
        }
        
        itOpcoesVoo.dispose();    
    }
    
    itVoos.dispose();
    itClasses.dispose();
    if(sResultado.toString() == '')
    {
        if(availDS.tables["Trechos"].rows.length == 1)
        {
            t.Cesta.Disponibilidade.tblItem.IdaVolta = 'IDA';
            //t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Ida;
            sResultado.append(t.Cesta.Disponibilidade.trItem.getHtml());
            t.Cesta.Disponibilidade.tblItem.trItem = sResultado.toString();
        }
        else
        {
            t.Cesta.Disponibilidade.tblItem.IdaVolta = 'IDA';
            //t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Ida;
            sResultado.append(t.Cesta.Disponibilidade.trItem.getHtml());
            //t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.IdaVolta = 'VOLTA';
            //t.Cesta.Disponibilidade.divOpcaoVooNaoSelecionado.Modo = Modo.Volta;
            
            sResultado.append(t.Cesta.Disponibilidade.trItem.getHtml());
            t.Cesta.Disponibilidade.tblItem.trItem = sResultado.toString();
        }
    }
    else
    {
        t.Cesta.Disponibilidade.tblItem.trItem = sResultado.toString();
    }
    
    t.Cesta.Disponibilidade.resumoCarrinho.tblItem = t.Cesta.Disponibilidade.tblItem.getHtml();
    t.Cesta.Disponibilidade.resumoCarrinho.aba = t.Cesta.Disponibilidade.Aba.getHtml();

    t.Cesta.Disponibilidade.trTotal.totalPorAdulto = parseFloat(totalSelecionadosVoos).formatNumber(2,true);
    t.Cesta.Disponibilidade.resumoCarrinho.trTotal = t.Cesta.Disponibilidade.trTotal.getHtml();
    
    //return t.Cesta.Disponibilidade.divVoosSelecionados.getHtml();
    return t.Cesta.Disponibilidade.resumoCarrinho.getHtml();
};
//Limpa os status de ordenacao
function limpaOrdenacaoAvailDs()
{
    for(i=0;i<htOrdenacaoAirAvail.count();i++)
    {
        htOrdenacaoAirAvail.add(htOrdenacaoAirAvail.keys[i], SEM_ORDEM);
    }
};

//Emerson
function calculaTempoParada(voo,itVoos,destinoTrecho)
{
    if(voo.cidadeDestino != destinoTrecho)
    {
        var horaEspera;
        var minutoEspera;
        var vooAux;
    
        
        var dataChegada = voo.dataHoraChegada;
        
        itVoos.moveNext();
        vooAux = itVoos.row;
        var dataSaida = vooAux.dataHoraSaida;
                         
        if(voo.cidadeDestino == vooAux.cidadeOrigem)
        {
            horaEspera = calculaDiferencaHoras(dataChegada, dataSaida, "hours");
            minutoEspera = calculaDiferencaHoras(dataChegada, dataSaida, "mins");
        }
        
        itVoos.movePrevious();
        
         return horaEspera + "h" + minutoEspera + "min";

    }
    else
    {
        return "";
    }
}


//function setCodOpcaoDeVoo(_cod)
//{
//    _codOpcaoDeVoo = _cod;
//}

//function setCodrecho(_codT)
//{
//    _codTrecho = _codT;
//}


//funcao temporariamente desativada - link enviar por email esta apontando para o link de compartilhe esse resultado
function montaEnviarPorEmail(nomeFrom, emailFrom, locationHref)
{

    // variaveis
    var tEmail = new Template("Aereo");
    var sResultado = new StringBuilder();
    var opcaoVoo = null;
    var itVoos = null;
    var DataTableIdVolta = getDataTableTrecho(_codTrecho);
    
    itOpcoesVoos = availDS.tables[DataTableIdVolta].getIterator('codOpcaoDeVoo');
    itOpcoesVoos.findByKey(_codOpcaoDeVoo);
    
    itVoos = availDS.tables["Voos"].getIterator('codOpcaoDeVoo');
    itVoos.findByKey(_codOpcaoDeVoo);
    
    opcaoVoo = itOpcoesVoos.row;    

    //busca o moeda de acordo com a pesquisada
    tEmail.Disponibilidade.trItem.moeda = getMoeda(opcaoVoo.moeda);
    
    var precoInteiro = parseFloat(opcaoVoo.preco).formatNumber(2,true);
    var precoDecimal = 0;
    
    tEmail.Disponibilidade.trItem.PrecoInteiro = precoInteiro;
    
    tEmail.Disponibilidade.trItem.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
    
    tEmail.Disponibilidade.trItem.PrecoDecimal = '';
    
    tEmail.Disponibilidade.trItem.Cia = itVoos.row.companhia;

    tEmail.Disponibilidade.trItem.nomeCia = itVoos.row.nomeCia;
    tEmail.Disponibilidade.trItem.NumeroVoo = itVoos.row.numero;
    tEmail.Disponibilidade.trItem.HoraSaida = opcaoVoo.dataSaida.toString('HH:mm');
    tEmail.Disponibilidade.trItem.HoraChegada = opcaoVoo.dataChegada.toString('HH:mm');
    tEmail.Disponibilidade.trItem.Duracao = formatTime(opcaoVoo.duracao);

    tEmail.Disponibilidade.trItem.ThumbCia = itVoos.row.imagemCia;

    tEmail.Disponibilidade.trItem.CodOpcaoDeVoo = opcaoVoo.codOpcaoDeVoo;

    tEmail.Disponibilidade.trItem.DataSaida = itVoos.row.dataHoraSaida.toString('dd/MM/yyyy').capitalize();
    tEmail.Disponibilidade.trItem.iataOrigem = itVoos.row.origem;
    


    tEmail.Disponibilidade.trItem.iataDestino = itVoos.row.destino;

    var arrEscalas = [];

    for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
    {   
        // row atual
        voo = itVoos.row;
        
        if(itVoos.count() > 1)
        {
        
           arrEscalas[arrEscalas.length] = voo.origem;
        
           if(itVoos.isFirst())
           {
                tEmail.Disponibilidade.trItem.cidadeOrigem = voo.cidadeOrigem;
           }
           if(itVoos.isLast())
           {
                tEmail.Disponibilidade.trItem.cidadeDestino = voo.cidadeDestino;
           }
        }
        else
        {
            tEmail.Disponibilidade.trItem.cidadeOrigem = voo.cidadeOrigem;
            tEmail.Disponibilidade.trItem.cidadeDestino = voo.cidadeDestino;
        }
    }
    

    
    var escalas = "";
    
    if(arrEscalas.length > 0)
    {
        //debugger;
        escalas = (arrEscalas.length - 1) + " Parada(s) em ";
        for(var i=1; i<arrEscalas.length; i++)
        {
            if(i != 0)
                escalas += ", ";
                
            escalas += arrEscalas[i];
        }
        escalas += "";
    }
    if(escalas!="")
    {
         escalas += " Parada(s)";
    }
    else
    {
         escalas += " Voo Direto";            
    }
    
    tEmail.Disponibilidade.Itens.trResumoBusca = '';
    
    tEmail.Disponibilidade.trItem.Escalas = escalas;
    
    //Nao apagar o que ja estava feito, pode ser que o Victor queira algo do que estava (Roger Tex)
    
    
   
    sResultado.append(tEmail.Disponibilidade.email.getHtml());  

    itVoos.dispose();
 
    tEmail.Disponibilidade.Itens.trItem += sResultado.toString();    

    itOpcoesVoos.dispose();

    return sResultado;
}

//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;
    
    // comentado temporariamente
//    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 montaOrderDisponibilidade(tpl)
{
    tpl.Order.dataIda = availDS.tables.Trechos.rows[0].data;
    
    if(availDS.tables.Trechos.rows.count() > 1)
    {
        tpl.Order.dataVolta = availDS.tables.Trechos.rows[1].data;
        tpl.Order.ExibeDataVolta = '';
    }
    else
    {
        tpl.Order.ExibeDataVolta = 'none';
    }

    return tpl.Order.getHtml();
}



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 desmarca(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();
    
};


function marcaVoo(codTrecho,codOpcaoVoo)
{
        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();
        
};


