/*
	jQuery cycle v1.1
	
	Wouter Beeftink
	wouter@footsteps.nl
*/

(function($) {
	
	$.fn.cycle = function(settings) {
		
		var settings = $.extend({
								
			speed : 1000,
			interval : 5000,
			start : 0,
			startShown : true,
			keep : false
		
		}, settings);
		
		function startCycle() {
			
			timer = window.setInterval(function() {
				
				var previous = elements.eq(currentElement);
				
				if(currentElement > (amount - 2))
					currentElement = 0;
				else
					currentElement++;
				
				previous.css('z-index', 1);
				
				var element = elements.eq(currentElement);
				element.css('z-index', 2);
				element.fadeIn(settings.speed, function() {
					previous.hide();
				});
				
			}, settings.interval);
			
		};
		
		function stopCycle() {
			window.clearInterval(timer);
		};
		
		function bindEvents() {
			elements.hover(function() {
				stopCycle();
			}, function() {
				startCycle();
			});
		};
		
		var elements = $(this);
		var amount = elements.length;
		var currentElement = settings.start > amount ? 0 : settings.start;
		var timer;

		elements.hide();
		
		if(settings.startShown)
			elements.eq(currentElement).show();
		else
			elements.eq(currentElement).fadeIn(settings.speed);

		if(amount > 1) {
			
			if(amount) {
				startCycle();
				
				if(settings.keep)
					bindEvents();
	
			};

		};
		
		return this;
		
	};

})(jQuery);
