var Slideshow = {

	init : function(options) {
		this.slidenum  = 1;
    this.slidetime = 4 || options.slidetime;  // seconds each slide is shown
    this.fadetime  = 0.8 || options.fadetime;   // seconds fading
    this.inhoud = options.inhoud;
    this.images = [];
    this.labels = [];
  	Event.observe(window, 'load', this.start.bind(this));
	},

	start: function() {
    $$('#slideshow_labels h2').each(
      function(h2) {
        this.images.push(h2.getAttribute('image'));
        this.labels.push('<h2>'+h2.innerHTML+'</h2>');
      }, this);

    this.image1 = new Element('img').addClassName('slide-image').setOpacity(100);
    this.image2 = new Element('img').addClassName('slide-image').setOpacity(0);
    this.image1.src = this.images[0];
    this.image2.src = this.images[1];
    $('slideshow').appendChild(this.image1);
    $('slideshow').appendChild(this.image2);
    $('slideshow_desc').update(this.labels[0]);
    if (this.inhoud) {
      $$('.onderwerpen ol li')[0].addClassName('selected');
		}
    new PeriodicalExecuter(this.cycle.bind(this), this.slidetime); 
	},

  cycle: function() {
    if (++this.slidenum == this.images.length)
      this.slidenum = 0;
    var slidecur = (this.slidenum == 0 ? this.images.length-1 : this.slidenum-1);

    var arr = this.images[slidecur].match(/\d+/);

    if (this.inhoud) {
      $$('.onderwerpen ol li').invoke('removeClassName', 'selected');                  
      $$('.onderwerpen ol li')[arr[0] - 1].addClassName('selected');
    }
  	new Effect.Parallel(
     [new Effect.Fade(  this.image1, {sync:true}),
	  	new Effect.Appear(this.image2, {sync:true})],
			{ duration: this.fadetime, fps:50, 
        afterFinish:function() {
          var tmp = this.image1;
          this.image1 = this.image2;
          this.image2 = tmp;
          this.image2.src = this.images[this.slidenum];
          $('slideshow_desc').update(this.labels[slidecur]);
        }.bind(this)
      }	);
  }  
};
