/**
 * Created by JetBrains PhpStorm.
 * User: parkov
 * Date: 04/10/11
 * Time: 13.56
 * To change this template use File | Settings | File Templates.
 */
(function($) {

	function HoverMenu($element) {
		var self = this;

		self.$ = $element;
		self.$thirdback = $("<div></div>").addClass("hoverback").height(0).appendTo("body");
		self.ignoreThird = false;

		var animationlength = 150;

		self.showUnder = function($element,callback) {

			/*if ($element.is("div#menu li li") && self.ignoreThird) {
				console.log("ignoring third");
				$("div#menu ul ul ul").hide();
				return;
			}*/

			var $children = $element.children("ul");

			if ($children.is("div#menu ul ul ul")) {
				self.$thirdback.css({'left':0,'top':self.$.offset().top + self.$.outerHeight(),'width':self.$.width()});

				self.$thirdback.stop(true,false).animate({'height':33},animationlength,function() {
					$element.children("ul").css({"z-index":100}).show();
					self.ie7check($element.children("ul"));
					if (callback) callback();
				});
			} else {
				$element.children("ul").show();
				self.ie7check($element.children("ul"));
				if (callback) callback();
			}
		};

		//Internet explorer has a z-index bug, which (in this case) requires z-index to be set on all parents in the current hierarchy
		self.ie7check = function($element) {
			if ($.browser.msie && parseInt($.browser.version,10) == 7) {
				$element.parents().css("z-index",500);
			}
		};

		self.hideUnder = function($element) {
			$element.children("ul").hide();
		};

		self.hoverItem = function(event) {

			var $li = $(this).parent();

			self.$.find("li").not($li).not($li.parents()).each(function(index,item) {
				self.hideUnder($(this));
			});

			self.showUnder($li,function() {
				if (self.$.find("ul ul ul:visible").length == 0) {
					self.$thirdback.stop(true,false).animate({'height':0},animationlength);
				}
			});
		};

		self.showCurrentTree = function() {
			var $current = self.$.find("li.current");

			if ($current.length == 0) return;
			
			var $rootline = $current.add($current.parentsUntil("div#menu","li"));

			$rootline.each(function() {
				self.showUnder($(this));
			});
		};

		(self.init = function() {

			if ($(".t2h-shop-pi1-singleview").length > 0) {
				$("div#menu ul ul ul").remove();
			}

			self.showCurrentTree();

			self.$.find("li a").bind("mouseenter",self.hoverItem);

		})();


	}

	$(function() {
		new HoverMenu($("div#menu"));
	});

})(jQuery);
