var Menu = new Object();
var isThemeShowing  = false;
Menu.install = function (list) {
    Dom.registerEvent(list, "mouseover", Menu.handleTopLevelMouseIn);
    Dom.registerEvent(list, "mouseout", Menu.handleTopLevelMouseOut);
    Dom.registerEvent(list, "click", Menu.handleTopLevelLinkClick);
//    Dom.registerEvent(Dom.get("themeInfoImage"), "mouseover", Menu.handleThemeListMouseIn);
//    Dom.registerEvent(Dom.get("themeInfoImage"), "mouseout", Menu.handleThemeNameMouseOut);
//    Dom.registerEvent(Dom.get("themeMenuList"), "mouseover", Menu.handleThemeListMouseIn);
//    Dom.registerEvent(Dom.get("themeMenuList"), "mouseout", Menu.handleThemeListMouseOut);
//    Dom.registerEvent(Dom.get("themeMenuList"), "click", Menu.handleTopLevelLinkClick);
};

/*Menu.handleThemeNameMouseOut = function (e) {
	if (isThemeShowing) {
		document.getElementById("themeListSection").style.display = "none";
	}
}
Menu.handleThemeListMouseIn = function (e) {
	var target = Dom.getTarget(e);
	isThemeShowing = true;
   	document.getElementById("themeListSection").style.display = "block";
    var subMenu = document.getElementById("themeListSection");
	var li = target.parentNode;
    if (li.nodeName.toUpperCase() != "LI") return;

	
    Menu.clearOffTimer(li);
    Dom.addClass(li, "Hover");
    
};*/
Menu.handleThemeListMouseOut = function (e) {
    var target = Dom.getTarget(e);
    if (target.nodeName.toUpperCase() != "A") return;
        var subMenu = document.getElementById("themeMenuList");
        if (subMenu) {
            var li = Dom.findNearestNode(subMenu, "LI");
            Menu.startOffTimer(li);
        }
        document.getElementById("themeListSection").style.display = "none";
        isThemeShowing = true;
};
Menu.handleTopLevelMouseIn = function (e) {
    var target = Dom.getTarget(e);
    if (target.nodeName.toUpperCase() != "A") return;
    if (target.className.indexOf("TopLevel") >= 0) {

        var li = target.parentNode;
        if (li.nodeName.toUpperCase() != "LI") return;

        Menu.clearOffTimer(li);
        Dom.addClass(li, "Hover");
		//Check whether li is searchMenu, and hide the select to avoid overlap 
		if ((is_ie) && (li != null && li.id == 'searchMenu')) {
			if (document.getElementById("period")) {
				document.getElementById("period").style.visibility = "hidden";	
			}
			var sourcesObject = document.getElementById("sourcesId");
			if(sourcesObject != null){
				sourcesObject.style.visibility = "hidden";	
			}	
		}
		if ((is_ie) && (li != null && li.id == 'homeMenu')) {
			if (document.getElementById("period")) {
				document.getElementById("period").style.visibility = "hidden";		
			}
		}
    } else {
        var subMenu = Dom.findNearestNode(target, "UL");
        if (subMenu) {
            var li = Dom.findNearestNode(subMenu, "LI");
			//Check whether li is searchMenu, and hide the select to avoid overlap            
			if ((is_ie)&&(li != null && li.id == 'searchMenu')) {
				if (document.getElementById("period")) {
					document.getElementById("period").style.visibility = "hidden";		
				}
				var sourcesObject = document.getElementById("sourcesId");
				if(sourcesObject != null){
					sourcesObject.style.visibility = "hidden";	
				}
			}
			if ((is_ie)&&(li != null && li.id == 'homeMenu')) {
				if (document.getElementById("period")) {
					document.getElementById("period").style.visibility = "hidden";		
				}
			}
            Menu.clearOffTimer(li);
        }
    }
};

Menu.handleTopLevelMouseOut = function (e) {
    var target = Dom.getTarget(e);
    if (target.nodeName.toUpperCase() != "A") return;
    if (target.className.indexOf("TopLevel") >= 0) {
        var li = target.parentNode;
        if (li.nodeName.toUpperCase() != "LI") return;

        Menu.startOffTimer(li);
		//Check whether li is searchMenu, and hide the select to avoid overlap            
		if ((is_ie)&&(li != null) && (li.id == 'searchMenu')) {
			if (document.getElementById("period")) {
				document.getElementById("period").style.visibility = "visible";		
			}
			var sourcesObject = document.getElementById("sourcesId");
			if(sourcesObject != null){
				sourcesObject.style.visibility = "visible";	
			}
		}        
    } else {
        var subMenu = Dom.findNearestNode(target, "UL");
        if (subMenu) {
            var li = Dom.findNearestNode(subMenu, "LI");
            //Check whether li is searchMenu, and hide the select to avoid overlap            
			if ((is_ie)&&(li != null)&& (li.id == 'searchMenu')) {
				if (document.getElementById("period")) {
					document.getElementById("period").style.visibility = "visible";		
				}
				var sourcesObject = document.getElementById("sourcesId");
				if(sourcesObject != null){
					sourcesObject.style.visibility = "visible";	
				}
			}
            Menu.startOffTimer(li);
        }
    }
}
Menu.handleTopLevelLinkClick = function (e) {
    var target = Dom.getTarget(e);
    if (target.nodeName.toUpperCase() != "A") return;
    if (target.href == "" + window.location.href + "#") {
        target.blur();
        Dom.cancelEvent(e);
        return false;
    }
    return true;
};
Menu.startOffTimer = function (node) {
    Menu.clearOffTimer(node);
    var runnable = {
        run: function () {
            Dom.removeClass(this.node, "Hover");
			try {           
            	this.node.timerId = null;
            } catch (exception) {
            }
        },
        node: node
    };
    try {
    	node.timerId = Invoker.invokeLater(runnable, 50);
    } catch (exception) {
    	//alert(exception);
    }
};
Menu.clearOffTimer = function (node) {
    if ((node != null)&&(node.timerId)) {
        window.clearTimeout(node.timerId);
    }
};
