Event.observe(window, 'load', function(){
	menuItem = $$('li.header-menu-item');
	for (i = 0; i < menuItem.length; i++) {
		Event.observe(menuItem[i], 'mouseout', menuItemOut);
		Event.observe(menuItem[i], 'mouseover', menuItemOver);
	}
});

var menuIntervalID = null;
var menuItemClosed = null;

function menuItemOver()
{
	if (menuIntervalID != null) {
		clearInterval(menuIntervalID);
		menuIntervalID = null;
		menuItemClosed = null;
	}

	menuItemLink = $$('a.header-menu-item-link');
	for (i = 0; i < menuItemLink.length; i++) {
		Element.removeClassName(menuItemLink[i], 'header-menu-item-link-hover');
	}

	submenu = $$('ul.header-submenu');
	for (i = 0; i < submenu.length; i++) {
		Element.removeClassName(submenu[i], 'block-visible');
	}

	menuItemLink = Element.firstDescendant(this);

	Element.addClassName(menuItemLink, 'header-menu-item-link-hover');

	submenu = Element.next(menuItemLink, 'ul.header-submenu');
	if (submenu != undefined) {
		Element.addClassName(submenu, 'block-visible');
		offset = menuItemLink.positionedOffset().left + menuItemLink.getWidth()/2 - submenu.getWidth()/2;
		Element.setStyle(submenu, {left: (offset < 0 ? 0 : offset) + 'px'});
	}
}

function menuItemOut()
{
	if (menuIntervalID != null) {
		clearInterval(menuIntervalID);
		menuIntervalID = null;
		menuItemClosed = null;
	}
	menuItemClosed = this;
	if (Element.descendants(this).length > 1) {
		menuIntervalID = setInterval(closeSubMenu, 500);
	} else {
		closeSubMenu();
	}
}

function closeSubMenu()
{
	clearInterval(menuIntervalID);
	menuIntervalID = null;

	menuItemLink = Element.firstDescendant(menuItemClosed);
	Element.removeClassName(menuItemLink, 'header-menu-item-link-hover');
	Element.removeClassName(Element.next(menuItemLink, 'ul.header-submenu'), 'block-visible');

	menuItemClosed = null;
}
