(function($) {
	var slideShows = new Array ();
	
	function SlideShowController (id, newsItem, options) {
		this.init (id, newsItem, options);
	};
	
	$.extend(SlideShowController.prototype, {
		init : function (id, newsItem, options) {
			this.srcs = new Array ();	
			this.footer = $('<div class="ImageFooter"><div id="nextimage"><ul><li class="next"><a href="#" class="ImageNext">Next</a></li><li class="prev"><a href="#" class="ImagePrev">Prev</a></li></ul></div></div>');
			
			var images = $(newsItem).find('.blog_image');

			log (images);
			if (images.length > 0) {
			
				this.image=$(images[0]);
				for (var i=0;i<images.length;i++){
					this.srcs.push($(images[i]).attr('src'));
					if(i > 0) {
						$(images[i]).remove();	
						this.footer.append(' | ');
					}
					this.footer.append('<a id="ImageSelect'+i+'" class="ImageSelect" href="#" block="'+i+'">'+(i+1)+'</a>');
				};
						
				this.image.wrap ('<div class="ImageWrap"></div>');
				if (images.length > 1) {
					this.footer.insertAfter($('.ImageWrap'));
				
					this.footer.find('.ImageSelect').click(this.onImageClick.scope(this));
					this.footer.find('.ImageNext').click(this.onImageNextClick.scope(this));
					this.footer.find('.ImagePrev').click(this.onImagePrevClick.scope(this));
							
					this.i=0;
					this.footer.find('#ImageSelect'+this.i).addClass ("ImageSelected");
				} else
					$('.ImageWrap').css({"margin-bottom":"10px"});
			}
		},
		
		gotoImage : function (i) {
			this.footer.find('#ImageSelect'+this.i).removeClass ("ImageSelected");
			this.image.fadeTo({ queue:false, duration:'fast', complete: this.gotoImageDone.scope(this)}, 0);			
			this.i=i;
			this.footer.find('#ImageSelect'+this.i).addClass ("ImageSelected");
		},
		
		gotoImageDone : function () {
			this.image.attr('src', this.srcs[this.i]);
			this.image.fadeTo('fast', 1);
		},
		
		onImageClick : function (ev) {
			var nav = ev.currentTarget;
			var i = $(nav).attr('block')
			this.gotoImage(i);
			return false;
		},
		
		onImageNextClick : function (ev) {
			var i = this.i+1;
			i=i<this.srcs.length?i:0;
			this.gotoImage (i);
			return false;			
		},
		
		onImagePrevClick : function (ev) {
			var i = this.i-1;
			i=i>=0?i:this.srcs.length-1;
			this.gotoImage (i);
			return false;
		}
	});
	
	$.fn.slideShow = function (options) {
		this.each(function(index) {
			slideShows.push(new SlideShowController (slideShows.length, this, options));
		});
	}			
})(jQuery);
