var oCurMenu;

function InitMenu()
{
	var aMenuItems = document.getElementsByClassName('menuItem', $("menu"));

	aMenuItems.each(
		function (aItem)
		{
			Event.observe(aItem, 'mouseover', MenuOver, false);
			if ($(aItem.id + "_submenu")) Event.observe($(aItem.id + "_submenu"), 'mouseout', MenuOut, false);
		}
	);

	MoveBorder($("menu_" + _GroupID));
}

function MenuOver(e)
{
	if (!e) var e = window.event;

	var oMenu = Event.element(e);

	oMenu = MoveBorder(oMenu);

	var subMenu = $(oMenu.id + "_submenu");

	if (subMenu && oMenu != oCurMenu)
	{
		var aPosition = Position.cumulativeOffset(oMenu);

		subMenu.style.left = (aPosition[0] + (Element.getWidth(oMenu) / 2)) + 'px';
		subMenu.style.marginLeft = '-' + (Element.getWidth(subMenu) / 2) + 'px';

		new Effect.Appear(
			subMenu,
			{
				queue: { position:'end', scope:(subMenu.id || 'global'), limit: 2 },
				duration: 0.5,
				to: 0.98
			}
		);
	}

	oCurMenu = oMenu;
}

function MenuOut(e)
{
	if (!e) var e = window.event;

	var oMenu = Event.element(e);
	
	if (!Element.hasClassName(oMenu, 'submenu'))
	{
		if (oMenu) oMenu = oMenu.parentNode;

		if (!Element.hasClassName(oMenu, 'submenu')) return;
	}

	if (!Position.within(oMenu, Event.pointerX(e), Event.pointerY(e)))
	{
		new Effect.Fade(
			oMenu,
			{
				queue: { position:'end', scope:(oMenu.id || 'global'), limit: 2 },
				duration: 0.5
			}
		);
		
		oCurMenu = null;
	}
}

function MoveBorder(oMenu)
{
	if (!Element.hasClassName(oMenu, 'menuItem'))
	{
		if (oMenu) oMenu = oMenu.parentNode;

		if (!Element.hasClassName(oMenu, 'menuItem')) return;
	}

	if (oMenu != oCurMenu)
	{
		HideSubMenus(oMenu);
	}

	var aPosition = Position.cumulativeOffset(oMenu);
	var aMainPosition = Position.cumulativeOffset($("top"));

	var iLeft = aPosition[0] - (aMainPosition[0] + (Element.getWidth($("top")) / 2));
	var iSize = Element.getWidth(oMenu);

	new Effect.Morph(
		$('menuBorder'),
		{
			style: 'margin-left: ' + iLeft + 'px; width: ' + iSize + 'px;',
			duration: 0.5
		}
	);

	return oMenu;
}

function HideSubMenus(oMenuExcept)
{
	var strMenuExcept = oMenuExcept.id + '_submenu';

	var aSubMenus = document.getElementsByClassName("submenu", $("submenuContainer"));

	aSubMenus.each(
		function (oSubMenu)
		{
			if (strMenuExcept != oSubMenu.id)
			{
				new Effect.Fade(
					oSubMenu,
					{
						queue: { position:'end', scope:(oSubMenu.id || 'global'), limit: 2 },
						duration: 0.5
					}
				);
			}
		}
	);
}

var hOrigValues = $H({});

function InitNewsletterForm()
{
	Element.getElementsByClassName($("newsletter_form"), "focusclear").each(
		function (oInput)
		{
			hOrigValues[oInput.name] = oInput.value;
			
			Event.observe(oInput, 'focus', function () {
				if (oInput.hasClassName("focusclear"))
				{
					oInput.value = '';
					oInput.removeClassName("focusclear");
				}
			});
			
			Event.observe(oInput, 'blur', function () {
				if (oInput.value == '')
				{
					oInput.value = hOrigValues[oInput.name];
					oInput.addClassName("focusclear");
				}
			});
		}
	);

	MoveBorder($("menu_" + _GroupID));
}

Event.observe(window, 'load', InitMenu, false);
Event.observe(window, 'load', InitNewsletterForm, false);