MG.namespace("MG.widget.Menu.js");
MG.widget.Menu = (function() {
	var rootOpening = false;

	function _hideMenus() {
		$(".sub-menu").hide(0);
		$(".menu-horizontal li").removeClass("on");
		$(".menu-horizontal").find(".toggle-sub-menu").html("+");
		rootOpening = false;
	}
	
	/**
	 * handles a root level mouseover
	 */
	function _handleRootMouseOver(e) {
		_hideMenus();
		$(this).addClass("on");
	
		if(rootOpening === false) {
			if($(this).hasClass("has-sub-menu") && $(this).find(".sub-menu").css("display") != "block") {
				rootOpening = true;
				$(this).find(".toggle-sub-menu").html("-");
				$(this).find(".sub-menu").show();
				
				setTimeout(function() {
					rootOpening = false;
				}, 250);
			}
		}
		
		e.preventDefault();
		e.stopPropagation();
		e.stopImmediatePropagation();
	}
	
	function _handleRootMouseOut(e) {
	}
	
	function _handleClick(e) {
		window.location.href = (e.target.title == "") ? e.target.parentNode.title : e.target.title;
	}
	
	function initMenu() {
		/*
		root.find("li.has-sub-menu")
		*/
		$(".menu-horizontal > li")
			.bind("mouseover", _handleRootMouseOver)
			.bind("mouseout", _handleRootMouseOut);
		
		$(".menu-horizontal li").bind("click", _handleClick);

		$(document.body)
			.bind("click", _hideMenus)
			.bind("mouseover", _hideMenus);
	}
	
	MG.registerBoot(initMenu);
})();
