﻿/* Tabs component */

/* Class for Tabs */
// Constructor
function PanelTabs()
{
	this.Tabs = new Array();
	this.ActiveTabID = null;
	this.EnableDefaultTab = true;
	this.TabClass = "PanelTabUnselected";
	this.TabSelectedClass = "PanelTabSelected";
}

// Add new tab	
PanelTabs.prototype.Add = function(tabID, panelID, callback)
{
	this.Tabs[tabID] = new PanelTab(tabID, panelID, this, callback);
	this.Tabs[tabID].Tab.onclick = this.Show;
	if(this.ActiveTabID == null && this.EnableDefaultTab)
	{
		this.Tabs[tabID].Panel.style.display = "block";
		this.Tabs[tabID].Tab.className = this.TabSelectedClass;
		this.ActiveTabID = tabID;
	}
}

// Show tab	
PanelTabs.prototype.Show = function(event)
{
	var elem;
	if(window.event) elem = window.event.srcElement;
	else elem = event.target;	
	while(elem.tabs == null && elem.parentNode != null) elem = elem.parentNode;
	
	if(elem.id == elem.tabs.ActiveTabID) return;
	
	elem.tabs.Tabs[elem.tabs.ActiveTabID].Panel.style.display = "none";
	elem.tabs.Tabs[elem.tabs.ActiveTabID].Tab.className = elem.tabs.TabClass;
	elem.tabs.Tabs[elem.id].Panel.style.display = "block";
	elem.tabs.ActiveTabID = elem.id;
	elem.className = elem.tabs.TabSelectedClass;
	
	if(elem.tabs.Tabs[elem.id].Callback != null)
	{
		elem.tabs.Tabs[elem.id].Callback(elem.tabs.Tabs[elem.id].Panel.id);
	}
}

// Select tab
PanelTabs.prototype.SetSelectedTab = function(tabID)
{
	if(this.ActiveTabID != null)
	{
		this.Tabs[this.ActiveTabID].Panel.style.display = "none";
		this.Tabs[this.ActiveTabID].Tab.className = this.TabClass;
	}
	this.Tabs[tabID].Panel.style.display = "block";
	this.Tabs[tabID].Tab.className = this.TabSelectedClass;
	this.ActiveTabID = tabID;
	if(this.Tabs[tabID].Callback != null)
	{
		this.Tabs[tabID].Callback(this.Tabs[tabID].Panel.id);
	}
}

/* Class for Tab */
// Constructor
function PanelTab(tabID, panelID, panelTabs, callback)
{
	this.Tab = document.getElementById(tabID);
	this.Panel = document.getElementById(panelID);
	this.Tab.tabs = panelTabs;
	this.Callback = null;
	if(callback)
	{
		this.Callback = callback;
	}	
	
	if(this.EnableDefaultTab)
	{
		this.Tab.className = panelTabs.TabClass;
		this.Panel.style.display = "none";
	}
}