var Tabs = Class.create({
	initialize: function(id) {
		this.tabContainer = $(id);
		this.tabs = [];
		this.tabSet = [];
		this.activeTab = null;
		this.setup();
	},

	setup: function()
	{
		this.tabs = $$('#' + this.tabContainer.id + ' *[tab]');
		for(x = 0; x < this.tabs.length; x++)
		{
			var tab = this.tabs[x];
			this.tabSet[x] = tab.readAttribute('tab');
			var contentElement = $(this.tabSet[x]);
			if(!contentElement)
			{
				tab.style.display = 'none';
				this.tabSet.splice(x,1);
				this.tabs.splice(x,1);
				x--;
				continue;
			}
			tab.observe('click',this.toggleEvent.bindAsEventListener(this, this.tabSet[x]));
			contentElement.style.display = 'none';
		}

		var defaultTab = this.tabContainer.readAttribute('default');
		if(defaultTab)
		{
			this.toggle(defaultTab);
		}
		else
		{
			this.toggle(0);
		}
	},

	toggleEvent: function(event,tab)
	{
		this.toggle(tab);
	},

	toggle: function(key)
	{
		var tab = $(key);
		var tabId = key;
		if(!tab)
		{
			var tab = $(this.tabSet[key]);
			var tabId = this.tabSet[key];
			if(!tab)
			{
				return false;
			}
		}

		if(this.activeTab == tabId)
		{
			return true;
		}

		for(x = 0; x < this.tabs.length; x++)
		{
			var tab = this.tabs[x];
			var contentElement = $(this.tabSet[x]);
			
			tab.removeClassName('active-tab');
			contentElement.style.display = 'none';
			if(tabId == this.tabSet[x])
			{
				tab.addClassName('active-tab');
				contentElement.style.display = '';
				this.activeTab = tabId;
				var show = contentElement.readAttribute('onshow');
				if(show)
				{
					eval(show);
				}
			}
		}
	}
});
