﻿var masterPricerPinDS = null;
var masterPricerDS = null;

var totalSelecionadosVoos = 0;

function ordenaResultadoMasterPricer(coluna,coluna2) {
    var ordemAtual = htOrdenacaoMP.getValue(coluna);
    
    htOrdenacaoMP.add('cias', SEM_ORDEM);
    htOrdenacaoMP.add('tarifaADT', SEM_ORDEM);
    htOrdenacaoMP.add('duracaoIda', SEM_ORDEM);
    htOrdenacaoMP.add('dataSaidaIda', SEM_ORDEM);
    htOrdenacaoMP.add('dataChegadaVolta', SEM_ORDEM);

    switch(ordemAtual) {
        case SEM_ORDEM:
        case ORDEM_DECRESCENTE:
            htOrdenacaoMP.add(coluna, ORDEM_CRESCENTE);
            break;
        case ORDEM_CRESCENTE:
            htOrdenacaoMP.add(coluna, ORDEM_DECRESCENTE);
            break;
    }
    
     //debugger;
     for(var j = 0; j < masterPricerDS.tables["OpcoesMP"].rows.count(); j++)
     {
    
    
        // Primeiro formata o campo com duas casas decimais
        if ( masterPricerDS.tables["OpcoesMP"].rows[j].tarifaADT.toString().indexOf('000') == -1 )
        {
            masterPricerDS.tables["OpcoesMP"].rows[j].tarifaADT = masterPricerDS.tables["OpcoesMP"].rows[j].tarifaADT.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 - masterPricerDS.tables["OpcoesMP"].rows[j].tarifaADT.toString().length)); 
            
            // Depois insere N zeros antes da string 
            masterPricerDS.tables["OpcoesMP"].rows[j].tarifaADT = zerosAntes + masterPricerDS.tables["OpcoesMP"].rows[j].tarifaADT;
        }
     }
     //debugger;
     
     // Após o campo formatado, ordena
     masterPricerDS.tables["OpcoesMP"].sort([coluna,coluna2]);
};



function montaVoosMasterPricer(dataset, pinado, pageIndex, pageSize) {
    var itOpcoesMPVoos;
    var filtrarOpcaoMP;
    var itOpcoesVoo;
    var itVoos;
    var opcaoVoo;
    var countTotalResults;
    var countFilterResults;
    var opcaoMP = null;
    var t = null;
    var rowSpan = 0;
    var sResultadoPinados = new StringBuilder();
    var sResultado = new StringBuilder();
    var sResumoOpcao;
    var sDetalhesVoos;
    var classeEstiloVoo = 'voo2';
    var voo;
    var primeiroVoo;
    var countTotalResults;
    var countFilterResults;
    var count = (pageIndex-1) * pageSize;

    if (dataset == null) dataset = masterPricerDS;
        
    if (dataset.tables["OpcoesMP"].rows.count() == 0) {
        if (pinado != '1') {
            
            alert('Nenhum voo encontrado para a pesquisa desejada.' + + "TRACE: " +  "<a href='" + MasterPricer.GetURLTraceVTP().value + "'>Trace</a>");
            history.back(-2);
        }
        return ['',0,0];
    }

    t = new Template("Aereo");
    t.MasterPricer.tblResultadoBusca.Linhas = "";
    
    t.MasterPricer.tblResultadoBusca.EstiloCiaCrescente = htOrdenacaoMP.getValue('cias') == ORDEM_CRESCENTE ? "selected" : "";
    t.MasterPricer.tblResultadoBusca.EstiloDuracaoCrescente = htOrdenacaoMP.getValue('duracaoIda') == ORDEM_CRESCENTE ? "selected" : "";
    t.MasterPricer.tblResultadoBusca.EstiloPrecoCrescente = htOrdenacaoMP.getValue('tarifaADT') == ORDEM_CRESCENTE ? "selected" : "";
    t.MasterPricer.tblResultadoBusca.EstiloHoraSaidaCrescente = htOrdenacaoMP.getValue('dataSaidaIda') == ORDEM_CRESCENTE ? "selected" : "";
    t.MasterPricer.tblResultadoBusca.EstiloHoraChegadaCrescente = htOrdenacaoMP.getValue('dataChegadaVolta') == ORDEM_CRESCENTE ? "selected" : "";

    //debugger;
    
    itOpcoesMPVoos = dataset.tables.OpcoesMP_OpcoesDeVoo.getIterator('codOpcaoMP');
    itOpcoesVoo = dataset.tables.OpcoesDeVoo.getIterator('codOpcaoDeVoo');
    itCias = dataset.tables.Cias.getIterator('companhia');
    itAeros = dataset.tables.Aeroportos.getIterator('iata');
    itOpcoesMP = dataset.tables.OpcoesMP.getIterator('filtrosAplicados');
    itVoos = dataset.tables.Voos.getIterator('codOpcaoDeVoo');
    
    var somenteIda = dataset.tables.Trechos.rows.count() == 1;
    var opcaoIdaVolta;
    
    itOpcoesMP.findByKey(0);

    countTotalResults = dataset.tables.OpcoesMP.rows.length;
    countFilterResults = itOpcoesMP.count();
        
    itOpcoesMP.moveFirst();
    var countResults = 0;
    for (itOpcoesMP.goTo(count); itOpcoesMP.hasNext(); itOpcoesMP.moveNext()) {
        opcaoMP = itOpcoesMP.row;
        
        if (opcaoMP.filtrosAplicados != 0) continue;
    
        countResults += 1;
        if(countResults > pageSize) break;
    
        primeiroVoo = true;

        //debugger;
        
        //var precoInteiro = Math.floor(valor);
        //var precoDecimal = Math.round((valor * 100) - (precoInteiro * 100));
        
        t.MasterPricer.trOpcaoVoo.PrecoInteiro = parseFloat(opcaoMP.tarifaADT).formatNumber(2,true);
        //t.MasterPricer.trOpcaoVoo.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
        t.MasterPricer.trOpcaoVoo.moeda = getMoeda(opcaoMP.moeda);

        itOpcoesMPVoos.findByKey(opcaoMP.codOpcaoMP);
        rowSpan = pegaQtdVoosOpcaoMP(itOpcoesMPVoos);
        
        opcaoIdaVolta = 1;
        filtrarOpcaoMP = false;
        var classeCssSoIda = "";
        
        for(itOpcoesMPVoos.moveFirst(); itOpcoesMPVoos.hasNext(); itOpcoesMPVoos.moveNext()) {
            if(somenteIda) {
                opcaoIdaVolta = 0;
                classeCssSoIda = " oOrigin";
                t.MasterPricer.trOpcaoVoo.RowSpan = 1;
                t.MasterPricer.trOpcaoVoo.DisplayDestination = "none";
            } else {
                t.MasterPricer.trOpcaoVoo.RowSpan = 2;
                opcaoIdaVolta = (opcaoIdaVolta==1) ? 0 : 1;
                t.MasterPricer.trOpcaoVoo.DisplayDestination = "";
            }
            
            t.MasterPricer.trOpcaoVoo.ApenasIda = somenteIda;

            itOpcoesVoo.findByKey(itOpcoesMPVoos.row.codOpcaoDeVoo);
            opcaoVoo = itOpcoesVoo.row;

            itVoos.findByKey(opcaoVoo.codOpcaoDeVoo);
            
            /*
            //debugger;
            for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext())
            {   
                // row atual
                voo = itVoos.row;
                debugger;
                if(itVoos.count() > 1)
                {               
                    if(itVoos.isFirst())
                    {
                        t.MasterPricer.trOpcaoVoo.cidadeOrigem = voo.cidadeOrigem;
                    }
                    if(itVoos.isLast())
                    {
                        t.MasterPricer.trOpcaoVoo.cidadeDestino = voo.cidadeDestino;
                    }
                        
                }
                else
                {
                    t.MasterPricer.trOpcaoVoo.cidadeOrigem = voo.cidadeOrigem;
                    t.MasterPricer.trOpcaoVoo.cidadeDestino = voo.cidadeDestino;
                }
                
            }
            */
            
            if (itVoos.row != null) {
                itCias.findByKey(opcaoMP.ciaPrincipal);
                if (itCias.row != null) {
                    var imagemCia='';
                    if (itCias.row.imagem!=null && itCias.row.imagem!='') imagemCia = itCias.row.imagem;
                    else imagemCia = itVoos.row.nomeCia.trim();
                    t.MasterPricer.trOpcaoVoo.ThumbCia = imagemCia;
                    t.MasterPricer.trOpcaoVoo.Cia = itCias.row.companhia;
                    t.MasterPricer.trOpcaoVoo.nomeCia = itCias.row.nomeCia.trim();
                } 

                if (opcaoIdaVolta == 0) 
                {
                    t.MasterPricer.trOpcaoVoo.DataSaidaIda = 'Ida ' + opcaoVoo.dataSaida.toString('dd/MM/yy');
                    t.MasterPricer.trOpcaoVoo.HoraSaidaIda = opcaoVoo.dataSaida.toString('HH:mm');
                    t.MasterPricer.trOpcaoVoo.iataOrigemIda = itVoos.row.origem;
                    //
                    t.MasterPricer.trOpcaoVoo.cidadeOrigem = itVoos.row.cidadeOrigem;
                    //t.MasterPricer.trOpcaoVoo.cidadeDestino = itVoos.row.cidadeDestino;
                    t.MasterPricer.trOpcaoVoo.DuracaoIda = formatTime(opcaoVoo.duracao);
                    
                    if (itVoos.count() > 1) {
                        t.MasterPricer.trOpcaoVoo.EscalasIda = itVoos.count()-1 + ' paradas';
                        t.MasterPricer.trOpcaoVoo.EstiloParadas = 'flightStop';
                    } 
                    else 
                    {
                        t.MasterPricer.trOpcaoVoo.EscalasIda = '';
                        t.MasterPricer.trOpcaoVoo.EstiloParadas = 'flightDirect';
                        $('divHorariosVolta').style.display = 'none';
                    }
                                    
                    itVoos.moveLast();
                    t.MasterPricer.trOpcaoVoo.cidadeDestino = itVoos.row.cidadeDestino;
                    t.MasterPricer.trOpcaoVoo.iataDestinoIda = itVoos.row.destino;
                    t.MasterPricer.trOpcaoVoo.HoraChegadaIda = opcaoVoo.dataChegada.toString('HH:mm');
                    t.MasterPricer.trOpcaoVoo.display = "style='display: none;'";
                    
                } 
                else 
                {
                    //debugger;
                    
                    t.MasterPricer.trOpcaoVoo.DataSaidaVolta = 'Volta ' + opcaoVoo.dataSaida.toString('dd/MM/yy');
                    t.MasterPricer.trOpcaoVoo.HoraSaidaVolta = opcaoVoo.dataSaida.toString('HH:mm');
                    t.MasterPricer.trOpcaoVoo.iataOrigemVolta = itVoos.row.origem;
                    
                    t.MasterPricer.trOpcaoVoo.cidadeOrigemVolta = itVoos.row.cidadeOrigem;
////////                    t.MasterPricer.trOpcaoVoo.cidadeDestinoVolta = itVoos.row.cidadeDestino;
////////                    
                    t.MasterPricer.trOpcaoVoo.DuracaoVolta = formatTime(opcaoVoo.duracao);
                    
                    if (itVoos.count() > 1) 
                    {
                        t.MasterPricer.trOpcaoVoo.EscalasVolta = itVoos.count()-1 + ' paradas';
                    } 
                    else 
                    {
                        t.MasterPricer.trOpcaoVoo.EscalasVolta = '';
                    }
                    
                    itVoos.moveLast();


                    t.MasterPricer.trOpcaoVoo.cidadeDestinoVolta = itVoos.row.cidadeDestino;
                    
                    t.MasterPricer.trOpcaoVoo.iataDestinoVolta = itVoos.row.destino;
                    t.MasterPricer.trOpcaoVoo.HoraChegadaVolta = opcaoVoo.dataChegada.toString('HH:mm');
                    t.MasterPricer.trOpcaoVoo.display = "";
                    $('divHorariosVolta').style.display = 'block';
                }
            }
            
            t.MasterPricer.trOpcaoVoo.Estilo = (parseInt(pinado)==0) ? 
                                                'origin' + classeCssSoIda : 'origin pin';
                                                
            t.MasterPricer.trOpcaoVoo.CodOpcaoDeVoo = opcaoMP.codOpcaoMP;//Codigo da opcao MP!
            t.MasterPricer.trOpcaoVoo.Pinado = (pinado == '1') ? '1' : '0';//Se for null, mostra 0
            
	        // define a imagem de pin/unpin da opcao
	        t.MasterPricer.trOpcaoVoo.imgPin = ((parseInt(pinado)==0) ? "'image/button_pin.gif'" : "'image/button_pin_ok.gif'");

        }
        
        if (filtrarOpcaoMP)
            continue;
        
        if (dataset.tables.Trechos.rows.count() == 1)
        {
            t.MasterPricer.trOpcaoVoo.DisplayVolta = 'none';
            t.MasterPricer.trOpcaoVoo.VooVolta = '<TD></TD>';
        }
        
        if (parseInt(pinado) == 0)
        {
            sResultado.append(t.MasterPricer.trOpcaoVoo.getHtml());
        }
        else
        {
            sResultadoPinados.append(t.MasterPricer.trOpcaoVoo.getHtml());
        }
        
        rowSpan = 0;
    }
    t.MasterPricer.tblResultadoBusca.LinhasPinadas = sResultadoPinados.toString();
    t.MasterPricer.tblResultadoBusca.Linhas = sResultado.toString();

    
    itVoos.dispose();
    itCias.dispose();
    itAeros.dispose();
    itOpcoesMP.dispose();
    itOpcoesVoo.dispose();           
    itOpcoesMPVoos.dispose();
    //itClasses.dispose();
    
    return [t.MasterPricer.tblResultadoBusca.getHtml(),countTotalResults,countFilterResults];
};

function montaPaginacao(qtdePaginas) {
//    var pagina = Aereo.MasterPricer.pageIndex;
//    var paginaInicial = pagina - 7;
//    if (paginaInicial  + 14 > qtdePaginas)
//    {
//        paginaInicial = qtdePaginas - 14;
//    }
//    if (paginaInicial < 1)
//    {
//        paginaInicial = 1;
//    }

//    var t = new Template("Aereo");
//    var sb = new StringBuilder();
//    var tplPag = t.MasterPricer.itemPaginacao;
//    // define os links de páginas anterior, próxima e por número
//    if (pagina > 1)
//    {
//        //Voltar ao inicio
//        tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina(1);';
//        tplPag.valor = '<<';
//        tplPag.classe = 'arrow';
//        sb.append(tplPag.getHtml());
//        //************************************************************//
//        //Volta uma pagina
//        tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina(Aereo.MasterPricer.pageIndex-1);';
//        tplPag.valor = '<';
//        tplPag.classe = 'arrow';
//        sb.append(tplPag.getHtml());
//        //**************************************************************//
//    }
//    tplPag.classe = '';
//    for (var p = paginaInicial - 1; p < (paginaInicial + 14) && p < qtdePaginas; p++)
//    { 
//        if (p != pagina - 1)
//        {
//            tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina('+ (p + 1) + ')';
//            tplPag.valor = (p + 1);
//            sb.append(tplPag.getHtml());
//        }
//        else
//        {
//            t.MasterPricer.itemPaginacaoAtual.valor = '<strong>' + (p + 1) + '</strong>';
//            sb.append(t.MasterPricer.itemPaginacaoAtual.getHtml());
//        }
//    }
//    if (pagina < qtdePaginas)
//    {
//         //Volta uma pagina
//        tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina(Aereo.MasterPricer.pageIndex+1);';
//        tplPag.valor = '>';
//        tplPag.classe = 'arrow';
//        sb.append(tplPag.getHtml());
//        //**************************************************************//
//       //Voltar ao inicio
//        tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina(Aereo.MasterPricer.qtdePag);';
//        tplPag.valor = '>>';
//        tplPag.classe = 'arrow';
//        sb.append(tplPag.getHtml());
//        //************************************************************//
//    }    
//    t.MasterPricer.paginacao.paginas = sb.toString();
//    return t.MasterPricer.paginacao.getHtml();
    var pagina = Aereo.MasterPricer.pageIndex;
    var paginaInicial = pagina/6;
    var t = new Template("Aereo");
    var sb = new StringBuilder();
    var tplPag = t.MasterPricer.itemPaginacao;
    
    paginaInicial = Math.floor(paginaInicial);
    paginaInicial = (paginaInicial * 6) + 1;
    
    if(paginaInicial >= qtdePaginas)
    {
        paginaInicial -= 6; 
    }
    
    if(paginaInicial == pagina && pagina != 1)
    {
        paginaInicial -= 6; 
    }
    
    if(paginaInicial > 1)
    {
        tplPag.classe = '';      
        tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina(1)';
        tplPag.valor = 1;
        sb.append(tplPag.getHtml());
        sb.append(' ... |');
    }    
    t.MasterPricer.paginacao.Pag = ""
    tplPag.classe = '';
    for (var p = paginaInicial - 1; p <(paginaInicial + 5) && p < qtdePaginas && p >= 0; p++)
    { 
        if (p != pagina - 1)
        {
            tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina('+ (p + 1) + ')';
            tplPag.valor = (p + 1);
            sb.append(tplPag.getHtml());
        }
        else
        {
            t.MasterPricer.itemPaginacaoAtual.valor = (p + 1);
            t.Disponibilidade.itemPaginacaoAtual.classe = 'selected'
            sb.append(t.MasterPricer.itemPaginacaoAtual.getHtml());
        }
        
        if((p+1) < qtdePaginas)
        {
            sb.append(' | ');
        }
        t.MasterPricer.paginacao.Pag = "PAG.";
    }
    
    if (((paginaInicial + 5) < qtdePaginas) && (paginaInicial>=0))
    {
        tplPag.classe = '';
        sb.append(' ... ');
        tplPag.clickPag = 'Aereo.MasterPricer.mudarPagina('+ qtdePaginas + ')';
        tplPag.valor = qtdePaginas;
        sb.append(tplPag.getHtml());
    }
    
    t.MasterPricer.paginacao.paginas = sb.toString();
    return t.MasterPricer.paginacao.getHtml();
};
function pegaQtdVoosOpcaoMP(itOpcoesMPVoos) {
    var itVoos;
    var itOpcoesVoo;
    var qtdVoos = 0;
    
    itOpcoesVoo = masterPricerDS.tables["OpcoesDeVoo"].getIterator('codOpcaoDeVoo');
    itVoos = masterPricerDS.tables["Voos"].getIterator('codOpcaoDeVoo');
    for(itOpcoesMPVoos.moveFirst(); itOpcoesMPVoos.hasNext(); itOpcoesMPVoos.moveNext())
    {
        itOpcoesVoo.findByKey(itOpcoesMPVoos.row.codOpcaoDeVoo);
    
        
        itVoos.findByKey(itOpcoesVoo.row.codOpcaoDeVoo);

        qtdVoos += itVoos.count();
    }
    itVoos.dispose();
    itOpcoesVoo.dispose();
    
    return qtdVoos;
};
function montaMelhorPrecoReduzidaMasterPricer(pagina) {
    var tpl = (new Template("Aereo")).MasterPricer.MelhorPreco;
    var tplExterno = tpl.externo;
    var tplInterno = tpl.interno;
    
    //var dtOpcao = masterPricerDS.tables["Cias"].copy();
    
    var dtOpcaoFloat = masterPricerDS.tables["Cias"].copy();
    var dtOpcao = masterPricerDS.tables["Cias"].copy();
    
    var sb = new StringBuilder();
    var count = ((pagina-1) * 4 +((pagina > 1 ? 1 : 0)) );
    var maxReg = 1;
    var existePaginacao = false;
    
    //Problema com o sort do NAJA
    //Esta usando o parseInt no lugar do parseFloat
    //Ficar atento para qualquer anomalia

    /*var parseIntOrig = parseInt;

    parseInt = function() {

        return parseFloat(arguments[0] * 100);

    };*/
            
     //debugger;    
     
     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;
     }
     
//     for(var j = 0; j < dtOpcao.rows.count(); j++)
//     {
//         dtOpcao.rows[j].menorPreco = dtOpcao.rows[j].menorPreco.formatNumber(2,true);
//     }
//     
     
     
    //Filtra as opcoes para ida e volta
    dtOpcao.sort(['menorPreco','companhia']);
    
    var arrayCias = new Array();
    
    for(var i=0;i<dtOpcao.rows.length;i++)
    {
        if(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)) {
                        //var precoInteiro = parseInt(dtOpcao.rows[i].menorPreco);
                        
                        //aqui
                        //var precoDecimal = dtOpcao.rows[i].menorPreco;
                        var precoDecimal = parseFloat(dtOpcao.rows[i].menorPreco).formatNumber(2,true);
                        var paradas =  dtOpcao.rows[i].numParadas;                          
                        var valor = getMoeda(dtOpcao.rows[i].moeda) + " " + precoDecimal;
                    
                        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++;
        }
    }
    
        // Depois volta ao normal
        //parseInt = parseIntOrig;
    
    if(maxReg > 5 || pagina>1)
        existePaginacao = true;
    
//    if(existePaginacao)
//       //tplExterno.Items = tpl.maisOpcoes.getHtml();
//    else
//        //tplExterno.Items = '';
    
    tplExterno.Items = sb.toString();
    return tplExterno.getHtml();
};
function montaDetalhes(codOpcaoVoo) {
    var tpl = new Template("Aereo");
    var itVoos, itMP, itEloMPVoos, itCias;
    var IdaVolta = 1;
    var sbVoos = new StringBuilder();
    var tplDetalhes = tpl.MasterPricer.tblDetalhes;
    var tplVoos = tpl.MasterPricer.trVoo;
    
    var somenteIda = masterPricerDS.tables.Trechos.rows.count() == 1;
    
    itEloMPVoos = masterPricerDS.tables.OpcoesMP_OpcoesDeVoo.getIterator('codOpcaoMP'); //Tabela de ligação de Opções MP com Voos
    itMP = masterPricerDS.tables.OpcoesMP.getIterator('codOpcaoMP');                    //Tabela de Opções de MP com datas, horários, durações e escalas
    itVoos = masterPricerDS.tables.Voos.getIterator('codOpcaoDeVoo');                   //Tabela de voos com nome, imagem de cias e nro dos voos
    itCias = masterPricerDS.tables.Cias.getIterator('companhia');
    
    itMP.findByKey(codOpcaoVoo);
    for (itMP.moveFirst(); itMP.hasNext(); itMP.moveNext()) {
        //var precoInteiro = parseInt(itMP.row.tarifaADT);
        //var precoDecimal = parseInt((itMP.row.tarifaADT - precoInteiro) * 100);

        var precoInteiro = parseFloat(itMP.row.tarifaADT).formatNumber(2,true);

        tplDetalhes.PrecoInteiro = precoInteiro;
        //tplDetalhes.PrecoDecimal = (precoDecimal < 10 ? '0'+ precoDecimal : precoDecimal);
        tplDetalhes.moeda = getMoeda(itMP.row.moeda);
    
    itEloMPVoos.findByKey(codOpcaoVoo);
    for(itEloMPVoos.moveFirst(); itEloMPVoos.hasNext(); itEloMPVoos.moveNext()) {

        itVoos.findByKey(itEloMPVoos.row.codOpcaoDeVoo);
        for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext()) {
            if(somenteIda) IdaVolta = 0;
            else IdaVolta = (IdaVolta==1) ? 0 : 1;
            
            voo = itVoos.row;
            if (IdaVolta==0) {
                tplDetalhes.Cabine = pegaNomeCabine(voo.cabine);
                tplDetalhes.Equipamento = voo.equipamento;
                //tplDetalhes.ThumbCia = voo.imagemCia;
                itCias.findByKey(itMP.row.ciaPrincipal);
                if (itCias.row != null) {
                    var imagemCia='';
                    if (itCias.row.imagem!=null && itCias.row.imagem!='') imagemCia = itCias.row.imagem;
                    else imagemCia = itVoos.row.nomeCia.trim();
                    tplDetalhes.ThumbCia = imagemCia;
                }
                tplDetalhes.CodOpcaoDeVoo = codOpcaoVoo;
            }
            
            //debugger; 
            
            tplVoos.NumeroVoo = voo.numero;
            tplVoos.Cia = voo.nomeCia.trim();
            tplVoos.DataSaida = voo.dataHoraSaida.toString('dd/MM/yyyy');
            tplVoos.HoraSaida = voo.dataHoraSaida.toString('HH') + 'h' + voo.dataHoraSaida.toString('mm');
            tplVoos.AeroportoOrigem = voo.aeroportoOrigem;
            tplVoos.CidadeOrigem = voo.cidadeOrigem;
            tplVoos.Origem = voo.origem;
            tplVoos.AeroportoDestino = voo.aeroportoDestino;
            tplVoos.CidadeDestino = voo.cidadeDestino;
            tplVoos.Destino = voo.destino;
            tplVoos.DataChegada = voo.dataHoraChegada.toString('dd/MM/yyyy');
            tplVoos.HoraChegada = voo.dataHoraChegada.toString('HH') + 'h' + voo.dataHoraChegada.toString('mm');
            
            sbVoos.append(tplVoos.getHtml());
        }
        
        tplDetalhes.Detalhes = sbVoos.toString();
    
    }
    }
    itVoos.dispose();
    itMP.dispose();
    itEloMPVoos.dispose();
    return tplDetalhes.getHtml();
};

function marcaSelecaoOpcaoVoo(codTrecho, codOpcaoDeVoo)
{
    var itOpcaoVoo = masterPricerDS.tables['OpcoesMP'].getIterator('escolha');
    itOpcaoVoo.findByKey(true);
    for(itOpcaoVoo.moveFirst(); itOpcaoVoo.hasNext(); itOpcaoVoo.moveNext())
    {
        itOpcaoVoo.row.escolha = false;
    }
    itOpcaoVoo.dispose();
    
    itOpcaoVoo = masterPricerDS.tables['OpcoesMP'].getIterator('codOpcaoMP');
    itOpcaoVoo.findByKey(codOpcaoDeVoo);
    for(itOpcaoVoo.moveFirst(); itOpcaoVoo.hasNext(); itOpcaoVoo.moveNext())
    {
        itOpcaoVoo.row.escolha = true;
    }
    itOpcaoVoo.dispose();
    
    return montaSelecaoVoosMP();
    
};

function desmarcaSelecaoOpcaoVoo(codTrecho)
{
    var itOpcaoVoo = masterPricerDS.tables['OpcoesMP'].getIterator('escolha');
    itOpcaoVoo.findByKey(true);
    for(itOpcaoVoo.moveFirst(); itOpcaoVoo.hasNext(); itOpcaoVoo.moveNext())
    {
        itOpcaoVoo.row.escolha = false;
    }
    itOpcaoVoo.dispose();
    montaSelecaoVoosMP();
    
    //return montaSelecaoVoosMP();
    var t = new Template("Aereo");
    return t.MasterPricer.voosSelecionados.getHtml();
    
};

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 = 
        
        itOpcoesVoo = masterPricerDS.tables["OpcoesMP"].getIterator('codOpcaoMP');
        itOpcoesVoo.findByKey(codOpcaoVoo);
        for(itOpcoesVoo.moveFirst(); itOpcoesVoo.hasNext(); itOpcoesVoo.moveNext())
        {
            itOpcoesVoo.row.escolha = false;
            itOpcoesVoo.row.filtrosAplicados++;
        }
        itOpcoesVoo.dispose();
        
};

function montaSelecaoVoosMP()
{
    //
    // Variaveis
    //
    var opcaoVoo;
    var opcaoMP;
    var voo;
    var itClasse;
    var t;
    var rowSpan;
    var itVoos;
    var itOpcoesVoo;
    var itOpcoesMPVoos;
    var itOpcoesMP;
    var classeVooSelecionado = 'voo2';
    var primeiroVoo;
    var inseriuOpcao = false;
    var sOpcoesVoo = new StringBuilder();
    var sDetalhesVoo = new StringBuilder();

    //
    // Carregando os templates
    //
    t = new Template("Aereo");
    t.Cesta.MasterPricer.divVoosSelecionados.Linhas = "";

    //debugger; 
    
    itOpcoesMP = masterPricerDS.tables["OpcoesMP"].getIterator('escolha');
    itOpcoesMPVoos = masterPricerDS.tables["OpcoesMP_OpcoesDeVoo"].getIterator('codOpcaoMP');
    itOpcoesVoo = masterPricerDS.tables["OpcoesDeVoo"].getIterator('codOpcaoDeVoo');
    itVoos = masterPricerDS.tables["Voos"].getIterator('codOpcaoDeVoo');
    itClasses = masterPricerDS.tables["ClassesDeReserva"].getIterator('codVoo');
    itCias = masterPricerDS.tables.Cias.getIterator('companhia');
    t.Cesta.MasterPricer.divOpcaoVooSelecionado.opcaoVooVolta = '';
    itOpcoesMP.findByKey(true);
    for(itOpcoesMP.moveFirst(); itOpcoesMP.hasNext(); itOpcoesMP.moveNext()) {
        inseriuOpcao = true;
        primeiroVoo = true;
        
        var somenteIda = masterPricerDS.tables.Trechos.rows.count() == 1;
        
        itOpcoesMPVoos.findByKey(itOpcoesMP.row.codOpcaoMP);
        
        rowSpan = pegaQtdVoosOpcaoMP(itOpcoesMPVoos);
        
        opcaoIdaVolta = 1;
        
        opcaoMP = itOpcoesMP.row;
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.DataSaidaIda = opcaoMP.dataSaidaIda.toString('dd/MM/yy');
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.iataOrigemIda = opcaoMP.iataOrigemIda;
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.HoraSaidaIda = opcaoMP.dataSaidaIda.toString('HH:mm');
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.iataDestinoIda = opcaoMP.iataDestinoIda;
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.HoraChegadaIda = opcaoMP.dataChegadaIda.toString('HH:mm');
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.EscalasIda = opcaoMP.numParadasIda + ' Paradas';
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.DuracaoIda = formatTime(opcaoMP.duracaoIda);
        
        if (!somenteIda) {
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.display = '';
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.DataSaidaVolta = opcaoMP.dataSaidaVolta.toString('dd/MM/yy');
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.iataOrigemVolta = opcaoMP.iataOrigemVolta;
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.HoraSaidaVolta = opcaoMP.dataSaidaVolta.toString('HH:mm');
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.iataDestinoVolta = opcaoMP.iataDestinoVolta;
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.HoraChegadaVolta = opcaoMP.dataChegadaVolta.toString('HH:mm');
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.EscalasVolta = opcaoMP.numParadasVolta + ' Paradas';
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.DuracaoVolta = formatTime(opcaoMP.duracaoVolta);
        } else {
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.display = "style='display: none;'"
        }            
        
        trecho = masterPricerDS.tables['Trechos'].rows[0];
        t.Cesta.MasterPricer.divOpcaoVooSelecionado.CodTrecho = trecho.codTrecho;
        
        
        
        
        for(itOpcoesMPVoos.moveFirst(); itOpcoesMPVoos.hasNext(); itOpcoesMPVoos.moveNext()) {

            itOpcoesVoo.findByKey(itOpcoesMPVoos.row.codOpcaoDeVoo);
            opcaoVoo = itOpcoesVoo.row;
            
            itVoos.findByKey(opcaoVoo.codOpcaoDeVoo);
            
             t.Cesta.MasterPricer.divOpcaoVooSelecionado.opcaoVooIda = '';
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.opcaoVooVolta = t.Cesta.MasterPricer.divComprar.getHtml();
            
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.codOpcaoVoo = opcaoVoo.codOpcaoDeVoo;
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.Detalhes = "";
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.IdaVolta = "VÔO";
            //debugger;                
            // Exibe o logo da cia e o número do primeiro vôo de origem (resumo dos trechos)
            if (itOpcoesMPVoos.isFirst())
            {
                t.Cesta.MasterPricer.divOpcaoVooSelecionado.ThumbCia = itVoos.row.imagemCia;        
                t.Cesta.MasterPricer.divOpcaoVooSelecionado.NumeroVoo = itVoos.row.numero;
            }
            
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.Cabine = escreveNomeCabine(itVoos.row.cabine);
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.Equipamento = itVoos.row.equipamento;
            

            //var precoInteiro = parseInt(opcaoMP.tarifaADT);
            //var precoInteiro = opcaoMP.tarifaADT ;
            //var precoDecimal = parseInt((opcaoMP.tarifaADT - precoInteiro) * 100);
            
            //t.Cesta.MasterPricer.divOpcaoVooSelecionado.PrecoInteiro = precoInteiro;
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.PrecoInteiro = parseFloat(opcaoMP.tarifaADT).formatNumber(2,true);
            
            //t.Cesta.MasterPricer.divOpcaoVooSelecionado.PrecoDecimal = (precoDecimal < 10 ? '0' + precoDecimal : precoDecimal);
            t.Cesta.MasterPricer.divOpcaoVooSelecionado.moeda = getMoeda(opcaoMP.moeda);

            
             
            for(itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext()) {
                if (itVoos.row != null) {
                    voo = itVoos.row;
                        t.Cesta.MasterPricer.trVooSelecionado.NumeroVoo = voo.numero;
                        t.Cesta.MasterPricer.trVooSelecionado.DataSaida = voo.dataHoraSaida.toString('dd/MM/yy');
                        t.Cesta.MasterPricer.trVooSelecionado.DataChegada = voo.dataHoraChegada.toString('dd/MM/yy');
                        t.Cesta.MasterPricer.trVooSelecionado.HoraSaida = voo.dataHoraSaida.toString('HH:mm');
                        t.Cesta.MasterPricer.trVooSelecionado.HoraChegada = voo.dataHoraChegada.toString('HH:mm');
                        t.Cesta.MasterPricer.trVooSelecionado.AeroportoOrigem = voo.aeroportoOrigem;
                        t.Cesta.MasterPricer.trVooSelecionado.AeroportoDestino = voo.aeroportoDestino;
                        t.Cesta.MasterPricer.trVooSelecionado.Origem = voo.origem;
                        t.Cesta.MasterPricer.trVooSelecionado.Destino = voo.destino;

                        //debugger;                        
                        
                        t.Cesta.MasterPricer.trVooSelecionado.CidadeOrigem = voo.cidadeOrigem;
                        t.Cesta.MasterPricer.trVooSelecionado.CidadeDestino = voo.cidadeDestino;
                        t.Cesta.MasterPricer.trVooSelecionado.Cia = voo.nomeCia.trim();
                        
                        sDetalhesVoo.append(t.Cesta.MasterPricer.trVooSelecionado.getHtml());
                }                
            }
            
        }


        t.Cesta.MasterPricer.divOpcaoVooSelecionado.Detalhes = sDetalhesVoo.toString();
        sOpcoesVoo.append(t.Cesta.MasterPricer.divOpcaoVooSelecionado.getHtml());
    }
    itCias.dispose();
    itClasses.dispose();
    itVoos.dispose();
    itOpcoesVoo.dispose();
    itOpcoesMPVoos.dispose(); 
    itOpcoesMP.dispose();
    
    t.Cesta.MasterPricer.divVoosSelecionados.Linhas = sOpcoesVoo.toString();
    return t.Cesta.MasterPricer.divVoosSelecionados.getHtml();
};

function confirmarVoosEscolhidosMP(isMP)
{
    var filteredDS = pegaDadosTarifada(true); 

    MasterPricer.FiltrarMasterPricerDS(filteredDS, confirmarVoosEscolhidosMP_callback);
}

function confirmarVoosEscolhidosMP_callback(res)
{
    if(res.error == null)
    {
        if(res.value != null)
        {
        
            if(res.value == false)
            {
                alert('Erro ao tentar pegar os dados para Tarifar MP: 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);
    }
}
