
document.getElementsByTagName("html")[0].className = "js";

schedule("window", menuInit); 




function menuInit()
{
	var navigation = document.getElementById("navigation");
	
	if (navigation != null)
	{
		var uls = getChildrenByTagName(navigation, "ul");
		
		for (var i = 0; i < uls.length; i++)
		{
			var listItems = getChildrenByTagName(uls[i], "li");

			for (var j = 0; j < listItems.length; j++)
			{
				var subMenu = listItems[j].getElementsByTagName("ul");

				if (subMenu.length > 0 && !classExists(listItems[j], "expanded"))
				{
					attachEventListener(listItems[j], "mouseover", mouseoverMenu, false);
					attachEventListener(listItems[j], "mouseout", mouseoutMenu, false);
					attachEventListener(listItems[j].getElementsByTagName("a")[0], "focus", focusMenu, false);
					attachEventListener(listItems[j].getElementsByTagName("a")[0], "blur", blurMenu, false);
					
					var subListItems = subMenu[0].getElementsByTagName("li");
					
					for (var k = 0; k < subListItems.length; k++)
					{
						attachEventListener(subListItems[k].getElementsByTagName("a")[0], "focus", focusSubMenu, false);
						attachEventListener(subListItems[k].getElementsByTagName("a")[0], "blur", blurMenu, false);
					}
				}
			}
		}
	}

	return true;
};




function mouseoverMenu()
{
	if (typeof this.timer != "undefined")
	{
		clearTimeout(this.timer);
	}
	
	var listItems = this.parentNode.getElementsByTagName("li");
	
	for (var i = 0; i < listItems.length; i++)
	{
		if (listItems[i] != this)
		{
			removeClass(listItems[i], "hover");
		}
	}
	
	addClass(this, "hover");
	
	return true;
};




function mouseoutMenu(event)
{
	if (typeof event.relatedTarget != "undefined")
	{
		var related = event.relatedTarget;
	}
	else
	{
		var related = event.toElement;
	}
	
	if (isDescendantNode(related, this))
	{
		return true;
	}
	else
	{
		var self = this;
		
		this.timer = setTimeout(function(){hideMenu(self)}, 500);
	}
	
	return true;
};




function focusMenu(event)
{
	resetMenu(this);
	
	var parentListItem = this.parentNode;

	addClass(parentListItem, "hover");

	return true;
};




function blurMenu(event)
{
	resetMenu(this);
	
	return true;
};




function focusSubMenu(event)
{
	resetMenu(this);
	
	var parentListItem = this.parentNode.parentNode.parentNode;

	addClass(parentListItem, "hover");	
	
	return true;
};




function hideMenu(menuItem)
{
	removeClass(menuItem, "hover");
	
	return true;
};




function resetMenu(menuItem)
{
	var menu = document.getElementById("navigation");

	if (menu != null)
	{
		var listItems = menu.getElementsByTagName("li");
		
		for (var i = 0; i < listItems.length; i++)
		{
			removeClass(listItems[i], "hover");
		}
	}
	
	return true;
};




function getChildrenByTagName(target, tagName)
{
	var children = target.childNodes;
	var matching = new Array();
	
	if (children != null)
	{
		for (var i = 0; i < children.length; i++)
		{
			if (children[i].nodeName.toLowerCase() == tagName)
			{
				matching[matching.length] = children[i];
			}
		}
	}
	
	return matching;
};




function isDescendantNode(descendant, ancestor)
{
	while (descendant.parentNode != null && descendant.parentNode.nodeName.toLowerCase() != "#document")
	{
		if (descendant.parentNode == ancestor)
		{
			return true;
		}
		else
		{
			descendant = descendant.parentNode;
		}
	}
	
	return false;
};