var TabManager = function(activeClass, inactiveClass)
{
	this.listTabs = new Array();
	this.actualTab = null;
	this.timeInterval = null;
		
	this.init = function(activeClass, inactiveClass) {
		
		this.activeClass = activeClass;
		this.inactiveClass = inactiveClass;		
	};
	
	this.addTab = function(idTab, callbackFunction)
	{
		var thisClass = this;
		var tab = {'idTab': idTab, 'callbackFunction': callbackFunction };
		this.listTabs.push(tab);
		
		YAHOO.util.Event.addListener  ( idTab , 'click' ,
			function(e)
			{
			 	YAHOO.util.Event.stopEvent(e);
				thisClass.goToTab(idTab);
				thisClass.stopTabs();
			}
		);
	}
	
	this.goToTab = function(idTab, executeCallback)
	{		
		executeCallback = executeCallback || true;
		
		var n = this.listTabs.length;
		
		for(var i = 0 ; i < n ; i++ )
		{
			var tab = $(this.listTabs[i].idTab);
			if (this.listTabs[i].idTab == idTab)
			{
				tab.className = tab.className.replace( eval('/' + this.inactiveClass + '/g') , this.activeClass );
				if (executeCallback) this.listTabs[i].callbackFunction();
				this.actualTab = idTab;
			}
			else
			{
				tab.className = tab.className.replace( eval('/' + this.activeClass + '/g') , this.inactiveClass );
			}
		}
	}
	
	this.getActualTab = function()	
	{		
		return this.actualTab;
	}
	
	this.nextTab = function()	
	{				
		for(var i = 0 ; i < this.listTabs.length ; i++ )
		{
			if (this.listTabs[i].idTab == this.actualTab) break;
		}
		
		var goTab = i + 1;
		if (goTab > this.GetCountTabsActives() - 1) goTab = 0;
		this.goToTab( this.actualTab.replace(i,goTab) );
		
	}
	
	this.playTabs = function(thisClass)	
	{	
		this.nextTab();
		this.timeInterval = setTimeout(thisClass + '.playTabs("' + thisClass +  '");',5000);
	}
	
	this.stopTabs = function()	
	{	
		clearTimeout( this.timeInterval );
	}
	
	this.GetCountTabsActives = function()
	{	
		for(var i = 0 ; i < this.listTabs.length ; i++ )
		{
			if ( $( this.listTabs[i].idTab ).style.display == 'none' ) break;
		}
		return i;
	}
	
	
	this.init(activeClass, inactiveClass);
	
}
