document.observe('load', function() {
	var images = $$('div#slideshow-container img');
	var container = $('slideshow-container');
	if (images.length == 1 || !container) return;
	images.each(function(i) {
		if (images.first() != i) i.hide();
	});
});
//
/*---------------------------------------------------------------------------*/
var Slideshow = Class.create({
	initialize: function(cntnr) {
		this.FADE = false;
		this.SPEED = 7;		
		this.activeImage = null;
		this.nextImage = null;
		this.container = cntnr;
		this.images = $A(this.container.getElementsByTagName('IMG'));
		this.start();
	},
	start: function() {
		this._setupImages();
		this._setupContainer();
		this.fireTimeout();
	},
	_setupImages: function() {
		this.images.each(this.prepare_images.bindAsEventListener(this));
	},
	prepare_images: function(i) {
		if(this.images.first() == i) {
			this._setStyle(i);
			this.activeImage = i;
		} else {
			this._desetStyle(i);
			Element.hide(i);
		}
	},
	_setupContainer: function() {
		var maxHeight = -1;
		var maxWidth = -1;
		this.images.each(function(i) {
			if (i.offsetHeight > maxHeight) {
				maxHeight = i.offsetHeight;
			}
			if (i.offsetWidth > maxWidth) {
				maxWidth = i.offsetWidth;
			}
		});
		this.container.setStyle({height: maxHeight + 'px', width: maxWidth + 'px'});
		this.container.classNames().each(this.checkFade.bindAsEventListener(this));
	},
	checkFade: function(n) {
		if(n.toLowerCase() == 'fade') {
			this.FADE = true;
		} else if ((n * 0) == 0) {
			this.SPEED = n;
		}
	},
	_rotate: function(pe) {
		pe.stop();
		if(this.activeImage == this.images.last()) {
			this.nextImage = this.images.first();
		} else {
			this.nextImage = this.images[this.images.indexOf(this.activeImage) + 1];
		} 
		this._swap();
	},
	_swap: function() {
		if(this.FADE) {
			new Effect.Fade(this.container, {duration:1, fps:60, afterFinish:this.finishFade.bindAsEventListener(this)});
		} else {
			this._desetStyle(this.activeImage);
			this._setStyle(this.nextImage);
			Element.hide(this.activeImage);
			Element.show(this.nextImage);
			this.activeImage = this.nextImage;
			this.fireTimeout();
		}
	},
	_setStyle: function(image) {
		Element.setStyle(image, {position:'absolute', bottom:'0px',	right:'0px', visibility:'visible'});
	},
	_desetStyle: function(image) {
		Element.setStyle(image, {position:'absolute', bottom:'0px',	right:'0px', visibility:'hidden'});
	},
	finishFade: function(){
		this._desetStyle(this.activeImage);
		this._setStyle(this.nextImage);
		Element.hide(this.activeImage);
		Element.show(this.nextImage);
		new Effect.Appear(this.container, {duration:1, fps:60, afterFinish:this.fireTimeout.bindAsEventListener(this)});
		this.activeImage = this.nextImage;
	},
	fireTimeout: function(){
		new PeriodicalExecuter(this._rotate.bindAsEventListener(this), this.SPEED);
	}
});

Event.observe(window, 'load', function(evt) {Slideshow = new Slideshow($('slideshow-container'));});