﻿function navigateTo(url) {

    document.location = url;
}

var MENU_ITEM_STATE_IDLE = "idle";
var MENU_ITEM_STATE_HOVER = "hover";
var MENU_ITEM_STATE_EXPANDED = "expanded";

function initTopMenuButtons() {

    var topMenu = document.getElementById("topMenu");
    Element.extend(topMenu);
    var menuItems = topMenu.getElementsByClassName("menuItem");
    
    for (var i = 0; i < menuItems.length; i++) {
    
        var menuItem = menuItems[i];
        
        Element.extend(menuItem);
        
        var buttons = menuItem.getElementsByClassName("button");
        for (var j = 0; j < buttons.length; j++) Element.extend(buttons[i]);
        
        menuItem.onmouseover = menuItemMouseOverHandler;
        menuItem.onmouseout = menuItemMouseOutHandler;
    }
}

function setMenuItemState(menuItem, state) {

    if (menuItem.state == state) return;
    var buttons = menuItem.getElementsByClassName("button");

    for (var i = 0; i < buttons.length; i++) {

        var button = buttons[i];
        if (button.hasClassName(menuItem.state)) button.removeClassName(menuItem.state);
        if (!button.hasClassName(state)) button.addClassName(state);
    }
    
    menuItem.state = state;
}

function menuItemMouseOverHandler(event) {

    var target;
	if (!event) var event = window.event;
	if (event.target) target = event.target;
	else if (event.srcElement) target = event.srcElement;

    var menuItem = Element.extend(target);
    while (!menuItem.hasClassName("menuItem")) menuItem = Element.extend(menuItem.parentNode);
    
    var subMenus = menuItem.getElementsByClassName("subMenu");

    setMenuItemState(menuItem, subMenus.length > 0 ? MENU_ITEM_STATE_EXPANDED : MENU_ITEM_STATE_HOVER);
}

function menuItemMouseOutHandler(event) {

    var target;
	if (!event) var event = window.event;
	if (event.target) target = event.target;
	else if (event.srcElement) target = event.srcElement;

    var menuItem = Element.extend(target);
    while (!menuItem.hasClassName("menuItem")) menuItem = Element.extend(menuItem.parentNode);
    
    setMenuItemState(menuItem, MENU_ITEM_STATE_IDLE);
}

Event.observe(window, 'load', initTopMenuButtons);
