/*
	Simple slideshow using prototype and scriptaculous.
	
	Usage:
	
		<script src="prototype.js"></script>
		<script src="effects.js"></script>
		<script src="slideshow.js"></script>
		<style type="text/css">
			#slideshow { position: relative; width: 100px; height: 100px; }
			#slideshow div { position: absolute; left: 0; top: 0; }
		</style>
		<div class="slideshow" id="slideshow">
			<div class="slide"><img src="slide1.jpg"></div>
			<div class="slide"><img src="slide2.jpg"></div>
			<div class="slide"><img src="slide3.jpg"></div>
		</div>
		<script type="text/javascript">new Slideshow('slideshow', 3000);</script>
	
	See also: http://blog.remvee.net/post/17
	
	Copyright (c) 2006 - R.W. van 't Veer
*/
	
function Slideshow(slideshow, timeout) {
	this.slides = [];
	var nl = $(slideshow).getElementsByTagName('div');
	for (var i = 0; i < nl.length; i++) {
		if (Element.hasClassName(nl[i], 'slide')) {
			this.slides.push(nl[i]);
		}
	}
	this.timeout = timeout;
	this.current = 0;

	for (var i = 0; i < this.slides.length; i++) {
		this.slides[i].style.zIndex = this.slides.length - i;
	}

	Element.show(slideshow);
	setTimeout((function(){this.next();}).bind(this), this.timeout + 850);
}

Slideshow.prototype = {
	next: function() {
		for (var i = 0; i < this.slides.length; i++) {
			var slide = this.slides[(this.current + i) % this.slides.length];
			slide.style.zIndex = this.slides.length - i;
		}

		Effect.Fade(this.slides[this.current], {
			afterFinish: function(effect) {
				effect.element.style.zIndex = 0;
				Element.show(effect.element);
				Element.setOpacity(effect.element, 1);
			}
		});
		
		this.current = (this.current + 1) % this.slides.length;
		setTimeout((function(){this.next();}).bind(this), this.timeout + 850);
	}
}
