





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 toggleCollapseMenus(groupID, toggleElemId, labelClassName, iconClassName, subMenuClassName)
{
	if (!document.getElementById) return false;
//alert(groupID+', '+toggleElemId+', '+labelClassName+', '+iconClassName+', '+subMenuClassName);
	var groupChildren   = document.getElementById(groupID).childNodes;
	var iconID = menuID = '';

	for ( var i = 0; i < groupChildren.length; ++i )
	{
		var child = groupChildren[i];

		if ( child.className == labelClassName )
		{
			iconID = idOfFirstElemInClass(child.childNodes, iconClassName);				
		}
		else if ( child.className == subMenuClassName )
		{
			menuID = child.id;
		}

		if ( iconID && menuID )
		{
			var toggleElem = document.getElementById(menuID);
			
			if ( menuID == toggleElemId || toggleElem.style.display == 'block' )
			{
				toggleIconedElem(toggleElem, iconID);
			}
			
			iconID = menuID = '';
		}
	}
	
	return false;
}

function idOfFirstElemInClass(nodeList, className)
{
	var elemId = '';
	
	for ( var i = 0; i < nodeList.length; ++i )
	{
		var node = nodeList[i];
		
		if (node.hasChildNodes()) elemId = idOfFirstElemInClass(node.childNodes, className);
		
		if ( elemId )
		{
			break;
		}
		else if( node && node.className && node.className == className )
		{
			elemId = node.id;
			break;
		}
	}
	
	return elemId;
}
