// JavaScript code for the HTML Slideshow Component

var HTMLSlideShows = new Array();

// Internal data structure used for each Slide
function HTMLSlide(div) {
  this.div = div;
}

function HTMLSlideShow(key, interval) {
  this.key = key;
  this.idx = 0;
  this.timer = null;
  this.interval = interval;
  this.slides = new Array();
  if (!HTMLSlideShows[key]) {HTMLSlideShows[key] = this};


  this.addSlide = function (div) {
    this.slides[this.slides.length] = new HTMLSlide(div);
  }

  this.updateDiv = function() {
    var fadeTime = IWOV_FX.fadeOut(this.key+"_div", 25, 10);
    setTimeout("HTMLSlideShows['"+key+"'].setSlide()", fadeTime);
    setTimeout("IWOV_FX.fadeIn('"+this.key+"_div', 25, 10)", fadeTime);
  }

  this.setSlide = function() {
    try {
      var slide = this.slides[this.idx];

      var d = document.getElementById(this.key+"_div");
      d.innerHTML = slide.div.innerHTML;

    } catch (noSlidesException) {}
  }

  this.goNext = function() {
    if (this.idx < this.slides.length-1) {
      this.idx++;
    } else {
      this.idx = 0;
    }
    this.updateDiv();
  }

  this.goPrev = function() {
    if (this.idx > 0) {
      this.idx--;
    } else {
      this.idx = this.slides.length-1;
    }
    this.updateDiv();
  }

  this.goTo = function(n) {
    this.pause();
    this.idx = n;
    this.updateDiv();
  }

  this.pause = function() {
    if (this.timer!=null) {
      clearInterval(this.timer);
      this.timer = null;
    }
  }

  this.play = function() {
    this.timer = setInterval("HTMLSlideShows['"+this.key+"'].goNext()", this.interval*1000);
  }  

  this.restartTimer = function() {
    if (this.timer!=null) {
      clearInterval(this.timer);
      this.timer = setInterval("HTMLSlideShows['"+this.key+"'].goNext()", this.interval*1000);
    }
  }

  this.clickNext = function() {
    this.goNext();
    this.restartTimer();
  }

  this.clickPrev = function() {
    this.goPrev();
    this.restartTimer();
  }

}

