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() {

    // run-once version (remove 1st if-statement to rotate slides) 
    //if ((this.current + 1) < this.slides.length) {    

	    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);
    //}
  }
}
