
/**
* Menu 0.8 990602
* by gary smith, July 1997
* Copyright (c) 1997-1999 Netscape Communications Corp.
*
* Netscape grants you a royalty free license to use or modify this
* software provided that this copyright notice appears on all copies.
* This software is provided "AS IS," without a warranty of any kind.
*/
var last_time;
var wait_time = 1000;
var ActiveMenuItem;

function setTime()
{
	var date = new Date();
	last_time = date.getTime();
}

function Menu()
{
	this.version = "0.8 [menu.js; Menu; 990602]";
	this.type = "Menu";
	this.fontSize = 12;
	this.fontWeight = "bold";
	this.fontFamily = "Arial, Helvetica, Sans-serif";
	this.fontColor = "#3E648A";
	this.fontColorHilite = "#ffffff";
	this.bgColor = "#9BB4CD";
	this.menuBorder = 1;
	this.menuItemBorder = 1;
	this.menuItemBgColor = "#9BB4CD";
	this.menuLiteBgColor = "#9BB4CD";
	this.menuBorderBgColor = "#9BB4CD";
	this.menuHiliteBgColor = "#9BB4CD";
	this.menuContainerBgColor = "#9BB4CD";
	this.childMenuIcon = "/images/spacer.gif";
	this.childMenuIconHilite = "/images/spacer.gif";
	this.items = new Array();
	this.actions = new Array();
	this.colors = new Array();
	this.mouseovers = new Array();
	this.mouseouts = new Array();
	this.childMenus = new Array();
	
	this.addMenuItem = addMenuItem;
	this.addMenuSeparator = addMenuSeparator;
	this.writeMenus = writeMenus;
	this.showMenu = showMenu;
	this.onMenuItemOver = onMenuItemOver;
	this.onMenuItemOut = onMenuItemOut;
	this.onMenuItemDown = onMenuItemDown;
	this.onMenuItemAction = onMenuItemAction;
	this.hideMenu = hideMenu;
	this.hideChildMenu = hideChildMenu;
	this.mouseTracker = mouseTracker;
	this.setMouseTracker = setMouseTracker;
	
	if (!window.menus) 
		window.menus = new Array();
	this.label = "menuLabel" + window.menus.length;
	window.menus[this.label] = this;
	window.menus[window.menus.length] = this;
	if (!window.activeMenus) 
		window.activeMenus = new Array();
	if (!window.menuContainers) 
		window.menuContainers = new Array();
	if (!window.mDrag) 
	{
		window.mDrag = new Object();
		mDrag.startMenuDrag = startMenuDrag;
		mDrag.doMenuDrag = doMenuDrag;
		this.setMouseTracker();
	}
	if (window.MenuAPI) 
		MenuAPI(this);
}

function addMenuItem(label, action, color, mouseover, mouseout)
{
	this.items[this.items.length] = label;
	this.actions[this.actions.length] = action;
	this.colors[this.colors.length] = color;
	this.mouseovers[this.mouseovers.length] = mouseover;
	this.mouseouts[this.mouseouts.length] = mouseout;
}

function addMenuSeparator()
{
	this.items[this.items.length] = "separator";
	this.actions[this.actions.length] = "";
	this.menuItemBorder = 0;
}

function writeMenus(container)
{
	if (!container && document.layers) 
	{
		if (eval("document.width"))
			container = new Layer(1000);
	}
	else if (!container && document.all)
	{
		if (!document.all["menuContainer"])
			document.writeln('<SPAN ID="menuContainer"></SPAN>');
			container = document.all["menuContainer"];
	}
	if (!container && !window.delayWriteMenus)
	{
		window.delayWriteMenus = this.writeMenus;
		window.menuContainerBgColor = this.menuContainerBgColor;
		setTimeout('delayWriteMenus()', 3000);
		return;
	}
	container.isContainer = "menuContainer" + menuContainers.length;
	menuContainers[menuContainers.length] = container;
	container.menus = new Array();
	for (var i=0; i<window.menus.length; i++)
		container.menus[i] = window.menus[i];
	window.menus.length = 0;
	var countMenus = 0;
	var countItems = 0;
	var top = 0;
	var content = '';
	var proto;
	for (var i=0; i<container.menus.length; i++, countMenus++)
	{
		var menu = container.menus[i];
		proto = menu.prototypeStyles || this.prototypeStyles || menu;
		content += '' +
			'<DIV ID="menuLayer' + countMenus + '" STYLE="position:absolute;z-index:2;left:10;top:' + (i) + ';visibility:hidden;" >\n' + 
			'<DIV ID="menuLite' + countMenus + '" STYLE="position:absolute;left:' + proto.menuBorder + ';z-index:3;top:' + proto.menuBorder + ';" onMouseOut="hideMenu(this);">\n' +
			'<DIV ID="menuFg' + countMenus + '" STYLE="position:absolute;left:1;top:1;z-index:4;" >\n';
		var x = i;
		for (var i = 0; i < menu.items.length; i++)
		{
			var item = menu.items[i];
			var childMenu = false;
			var defaultHeight = 20;
			var defaultIndent = 15;
			if (item.label)
			{
				item = item.label;
				childMenu = true;
			}
			else if (item.indexOf(".gif") != -1 && item.indexOf("<IMG") == -1)
			{
				item = '<IMG SRC="' + item + '" NAME="menuItem' + countItems + 'Img">';
				defaultIndent = 0;
				if (document.layers)
					defaultHeight = null;
			}
			proto.menuItemHeight = proto.menuItemHeight || defaultHeight;
			proto.menuItemIndent = proto.menuItemIndent || defaultIndent;
			var itemProps = 'visibility:hidden;font-family:' + proto.fontFamily + ';font-weight:' + proto.fontWeight + ';font-size:' + proto.fontSize + 'px;'; // by cyan: px fixes problem in NS
			if (document.all)
				itemProps += '" onMouseOver="onMenuItemOver(null,this);" onMouseOut="onMenuItemOut(null,this);" onClick="onMenuItemAction(null,this);';
			var dTag= '<DIV ID="menuItem' + countItems + '" STYLE="position:absolute;left:0;top:' + (i * proto.menuItemHeight) + ';' + itemProps + '">';
			var dText = '<DIV ID="menuItemText' + countItems + '" STYLE="position:absolute;left:' + proto.menuItemIndent + ';top:0;color:' + proto.fontColor + ';">' + item + '</DIV>\n<DIV ID="menuItemHilite' + countItems + '" STYLE="position:absolute;left:' + proto.menuItemIndent + ';top:0;color:' + proto.fontColorHilite + ';visibility:hidden;">' + item + '</DIV>';
			if (item == "separator")
			{
				content += (dTag + '<DIV ID="menuSeparator' + countItems + '" STYLE="position:absolute;left:1;top:2;"></DIV>\n<DIV ID="menuSeparatorLite' + countItems + '" STYLE="position:absolute;left:1;top:2;"></DIV>\n</DIV>');
			}
			else if (childMenu)
			{
				content += (dTag + dText + '<DIV ID="childMenu' + countItems + '" STYLE="position:absolute;left:0;top:3;' + itemProps + '"><IMG SRC="' + proto.childMenuIcon + '"></DIV>\n</DIV>');
			}
			else
			{
				content += (dTag + dText + "\n</DIV>");
			}
			countItems++;
		}
		content += '<DIV ID="focusItem' + countMenus + '" STYLE="position:absolute;left:0;top:0;visibility:hidden;" onClick="onMenuItemAction(null,this);">&nbsp;</DIV>\n';
		content += '</DIV>\n</DIV>\n</DIV>\n';
		i = x;
	}
	if (!container) 
		return;
	if (container.innerHTML)
	{
		container.innerHTML = content;
	}
	else
	{
		container.document.open("text/html");
		container.document.writeln(content);
		container.document.close();
	}
	proto = null;
	if (container.document.layers)
	{
		container.clip.width = window.innerWidth;
		container.clip.height = window.innerHeight;
		container.onmouseout = this.hideMenu;
		container.menuContainerBgColor = this.menuContainerBgColor;
		for (var i = 0; i < container.document.layers.length; i++)
		{
			proto = container.menus[i].prototypeStyles || this.prototypeStyles || container.menus[i];
			var menu = container.document.layers[i];
			container.menus[i].menuLayer = menu;
			container.menus[i].menuLayer.Menu = container.menus[i];
			container.menus[i].menuLayer.Menu.container = container;
			var body = menu.document.layers[0].document.layers[0];
			body.clip.width = proto.menuWidth || body.clip.width;
			body.clip.height = proto.menuHeight || body.clip.height;
			for (var n=0; n<body.document.layers.length-1; n++)
			{
				l = body.document.layers[n];
				l.Menu = container.menus[i];
				l.menuHiliteBgColor = proto.menuHiliteBgColor;
				l.document.bgColor = proto.menuItemBgColor;
				l.saveColor = proto.menuItemBgColor;
				l.mouseout = l.Menu.mouseouts[n];
				l.mouseover = l.Menu.mouseovers[n];
				l.onmouseover = proto.onMenuItemOver;
				l.onclick = proto.onMenuItemAction;
				l.action = container.menus[i].actions[n];
				l.focusItem = body.document.layers[body.document.layers.length-1];
				l.clip.width = proto.menuItemWidth || body.clip.width + proto.menuItemIndent;
				l.clip.height = proto.menuItemHeight || l.clip.height;
				if (n > 0) 
					l.top = body.document.layers[n-1].top + body.document.layers[n-1].clip.height + proto.menuItemBorder;
				l.hilite = l.document.layers[1];
				l.document.layers[1].isHilite = true;
				if (l.document.layers[0].id.indexOf("menuSeparator") != -1)
				{
					l.hilite = null;
					l.clip.height -= l.clip.height / 2;
					l.document.layers[0].document.bgColor = proto.bgColor;
					l.document.layers[0].clip.width = l.clip.width - 2;
					l.document.layers[0].clip.height = 1;
					l.document.layers[1].document.bgColor = proto.menuLiteBgColor;
					l.document.layers[1].clip.width = l.clip.width - 2;
					l.document.layers[1].clip.height = 1;
					l.document.layers[1].top = l.document.layers[0].top + 1;
				}
				else if (l.document.layers.length > 2)
				{
					l.childMenu = container.menus[i].items[n].menuLayer;
					l.icon = proto.childMenuIcon;
					l.iconHilite = proto.childMenuIconHilite;
					l.document.layers[2].left = l.clip.width - 13;
					l.document.layers[2].top = (l.clip.height / 2) - 4;
					l.document.layers[2].clip.left += 3;
					l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
				}
			}
			body.document.bgColor = proto.bgColor;
			body.clip.width = l.clip.width + 1;
			body.clip.height = l.top + l.clip.height + 1;
			body.document.layers[n].clip.width = body.clip.width;
			body.document.layers[n].captureEvents(Event.MOUSEDOWN);
			body.document.layers[n].onmousedown = proto.onMenuItemDown;
			body.document.layers[n].onmouseout = proto.onMenuItemOut;
			body.document.layers[n].Menu = l.Menu;
			body.document.layers[n].top = -30;
			menu.document.bgColor = proto.menuBorderBgColor;
			menu.document.layers[0].document.bgColor = proto.menuLiteBgColor;
			menu.document.layers[0].clip.width = body.clip.width + 1;
			menu.document.layers[0].clip.height = body.clip.height + 1;
			menu.clip.width = body.clip.width + (proto.menuBorder * 2) + 1;
			menu.clip.height = body.clip.height + (proto.menuBorder * 2) + 1;
			if (menu.Menu.enableTracker)
			{
				menu.Menu.disableHide = true;
				setMenuTracker(menu.Menu);
			}
		}
	}
	else if (container.document.all)
	{
		var menuCount = 0;
		for (var x = 0; x < container.menus.length; x++)
		{
			var menu = container.document.all("menuLayer" + x);
			container.menus[x].menuLayer = menu;
			container.menus[x].menuLayer.Menu = container.menus[x];
			container.menus[x].menuLayer.Menu.container = menu;
			proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
			proto.menuItemWidth = proto.menuItemWidth || 200;
			menu.style.backgroundColor = proto.menuBorderBgColor;
			for (var i = 0; i < container.menus[x].items.length; i++)
			{
				var l = container.document.all["menuItem" + menuCount];
				l.Menu = container.menus[x];
				proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
				l.style.pixelWidth = proto.menuItemWidth;
				l.style.pixelHeight = proto.menuItemHeight;
				if (i > 0) 
					l.style.pixelTop = container.document.all["menuItem" + (menuCount -1)].style.pixelTop + container.document.all["menuItem" + (menuCount -1)].style.pixelHeight + proto.menuItemBorder;
				l.style.fontSize = proto.fontSize;
				l.style.backgroundColor = proto.menuItemBgColor;
				l.style.visibility = "inherit";
				l.saveColor = proto.menuItemBgColor;
				l.menuHiliteBgColor = proto.menuHiliteBgColor;
				l.action = container.menus[x].actions[i];
				l.hilite = container.document.all["menuItemHilite" + menuCount];
				l.focusItem = container.document.all["focusItem" + x];
				l.focusItem.style.pixelTop = -30;
				l.mouseover = l.Menu.mouseovers[x];
				l.mouseout = l.Menu.mouseouts[x];
				var childItem = container.document.all["childMenu" + menuCount];
				if (childItem)
				{
					l.childMenu = container.menus[x].items[i].menuLayer;
					childItem.style.pixelLeft = l.style.pixelWidth - 11;
					childItem.style.pixelTop = (l.style.pixelHeight / 2) - 4;
					childItem.style.pixelWidth = 30 || 7;
					childItem.style.clip = "rect(0 7 7 3)";
					l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
				}
				var sep = container.document.all["menuSeparator" + menuCount];
				if (sep)
				{
					sep.style.clip = "rect(0 " + (proto.menuItemWidth - 3) + " 1 0)";
					sep.style.backgroundColor = proto.bgColor;
					sep = container.document.all["menuSeparatorLite" + menuCount];
					sep.style.clip = "rect(1 " + (proto.menuItemWidth - 3) + " 2 0)";
					sep.style.backgroundColor = proto.menuLiteBgColor;
					l.style.pixelHeight = proto.menuItemHeight/2;
					l.isSeparator = true
				}
				menuCount++;
			}
			proto.menuHeight = (l.style.pixelTop + l.style.pixelHeight);
			var lite = container.document.all["menuLite" + x];
			lite.style.pixelHeight = proto.menuHeight + 2;
			lite.style.pixelWidth = proto.menuItemWidth + 2;
			lite.style.backgroundColor = proto.menuLiteBgColor;
			lite.style.cursor = "hand";
			var body = container.document.all["menuFg" + x];
			body.style.pixelHeight = proto.menuHeight + 1;
			body.style.pixelWidth = proto.menuItemWidth + 1;
			body.style.backgroundColor = proto.bgColor;
			container.menus[x].menuLayer.style.pixelWidth = proto.menuWidth || proto.menuItemWidth + (proto.menuBorder * 2) +2;
			container.menus[x].menuLayer.style.pixelHeight = proto.menuHeight + (proto.menuBorder * 2) +2;
			if (menu.Menu.enableTracker)
			{
				menu.Menu.disableHide = true;
				setMenuTracker(menu.Menu);
			}
		}
		container.document.all("menuContainer").style.backgroundColor = container.menus[0].menuContainerBgColor;
		container.document.saveBgColor = container.document.bgColor;
	}
	window.wroteMenu = true;
}

function onMenuItemOver(e, l, a)
{
	setTime();
	l = l || this;
	a = a || ActiveMenuItem;
	var ref = l;

	if (document.layers)
	{
		if (a)
		{
			a.document.bgColor = a.saveColor;
			if (a.hilite) 
				a.hilite.visibility = "hidden";
			if (a.childMenu) 
				a.document.layers[1].document.images[0].src = a.icon;
		}
		else
		{
			a = new Object();
		}
		if (this.mouseover && this.id != a.id)
		{
			if (this.mouseover.length > 4) {
				var ext = this.mouseover.substring(this.mouseover.length - 4);
				if (ext == ".gif" || ext == ".jpg")
				{
					this.document.layers[1].document.images[0].src = this.mouseover;
				}
				else
				{
					eval("" + this.mouseover);
				}
			}
		}
		if (l.hilite)
		{
			l.document.bgColor = l.menuHiliteBgColor;
			l.zIndex = 1;
			l.hilite.visibility = "inherit";
			l.hilite.zIndex = 2;
			l.document.layers[1].zIndex = 1;
			l.focusItem.zIndex = this.zIndex + 2;
		}
		l.focusItem.top = this.top;
		l.Menu.hideChildMenu(l);
	}
	else if (l.style)
	{
		document.onmousedown=l.Menu.onMenuItemDown;
		if (a)
		{
			a.style.backgroundColor = a.saveColor;
			if (a.hilite) 
				a.hilite.style.visibility = "hidden";
		}
		else
		{
			a = new Object();
		}
		if (l.mouseover && l.id != a.id)
		{
			if (l.mouseover.length > 4)
			{
				var ext = l.mouseover.substring(l.mouseover.length - 4);
				if (ext == ".gif" || ext == ".jpg")
				{
					l.document.images[l.id + "Img"].src = l.mouseover;
				}
				else
				{
					eval("" + l.mouseover);
				}
			}
		}

		if (l.isSeparator) 
			return;

		l.style.backgroundColor = l.menuHiliteBgColor;
		if (l.hilite)
		{
			l.style.backgroundColor = l.menuHiliteBgColor;
			l.hilite.style.visibility = "inherit";
		}

		l.focusItem.style.pixelTop = l.style.pixelTop;
		l.Menu.hideChildMenu(l);
	}

	ActiveMenuItem = ref;
}

function onMenuItemOut(e, l, a)
{
	setTime();
	l = l || this;
	a = a || ActiveMenuItem;
	if (l.id.indexOf("focusItem"))
	{
		if (a && l.top)
		{
			l.top = -30;
			if (a.mouseout && a.id != l.id)
			{
				if (a.mouseout.length > 4)
				{
					var ext = a.mouseout.substring(a.mouseout.length-4);
					if (ext == ".gif" || ext == ".jpg")
					{
						a.document.layers[1].document.images[0].src = a.mouseout;
					}
					else
					{
						eval("" + a.mouseout);
					}
				}
			}
		}
		else if (a && l.style)
		{
			document.onmousedown = null;
			window.event.cancelBubble = true;
			if (l.mouseout)
			{
				if (l.mouseout.length > 4)
				{
					var ext = l.mouseout.substring(l.mouseout.length - 4);
					if (ext == ".gif" || ext == ".jpg")
					{
						l.document.images[l.id + "Img"].src = l.mouseout;
					}
					else
					{
						eval("" + l.mouseout);
					} // if ext
				} // if l.mouseout
			} // if a
		}
	}
}

function onMenuItemAction(e, l)
{
	setTime();
	l = ActiveMenuItem;

	if (!l) 
		return;

	if (!ActiveMenu.Menu.disableHide)
		hideActiveMenus(ActiveMenu.menuLayer);

	if (l.action)
	{
		eval("" + l.action);
	}
}

function showMenu(menu, x, y, child)
{
	setTime();

	if (!window.wroteMenu) 
		return;

	if (document.layers)
	{
		if (menu)
		{
			var l = menu.menuLayer || menu;
			if (typeof(menu) == "string")
			{
				for (var n = 0; n < menuContainers.length; n++)
				{
					l = menuContainers[n].menus[menu];
					for (var i = 0; i<menuContainers[n].menus.length; i++)
					{
						if (menu == menuContainers[n].menus[i].label) 
							l = menuContainers[n].menus[i].menuLayer;
						if (l) 
							break;
					}
				}
				if (!l) 
					return;
			}
			l.Menu.container.document.bgColor = null;
			l.left = 1;
			l.top = 1;
			hideActiveMenus(l);
			if (this.visibility) l = this;
			window.ActiveMenu = l;
			window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
			setTimeout('if(window.ActiveMenu)window.ActiveMenu.Menu.setMouseTracker();', 300);
		}
		else
		{
			var l = child;
		}
		if (!l)
			return;
		for (var i = 0; i < l.layers.length; i++)
		{
			if (!l.layers[i].isHilite)
				l.layers[i].visibility = "inherit";
			if (l.layers[i].document.layers.length > 0)
				showMenu(null, "relative", "relative", l.layers[i]);
		}
		if (l.parentLayer)
		{
			if (x != "relative")
			{
				l.parentLayer.left = x || window.pageX || 0;
				var iw = window.innerWidth;
				if (iw > tie_w)
					l.parentLayer.left += (iw - tie_w) / 2; // TODO: add magic 22?
			}
			if (l.parentLayer.left + l.clip.width > window.innerWidth)
				l.parentLayer.left -= (l.parentLayer.left + l.clip.width - window.innerWidth);
			if (y != "relative")
				l.parentLayer.top = y || window.pageY || 0;
			if (l.parentLayer.isContainer)
			{
				l.Menu.xOffset = window.pageXOffset;
				l.Menu.yOffset = window.pageYOffset;
				l.parentLayer.clip.width = window.ActiveMenu.clip.width +2;
				l.parentLayer.clip.height = window.ActiveMenu.clip.height +2;
				if (l.parentLayer.menuContainerBgColor) 
					l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor;
			}
		}
		l.visibility = "inherit";
		if (l.Menu) 
			l.Menu.container.visibility = "inherit";
	}
	else if (document.all)
	{
		var l = menu.menuLayer || menu;
		hideActiveMenus(l);
		if (typeof(menu) == "string")
		{
			l = document.all[menu];
			for (var n = 0; n < menuContainers.length; n++)
			{
				l = menuContainers[n].menus[menu];
				for (var i=0; i<menuContainers[n].menus.length; i++)
				{
					if (menu == menuContainers[n].menus[i].label) 
						l = menuContainers[n].menus[i].menuLayer;
					if (l) 
						break;
				}
			}
		}
		window.ActiveMenu = l;
		l.style.visibility = "inherit";
		if (x != "relative")
		{
			l.style.pixelLeft = x || (window.pageX + document.body.scrollLeft) || 0;
			var iw = document.body.clientWidth;
			if (iw > tie_w)
				l.style.pixelLeft += (iw - tie_w) / 2;
		}
		if (y != "relative")
			l.style.pixelTop = y || (window.pageY + document.body.scrollTop) || 0;
		l.Menu.xOffset = document.body.scrollLeft;
		l.Menu.yOffset = document.body.scrollTop;
	}
	if (menu)
	{
		window.activeMenus[window.activeMenus.length] = l;
	}
}

var tie_w = 700;

function hideMenu(e)
{
	setTime();
	var l = e || window.ActiveMenu;
	if (!l) return true;
	if (l.menuLayer)
	{
		l = l.menuLayer;
	}
	else if (this.visibility)
	{
		l = this;
	}
	if (l.menuLayer)
	{
		l = l.menuLayer;
	}
	var a = ActiveMenuItem;
	document.saveMousemove = document.onmousemove;
	document.onmousemove = mouseTracker;
	if (a && document.layers)
	{
		a.document.bgColor = a.saveColor;
		a.focusItem.top = -30;
		if (a.hilite) 
			a.hilite.visibility = "hidden";
		if (a.childMenu) 
			a.document.layers[1].document.images[0].src = a.icon;
		if (mDrag.oldX <= e.pageX+3 && mDrag.oldX >= e.pageX-3 && mDrag.oldY <= e.pageY+3 && mDrag.oldY >= e.pageY-3)
		{
			if (a.action && window.ActiveMenu) 
				setTimeout('window.ActiveMenu.Menu.onMenuItemAction();', 2);
		}
		else if (document.saveMousemove == mDrag.doMenuDrag)
		{
			if (window.ActiveMenu) 
				return true;
		}
	}
	else if (window.ActiveMenu && document.all)
	{
		document.onmousedown = null;
		if (a)
		{
			a.style.backgroundColor = a.saveColor;
			if (a.hilite)
				a.hilite.style.visibility = "hidden";
		}
		if (document.saveMousemove == mDrag.doMenuDrag)
		{
			return true;
		}
	}
	if (window.ActiveMenu)
	{
		if (window.ActiveMenu.Menu)
		{
			if (window.ActiveMenu.Menu.disableHide)
				return true;
			e = window.event || e;
			if (!window.ActiveMenu.Menu.enableHideOnMouseOut && e.type == "mouseout")
				return true;
		}
	}
	hideActiveMenus(l);
	return true;
}

function hideChildMenu(menuLayer)
{
	setTime();
	var l = menuLayer || this;
	for (var i=0; i < l.Menu.childMenus.length; i++)
	{
		if (document.layers)
		{
			l.Menu.childMenus[i].visibility = "hidden";
		}
		else if (document.all)
		{
			l.Menu.childMenus[i].style.visibility = "hidden";
		}
		l.Menu.childMenus[i].Menu.hideChildMenu(l.Menu.childMenus[i]);
	}
	if (l.childMenu)
	{
		if (document.layers)
		{
			l.Menu.container.document.bgColor = null;
			l.Menu.showMenu(null,null,null,l.childMenu.layers[0]);
			l.childMenu.zIndex = l.parentLayer.zIndex +1;
			l.childMenu.top = l.top + l.parentLayer.top + l.Menu.menuLayer.top;
			if (l.childMenu.left + l.childMenu.clip.width > window.innerWidth)
			{
				l.childMenu.left = l.parentLayer.left - l.childMenu.clip.width + l.Menu.menuLayer.top + 15;
				l.Menu.container.clip.left -= l.childMenu.clip.width;
			}
			else if (l.Menu.childMenuDirection == "left")
			{
				l.childMenu.left = l.parentLayer.left - l.parentLayer.clip.width;
				l.Menu.container.clip.left -= l.childMenu.clip.width;
			}
			else
			{
				l.childMenu.left = l.parentLayer.left + l.parentLayer.clip.width + l.Menu.menuLayer.left -5;
			}
			l.Menu.container.clip.width += l.childMenu.clip.width +100;
			l.Menu.container.clip.height += l.childMenu.clip.height;
			l.document.layers[1].zIndex = 0;
			l.document.layers[1].document.images[0].src = l.iconHilite;
			l.childMenu.visibility = "inherit";
		}
		else if (document.all)
		{
			l.childMenu.style.zIndex = l.Menu.menuLayer.style.zIndex +1;
			l.childMenu.style.pixelTop = l.style.pixelTop + l.Menu.menuLayer.style.pixelTop;
			if (l.childMenu.style.pixelLeft + l.childMenu.style.pixelWidth > document.width)
			{
				l.childMenu.style.pixelLeft = l.childMenu.style.pixelWidth + l.Menu.menuLayer.style.pixelTop + 15;
			}
			else if (l.Menu.childMenuDirection == "left")
			{
				//l.childMenu.style.pixelLeft = l.parentLayer.left - l.parentLayer.clip.width;
			}
			else
			{
				l.childMenu.style.pixelLeft = l.Menu.menuLayer.style.pixelWidth + l.Menu.menuLayer.style.pixelLeft -5;
			}
			l.childMenu.style.visibility = "inherit";
		}
		if (!l.childMenu.disableHide)
			window.activeMenus[window.activeMenus.length] = l.childMenu;
	}
}

function hideActiveMenus(l)
{
	setTime();
	if (!window.activeMenus) 
		return;
	for (var i = 0; i < window.activeMenus.length; i++)
	{
		if (!activeMenus[i]) 
			return;
		
		if (activeMenus[i].visibility && activeMenus[i].Menu)
		{
			activeMenus[i].visibility = "hidden";
			activeMenus[i].Menu.container.visibility = "hidden";
			activeMenus[i].Menu.container.clip.left = 0;
		}
		else if (activeMenus[i].style)
		{
			activeMenus[i].style.visibility = "hidden";
		}
	}
	document.onmousemove = mouseTracker;
	window.activeMenus.length = 0;
}

function mouseTracker(e)
{
	e = e || window.Event || window.event;
	window.pageX = e.pageX || e.clientX;
	window.pageY = e.pageY || e.clientY;
}

function setMouseTracker()
{
	if (document.captureEvents)
	{
		document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
	}
	document.onmousemove = this.mouseTracker;
	document.onmouseup = this.hideMenu;
}

function setMenuTracker(menu)
{
	if (!window.menuTrackers) 
		window.menuTrackers = new Array();
	menuTrackers[menuTrackers.length] = menu;
	window.menuTrackerID = setInterval('menuTracker()',10);
}

function menuTracker()
{
	for (var i = 0; i < menuTrackers.length; i++)
	{
		if (!isNaN(menuTrackers[i].xOffset) && document.layers)
		{
			var off = parseInt((menuTrackers[i].xOffset - window.pageXOffset) / 10);
			if (isNaN(off)) 
				off = 0;
			if (off < 0)
			{
				menuTrackers[i].container.left += -off;
				menuTrackers[i].xOffset += -off;
			}
			else if (off > 0)
			{
				menuTrackers[i].container.left += -off;
				menuTrackers[i].xOffset += -off;
			}
		}
		if (!isNaN(menuTrackers[i].yOffset) && document.layers)
		{
			var off = parseInt((menuTrackers[i].yOffset - window.pageYOffset) / 10);
			if (isNaN(off)) 
				off = 0;
			if (off < 0)
			{
				menuTrackers[i].container.top += -off;
				menuTrackers[i].yOffset += -off;
			}
			else if (off > 0)
			{
				menuTrackers[i].container.top += -off;
				menuTrackers[i].yOffset += -off;
			}
		}
		if (!isNaN(menuTrackers[i].xOffset) && document.body)
		{
			var off = parseInt((menuTrackers[i].xOffset - document.body.scrollLeft) / 10);
			if (isNaN(off)) 
				off = 0;
			if (off < 0)
			{
				menuTrackers[i].menuLayer.style.pixelLeft += -off;
				menuTrackers[i].xOffset += -off;
			}
			else if (off > 0)
			{
				menuTrackers[i].menuLayer.style.pixelLeft += -off;
				menuTrackers[i].xOffset += -off;
			}
		}
		if (!isNaN(menuTrackers[i].yOffset) && document.body)
		{
			var off = parseInt((menuTrackers[i].yOffset - document.body.scrollTop) / 10);
			if (isNaN(off)) 
				off = 0;
			if (off < 0)
			{
				menuTrackers[i].menuLayer.style.pixelTop += -off;
				menuTrackers[i].yOffset += -off;
			}
			else if (off > 0)
			{
				menuTrackers[i].menuLayer.style.pixelTop += -off;
				menuTrackers[i].yOffset += -off;
			}
		}
	}
}

function onMenuItemDown(e, l)
{
	l = l || ActiveMenuItem || this;
	if (!l.Menu)
	{
	}
	else
	{
		if (document.layers)
		{
			mDrag.dragLayer = l.Menu.container;
			mDrag.startMenuDrag(e);
		}
		else
		{
			mDrag.dragLayer = l.Menu.container.style;
			mDrag.startMenuDrag(e);
			window.event.cancelBubble = true;
		}
	}
}

function startMenuDrag(e)
{
	if (document.layers)
	{
		if (e.which > 1)
		{
			if (window.ActiveMenu) 
				ActiveMenu.Menu.container.visibility = "hidden";
			window.ActiveMenu = null;
			return true;
		}
		document.captureEvents(Event.MOUSEMOVE);
		var x = e.pageX;
		var y = e.pageY;
	}
	else
	{
		var x = window.event.clientX;
		var y = window.event.clientY;
	}
	mDrag.offX = x;
	mDrag.offY = y;
	mDrag.oldX = x;
	mDrag.oldY = y;
	if (!ActiveMenu.Menu.disableDrag)
		document.onmousemove = mDrag.doMenuDrag;
	return false;
}

function doMenuDrag(e)
{
	if (document.layers)
	{
		mDrag.dragLayer.moveBy(e.pageX-mDrag.offX,e.pageY-mDrag.offY);
		mDrag.offX = e.pageX;
		mDrag.offY = e.pageY;
	}
	else
	{
		mDrag.dragLayer.pixelLeft = window.event.offsetX;
		mDrag.dragLayer.pixelTop = window.event.offsetY;
		return false; //for IE
	}
}