(function($) {
    var $previous;
    var $temp;
    $.fn.lavalamp = function(options) {

        options = $.extend({
            overlap: 0,
            speed: 500,
            textspeed: 400,
            reset: 1200,
            color: '#ffffff',
            easing: 'easeOutExpo'
        }, options);
        
        $('a.mmCMSListMenuLink, a.mmCMSListMenuLinkHighlighted').hover(function() {
            if ($previous == null) $previous = $('.mmCMSListMenuLinkHighlighted');
            else $previous = $temp;
            if ($previous[0] != $(this)[0]) {
                $(this).animate({ color: 'white' },
                {
                    duration: options.textspeed,
                    queue: false
                });
                $previous.animate({ color: '#81001d' },
                {
                    duration: options.textspeed,
                    queue: false
                });
            }
            $temp = $(this);
        },
        function() { });

        return this.each(function() {
            var nav = $(this),
		 		  currentPageItem = $('.mmCMSListMenuHighlightedLI', nav),
		 		  back,
		 		  reset;
            /*v pripade ak som na stranke, ktora je mimo poloziek hlavneho menu, napr. 404.hmtl tak vysvietim polozku hotel z hlavneho menu*/ 
            if (currentPageItem.length == 0) 
               { 

                   $(".mmCMSListMenuLI:first").attr('class','mmCMSListMenuHighlightedLI');
                   $(".mmCMSListMenuLink:first").attr('class','mmCMSListMenuLinkHighlighted');
                   currentPageItem = $('.mmCMSListMenuHighlightedLI', nav);
                   $(".mmCMSListMenuLinkHighlighted").css("color","#fff");
               } 

            $('<li id="back"><div class="left"></div></li>').css({
                width: currentPageItem.outerWidth(),
                height: currentPageItem.outerHeight() + options.overlap,
                left: currentPageItem.position().left,
                top: currentPageItem.position().top - options.overlap / 2,
                color: options.color
            }).appendTo(this);

            back = $('#back', nav);

            $('li:not(#back)', nav).hover(function() {
                // mouse over
                clearTimeout(reset);
                back.animate(
					{
					    left: $(this).position().left,
					    width: $(this).width()
					},
					{
					    duration: options.speed,
					    easing: options.easing,
					    queue: false
					}
				);
            }, function() {
                // mouse out	
                reset = setTimeout(function() {
                    back.animate({ width: currentPageItem.outerWidth(), left: currentPageItem.position().left }, options.speed);
                    $('a.mmCMSListMenuLinkHighlighted').animate({ color: '#fff' },
                    {
                        duration: options.textspeed,
                        queue: false
                    });
                    $('a.mmCMSListMenuLink').animate({ color: '#81001d' },
                    {
                        duration: options.textspeed,
                        queue: false
                    });

                    $previous = null;
                }, options.reset);
            });
        }); // end each
    };
})(jQuery);
