
var imgFader = new Class({	
	Implements: Options,
	options: {
		list : '',			//list of imgs
		transition: 'opacity',
		delay: 1000
	},	
	
	initialize: function(options){
		this.setOptions(options);
		var list = this.options.list;
		var imgs = $$("#" + list + " img");
		imgs.setStyles({"position":"absolute","opacity":0});
		new Asset.images([imgs[0].src], {
			onComplete: function(){
				var fx = new Fx.Morph(imgs[0],{wait:false,duration:2000})
				fx.start({'opacity':1});
			}
		});
		
		(function(){	this.ping(0)		}.bind(this)).delay(this.options.delay);
		
	},
	
	ping: function(x){
		var list = this.options.list;
		var type = this.options.transition;
		var imgs = $$("#" + list + " img");
		switch(type){
			case "opacity":
				if (x == -1){
					//fade out
					var fx = new Fx.Morph(imgs[imgs.length-1],{wait:false,duration:2000})
					fx.start({'opacity':0})
					
					var fx = new Fx.Morph(imgs[0],{wait:false,duration:2000})
					fx.start({'opacity':1});
					
				}else{
					//fade out
					var fx = new Fx.Morph(imgs[x],{wait:false,duration:2000})
					fx.start({'opacity':0})
					
					//fade in
					var fx = new Fx.Morph(imgs[x+1],{wait:false,duration:2000})
					fx.start({'opacity':1});
					
				}
			break;
			case "up":
				if (x == -1){//primeira vez de novo
						//fade out
						var fx = new Fx.Morph(imgs[imgs.length-1],{wait:false,duration:1000})
						fx.start({'opacity':0,'top':[-100]})
						
						var fx = new Fx.Morph(imgs[0],{wait:false,duration:1000})
						fx.start({'opacity':1,'top':[100,0]});
						
					}else{
						//fade out
						var fx = new Fx.Morph(imgs[x],{wait:false,duration:1000})
						fx.start({'opacity':0,'top':[-100]})
						
						//fade in
						var fx = new Fx.Morph(imgs[x+1],{wait:false,duration:1000})
						fx.start({'opacity':1,'top':[100,0]});
						
					}
			break;
			case "left":
				if (x == -1){//primeira vez de novo
						//fade out
						var fx = new Fx.Morph(imgs[imgs.length-1],{wait:false,duration:1000})
						fx.start({'opacity':0,'left':[-300]})
						
						var fx = new Fx.Morph(imgs[0],{wait:false,duration:1000})
						fx.start({'opacity':1,'left':[300,0]});
						
					}else{
						//fade out
						var fx = new Fx.Morph(imgs[x],{wait:false,duration:1000})
						fx.start({'opacity':0,'left':[-300]})
						
						//fade in
						var fx = new Fx.Morph(imgs[x+1],{wait:false,duration:1000})
						fx.start({'opacity':1,'left':[300,0]});
						
					}
			break;
		}
		this.pong(x+1)
	},
	
	
	pong:function(y){
		var list = this.options.list;
		var imgs = $$("#" + list + " img");
		if (y == imgs.length-1){
			(function(){	this.ping(-1)		}.bind(this)).delay(this.options.delay);
		}else{
			(function(){	this.ping(y)		}.bind(this)).delay(this.options.delay);
		}
	}
	
	
});
imgFader.implement(new Options, new Events);