function Slideshow(pDiv, pDurationMS, pPauseImageFile, pPlayImageFile) {
  this.slides = new Array();
  var divs = pDiv.getElementsByTagName("div");
  for (var i = 0; i < divs.length; i++) {
    var div = divs[i];
    if (elementHasClassName(div, "ss-slide")) {
      this.slides.push(div);
    }
  }
  var tempThis = this;
  var images = pDiv.getElementsByTagName("img");
  for (var i = 0; i < images.length; i++) {
    var image = images[i];
    if (elementHasClassName(image, "ss-button")) {
      if (this.slides.length > 1) {
        image.onmouseout = function () {
          elementRemoveClassName(this, "ss-button-over");
        };
        image.onmouseover = function () {
          elementAddClassName(this, "ss-button-over");
        };
        if (elementHasClassName(image, "ss-button-next")) {
          image.onclick = function () {
            slideshowShowNext(tempThis);
          };
        }
        else if (elementHasClassName(image, "ss-button-pause-play")) {
          image.onclick = function () {
            slideshowToggleAutoPlay(tempThis);
          };
          this.pausePlayButton = image;
        }
        else if (elementHasClassName(image, "ss-button-previous")) {
          image.onclick = function () {
            slideshowShowPrevious(tempThis);
          };
        }
      }
      else {
        image.style.display = "none";
      }
    }
  }
  this.durationMS = pDurationMS;
  this.pauseImageFile = pPauseImageFile;
  this.playImageFile = pPlayImageFile;
  this.autoPlay = false;
  this.slideIndex = -1;
  this.timeoutId = null;
  slideshowToggleAutoPlay(this);
}

function slideshowShowCurrent(slideshow) {
  slideshow.timeoutId = clearTimeout(slideshow.timeoutId);
  for (var i = 0; i < slideshow.slides.length; i++) {
    if (i == slideshow.slideIndex) {
      slideshow.slides[i].style.zIndex = 1;
    }
    else {
      slideshow.slides[i].style.zIndex = 0;
    }
  }
  if (slideshow.autoPlay) {
    slideshow.timeoutId = setTimeout(function () {
      slideshowShowNext(slideshow);
    }, slideshow.durationMS);
  }
}

function slideshowShowNext(slideshow) {
  if (++slideshow.slideIndex >= slideshow.slides.length) {
    slideshow.slideIndex = 0;
  }
  slideshowShowCurrent(slideshow);
}

function slideshowShowPrevious(slideshow) {
  if (--slideshow.slideIndex < 0) {
    slideshow.slideIndex = slideshow.slides.length - 1;
  }
  slideshowShowCurrent(slideshow);
}

function slideshowToggleAutoPlay(slideshow) {
  slideshow.autoPlay = !slideshow.autoPlay;
  if (slideshow.autoPlay) {
    slideshow.pausePlayButton.alt = "pause";
    slideshow.pausePlayButton.src = slideshow.pauseImageFile;
    slideshow.pausePlayButton.title = "Pause";
    slideshowShowNext(slideshow);
  }
  else {
    slideshow.pausePlayButton.alt = "play";
    slideshow.pausePlayButton.src = slideshow.playImageFile;
    slideshow.pausePlayButton.title = "Play";
    slideshow.timeoutId = clearTimeout(slideshow.timeoutId);
  }
}

