(function($)
{
	$.fn.rotator = function(options)
	{
		var defaults = {
			duration: 1500,
			cssClassActive: 'active'
		};
		
		var options = $.extend(defaults, options);

		var node = this;
		var isAnimating = 1;
		
		// Rotate
		var rotate = function()
		{
			setTimeout(function()
			{
				if (isAnimating == 1)
				{
					var current = $("ul > li.active", node);
					var next = current.next();
					
					if (next.length == 0) { next = $("ul > li:eq(0)", node); }
					
					$('.active', current).fadeOut(500);
					$('.normal', current).slideDown(500);
					$('.active', next).slideDown(500);
					
					current.removeClass(options.cssClassActive);
					next.addClass(options.cssClassActive);
				}
				
				rotate();
				
		    }, options.duration);
		};

		$("ul > li", node).hover
		(
			function()
			{
				isAnimating = 0;
				
				$('ul > li .active', node).stop(false, true);
				$('ul > li .active', node).hide();
				$("ul > li", node).removeClass(options.cssClassActive);
				
				$(this).addClass(options.cssClassActive);
				$('.active', this).show();
			},
			function()
			{
				isAnimating = 1;
			}
		);

		rotate();
	}; 
})(jQuery);
