var ImageRotator = Class.create({
	currentDiv: undefined,
	images: [],
	currentImage: 0,
	
	initialize: function (images) {
		this.images = images;
		this.numImages = images.length;
		this.rotatorBox = $('rotator');
		this.build();
	},
	
	build: function () {
		var div1 = Builder.node('div', {id: 'div1', className: 'imageDiv'}, [
						Builder.node('img', {className: 'image1'})
		]);
		
		var div2 = Builder.node('div', {id: 'div2', className: 'imageDiv'}, [
						Builder.node('img', {className: 'image2'})
		]);
		
		var link = Builder.node('a', {id: 'banner-link', className: 'banner-link'});
		
		this.rotatorBox.insert({top: link});
		
		this.rotatorBox.appendChild(div2);
		this.rotatorBox.appendChild(div1);
		
		$('banner-link').setStyle({zIndex: '1'});
		
		$('div1').setStyle({zIndex: '1'}).setOpacity(1.0);
		$('div2').setStyle({zIndex: '1'}).setOpacity(0.0);
		
		this.setImages();
	},
	
	setImages: function () {
		this.image1 = $('div1').select('img').first();
		this.image2 = $('div2').select('img').first();
		
		//hide original #image div
		// $('image').hide();
		
		
		this.image1.src = this.images[0].image;
		this.image2.src = this.images[1].image;
		this.currentImage = 1;
		this.currentDiv = $('div2');
		
		this.updateLink(this.images[this.currentImage-1].link);
		
		
		this.start();
		
	},
	
	updateLink: function (link) {
		$('banner-link').href = link;
		var zindex = (parseInt($('banner-link').getStyle('z-index')) + 1);
		$('banner-link').setStyle({zIndex: zindex});
	},
	
	start: function () {
		var t = new PeriodicalExecuter((function(){ 
			this.nextImage(this.currentDiv);
		}).bind(this), 10);
	},
	
	prepNext: function () {
		if (this.currentDiv.id == 'div1') {
			this.currentDiv = $('div2');
			if (this.currentImage+1 == this.numImages){
				this.currentImage = 0;
				this.image2.src = this.images[this.currentImage].image;
			}else{
				this.currentImage += 1;
				this.image2.src = this.images[this.currentImage].image;
			}
		}else{
			this.currentDiv = $('div1');
			if (this.currentImage+1 == this.numImages){
				this.currentImage = 0;
				this.image1.src = this.images[this.currentImage].image;
			}else{
				this.currentImage += 1;
				this.image1.src = this.images[this.currentImage].image;
			}
		}
	},
	
	nextImage: function (currentDiv) {
		this.currentDiv = $(currentDiv);
		var zindex = (parseInt(this.currentDiv.getStyle('z-index')) + 1);
		this.currentDiv.setOpacity(0.0);
		this.currentDiv.setStyle({zIndex: zindex});
		this.updateLink(this.images[this.currentImage].link);
		new Effect.Opacity(this.currentDiv, { from: 0.0, to: 1.0, duration: 2.0, afterFinish: this.prepNext.bind(this) });
	}	
	
});
