function SlideshowClass()
{
  attachEventHandler(window, "load", this.handleLoad);
}
SlideshowClass.prototype =
{
  timeout : 8000,
  currentimage : 0,
  stopped : true,

  handleLoad : function()
  {
    if (!(parent && parent.lime))
		  DOMEvents.attach(document.getElementById('sidebar'), "click", Slideshow.load);
  },

  load : function()
  {
	  Slideshow.stopped = false;
	  document.getElementById('play').className = 'pressed';
	  document.getElementById('stop').className = '';

	  document.getElementsByTagName('body')[0].className += " show-slideshow";

    DOMEvents.attach(document.getElementById("slideshow-image1").getElementsByTagName("img")[0], "load", Slideshow.showNewImage);
    DOMEvents.attach(document.getElementById("slideshow-image2").getElementsByTagName("img")[0], "load", Slideshow.showNewImage);
      
    //Slideshow.currentimage = Math.round(Math.random() * slideshowImages.length);
    setTimeout(function(){Slideshow.loadNewImage();}, Slideshow.timeout);
	  Slideshow.prepareIE('100%', 'hidden');
  },
  
  loadNewImage : function()
  {
    if (Slideshow.stopped == true) return;

	  // stop the banner animation
	  animatebanner.pause();
  
    // select new image
    Slideshow.currentimage++;
    if (Slideshow.currentimage > slideshowImages.length-1)
      Slideshow.currentimage = 0;

    // get elements
    var slide1 = document.getElementById('slideshow-image1');
    var slide2 = document.getElementById('slideshow-image2');

    if (ClassNameAbstraction.contains(slide1, 'current')) 
    {
	    var newslide = slide2;
	    var oldslide = slide1;
    } else {
	    var newslide = slide1;
	    var oldslide = slide2;
    }
	  newslide.firstChild.setAttribute('src', '/Image.aspx?img=' + slideshowImages[Slideshow.currentimage] + "&template=slideshow");
  },
  
  showNewImage : function(evt, go)
  {
	  if (Slideshow.stopped == false) 
	  {
      var slide1 = document.getElementById('slideshow-image1');
      var slide2 = document.getElementById('slideshow-image2');

      if (ClassNameAbstraction.contains(slide1, 'current')) 
      {
	      var newslide = slide2;
	      var oldslide = slide1;
      } else {
	      var newslide = slide1;
	      var oldslide = slide2;
      }

	    ClassNameAbstraction.replace(newslide, 'prev', 'next', Q42Utils.SUPPRESSEVENTS);
      ClassNameAbstraction.replace(newslide, 'next|prev', 'current', Q42Utils.FIREEVENTS);
      ClassNameAbstraction.replace(oldslide, 'current', 'prev', Q42Utils.FIREEVENTS);
	    document.getElementById('byline').innerHTML = slideshowCaptions[Slideshow.currentimage];
	    
	    window.clearTimeout(window.timeout);
		  window.timeout = Q42Utils.setTimeoutHandler(Slideshow.loadNewImage, go || Slideshow.timeout);
	  }
  },

  prepareIE : function(height, overflow) {
    htm = document.getElementsByTagName('html')[0];
    htm.style.height = height;
    htm.style.overflow = overflow;
  },
  
  start : function(el)
  {
    if (Slideshow.stopped == true) 
    {
      Slideshow.stopped = false; 
      el.className = 'pressed'; 
      el.nextSibling.className = '';
      
      window.clearTimeout(window.timeout);
		  window.timeout = Q42Utils.setTimeoutHandler(Slideshow.loadNewImage, 100);
    }
  },

  stop : function()
  {
	  document.getElementsByTagName('body')[0].className = document.getElementsByTagName('body')[0].className.replace(/\s*show-slideshow/, '');

	  Slideshow.prepareIE('100%', 'auto');
	  Slideshow.stopped = true;

    var slide1 = document.getElementById('slideshow-image1');
    var slide2 = document.getElementById('slideshow-image2');

    if (ClassNameAbstraction.contains(slide1, 'current')) 
    {
	    var newslide = slide2;
	    var oldslide = slide1;
    } else {
	    var newslide = slide1;
	    var oldslide = slide2;
    }

	  ClassNameAbstraction.replace(newslide, 'prev', 'next', Q42Utils.SUPPRESSEVENTS);

	  animatebanner.start();
  }
  
}
var Slideshow = new SlideshowClass();