/* Copyright Commcam Limited 2008. All rights reserved. (See licence/licence.txt) */

var g_objTabs;

g_objTabs = new CTabCollection();

function CTabCollection()
{
	this.m_objPreviousTab = null;
	this.m_strInnerContentName = "innerContent";
}

CTabCollection.prototype.getTabContainerName = function()
{
	return this.m_strInnerContentName;
}

CTabCollection.prototype.changeTabContainer = function(strContentName)
{
	this.m_strInnerContentName = strContentName;
}

CTabCollection.prototype.removeTabs = function()
{
	var objInnerDiv = document.getElementById(this.m_strInnerContentName);
	var objTabs = document.getElementById("tabs");
	
	if (objInnerDiv)
	{
		objInnerDiv.innerHTML = "";
	}
	
	if (objTabs)
	{
		objTabs.innerHTML = "";
	}
	
}

CTabCollection.prototype.addTab = function(strId, strText, bHighLight, bCloseable)
{
	var objTabHolderDiv, objLink, objList, objSpan;
	var objButton = document.getElementById("tabCloseButton");
	var objTabContent;
	
	objTabHolderDiv = document.getElementById("tabs");
	
	if (!objTabHolderDiv)
	{
		var objInnerDiv = document.getElementById(this.m_strInnerContentName);
		
		if (!objInnerDiv)
		{
			this.m_strInnerContentName = "innerContent";
			objInnerDiv = document.getElementById(this.m_strInnerContentName);
		}
		
		objInnerDiv.innerHTML = "";
		objTabHolderDiv = document.createElement("div");
		objTabHolderDiv.id = "tabs";
		objInnerDiv.appendChild(objTabHolderDiv);
	}
	
	objTabContent = document.getElementById("tabcontent");
	
	if (!objTabContent)
	{
		objTabContent = document.createElement("div");
		objTabContent.id = "tabcontent";
		objInnerDiv.appendChild(objTabContent);
	}
	
	if (!objButton)
	{
		var objCloseLink = document.createElement("a");
		objCloseLink.href = 'javascript:closeTab()';
		
		objButton = document.createElement("img");
		objButton.id = "tabCloseButton";
		objButton.className = "closeButton";
		document.getElementById("tabs").appendChild(objCloseLink);
		objCloseLink.appendChild(objButton);
		
		objCloseLink = document.createElement("a");
		objCloseLink.href = 'javascript:closeAllButCurrentTab()';
		
		objButton = document.createElement("img");
		objButton.id = "tabAllCloseButton";
		objButton.className = "allCloseButton";
		
		objButton.src = "images/multiCloseButton.gif";
		
		document.getElementById("tabs").appendChild(objCloseLink);
		objCloseLink.appendChild(objButton);
	}
	
	var objDiv = document.getElementById(strId);

	if (!objDiv)
	{
		objDiv = document.createElement("div");
		objDiv.id = strId;
		objDiv.className = "tabcontent";
		document.getElementById("tabcontent").appendChild(objDiv);
	}	
	
	objSpan = document.getElementById("tabSpan_" + strId);
	
	if (!objSpan)
	{
		objSpan = document.createElement("span");
		objSpan.id = "tabSpan_" + strId;

		if (bCloseable)
		{
			objSpan.setAttribute("closeable", "true");
		}
		else
		{
			objSpan.setAttribute("closeable", "false");
		}
		
		objLink = document.createElement("a");
		objLink.setAttribute("href", "javascript:_tabShowContent('" + strId + "')");
		objLink.id = "link_" + strId;

		objLink.innerHTML = strText;
		objSpan.appendChild(objLink);	
		objTabHolderDiv.appendChild(objSpan);
	}
	else
	{
		objLink = document.getElementById("link_" + strId);
		objLink.innerHTML = strText;
	}
	
	this.enableClose(bCloseable);	
	
	if (bHighLight)
	{
		objSpan.className = "current";
		this.tabShowContent(strId, objSpan);
		
		this.m_objPreviousTab = strId;
	}
	else
	{
		objDiv.style.display = "none";
		objDiv.style.visibility = "hidden";
	}

	return objDiv;
}


CTabCollection.prototype.enableClose = function(bEnable)
{
	var objButton = document.getElementById("tabCloseButton");
	
	if (bEnable)
	{
		objButton.src = "images/closeButton.png";
		objButton.setAttribute("enabled", "true");
	}
	else
	{
		objButton.src = "images/closeButtonDisabled.png";
		objButton.setAttribute("enabled", "false");
	}
}

function closeAllButCurrentTab()
{
	var strTabId, objNavBar, objCloseButton;
	var bSelected = false;
	objCloseButton = document.getElementById("tabCloseButton");
	objNavBar = document.getElementById("tabs");

	if (objCloseButton.getAttribute("enabled") == "true")
	{
		for (var i = objNavBar.childNodes.length - 1; i >= 0; i--)
		{
			strTabId = objNavBar.childNodes[i].id;
			
			if (objCloseButton.getAttribute("enabled") == "true" && strTabId.substr(0,8) == "tabSpan_" && objNavBar.childNodes[i].className != "current")
			{
				strTabId = strTabId.substr(8);
				_closeTab(strTabId, true);
			}
		}
	}
}

function closeTab()
{
	var strTabId, objNavBar, objCloseButton;
	var bSelected = false;
	objCloseButton = document.getElementById("tabCloseButton");
	objNavBar = document.getElementById("tabs");

	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].className == "current")
			{
				strTabId = strTabId.substr(8);
				_closeTab(strTabId);
				bSelected = true;
				break;
			}
		}
	}
}

CTabCollection.prototype.selectLastTab = function()
{
	var strTabId, objNavBar, objCloseButton, bFound, objInnerDiv;
	
	objCloseButton = document.getElementById("tabCloseButton");
	
	objNavBar = document.getElementById("tabs");

	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);
			_tabShowContent(strTabId);
			bFound = true;
			break;
		}
	}
	
	if (!bFound)
	{
		objInnerDiv = document.getElementById(this.m_strInnerContentName);
		
		objInnerDiv.removeChild(objNavBar);
	}
} 

CTabCollection.prototype.tabShowContent = function(strId, objItem)
{
	var objPreviousTab, objTab, objChildren;
	
	objTab = document.getElementById("tabSpan_" + strId);
	
	if (objTab)
	{
		if (objTab.getAttribute("closeable") == "true")
		{
			this.enableClose(true);
		}
		else
		{
			this.enableClose(false);
		}
	}

	this.tabHighlight(objItem);
	
	objChildren = document.getElementById("tabcontent").childNodes;
	
	for (i = 0; i < objChildren.length; i++)
	{
		if (objChildren[i].className == "tabcontent")
		{
			objChildren[i].style.display = "none";
		}
	}

	document.getElementById(strId).style.display = "block";
	document.getElementById(strId).style.visibility = "visible";
	
	return false;
}

CTabCollection.prototype.tabHighlight = function(objItem)
{
	var objTabDiv = document.getElementById("tabs");
	
	var objTabLinks = objTabDiv.getElementsByTagName("span");
		
	for (var i = 0; i < objTabLinks.length; i++)
	{
		objTabLinks[i].className = "";
	}

	objItem.className = "current";
}

function _closeTab(strId, bNoSelect)
{
	var objItem, objAnchor;
	
	objAnchor = document.getElementById("a_" + strId);
	
	objItem = document.getElementById("tabSpan_" + strId);
	objItem.parentNode.removeChild(objItem);
	
	objItem = document.getElementById(strId);
	objItem.parentNode.removeChild(objItem);
	
	if (!bNoSelect)
	{
		g_objTabs.selectLastTab();
	}
}

function _tabShowContent (strId)
{
	var objItem = document.getElementById("tabSpan_" + strId);
	
	g_objTabs.tabShowContent(strId, objItem);
}
