function toggleIconedElem(toggleElem, iconElemId)
{
	var iconElem = document.getElementById(iconElemId);
	var iconSrc  = iconElem ? iconElem.src : '';
	var iconRE   = /^([\w:\/\.\_\-%]+)_(off|on|over)\.gif$/;
	var matches  = iconRE.exec(iconSrc);

	if ( matches && matches.length == 3 )
	{
		iconElem.src = matches[1] + (toggleElem.style.display == 'none' ? '_on.gif' : '_off.gif');
		
		toggleElemDisplay(toggleElem);
	}

	return false;
}

function toggleElemDisplay(toggleElem)
{
	toggleElem.style.display = toggleElem.style.display == 'block' ? 'none' : 'block';
}

function toggleTopTabMenu(clickedElem)
{
	if (!document.getElementById) return;
	if (!clickedElem.id)          return;

	var id = (clickedElem.id.split('_'))[0];

	var tabParent = clickedElem.parentNode;
	
	var lastTabIdx = Math.ceil(tabParent.childNodes.length/2) - 1;

	for ( var i = 0; i <= lastTabIdx; ++i )
	{
		var contentElem = document.getElementById(id+'_content_'+i);

		if (!contentElem) break; // quit once we cannot find anymore tabs

		if (contentElem && contentElem.style.display != 'none') // currently displayed element
		{
			var tabElem = document.getElementById(id+'_menu_'+i);
			
			if (!tabElem) continue; // don't try to toggle if we have no tab...
			
			toggleTopTabElem(tabElem, contentElem, id, i);
		}
	}

	var clickedElemId  = clickedElem.id;
	var clickedIdx     = clickedElemId.substring(clickedElemId.length-1, clickedElemId.length);
	var clickedContent = document.getElementById(id+'_content_'+clickedIdx);

	if (clickedContent)	toggleTopTabElem(clickedElem, clickedContent, id, clickedIdx);
}

function toggleTopTabElem(tabElem, contentElem, menuId, iconIdx)
{
	toggleIconedElem(contentElem, menuId+'_tab_'+iconIdx+'_icon');

	var currTabElemClass = tabElem.className;
	
	Element.cleanWhitespace(tabElem);
	
	var linkElem = (tabElem.childNodes)[0];
	
	if ( linkElem )
	{
		linkElem.className = currTabElemClass == 'ttn_curr_tab_link' ? 'ttn_opt_tab_link' : 'ttn_curr_tab_link';
	}

	tabElem.className = currTabElemClass == 'ttn_curr_tab_label' ? 'ttn_opt_tab_label' : 'ttn_curr_tab_label';
}

