/* Image Fader */

var imageFader = new Class({	
	initialize: function(element, options) {
		this.setOptions({			
			sleep: 30000,
			fade: 0.2
		}, options);
		
		this.obj = element;
		
		var images = (this.obj).getElements(".imageElement");
		
		$each(images, function(x, i) {			
			if (i == 0) {
				var first = images[i].setStyles({display:'block',opacity: 0}).addClass('current');
				new Fx.Style(first, 'opacity', {duration: 1}).set(1);
			} else {
				images[i].setStyles({opacity: 0,display:'none'});
			}

		});
		
		this.trigger();			
	},
	execute: function() {
		var current = $(this.obj).getElement('.current');
		var next = current.getNext();
		
		if (current == $(this.obj).getLast()) {
			next = $(this.obj).getFirst();
		}
		this.swap(current,next,this.options.sleep * this.options.fade);
		
		this.trigger();
	},	
	trigger: function() {

		this.execute.delay(this.options.sleep,this);	
	},
	swap: function(oldI,newI,l) {
		var fadeOut = function() {			
			var img = $(oldI).setStyles({opacity: 1});
			
			new Fx.Style(img, 'opacity', {duration: l*.75}).start(0);

			img.removeClass('current');			
			
		};
		
		var fadeIn = function() {
			var newImg = $(newI).setStyles({display:'block',opacity:0});
			
			new Fx.Style(newImg, 'opacity', {duration: l}).start(1);

			newImg.addClass('current');
			newImg.setStyle('display','block');			
			
			fadeOut();		
		};
		
		if(newI != oldI) {
			fadeIn();
						
		}
	}
});

imageFader.implement(new Events, new Options);
