/**
 * Expanding Menu v1.0
 *
 * Tar en HTML-lista (<ul><li>...</li></ul>) och skapar en expanderbar meny där
 * översta nivån visas men under
 */
(function($) {
	$.fn.expandingMenu = function(settings) {

		/** Grundinställningar */
		settings = jQuery.extend({
			speed     : 'def',		// fast, def, slow eller antal millisekunder
			delay     : 500,		// Antal millisekunder menyn ska vara kvar efter mouseout
			autoArrows: true		// true eller false
		}, settings);

		/** Lägger till klass för listobjekt med undermenyer */
		$(".menu li:has(ul)").each(function() {
			$(this).addClass("has_submenu");

			/** Markera att undermeny finns? */
			if (settings.autoArrows) {
				$(this).addClass("marker");
			}
		});

		var timeOut;

		$(this).find("> ul > li.has_submenu").hover(
		function () {
			clearTimeout(timeOut);

			$.submenu = $(this).find(".submenu:first");

			/** Stäng alla tidigare öppna undermenyer */
			$(this).parent().find(".submenu").fadeOut(settings.speed);

			/** Flyttar undermenyn lite till vänster så den ligger i linje med menyalternativet (och inte skuggan) */
			$.submenu.css("top", $(this).offset().top + 26);
			$.submenu.css("left", $(this).offset().left - 17);

			$.submenu.fadeIn(settings.speed);
		},
		function() {
			myThis = this;
			timeOut = setTimeout(function() {
				$(myThis).find(".submenu").fadeOut(settings.speed);
			}, settings.delay);
		});

		$(this).find(".submenu li.has_submenu").hover(
		function() {
			clearTimeout(timeOut);

			$.submenu = $(this).find(".submenu:first");

			/** Flyttar undermenyn så den ligger till höger och första alternativet i höjd med ovanstående menys aktuella alternativ */
			$.submenu.css("top", $(this).offset().top - $(this).closest(".submenu").offset().top - 21);	// Flyttar lite uppåt
			$.submenu.css("left", $(this).width() + 42 - 5);	// Flyttar åt höger

			$.submenu.fadeIn(settings.speed);
		},
		function() {
			myThis = this;
			timeOut = setTimeout(function() {
				$(myThis).find(".submenu").fadeOut(settings.speed);
			}, settings.delay);
		});
	};
})(jQuery);
