(function($){

	$.fn.rotator = function(user_options)
	{
		var options = {delay: 10000, duration: 1000};
		$.extend(options, user_options);

		$(this).each(function(index, element){

			var rotator = $(this);
			var contents = rotator.children('.item');
			var nav_items = null;

			$(this).data('total', contents.length)
			$(this).data('current', 0);
			$(this).data('int_id', 0);

			// Manipulacions CSS previes

		//	$(this).css({position: 'relative'});

			// Manipulacions dels continguts

			contents.each(function(index, el){
				$(el).css({position: 'absolute', top: '0'});
				if(index == 0) $(el).show();
				else $(el).hide();
			});

			// Crear navegacio

			$(this).append('<div class="nav_wrapper"><ul class="navigation"></ul></div>');

			for(i = 0; i < contents.length; i++)
			{
				var item = $('<li><a href="#"><span>' + (i + 1) + '</span></a></li>');
				item.find('a').data('index', i);
				if(i == 0) item.addClass('current');
				$(this).find('.navigation').append(item);
			};

			nav_items = rotator.find('.navigation li');

			$(this).delegate('.navigation a', 'click', function(){
				var current = rotator.data('current');
				clearInterval(rotator.data('int_id'));
				next = $(this).data('index');
				$(contents[current]).fadeOut();
				$(nav_items[current]).removeClass('current');
				current = next;
				$(contents[current]).fadeIn();
				$(nav_items[current]).addClass('current');
				rotator.data('current', current);
			});

			// Mostrar navegacio al passar el ratoli per damunt el rotatori

			$(this).find('.nav_wrapper').hide();

			$(this).mouseenter(function(){
				$(this).find('.nav_wrapper').fadeIn();
			});

			$(this).mouseleave(function(){
				$(this).find('.nav_wrapper').delay(1000).fadeOut();
			});

			// Iniciar la rotacio

			$(this).data('int_id', setInterval(function(){
				var current = rotator.data('current');
				$(contents[current]).fadeOut(options.duration);
				$(nav_items[current]).removeClass('current');
				current++;
				if(current >= rotator.data('total')) current = 0;
				$(contents[current]).fadeIn(options.duration);
				$(nav_items[current]).addClass('current');
				rotator.data('current', current);
			}, options.delay));
		});
	}
})(jQuery);
