// JavaScript Document
(function($) {

$.widget("ui.catMenu", {

	_init: function() {
		var self = this;
		$.ui.catMenu._IE6 = (jQuery.browser.msie && parseFloat(jQuery.browser.version) < 7);
		this.element
			.mouseover(function(ev) { self._onMouseOver(ev); })
			.mouseout(function(ev) { self._onMouseOut(ev); });
	},

	_hideContent: function(current) {
		var currentParent = $(current).parent().parent().prev("a");
		if (($.ui.catMenu._opened) && ($($.ui.catMenu._opened).html() !== $(currentParent).html())) {
			/* Hide Children UL */
			var ul_first = $.ui.catMenu._opened.parent().find("ul:first");
			$(ul_first).hide();
			if ($.ui.catMenu._IE6) {$(ul_first).next().hide();}
			$.ui.catMenu._opened.removeClass("active");
			/* Hide Sibling UL :: Leav level -> Return to previous */
			var openedParent = $.ui.catMenu._opened.parent().parent().prev("a");
			if ($(currentParent).html() !== $(openedParent).html()) {
				var parent_ul_first = $(openedParent).parent().find("ul:first");
				$(parent_ul_first).hide();
				if ($.ui.catMenu._IE6) {$(parent_ul_first).next().hide();}
				$(openedParent).removeClass("active");
			}
			/* Hide Full Tree :: Full Leav menu */
			if ( $(currentParent).html() == null ) {
				var openedParent = $.ui.catMenu._opened.parent().parent().prev("a");
				$.ui.catMenu._opened = openedParent;
				this._hideContent();
			}
			$.ui.catMenu._opened = null;
		}
	},

	_showContent: function(container) {
		this._hideContent(container);
		$(container).addClass("active");
		var box = $(container).parent().find("ul:first");
		$(box).show();this._showOverlay(box);
		$.ui.catMenu._opened = container;
	},
	
	_showOverlay: function(container) {
		if ($.ui.catMenu._IE6) {
			var content = container;
			if (content.length) {
				var iframes = container.find("iframe");
				if (iframes.length) {
					iframes.show();
				} else {
					var offset = content.offset();
					var width = content.width() + 12;
					var height = content.height() + 12;
					$("<iframe />")
						.attr("src", "javascript:'<html></html>';")
						.attr("frameBorder", "0")
						.css({
							left: "175px",
							top: "0px",
							width: width + "px",
							height: height + "px",
							position: "absolute",
							zIndex: -999,
							opacity: 0
						})
						.insertAfter(content);
					$(content).css({
						zIndex: 555
					});
				}
			}
		}
	},

	_onMouseOver: function(event) {
		this._resetTimeout();
		if ($.ui.catMenu._opened != this.element) {
			this._showContent(this.element);
		}
	},

	_onMouseOut: function(event) {
		var self = this;
		$.ui.catMenu._timer = setTimeout(function() { self._hideContent() }, this.options.hideDelay);
	},

	_resetTimeout: function() {
		if ($.ui.catMenu._timer) {
			clearTimeout($.ui.catMenu._timer);
			$.ui.catMenu._timer = null;
		}
	}

});
$.ui.catMenu.defaults = {
	hideDelay: 500
};
})(jQuery);
