var g_menus = new Object();
var FF = document.getElementById&&!document.all;
var IE = document.all;
var SF = navigator.vendor;

function menu_showPopup(parentId, event, _submenuObj, parentObj, position)
{
	var _menu = g_menus["menu" + parentId];
	var submenuObj = _submenuObj;
	
	if (!_menu)
	{
		g_menus["menu" + parentId] = new Object();
		
		_menu = g_menus["menu" + parentId];
	}
	
	if (_menu.doExit)
	{
		window.clearTimeout(_menu.timerHandle);
		_menu.doExit = false;
	}

	// hide current active submenu
	if (!submenuObj || _menu.currentSubmenu != submenuObj)
		menu_exitPopup(parentId);
	
	// show selected submenu
	if (submenuObj && _menu.currentSubmenu != submenuObj)
	{
		submenuObj.style.display = "";
		var x = getEventX(event);
		var y = getEventY(event);
		var dim = getScreenDimensions();

		if (position == "right")
		{
			x = parentObj.offsetWidth + getScreenPosX(parentObj);
			y = getScreenPosY(parentObj);
			
			if (!IE)
				y -= 1;
			if (IE)
				x += 1;
		}
		else if (position == "left")
		{
			x = getScreenPosX(parentObj) - submenuObj.offsetWidth;
			y = getScreenPosY(parentObj);
		}
		else if (position == "bottom")
		{
			x = getScreenPosX(parentObj) + 1;
			y = getScreenPosY(parentObj) + parentObj.offsetHeight;
			
			
			if (FF)
				x -= 1;
		}
		else if (position == "top")
		{
			x = getScreenPosX(parentObj);
			y = getScreenPosY(parentObj) - submenuObj.offsetHeight;
		}
		
		if (IE)
		{
			x -= dim.scrollLeft + 1;
			y -= dim.scrollTop;
		}
		
		var width  = submenuObj.offsetWidth;
		var height = submenuObj.offsetHeight;
		// ensure visiblity of menu
		var availHeight = document.body.offsetHeight-10;
		if (y-document.body.scrollTop + height > availHeight)
			y = availHeight + document.body.scrollTop - height; 
			
		var availWidth = dim.availWidth;
		if (x-document.body.scrollLeft + width > availWidth)
			x = availWidth + document.body.scrollLeft - width - 30;
		
		// aangepast
		var menuDiv = document.getElementById('menuDiv');
		var menuDivH = getScreenPosY(menuDiv) + menuDiv.offsetHeight;
		//submenuObj.style.top = menuDivH + 'px'; //(y-getScreenPosY(submenuObj.offsetParent)) + "px";

		if (parentId == 'menu_-2')
			submenuObj.style.top =  menuDivH + 'px';
		else
			submenuObj.style.top = (getScreenPosY(parentObj)-getScreenPosY(submenuObj.offsetParent) - 10) + "px";
			
		submenuObj.style.left = (x-getScreenPosX(submenuObj.offsetParent)) + "px";
		
		_menu.highlighted = parentObj;
	}

	_menu.currentSubmenu = submenuObj;
}

function menu_exitPopup(parentId)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu)	
		return;
		
	if (_menu.currentSubmenu)
	{
		// exit the submenu's submenu
		menu_exitPopup(_menu.currentSubmenu.id);

		_menu.currentSubmenu.style.display = "none";
		if (_menu.highlighted.id.search("alphamenu") == -1)
			_menu.highlighted.className = "normal";
	}
	_menu.currentSubmenu = null;
	_menu.highlighted = null;
}

function menu_exitPopup2(parentId)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu || !_menu.doExit)	
		return;

	menu_exitPopup(parentId);
}

function menu_exitPopupDelayed(parentId, event)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu)
		return;
		
	if (!_menu.doExit)
	{
		_menu.doExit = true;
		var callback = function() { menu_exitPopup2(parentId); }
		_menu.timerHandle = window.setTimeout(callback, 1000);
	}
}

function menu_cancelExit(parentId, event)
{
	var _menu = g_menus["menu" + parentId];
	if (!_menu)	
		return;

	_menu.doExit = false;
	window.clearTimeout(_menu.timerHandle);
}

function menu_mouseOver(obj, parent, id, event)
{
	obj.className="hover"; 
	menu_showPopup(parent, event, document.getElementById(id), obj, "right"); 
}

function menu_mouseOut(obj, parent, id, event)
{
	var _menu = g_menus["menu" + parent];
	if (!_menu || !_menu.currentSubmenu)
		obj.className="normal";
}

function swapClass(id, swapTo) {
	var menu = document.getElementById('alphamenu_'+id);
	menu.className = "menuNormal" + swapTo;
}