var objTab;

objTab = new CTabs();

function CTabs()
{
	this.m_previoustab = "";
}

CTabs.prototype.addTab = function(strTabId, strTitle, bHighLight, bNoCloseButton)
{
	var objTabDiv, objDiv, objNewTab, objElement, objAnchor;

	objTabDiv = document.getElementById("tabbednavigationbar");

	objAnchor = document.getElementById("a_" + strTabId);

	if (!objAnchor)
	{
		if (objTabDiv != null && typeof objTabDiv != 'undefined')
		{
			objDiv = document.getElementById(strTabId);

			if (!objDiv)
			{

				objDiv = document.createElement("div");
				objDiv.id = strTabId;
				objDiv.className = "tabcontent";
				document.getElementById("tabcontentcontainer").appendChild(objDiv);
			}
		
			objNewTab = document.createElement("span");
			objNewTab.id = "tabspan_" + strTabId;
			
			if (!bNoCloseButton)
			{
				objNewTab.setAttribute("closable", "true");
				objTab.enableClose(true);
			}
			else
			{
				objNewTab.setAttribute("closable", "false");
				objTab.enableClose(false);
			}
			
			objAnchor = document.createElement("a")
			objAnchor.setAttribute("href", "#");
			objAnchor.id = "a_" + strTabId;
			
			if (bHighLight)
			{
				objAnchor.className = "current";
				this.tabExpandContent(strTabId, "a_" + strTabId);

			}
	
			objAnchor.innerHTML = strTitle;
			objNewTab.appendChild(objAnchor);	
			objTabDiv.appendChild(objNewTab);
			
			try
			{		
				eval("objAnchor.attachEvent('onclick', function() { _tabExpandContent('" + strTabId + "', '" + objAnchor.id + "'); });");		
			}
			catch (e)
			{
				eval("objAnchor.addEventListener('click', function() { _tabExpandContent('" + strTabId + "', '" + objAnchor.id + "'); }, true);");	
			}	
			
		}
	}
}

CTabs.prototype.enableClose = function(bEnable)
{
	var objItem = document.getElementById("tabclose");
	
	if (!objItem)
	{
		objItem = document.createElement("img");
		objItem.id = "tabclose";
		objItem.className = "close";
		document.getElementById("tabbednavigationbar").appendChild(objItem);
		
		try
		{		
			objItem.attachEvent('onclick', closeTab);		
		}
		catch (e)
		{
			objItem.addEventListener('click', closeTab, true);	
		}	
	}
	
	if (bEnable)
	{
		objItem.src = "images/closebutton.png";
		objItem.setAttribute("enabled", "true");
		this.showClose(true);
	}
	else
	{
		objItem.src = "images/closebutton_disabled.png";
		objItem.setAttribute("enabled", "false");
		this.showClose(true);
	}
}

CTabs.prototype.showClose = function(bEnable)
{
	var objItem = document.getElementById("tabclose");
	
	if (bEnable)
	{
		objItem.style.visibility = "visible";
		objItem.style.diplay = "block";
	}
	else
	{
		objItem.style.visibility = "hidden";
		objItem.style.diplay = "none";
	}
}

function closeTab()
{
	var strTabId, objNavBar, objCloseButton;
	
	objCloseButton = document.getElementById("tabclose");
	objNavBar = document.getElementById("tabbednavigationbar");

	if (objCloseButton.getAttribute("enabled") == "true")
	{
		for (var i = 0; i < objNavBar.childNodes.length; i++)
		{
			strTabId = objNavBar.childNodes[i].id;
			
			if (strTabId.substr(0,8) == "tabspan_" && objNavBar.childNodes[i].firstChild.className == "current")
			{
				strTabId = strTabId.substr(8);
				_closeTab(strTabId);
				break;
			}
		}
	}
}

CTabs.prototype.showTab = function(strTabId)
{
	var objItem = document.getElementById("a_" + strTabId);
	this.tabHighlight(objItem);
	this.tabExpandContent(strTabId, objItem);
}

CTabs.prototype.selectLastTab = function()
{
	var strTabId, objNavBar, objCloseButton, bFound;
	
	objCloseButton = document.getElementById("tabclose");
	objNavBar = document.getElementById("tabbednavigationbar");

	bFound = false;
	
	for (var i = objNavBar.childNodes.length - 1; i >= 0 ; i--)
	{
		strTabId = objNavBar.childNodes[i].id;
		
		if (strTabId.substr(0,8) == "tabspan_")
		{
			strTabId = strTabId.substr(8);
			_tabExpandContent(strTabId, "a_" + strTabId);
			bFound = true;
			break;
		}
	}

	if (!bFound)
	{
		this.showClose(false);
	}
	
} 

CTabs.prototype.tabExpandContent = function(strTabId, objItem)
{
	var objPreviousTab, objTab;
	
	objTab = document.getElementById("tabspan_" + strTabId);
	
	if (objTab)
	{
		if (objTab.getAttribute("closable") == "true")
		{
			this.enableClose(true);
		}
		else
		{
			this.enableClose(false);
		}
	}

	this.tabHighlight(objItem);
	this.tabDetectSourceIndex(objItem);
	
	objPreviousTab = document.getElementById(this.m_previoustab);
	
	if (objPreviousTab)
	{
		objPreviousTab.style.display = "none";
	}
		
	document.getElementById(strTabId).style.display = "block";
	document.getElementById(strTabId).style.visibility = "visible";
	
	this.m_previoustab = strTabId;
	
	if (objItem.blur)
	{
		objItem.blur();
	}
	
	return false;

}

CTabs.prototype.tabHighlight = function(objItem)
{
	this.tabCollectLinks();
		
	for (var i = 0; i < this.m_objTabLinks.length; i++)
	{
		this.m_objTabLinks[i].className = "";
	}

	objItem.className = "current";
}

CTabs.prototype.tabCollectLinks = function()
{
	var objTabDiv = document.getElementById("tabbednavigationbar");
	
	this.m_objTabLinks = objTabDiv.getElementsByTagName("A");
}

CTabs.prototype.tabDetectSourceIndex = function(objItem)
{
	this.tabCollectLinks();
	
	for (i = 0; i < this.m_objTabLinks.length; i++)
	{
		if (objItem == this.m_objTabLinks[i])
		{
			tabsourceindex = i;
			break;
		}
	}
}

function _closeTab(strTabId)
{
	var objItem,objAnchor;
	
	objAnchor = document.getElementById("a_" + strTabId);
	
	objItem = document.getElementById("tabspan_" + strTabId);
	objItem.parentNode.removeChild(objItem);
	
	objItem = document.getElementById(strTabId);
	objItem.parentNode.removeChild(objItem);
	
	objTab.selectLastTab();
}

function _tabExpandContent (strTabId, strAId)
{

	var objItem = document.getElementById(strAId);
	
	objTab.tabExpandContent(strTabId, objItem);
}