var ExSlideshow = function(){
	var wrap = document.getElement('.images');
	var images = [];
	
	var loadSlide = function(obj,callback){
		if(!obj.element){
			var tmp = new Image();
			
			tmp.onload = function(){
				obj.element = tmp;
				obj.fx = new Fx.Morph(tmp, { duration: 3000 });
				callback(obj);
			};
			
			tmp.src = '/img/'+ obj.filename;
		} else {
			callback(obj);
		}
	};
	
	var showSlide = function(obj, instant, callback){
		loadSlide(obj, function(obj){
			var current = getCurrent();
			if(current){
				current.current = false;
				current.element.setStyle('z-index', 400);
			}
			
			obj.current = true;
			obj.element.setStyle('z-index', 500);
			obj.element.setStyle('opacity', 0);
			obj.element.inject(wrap);
			
			if(instant){
				obj.element.setStyle('opacity', 1);
				callback();
			} else {
				obj.fx.start({
					opacity: 1
				}).addEvent('onComplete', callback);
			}
		});
	};
	
	var getCurrent = function(){
		for(var i = 0; i < images.length; i++){
			if(images[i].current){
				return images[i];
			}
		}
		
		return false;
	};
	
	var getNextSlide = function(instant){
		var random = getRandomSlide();
		showSlide(random, instant, function(){});
	};
	
	var getRandomSlide = function(){
		var current = getCurrent();
		var random = images.getRandom();
		
		if(random != current){
			return random;
		} else {
			return getRandomSlide();
		}
	};
	
	return {
		addImage: function(url){
			images.push({ filename: url });
		},
		start: function(){
			getNextSlide.periodical(10000);
			getNextSlide(true);
		}
	};
	
};


















