
(function($){

 	$.fn.extend({ 
 		
 		slideshow: function(options) {

			// default plugin values
			var defaults = 
			{
				index : 0,
				delay : 8000,
				speed : 1000,
				bgColor : "",
				dir : "",
				slides : new Array(),				
				clickHandler : null // provides an override to default click handler
			};
			
			var o =  $.extend(defaults, options);
			
			var ct;	// slideshow container
			var cti;	// slideshow container inner
			
			function init()
			{
				var seed = parseInt(Math.random() * 100000);				
				ct.append("<div class=\"slideshow-inner\" id=\"s" + seed + "\"><\/div>");				
				cti = ct.find("#s" + seed);
				cti.click(function(){clickHandler();}).css("cursor","pointer");				
				setInterval(function(){transition()}, o.delay);
			};
			
			function clickHandler()
			{
				if (o.clickHandler !== null)
				{
					o.clickHandler();
				}
				else
				{
					transition();
				}
			};
			
			function nextSlide()
			{
				// change inner to next slide
				cti.css("background", o.bgColor + " url('" + o.dir + o.slides[o.index] + "') no-repeat 50% 50%");
			};
			
			function transition()
			{
				// get index position of next slide
				o.index = (((o.index + 1) == o.slides.length) ? o.index = 0 : o.index = o.index + 1);
				
				// inherit background from inner
				ct.css("background", cti.css("background"));
				
				// hide inner
				cti.hide();
				
				// get next slide
				nextSlide();
				
				// fade in inner
				cti.fadeIn(o.speed);				
			};

			return this.each(function()
			{
				ct = $(this);
				
				init();
				nextSlide();
				
				return false;
				
			});
		}
	});
	
})(jQuery);

