var closeMenuInts = new Array();
var slideInts = new Array();

function openMenu(id)
{
	clearMenuTimeout(id);
	var element = document.getElementById("menuItems_" + id);
	element.menuParentItem = document.getElementById("menuParent_" + id);
	slide(element, 30);
	element.menuParentItem.className = "menuParentItemActive";
}

function closeMenu(id)
{
	var menuParentItem = document.getElementById("menuParent_" + id);
	
	if (!menuParentItem) { return; }
	var element = document.getElementById("menuItems_" + id);
	if (element == undefined || element == null)
	{
		menuParentItem.className = "menuParentItem";	
	}
	else
	{
		element.menuParentItem = menuParentItem; 
		slide(element, -30, { onComplete: onMenuClosed });
	}
}

function contactOver()
{
	document.getElementById("menuContact").className = "menuParentItemActive";
}

function contactOut()
{
	document.getElementById("menuContact").className = "menuParentItem";
}

function onMenuClosed(element)
{
	element.menuParentItem.className = "menuParentItem";
}

function closeMenuTimeout(id)
{
	if (pageMenuId == id) return;
	closeMenuInts[id] = setTimeout(function () { closeMenu(id) }, 500);
}

function clearMenuTimeout(id)
{
	if (closeMenuInts[id] != undefined)
	{
		clearTimeout(closeMenuInts[id]);
		closeMenuInts[id] = undefined;
	}
}

function toggleMenu(id)
{
	if (id == activeMenuId)
	{
		closeMenu(id);
		activeMenuId = null;
	}
	else
	{
		if (activeMenuId != null)
			closeMenu(activeMenuId);
			
		openMenu(id);
		activeMenuId = id;
	}
	
}

function slide(element, dir, params)
{
	if (typeof(element) == "string")
		element = document.getElementById(element);
	
	if (element.contentElement == undefined)
	{
		var curChild = element.firstChild;
		var contentElement = null;
		while (curChild != null)
		{
			if (curChild.nodeName == "DIV")
			{
				contentElement = curChild;
			}
			
			curChild = curChild.nextSibling;
		}
		
		if (contentElement == null)
			return;
		
		element.contentElement = contentElement;
	}
	
	element.style.display = "block";
	
	if (slideInts[element.id] != undefined)
	{
		clearInterval(slideInts[element.id]);
	}
	
	element.maxHeight = element.contentElement.offsetHeight;
	var done = false;
	slideInts[element.id] = setInterval(
		function ()
		{
			var h = element.offsetHeight + dir;
			if (dir > 0 && h >= element.maxHeight)
			{
				h = element.maxHeight;
				done = true;
			}
			
			if (dir < 0 && h <= 0)
			{
				h = 0;
				done = true;
			}

			element.style.height = h + "px";
			
			if (done)
			{
				clearInterval(slideInts[element.id]);
				
				if (params != undefined)
				{
					if (params.onComplete != undefined)
						params.onComplete(element);
				}
			}			
		}, 10);
}
