/**
   slideshow.js, version 1.0
   
   Eine auf scriptaculous-basierte slideshow mit Start/Pause Funktion und direkter Auswahl
   über separate controls.
   Die Elemente müssen sich im Container <div id="slideshow"></div> befinden und selbst
   <div>-Elemente sein.
   
   copyright 2009, cyne GmbH
   history:
      19.02.2009  1.0   webert                                 initial version
 */

var swapImageDelay = 6000;

var images;
var visibleImage = -1;
var swapTimer = null;

initSlideShow = function() {
   images = $('slideshow').childElements();
   text = $('slidetext').childElements();
   startSlideShow();
}

startSlideShow = function() {
   $('playcontrol').addClassName('playing');
   swapImage(visibleImage + 1)();
}

pauseSlideShow = function() {
   $('playcontrol').removeClassName('playing');
   clearTimeout(swapTimer);
   swapTimer = null;
}

swapImage = function(imageToShow) {
   return(function() {
      if (visibleImage != -1) {
         hideImage();
      }      
      if (imageToShow == images.size()) {
         imageToShow = 0;
      }
      showImage(imageToShow);
      toggleImageControl();
      swapTimer = setTimeout(swapImage(imageToShow+1), swapImageDelay);
   });
}

showImage = function(imageToShow) {
   Effect.Appear(images[imageToShow], { duration: 1, fps: 50 });
   Effect.Appear(text[imageToShow], { duration: 1, fps: 50 });
   visibleImage = imageToShow;
}

hideImage = function() {
   Effect.Fade(images[visibleImage], { duration: 0.5, fps: 50 });
   Effect.Fade(text[visibleImage], { duration: 1, fps: 50 });
   visibleImage = -1;
}

toggleImageControl = function() {
   $('stagecontrol').select('a.active').each( function (item) { item.removeClassName('active'); });
   $('stagecontrol').childElements()[visibleImage].addClassName("active");
}

toggleImage = function( imageToShow ) {
   pauseSlideShow();
   if (imageToShow != visibleImage) {
      hideImage();
      showImage(imageToShow);
   }
   toggleImageControl();
}

