
schedule("window", menuInit); 

var menuDelay = null;
var subMenuDelay = null;
var menuDelayTarget = null;
var subMenuDelayTarget = null;
var flyoutActive = false;
var isIE = false;

if (document.all && typeof window.opera == "undefined")
{
	isIE = true;
}

function menuInit()
{
	var listItems = document.getElementsByTagName("li");
	
	for (var i = 0; i < listItems.length; i++)
	{
		if (hasClass(listItems[i], "expandable") && listItems[i].getElementsByTagName("ul").length > 0)
		{
			var menuList = listItems[i];

			while (menuList.nodeName.toLowerCase() != "ul")
			{
				menuList = menuList.parentNode;
			}

			listItems[i].menuRoot = menuList;
			listItems[i].onmouseover = showMenuLevel1;
			listItems[i].onmouseout = hideMenu;
		}
	}
	
	return true;
};




function showMenuLevel1()
{
	var subList = this.getElementsByTagName("ul")[0];
	var siblings = menuGetChildrenByTagName(this.parentNode, "li");
	
	for (var i = 0; i < siblings.length; i++)
	{
		if (siblings[i] != this)
		{
			hideMenuDelayed(siblings[i]);
		}
	}

	var dropSheet = getChildrenByClass(this, "dropSheet");

	if (dropSheet.length < 1)
	{
		if (isIE)
		{
			dropSheet = document.createElement("iframe");
		}
		else
		{		
			dropSheet = document.createElement("div");
		}
		
		dropSheet.className = "dropSheet";
		this.appendChild(dropSheet);
		
		/* For IE 5, which doesn't support dynamically created iframes */
		if (isIE && subList.getElementsByTagName("li").length <= 1)
		{
			dropSheet.parentNode.removeChild(dropSheet);
			dropSheet = document.createElement("div");
			dropSheet.className = "dropSheet dropSheetDiv";
			this.appendChild(dropSheet);
		}
	}
	else
	{
		dropSheet = dropSheet[0];
	}

	if (this.menuRoot.menuDelayTarget != null)
	{
		clearTimeout(this.menuRoot.menuDelay);
	}
	
	if (typeof this.originalClass == "undefined")
	{
		this.originalClass = this.className;
	}

	addClass(this, "hover");

	var dropSheetWidth = 0;
	var dropSheetHeight = 0;
	
	if (isIE)
	{
		if (subList.getElementsByTagName("li").length <= 1)
		{
			dropSheetWidth = subList.offsetWidth - 5;
			dropSheetHeight = subList.offsetHeight - 17;
		}
		else
		{
			dropSheetWidth = subList.offsetWidth - 12;
			dropSheetHeight = subList.offsetHeight - 12;
		}
	}
	else
	{
		var subListItems = menuGetChildrenByTagName(subList, "li");
		
		dropSheetWidth = subList.offsetWidth;
		
		for (var i = 0; i < subListItems.length; i++)
		{
			dropSheetHeight += subListItems[i].offsetHeight;
		}
	}

	dropSheet.style.width = dropSheetWidth + "px";
	dropSheet.style.height = dropSheetHeight + "px";

	if (this.menuRoot.parentNode.id == "subMenu")
	{
		var viewportSize = getViewportSize();
		var scrollingPosition = getScrollingPosition();
		var position = getPosition(subList);

		if (position[1] + subList.offsetHeight > viewportSize[1] + scrollingPosition[1])
		{
			subList.style.marginTop = viewportSize[1] + scrollingPosition[1] - (position[1] + subList.offsetHeight) + "px";
			
			if (isIE)
			{
				dropSheet.style.marginTop = viewportSize[1] + scrollingPosition[1] - (position[1] + subList.offsetHeight) + 1 + "px";
			}
			else
			{
				
			}
		}
	}

	return true;
};




function hideMenu()
{
	var self = this;

	flyoutActive = false;

	this.menuRoot.menuDelay = setTimeout(function(){hideMenuDelayed(self); return true;}, 350);
	this.menuRoot.menuDelayTarget = this;
	
	return true;
};




function hideMenuDelayed(menuItem)
{
	if (!flyoutActive && typeof menuItem.originalClass != "undefined")
	{
		var subListItems = menuItem.getElementsByTagName("li");
	
		var dropSheets = getChildrenByClass(menuItem, "dropSheet");

		for (var i = 0; i < dropSheets.length; dropSheets = getChildrenByClass(menuItem, "dropSheet"))
		{
			dropSheets[i].parentNode.removeChild(dropSheets[i])
		}
		
		for (i = 0; i < subListItems.length; i++)
		{
			if (typeof subListItems[i].originalClass != "undefined")
			{
				subListItems[i].className = subListItems[i].originalClass;
			}
		}

		menuItem.className = menuItem.originalClass;
	}
	
	return true;
};




function menuGetChildrenByTagName(target, tagName)
{
	if (target == null)
	{
		target = document.getElementById("menuHome");
	}
	
	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;
};