/*******************************************************************************
*	jQuery slideshow plugin
*	Author: Phillip j Parr - http://wizpip.com
*******************************************************************************/

(function($){
		  
	$.fn.extend({
				
		slideshow: function(options) {
			
			var defaults = {
				fadeSpeed: 1000,
				duration: 5000
			}
			
			var options = $.extend(defaults, options);
			
			return this.each(function() {
				
				var o = options;
				$(this).wrap('<div class="slideshow_container">');
				if($(this).find('li').length <= 1) return;
				var control = $('<ul class="control">');
				var i = 1;
				$(this).find('li').each(function() {
					$(control).append('<li class="slide'+i+'"><a href="#slide'+i+'">'+i+'</a></li>');
					$(this).addClass('slide'+i++);
				});
				$(control).find('li:first').addClass('on');
				$(this).parent().append(control);
				$(this).find('li').fadeOut(0);
				$(this).find('li:first').addClass('current').fadeIn(o.fadeSpeed);
				
				var self = this;
				
				$(this).parents('.slideshow_container').find('.control a').click(function() {
					if(!$(this).parent().hasClass('on')) {
						var slide = $(this).parents('.slideshow_container').find('.slideshow .'+$(this).parent().attr('class'));
						showSlide(self, slide);
					}
					return false;
				});
				
				setTimeout(function() { showNext(self) }, o.duration);
				
				function showNext(obj) {
					var next = $(obj).find('.current').next();
					if(!next.length) {
						next = $(obj).find('li:first');
					}
					showSlide(obj, next);
					setTimeout(function() { showNext(obj) }, o.duration);
				}
				
				
				function showSlide(obj, slide) {
					$(obj).find('.current').removeClass('current').fadeOut(o.fadeSpeed);
					$(obj).parents('.slideshow_container').find('.control .on').removeClass('on');
					$(obj).parents('.slideshow_container').find('.control .'+slide.attr('class')).addClass('on');
					slide.addClass('current').fadeIn(o.fadeSpeed);
				}
				
			});
		}
	});
})(jQuery);
