	var currentOpenMenu = null;
	var clickOpen = false;

    function handleMenuTopLevelClick(intMenu, maxMenuItems, preSelectedTab, isTouchDevice) {
        var subMenuObj = getDocumentObject("submenu"+intMenu);
        if (subMenuObj && "block" == subMenuObj.style.display && clickOpen) {
            currentOpenMenu = null;
            resetMenu(maxMenuItems, preSelectedTab);
            clickOpen = false;
        } else {
            // open first link in submenu at click (if device is not a touch screen)
            if (!isTouchDevice && subMenuObj) {
                try {
                    var subAtags = subMenuObj.getElementsByTagName("a");
                    if (subAtags && subAtags.length > 0 && subAtags[0].href && subAtags[0].href.toLowerCase().indexOf("http") == 0) {
                        if (subAtags[0].href.toLowerCase().indexOf("http://"+document.location.hostname) == 0 || subAtags[0].href.toLowerCase().indexOf("https://"+document.location.hostname) == 0)
                            document.location.href = subAtags[0].href;
                        else
                            window.open(subAtags[0].href);
                        return;
                    }
                } catch (ex) {}
            }
            // END: open first link in submenu at click
            openNewSubMenu(intMenu, maxMenuItems, preSelectedTab);
            clickOpen = true;
        }
    }

	function openNewSubMenu(intMenu, maxMenuItems, preSelectedTab) {
		if (getDiv('openSubmenu'))
			show('openSubmenu', false);
		// show the open submenu (close all others)
		for (i = 0; i < maxMenuItems; i++) {
			// get a reference to the div tag
			if (i == preSelectedTab)
				continue;
			else if (i == intMenu) {
                var submenuObj = getDocumentObject("submenu"+i);
				if (submenuObj) {
                    display(submenuObj.id, true);
                }
                getDocumentObject("button-menu"+i).className = "menu-button-hover";
            }            
            else {
                var submenuObj = getDocumentObject("submenu"+i);
				if (submenuObj) {
                    display(submenuObj.id, false);
				}
                getDocumentObject("button-menu"+i).className = "menu-button";
            }
		} // end for

		registerMenuOver(intMenu, preSelectedTab);
	}

	function registerMenuOver(id, preSelectedTab){
		if (i == preSelectedTab)
			return;
		currentOpenMenu = id+1; /* NOTE! Adding one since we do not want currentOpenMenu to be zero since "if (currentOpenMenu)" will be true in that case  */
        positionSubMenu(id);
	}

    function positionSubMenu(id) {
        var buttonObj = getDocumentObject("button-menu"+id);
        var subMenuObj = getDocumentObject("submenu"+id);
        if (buttonObj && subMenuObj) {
            subMenuObj.style.top = (getObjHeight(buttonObj)+getObjTopPos(buttonObj))+"px";
            subMenuObj.style.left = (getObjLeftPos(buttonObj)+2)+"px";
        }
    }

	function registerMenuOut(menuResetMS, maxMenuItems, preSelectedTab){
		currentOpenMenu = null;
		setTimeout('resetMenu(' + maxMenuItems+ ', ' + preSelectedTab + ')', menuResetMS);
	}

	function resetMenu(maxMenuItems, preSelectedTab){
		/* do not close if any menu is open (= the mouse is over some menu option) */
		if (currentOpenMenu)
			return;

		/* "open" a dummy number to "close" all menu options */
		openNewSubMenu(1000, maxMenuItems, preSelectedTab);

		/* open sub menu if any */
		if (getDiv('openSubmenu'))
			show('openSubmenu', true);

		/* mark pre selected menu option */
		if (preSelectedTab && preSelectedTab != "null") {

			if (getDocumentObject("button-menu"+preSelectedTab))
				getDocumentObject("button-menu"+preSelectedTab).className = "menu-button-current";
		}
	}

