if(typeof CRD=='undefined') {
    var CRD = {};
}

CRD.imageFader = new Class({
	
	Implements: [Options,Events],
	
	imageIndex: 0,
	
	paused: false,
	
	options: {
		images: [],
		firstLoaded: true,
		delay: 8000
	},
	
	initialize: function(container,images,options) {
		this.setOptions(options);
		this.options.images = images;
		this.container = $(container);
		if(this.options.images.length>1) {
			if(this.options.firstLoaded) {
				this.imageIndex++;
				this.prevImage = this.container.getElement('img');
				this.loadImage.delay(this.options.delay,this);
			} else {
				this.loadImage();
			}
		}
	},
	
	loadImage: function() {
		if(!this.paused) {
			if(this.nextImage) {
				if(this.imageIndex<this.options.images.length-1) {
					this.imageIndex++;
				} else {
					this.imageIndex = 0;
				}
				this.prevImage = this.nextImage;
			}
			this.nextImage = new Asset.image(escape(this.options.images[this.imageIndex]),{ onload: this.hidePrev.bind(this), id: 'splashImage' });
		}
	},
	
	pause: function() {
		this.paused = true;
		$clear(this.loadImageDelay);
	},
	
	play: function() {
		this.paused = false;
		this.loadImage();
	},
	
	hidePrev: function() {
		if(this.prevImage) {
			this.prevImageFx = new Fx.Tween(this.prevImage,{ property: 'opacity' });
			this.prevImageFxRef = this.showNext.bind(this);
			this.prevImageFx.addEvent('complete',this.prevImageFxRef);
			this.prevImageFx.start(0);
		} else {
			this.showNext();
		}
	},
	
	showNext: function() {
		if(this.prevImage) this.prevImage.dispose();
		this.nextImage.set('opacity',0);
		this.nextImage.inject(this.container,'top');
		this.nextImageFx = new Fx.Tween(this.nextImage,{ property: 'opacity' });
		if(!this.paused) {
			this.nextImageFxRef = function() {
				this.loadImageDelay = this.loadImage.delay(this.options.delay,this);
			}.bind(this);
			this.nextImageFx.addEvent('complete',this.nextImageFxRef);
		}
		this.nextImageFx.start(1);
		this.fireEvent('inject',this);
	}
	
});
