/**************************
 Restructure code
**************************/
function unpack(element)
{
	var divs = new Array();
	var cur = element.firstChild;
	var i=0;
	while(cur != null)
	{
		if(cur.nodeType == 1 && cur.nodeName == 'DIV')
		{
			divs[i] = cur;
			i++;
		}
		cur = cur.nextSibling;
	}	
	createTabItemList(element, divs);
	createTabDataList(element, divs);
}
/* tab data */
function createTabDataList(cont, divs)
{
	var ContainerDiv =	document.createElement('DIV');
	ContainerDiv.className = 'data';
	cont.appendChild(ContainerDiv);
	for(var i=0; i<divs.length; i++)
	{
		relocateDiv(ContainerDiv, divs[i]);
	}
}
function relocateDiv(adopter, div)
{
		adopter.appendChild(div);
		div.setAttribute('id', div.id + '_data');
		div.className = 'tab';
}
/* tab items */
function createTabItemList(cont, divs)
{
	var List;
	List =	document.createElement('UL');
	List.className = 'strip';
	cont.appendChild(List);
	for(var i=0; i<divs.length; i++)
	{
		createTabItem(List, divs[i]);
	}
}
function createTabItem(cont, div)
{
	var Item = document.createElement('LI');
	cont.appendChild(Item);
	Item.setAttribute('id', div.id);
	Item.appendChild(document.createTextNode(div.getAttribute('title')));
}
function unpackTabDivs(node)
{
	if(node.nodeType == 1 && node.nodeName == 'DIV' && node.className.indexOf('tabset') > -1)
	{
		unpack(node);
	}
	for(var i=0; i<node.childNodes.length ; i++)
	{		
	 unpackTabDivs(node.childNodes[i]);
	}	
}
unpackTabDivs(document);



/**************************
 runtime behavior code
**************************/
function tabclick(el)
{
	var tab = document.getElementById(el.id + '_data');
	focusTab(tab);
	focusTabItem(el);
}
/* tab strip items behavior */
function focusTabItem(tabItem)
{
	blurSiblingTabItems(tabItem.parentNode.firstChild);
	tabItem.className += " on";
}
function blurSiblingTabItems(tabItem)
{
	if(tabItem != null)
	{
		if(tabItem.nodeType == 1)// elements only
		{
			tabItem.className = tabItem.className.replace(/\s*on/, '');
		}
		blurSiblingTabItems(tabItem.nextSibling);
	}
}
/* tab (data) behavior */
function focusTab(tabElement)
{
	blurSiblingTabs(tabElement.parentNode.firstChild);
	tabElement.className += " on";
}

function findActiveTab(tabSet)
{
	// find the first div in a div (first tab in data div)
	var CurTab = tabSet.getElementsByTagName('DIV')[1];
	while(CurTab != null)
	{
		if(CurTab.className.indexOf('on') > -1)
		{
			return CurTab;
		}
		else
		{
			CurTab = CurTab.nextSibling;
		}
	}
	return null;
}
function resizeParent(tabElement)
{
	var maincont = tabElement.parentNode.parentNode;
}
function blurSiblingTabs(tabElement)
{
	if(tabElement != null)
	{
		if(tabElement.nodeType == 1)// elements only
		{
			tabElement.className = tabElement.className.replace(/\s*on/, '');
		}
		blurSiblingTabs(tabElement.nextSibling);
	}
}
/* behavior init methods */
function setTabsBehavior(tabdiv)
{	
	var TabItem = tabdiv.getElementsByTagName('LI')[0];
	while(TabItem != null)
	{
		SetTabItemBehavior(TabItem);
		TabItem = TabItem.nextSibling;
	}	
}
function SetTabItemBehavior(node)
{
	node.onmouseover = function() {node.className +=	' hover'}
	node.onmouseout  = function() {node.className =	node.className.replace(/\s*hover/, '')}
	node.onclick = function(){tabclick(node);}
}
function openFirstTabs(node)
{
	if(node.nodeType == 1 && node.nodeName == 'DIV' && node.className.indexOf('tabset') > -1)
	{
		tabclick(node.getElementsByTagName('LI')[0]);
	}
	for(var i=0; i<node.childNodes.length ; i++)
	{		
	 openFirstTabs(node.childNodes[i]);
	}	
}
function applyTabBehaviors(node)
{
	if(node.nodeType == 1 && node.nodeName == 'DIV' && node.className.indexOf('tabset') > -1)
	{
		setTabsBehavior(node);
	}
	for(var i=0; i<node.childNodes.length ; i++)
	{		
	 applyTabBehaviors(node.childNodes[i]);
	}	
}
applyTabBehaviors(document);
openFirstTabs(document);
