function SlideShow(id) {
  this.id = id;
  this.src = new Array();
  this.slide = 
      [document.getElementById("slide0_div_"+this.id)
      ,document.getElementById("slide1_div_"+this.id)];
  this.img = 
      [document.getElementById("slide0_img_"+this.id)
      ,document.getElementById("slide1_img_"+this.id)];
  this.iterator = 0;
  this.z = 1;
  this.flip = false;
  this.timer = false;
  this.dim = [false, false];
  this.transition = 1000;
  this.duration = 3000;
  this.timer = false;
  this.warp = function(x) { return .5*(1+Math.sin((x-.5)*Math.PI)); };
  this.load = function(arr) {
    this.src = arr;
  };
  this.start = function() {
    this.iterator = 0;
    this.slide[0].style.zIndex = this.z;
    this.slide[1].style.zIndex = this.z + 1;
    if(document.all)
      this.slide[1].filters.alpha.opacity = 0;
    else
      this.slide[1].style.opacity = 0;
    this.img[0].src = this.src[0];
    this.img[0].style.maxWidth = this.dim[0] + "px";
    this.img[0].style.maxHeight = this.dim[1] + "px";
    this.img[1].src = this.src[1];
    this.img[1].style.maxWidth = this.dim[0] + "px";
    this.img[1].style.maxHeight = this.dim[1] + "px";
    this.stop();
    this.timer = setInterval(id+"_slideshow.next();",this.duration);
  };
  this.stop = function() {
    clearTimeout(this.timer);
  };
  this.next = function() {
    this.flip = !this.flip;
    var one = this.flip?0:1;
    var two = this.flip?1:0;
    this.iterator = (this.iterator + 1) % this.src.length;
    this.slide[one].style.zIndex = this.z;
    this.slide[two].style.zIndex = this.z + 1;
    animator.add(this.slide[two],"alpha",[0],[1],this.transition,[this.warp]
        ,id+"_slideshow.background();");
  };
  this.background = function() {
    var two = this.flip?0:1;
    var one = this.flip?1:0;
    if(document.all)
      this.slide[two].filters.alpha.opacity = 0;
    else
      this.slide[two].style.opacity = 0;
    this.img[two].src = this.src[this.iterator];
  };
  this.shuffle = function() {
    var i = this.src.length;
    if(i==0)
      return;
    while(--i) {
      var j = Math.floor(Math.random()*(i+1));
      var tmp = this.src[i];
      this.src[i] = this.src[j];
      this.src[j] = tmp;
    }
  };
}
