(function($){
	$.fn.imgSlideShow = function(options) {
		var settings = {
			slides          : [],
			autoplay        : 1,
			slide_interval  : 5000,
			animation_type  : 1, // 1: Fade
			animation_speed : 1000,
			start_index		: 0
		};

		settings = $.extend(settings, options);

		$(this).each(function(){
			var renderImg = function(idx) {
				var img = $('<img style="opacity:1" />');
				$(img).attr('src', settings.slides[idx]).hide();
				element.append(img);
				return img;
			}

			var nextSlide = function() {
				currentSlide++;
				if(currentSlide >= settings.slides.length) {
					currentSlide = 0;
				}
				nextImg = renderImg(currentSlide);
				nextImg.load(function() {
					animateSlide(function(){
						currentImg.remove();
						currentImg = nextImg;
					});
				});
			}

			var animateSlide = function(callback) {
				switch(options.animation_type){
					case 0:    //No transition
						nextImg.show();
						currentImg.hide();
						break;
					case 1:    //Fade
						nextImg.hide().fadeIn(options.animation_speed);
						currentImg.fadeOut(options.animation_speed, callback);
						break;
				};
			}

			var currentSlide = settings.start_index,
			element          = $(this),
		    currentImg       = renderImg(currentSlide),
			nextImg;

			currentImg.show();
			
			if(settings.autoplay) {
				slideshow_interval = window.setInterval(nextSlide, options.slide_interval);
				$(window).unload(function(){ window.clearInterval(slideshow_interval) });
			}

		});



	}
})(jQuery);

