/**
 * Autor         : the LSI team
 * Creation date : 2011-02-15
 * Version       : 1.0
 * Description   : Add dynamic slider to the menu.
 */

(function($) {

	// jQuery plugin definition
	$.fn.lsiSlidingMenu = function(params) {
		
		// merge the default value with custom params
		params = $.extend({
			currentItemSelector : '.current-menu-item,.current-menu-ancestor',
			duration            : 300
		}, params); 

		// variables
		var $menu = $(this).find('ul').first();

		var $sliderElement = $(document.createElement('li'));
		$sliderElement.css('z-index', 800);
		$(this).find('li').css({zIndex: 900,
			position:'relative'
		});

		// add a class to the menu
		$menu.addClass('lsi-sliding-menu');
		$sliderElement.addClass('lsi-sliding-menu-slider');

		// function to move the slider
		var moveSlider = function($element, animate) {
			var offset = $element.position();
			var width  = $element.width();

			if (animate === false) {
				$sliderElement.stop(true, true).css({
						left  : offset.left,
						width : width,
						top   : offset.top
					});
			} else {
				$sliderElement.stop(true, true).animate({
						left  : offset.left,
						width : width,
						top   : offset.top
					}, params.duration);
			}

		};

		// add the slider element to dom
		$menu.append($sliderElement);

		// bind mouse event
		$(">li", $menu).mouseenter(function() {
			moveSlider($(this));
		});

		$($menu).mouseleave(function() {
				moveSlider($(params.currentItemSelector, $menu).first());
		});
		
		// place the slider on the current item selected
		moveSlider($(params.currentItemSelector, $menu).first(), false);

	};

})(jQuery);

