// JavaScript Document
(function(){
	var $ = jQuery;
	
	function abort() {
		arguments[0] = 'ebSlideshow: ' + arguments[0];
		throw new Error(format.apply(null, arguments));
	}
	
	$.fn.ebSlideShow = function(opts, images, callback){
		if (opts.fade)
			opts.fade = Math.round(opts.fade * 1000);
		else
			opts.fade = 1000;
				
		if (opts.sleep)
			opts.sleep = Math.round(opts.sleep * 1000);
		else
			opts.sleep = 3000;
			
		jQuery.data(this[0], 'opts', opts);
		
			myself=this;
				myself.opts = opts;
			if(!callback || typeof(callback)!=="function")
				callback = function(){};
		
		jQuery.data(this[0], 'callback', callback);
		
			var	image_length = images.length;
			
			
				
			// must be called on exactly 1 element
		if (myself.length != 1)
			abort('ebSlideshow() must be called on exactly 1 element');
		images_html = "";
		var i = image_length;
		while(i--){
			images_html += "<img src='"+images[i].src+"' />\n";
		}
		
		myself.empty().css({
			position: 'relative',
			overflow: 'hidden',
			padding: 0
		});
		
		myself.html(images_html);
		myself.find('img').css('position', 'absolute');
		myself.ebSlideShowStart();
	};
	
	$.fn.ebSlideShowAnimate = function(){
		var myself = this;
		myself.callback();
		var images = myself.find('img')
		var images_length = images.length;
		if(jQuery.data(this[0], 'animating'))
			$(images[images_length-1]).animate({opacity: 0}, myself.opts.fade, function(){$this = $(this); $this.prependTo(myself); myself.callback(); $this.css('opacity', '1'); 	setTimeout(function(){myself.ebSlideShowAnimate()}, myself.opts.sleep); });
	};
	
	$.fn.ebSlideShowStop = function(){
		jQuery.data(this[0], 'animating', false);
	}
	
	$.fn.ebSlideShowStart = function(){
		var myself = this;
		if(!$.data(myself[0], 'animating')){
			$.data(myself[0], 'animating', true);
			myself.opts = $.data(myself[0], 'opts');
			myself.callback = $.data(myself[0], 'callback');
			setTimeout(function(){myself.ebSlideShowAnimate()}, myself.opts.sleep);
		}
	}
})()
