
var SEM_ORDEM = 0;          //
var ORDEM_CRESCENTE = 1;    // Tipos de ordenacao    
var ORDEM_DECRESCENTE = 2;  //

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                              VARIAVEIS E METODOS DO AEREO COMUNS A DIVERSAS PAGINAS
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var htOrdenacaoAirAvail = new Hashtable();  // estrutura para controle de ordenacao da disponibilidade
var htOrdenacaoMP = new Hashtable(); // estrutura para controle de ordenacao da disponibilidade

// comeco ordenado pelo preco rt crescente
htOrdenacaoAirAvail.add('cias', SEM_ORDEM);
htOrdenacaoAirAvail.add('escalas', SEM_ORDEM);
htOrdenacaoAirAvail.add('precoOW', SEM_ORDEM);
htOrdenacaoAirAvail.add('precoRT', SEM_ORDEM);
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);
//filtros
htOrdenacaoAirAvail.add('preco', SEM_ORDEM);
htOrdenacaoAirAvail.add('duracao', SEM_ORDEM);
htOrdenacaoAirAvail.add('dataSaida', SEM_ORDEM);
htOrdenacaoAirAvail.add('dataChegada', SEM_ORDEM);
//=====================================================================

function getDataTableTrecho(numTrecho)
{
    if (numTrecho==1){
        return "OpcoesDeVoo";
    }else{
        return "OpcoesDeVooVolta";
    }
}

function getMoeda(moeda)
{
    switch (moeda)
    {
        case "BRL":
            return "R$";
        case "USD":
            return "US$";
        default:
            return moeda;
    }
}

//Implementacao de sort por duas ou mais coluas
System.Data.DataTable.prototype.sortByColunas = function()
{
    var colunas = arguments;
    var i, j, index, indexobj;
    if(this.__isSort && this.__ultColuna == colunas[0]) {
        for(c=colunas.length-1; c>=0;c--)
        {
            for (i = 1; i < this.rows.length; ++i) {
	            index = this.rows[i];
	            for (j = i; j > 0 && this.rows[j-1][colunas[c]] < index[colunas[c]]; j--)
		            this.rows[j] = this.rows[j-1];
	            this.rows[j] = index;
             }
         }
        this.__isSort=false;
    } else {
        for(c=colunas.length-1; c>=0;c--)
        {
            for (i = 1; i < this.rows.length; ++i) {
	            index = this.rows[i];
	            for (j = i; j > 0 && this.rows[j-1][colunas[c]] > index[colunas[c]]; j--)
		            this.rows[j] = this.rows[j-1];
	            this.rows[j] = index;
             }
         }
        this.__isSort=true;
    }  
    this.__ultColuna = colunas[0];
};

function formatTime(time)
{
    var hour = Math.floor(time);
    var minutes = Math.floor((time-hour)*60).toString();
    return ''+hour+':'+((minutes.length == 2)?minutes:"0"+minutes);
};

function ExibeAguardeComThread(runFunction)
{
    //Exibe aguarde
//    AguardeOnResize();
    $('divFilterLoading').style.display = 'block';
    $('idContainer').className = 'container noSelect';
    
//    
    if(document.selection)
        document.selection.clear();  

    var thread = new Thread();
    thread.run = runFunction;
    thread.destructor = function(){ $('divFilterLoading').style.display = 'none'; $('idContainer').className = 'container';  };
    thread.start();
};

var ThreadSettings = new Object();
ThreadSettings.queue = new Array();
ThreadSettings.delay = 1000;
ThreadSettings.launch = 10;

ThreadSettings.addThread = function(thread)
{
    var index = ThreadSettings.queue.length;
    ThreadSettings.queue[index] = thread;
    return index;
};

ThreadSettings.run = function()
{
    if(ThreadSettings.queue.length < 500)
    {
        /* executa os processos */
        for(var i=0; i < ThreadSettings.queue.length; i++)
        {
            /* verifica se a thread não foi removida ou esta dormindo */
            /* alert(i+" >> "+ThreadSettings.queue[i].sleepTime); */
            if(ThreadSettings.queue[i] != null)
            {
                if(ThreadSettings.queue[i].sleepTime <= 0)
                {
                    setTimeout("ThreadSettings.queue["+i+"].background()",ThreadSettings.launch);
                }
                else
                {
                    /* alert(ThreadSettings.queue[i].sleepTime); */
                    ThreadSettings.queue[i].sleepTime -= ThreadSettings.delay;
                }
            }
        }
    }
    else
    {
        /* executa garbade collector */
        var clearQueue = new Array();
        for(var i=0; i < ThreadSettings.queue.length; i++)
        {
            if(ThreadSettings.queue[i] != null)
            {
                clearQueue[i] = ThreadSettings.queue[i];
            }
        }
        ThreadSettings.queue[i] = clearQueue;
    }
    setTimeout("ThreadSettings.run()",ThreadSettings.delay);
};

ThreadSettings.remove = function(index)
{
    /* remove a Thread */
    ThreadSettings.queue[index] = null;
};

ThreadSettings.sleep = function(index,time)
{
    /* sleep */
    ThreadSettings.queue[index].sleepTime = time;
};

ThreadSettings.run();

Thread = function()
{
    this.runnning = false;
    this.retValue = false;
    
    this.index = 0;
    this.sleepTime = 0;
    this.start = function() 
    {
        this.index = ThreadSettings.addThread(this);
    };
    this.background = function()
    {
        if (this.runnning == false)
        {
            this.runnning = true;
            
            retValue = this.run();
        }
        
        if (retValue == true)
        {
            this.end();
        }
        else
        {
            this.start();
        }
    } ;
    this.run = function() {};
    this.end = function() 
    {
        this.destructor();ThreadSettings.remove(this.index);
    };
    this.destructor = function() {};
    this.sleep = function(time) 
    {
        ThreadSettings.sleep(this.index,time);
    };
};

function ExibeAguarde()
{
//    AguardeOnResize();
//    $('divLoading').className = 'showLoad';
};

function CancelaAguarde()
{
    //$('divLoading').className = 'hideLoad';
};

function selOrdenar()
{
    //debugger;
    var indexSep = $('sltOrdenar').options[$('sltOrdenar').selectedIndex].value.indexOf(',');
    var length = $('sltOrdenar').options[$('sltOrdenar').selectedIndex].value.length;
    var campo1 = $('sltOrdenar').options[$('sltOrdenar').selectedIndex].value.substring(0,indexSep);
    var campo2 = $('sltOrdenar').options[$('sltOrdenar').selectedIndex].value.substring(indexSep + 1,length);
    if (Aereo.LayoutGeral.isMasterPricer) Aereo.MasterPricer.ordenaVoo(campo1,campo2);
    else Aereo.Disponibilidade.ordenaVoo(campo1,campo2);
};

function pegaNomeCabine(codCabine)
{
    switch(codCabine)
    {
        case "F":
            return "Primeira";
        case "C":
            return "Executiva";
        default:
            return "Econ&ocirc;mica";
    }
};

function escreveNomeCabine(sigla)
{
    switch(sigla)
    {
        default:
        case 'Y':
            return 'Econ&ocirc;mica';
        case 'C':
            return 'Executiva';
        case 'F':
            return 'Primeira classe';
    }
};

function pegaDadosTarifada(isMP)
{
    var newDS;
    if(isMP)
        newDS = copyFilteredMasterPricerDS();
    else
        newDS = copyFilteredAvailDS();
        
     return newDS;
    
};

function copyFilteredMasterPricerDS()
{
    
    var itOpcaoVoos;
    var itOpcaoMP;
    var itOpcaoMPVoo;
    var itVoos;
    var itClasses;
    var newDS = new DataSet();
    newDS = masterPricerDS.clone();

    tiraOrdenacaoMasterPricerDS();

    itOpcaoMP = masterPricerDS.tables["OpcoesMP"].getIterator("escolha");
    itOpcaoMPVoo = masterPricerDS.tables["OpcoesMP_OpcoesDeVoo"].getIterator("codOpcaoMP");
    itOpcaoVoos = masterPricerDS.tables["OpcoesDeVoo"].getIterator("codOpcaoDeVoo");
    itVoos = masterPricerDS.tables["Voos"].getIterator("codOpcaoDeVoo");
    itClasses = masterPricerDS.tables["ClassesDeReserva"].getIterator("codVoo");
    
    // trechos
    for(var i=0; i<masterPricerDS.tables["Trechos"].rows.length; i++)
    {
        newDS.tables["Trechos"].addRow(masterPricerDS.tables["Trechos"].rows[i]);
    }
    
    itOpcaoMP.findByKey(true);
    for( itOpcaoMP.moveFirst(); itOpcaoMP.hasNext(); itOpcaoMP.moveNext() )
    {
        newDS.tables["OpcoesMP"].addRow(itOpcaoMP.row);
        
        itOpcaoMPVoo.findByKey(itOpcaoMP.row.codOpcaoMP);
        for( itOpcaoMPVoo.moveFirst(); itOpcaoMPVoo.hasNext(); itOpcaoMPVoo.moveNext() )
        {
            newDS.tables["OpcoesMP_OpcoesDeVoo"].addRow(itOpcaoMPVoo.row);
            
            itOpcaoVoos.findByKey(itOpcaoMPVoo.row.codOpcaoDeVoo);
            newDS.tables["OpcoesDeVoo"].addRow(itOpcaoVoos.row);
            
            itVoos.findByKey(itOpcaoVoos.row.codOpcaoDeVoo);
            for( itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext() )
            {
                newDS.tables["Voos"].addRow(itVoos.row);

                itClasses.findByKey( itVoos.row.codVoo );

                newDS.tables["ClassesDeReserva"].addRow(itClasses.row);
            }
        }    
    }

    itClasses.dispose();
    itOpcaoMPVoo.dispose();    
    itVoos.dispose();
    itOpcaoVoos.dispose();
    itOpcaoMP.dispose();

    reordenaMasterPricerDS();

    return newDS;
};

function copyFilteredAvailDS()
{
//debugger;
    var itOpcaoVoos;
    var itOpcaoVoos_Tarifas;
    var itTarifas;
    var itVoos;
    var itClasses;
    
    var newDS = new DataSet();
    newDS = availDS.clone();

    for(var i=0; i<availDS.tables["Trechos"].rows.length; i++)
    {
        // trechos
        newDS.tables["Trechos"].addRow(availDS.tables["Trechos"].rows[i]);
        
        var codTrecho = availDS.tables["Trechos"].rows[i].codTrecho;
        tiraOrdenacaoAvailDS(codTrecho);
        
        itOpcaoVoos = availDS.tables[getDataTableTrecho(codTrecho)].getIterator("escolha");
        
        itOpcaoVoos_Tarifas = availDS.tables["OpcoesDeVoos_Tarifas"].getIterator("codOpcaoDeVoo");
        itTarifas = availDS.tables["Tarifas"].getIterator("codTarifa");
        
        itVoos = availDS.tables["Voos"].getIterator("codOpcaoDeVoo");
        itClasses = availDS.tables["ClassesDeReserva"].getIterator("codVoo");
        
        itOpcaoVoos.findByKey(true);
        for( itOpcaoVoos.moveFirst(); itOpcaoVoos.hasNext(); itOpcaoVoos.moveNext() )
        {
            // opções de vôos
            newDS.tables[getDataTableTrecho(codTrecho)].addRow(itOpcaoVoos.row);

            // tarifas
            itOpcaoVoos_Tarifas.findByKey( itOpcaoVoos.row.codOpcaoDeVoo );
            for( itOpcaoVoos_Tarifas.moveFirst(); itOpcaoVoos_Tarifas.hasNext(); itOpcaoVoos_Tarifas.moveNext() )
            {
                newDS.tables["OpcoesDeVoos_Tarifas"].addRow(itOpcaoVoos_Tarifas.row);    
                
                itTarifas.findByKey( itOpcaoVoos_Tarifas.row.codTarifa );
                for( itTarifas.moveFirst(); itTarifas.hasNext(); itTarifas.moveNext() )
                {
                    newDS.tables["Tarifas"].addRow(itTarifas.row);    
                }
            }
            
            // vôos
            itVoos.findByKey( itOpcaoVoos.row.codOpcaoDeVoo );
            for( itVoos.moveFirst(); itVoos.hasNext(); itVoos.moveNext() )
            {
                newDS.tables["Voos"].addRow(itVoos.row);
                
                // classes de vôos
                itClasses.findByKey( itVoos.row.codVoo );
                for( itClasses.moveFirst(); itClasses.hasNext(); itClasses.moveNext() )
                {
                    if(itClasses.row.escolha)
                    {
                        newDS.tables["ClassesDeReserva"].addRow(itClasses.row);
                        break;
                    }
                }
            }
        }
        itVoos.dispose();
        itClasses.dispose();
        itTarifas.dispose();
        itOpcaoVoos_Tarifas.dispose();
        itOpcaoVoos.dispose();

        reordenaAvailDS();
    }
    
    return newDS;
};

function tiraOrdenacaoAvailDS(numTrecho)
{
    availDS.tables[getDataTableTrecho(numTrecho)].sort('codOpcaoDeVoo');
};

function reordenaAvailDS()
{
    var numeroOrdenacoes;
    var colunaOrdenacao;

    if(htOrdenacaoAirAvail.getValue('cias') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'cias';
    }
    else if(htOrdenacaoAirAvail.getValue('cias') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'cias';
    }
    else if(htOrdenacaoAirAvail.getValue('escalas') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'escalas';
    }
    else if(htOrdenacaoAirAvail.getValue('escalas') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'escalas';
    }
    else if(htOrdenacaoAirAvail.getValue('precoOW') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'precoOW';
    }
    else if(htOrdenacaoAirAvail.getValue('precoOW') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'precoOW';
    }
    else if(htOrdenacaoAirAvail.getValue('precoRT') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'precoRT';
    }
    else if(htOrdenacaoAirAvail.getValue('precoRT') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'precoRT';    
    }else if(htOrdenacaoAirAvail.getValue('preco') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'preco';
    }
    else if(htOrdenacaoAirAvail.getValue('preco') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'preco';
    }else if(htOrdenacaoAirAvail.getValue('duracao') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'duracao';
    }
    else if(htOrdenacaoAirAvail.getValue('duracao') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'duracao';
    }else if(htOrdenacaoAirAvail.getValue('dataSaida') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'dataSaida';
    }
    else if(htOrdenacaoAirAvail.getValue('dataSaida') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'dataSaida';
    }else if(htOrdenacaoAirAvail.getValue('dataChegada') == ORDEM_CRESCENTE)
    {
        numeroOrdenacoes = 1;
        colunaOrdenacao = 'dataChegada';
    }
    else if(htOrdenacaoAirAvail.getValue('dataChegada') == ORDEM_DECRESCENTE)
    {
        numeroOrdenacoes = 2;
        colunaOrdenacao = 'dataChegada';
    }
     
    for(var i=0; i<numeroOrdenacoes; i++)
        availDS.tables['OpcoesDeVoo'].sort(colunaOrdenacao);
};

function tiraOrdenacaoMasterPricerDS()
{
    masterPricerDS.tables["OpcoesMP"].sort('codOpcaoMP');
};

function reordenaMasterPricerDS()
{
    var tipoOrdenacao;
    var colunaOrdenacao;

    if(htOrdenacaoMP.getValue('cias') == ORDEM_CRESCENTE)
    {
        tipoOrdenacao = false;
        colunaOrdenacao = 'cias';
    }
    else if(htOrdenacaoMP.getValue('cias') == ORDEM_DECRESCENTE)
    {
        tipoOrdenacao = true;
        colunaOrdenacao = 'cias';
    }
    else if(htOrdenacaoMP.getValue('tarifaADT') == ORDEM_CRESCENTE)
    {
        tipoOrdenacao = false;
        colunaOrdenacao = 'tarifaADT';
    }
    else if(htOrdenacaoMP.getValue('tarifaADT') == ORDEM_DECRESCENTE)
    {
        tipoOrdenacao = true;
        colunaOrdenacao = 'tarifaADT';
    }
    else if(htOrdenacaoMP.getValue('duracaoIda') == ORDEM_CRESCENTE)
    {
        tipoOrdenacao = false;
        colunaOrdenacao = 'duracaoIda';
    }
    else if(htOrdenacaoMP.getValue('duracaoIda') == ORDEM_DECRESCENTE)
    {
        tipoOrdenacao = true;
        colunaOrdenacao = 'duracaoIda';
    }
    else if(htOrdenacaoMP.getValue('dataSaidaIda') == ORDEM_CRESCENTE)
    {
        tipoOrdenacao = false;
        colunaOrdenacao = 'dataSaidaIda';
    }
    else if(htOrdenacaoMP.getValue('dataSaidaIda') == ORDEM_DECRESCENTE)
    {
        tipoOrdenacao = true;
        colunaOrdenacao = 'dataSaidaIda';    
    }else if(htOrdenacaoMP.getValue('dataChegadaVolta') == ORDEM_CRESCENTE)
    {
        tipoOrdenacao = false;
        colunaOrdenacao = 'dataChegadaVolta';
    }
    else if(htOrdenacaoMP.getValue('dataChegadaVolta') == ORDEM_DECRESCENTE)
    {
        tipoOrdenacao = true;
        colunaOrdenacao = 'dataChegadaVolta';
    }else
    {
        tipoOrdenacao = true;
        colunaOrdenacao = 'codOpcaoMP';
    }
     
    //for(var i=0; i<tipoOrdenacao; i++)
    masterPricerDS.tables['OpcoesDeVoo'].sort(colunaOrdenacao, tipoOrdenacao);
};

// Rosimeire - 2009-05-27
function BoxMensagem(Mensagem, divTransparenteId, divMensagemId)
{
    document.getElementById(divTransparenteId).style.display = '';

    dialog(Mensagem, divMensagemId);
};

// incluido a pedido do Victor rapi10
// by Leandro Lopes
function escondertelefone() {

 document.getElementById("telefoneSaoPaulo").style.display="none";

 document.getElementById("telefoneSalvador").style.display="none";

 document.getElementById("telefoneBrasilia").style.display="none";

};

function mostrartelefone(value) { 

 escondertelefone();

 document.getElementById(value).style.display="inline";

};