﻿// JScript File

/*******************************************************************************************************************************/
var tabs = new Array();
//var renderInicializado = false;
//var tabsCount = 0;
//var tabSelecionado = 1;
//var tabSelecionadoSpecial = "";
var tabList = new TabList();		/* collection que controla as tabs */
//var scrollingAmount = 100;			/* quantidade de pixels que a scroller vai andar a cada clique no voltar/avancar */
//var currentPanel = 0;				/* variavel que armazena o painel atual que esta aberto */
//var cellWidth = 130;				/* tamanho de cada tab */ 
//var softScrolling = true;			/* se as tabs vao rolar suavemente ou nao */
//var objDSTabs = new Array();
//var objTipoBuscaTabs = new Array();
//var tipoBuscaResultados = 0;

/* MODOS DE TAB */
var BUSCA = 0;
var RESULTADO = 1;

/* TIPOS DE BUSCA */
var AEREO = 0;
var CRUZEIROS = 1;
var HOTEIS = 2;
var PACOTES = 3;

/*******************************************************************************************************************************/

// id: id do tab
// name: nome (identificação textual) do tab
// type: tipo de busca (aéreo, cruzeiros etc.)
// mode: modo do tab (busca ou resultado)
// dataSet: dados (no modo resultado) ou null (no modo busca)
// context: DataTable com o contexto (variáveis) do tab
// renderMethod: método para renderizar o tab
// saveContextMethod: método para salvar o contexto do tab quando este deixar de ser exibido
function Tab (id, name, type, mode, dataSet, context, renderMethod, saveContextMethod)
{
    this.id = id;
    this.name = name;
    this.type = type;
    this.mode = mode;
    this.dataSet = dataSet;
    this.context = context;
    this.renderMethod = renderMethod;
    this.saveContextMethod = saveContextMethod;
    
    this.tableCellId = "";   
    this.ativo = true;
    
    // rendered: define se o tab é o tab renderizado (verdadeiro ou falso)
    this.rendered = false;
}

function getTabType(id)
{
    var type = -1;
    var tab = tabList.getTabById(id);
    if (tab != null)
    {
        type = tab.type;
    }
    return type;
}

function getTabDataSet(id)
{
    var dataSet = null;
    var tab = tabList.getTabById(id);
    if (tab != null)
    {
        dataSet = tab.dataSet;
    }
    return dataSet;
}

function setTabDataSet(id, dataSet)
{
    var tab = tabList.getTabById(id);
    if (tab != null)
    {
        tab.dataSet = dataSet;
    }
}

function getTabContext(id)
{
    var context = null;
    var tab = tabList.getTabById(id);
    if (tab != null)
    {
        context = tab.context;
    }
    return context;
}

function setTabContext(id, context)
{
    var tab = tabList.getTabById(id);
    if (tab != null)
    {
        tab.context = context;
    }
}

function TabList ()
{
   this.tabs = new Array();

   this.count = function()
    {
        return tabs.length;
    };
    
    this.countAtivo = function()
    {
        var totalAtivo=0;
        for (var i = 0; i < tabs.length; i++)
        {        
            if (tabs[i].ativo)
            {     
               totalAtivo++;
            }
        }   
        return totalAtivo; 
    };
    
    this.firstAtivo = function()
    {
        var totalAtivo=0;
        for (var i = 0; i < tabs.length; i++)
        {        
            if (tabs[i].ativo)
            {     
               return tabs[i].id;
            }
        }   
    };
    
    this.item = function(i)
    {
        return tabs[i];
    };

    this.add = function (tab)
    {
        tabs.push(tab);    
    };

    this.remove = function (id)
    {
        for (var i = 0; i < tabs.length; i++)
        {        
            if (tabs[i].id == id)
            {     
                tabs.splice(i, 1);
                break;
            }
        }
    };

    this.edit = function (id, tab)
    {
        for (var i = 0; i < tabs.length; i++)
        {        
            if (tabs[i].id == id)
            {     
                tabs[i] = tab;
                break;
            }
        }
    };

    this.getNextTabId = function() 
    {
        if (tabs.length == 0)
        {
            return 1;
        }
        else
        {
            return tabs[tabs.length - 1].id + 1;
        }
    };

    this.getTabIndex = function (id)
    {
        var tabIndex = -1;
        for (var i = 0; i < tabs.length; i++)
        {        
            if (tabs[i].id == id)
            {     
                tabIndex = i;
            }
        }
        return tabIndex;
    };
    
    this.getTabById = function (id)
    {
        for (var i = 0; i < tabs.length; i++)
        {        
            if (tabs[i].id == id)
            {     
                return tabs[i];
            }
        }
    };
    
    // retorna o tab anterior (se houver) de mesmo tipo que o tab com a id informada
    this.getPreviousTabByType = function (id)
    {
        var previousTab = null;
	    for (var i = this.getTabIndex(id) - 1; i >= 0 && i < tabs.length; i--)
	    {				
		    if (tabs[i].ativo && tabs[i].type == getTabType(id))
		    {
	            previousTab = tabs[i];
	            break;
	        }
	    }
        return previousTab;
    };

    // retorna o próximo tab (se houver) de mesmo tipo que o tab com a id informada
    this.getNextTabByType = function (id)
    {
        var nextTab = null;
	    for (var i = this.getTabIndex(id) + 1; i < tabs.length; i++)
	    {				
		    if (tabs[i].ativo && tabs[i].type == getTabType(id))
		    {
	            nextTab = tabs[i];
	            break;
	        }
	    }
        return nextTab;
    };

    // retorna o 1º tab do modo informado para o tipo informado
    this.getTabByMode = function (type, mode)
    {
        var tab = null;
	    for (var i = tabs.length - 1; i >= 0; i--)
	    {				
		    if (tabs[i].ativo && tabs[i].type == type && tabs[i].mode == mode)
		    {
	            tab = tabs[i];
	            break;
	        }
	    }
        return tab;
    };

    // retorna o 1º tab com o nome informado para o tipo informado
    this.getTabByName = function (type, name)
    {
        var tab = null;
	    for (var i = 0; i < tabs.length; i++)
	    {				
		    if (tabs[i].ativo && tabs[i].type == type && tabs[i].name == name)
		    {
	            tab = tabs[i];
	            break;
	        }
	    }
        return tab;
    };
    
    // retorna o tab que está renderizado 
    this.getRenderedTab = function ()
    {
        var tab = null;
        for (var i = tabs.length - 1; i >= 0; i--)
	    {				
		    if (tabs[i].ativo && tabs[i].rendered == true)
		    {
	            tab = tabs[i];
	            break;
	        }
	    }
        return tab;
    };
}