var gImageCapableBrowser=true;

ImagePreloader.prototype.onComplete = function()
{
   this.nProcessed++;
   if ( this.nProcessed == this.nImages )
   {
      this.callback(this.aImages, this.nLoaded);
   }
}

ImagePreloader.prototype.onabort = function()
{
	this.bAbort = true;
	this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function()
{
	this.bError = true;
	this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onload = function()
{
    this.bLoaded = true;
    this.oImagePreloader.nLoaded++;
    this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.preload = function(image)
{
    // create new Image object and add to array
    //var oImage = new Image;
    var oImage = document.createElement('img')
    this.aImages.push(oImage);

    // set up event handlers for the Image object
    addEvent(oImage, 'load', ImagePreloader.prototype.onload)
    addEvent(oImage, 'error', ImagePreloader.prototype.onerror)
    addEvent(oImage, 'abort', ImagePreloader.prototype.onabort)

    //oImage.onload = ImagePreloader.prototype.onload;
    //oImage.onerror = ImagePreloader.prototype.onerror;
    //oImage.onabort = ImagePreloader.prototype.onabort;

    // assign pointer back to this.
    oImage.oImagePreloader = this;
    oImage.bLoaded = false;

    // assign the .src property of the Image object
    oImage.src = image;
 }
 
function SlideShow(imgCount, Interval)
{
    this.imageCount = imgCount;
    this.currentImage = 0;
    this.playPauseID = 0;
    this.intervalID = "";
    this.slideInterval = Interval * 1000;
    this.images = new Array(this.imageCount);  
    this.uniqueID = "";
    this.random = false
}

function canManipulateImages() 
{
	if (document.images)
	    return true;
	else
	    return false;
}

function get_random(MaxNumber)
{
   var ranNum = Math.round(Math.random() * MaxNumber);
   return ranNum;
}

function nextSlide(oSS,click) 
{
   if (click == true) 
   {
      clearInterval(oSS.intervalID);
      oSS.intervalID = "";
      document.getElementById(oSS.playPauseID).src = "images/button_play.gif";
   }

   if (oSS.random == true)
   {
	  oSS.currentImage = get_random(oSS.imageCount - 1);
   } else {
      oSS.currentImage = (oSS.currentImage + 1) % oSS.imageCount;
   }

   loadSlide(oSS);
}

function loadSlide(oSS) 
{
	if (gImageCapableBrowser) 
	{
	    document.getElementById(oSS.uniqueID).src = oSS.images[oSS.currentImage]; 
	    return false;
	} else {
	    return true;
	}
}

function prevSlide(oSS) {
	if ((oSS.currentImage - 1) % oSS.imageCount < 0) 
	{
	    oSS.currentImage = oSS.imageCount;
	}
	clearInterval(oSS.intervalID);
	oSS.intervalID = "";
	document.getElementById(oSS.playPauseID).src = "images/button_play.gif";
	oSS.currentImage = (oSS.currentImage - 1) % oSS.imageCount;
	loadSlide(oSS);
}

function stopSlide(oSS) 
{
	oSS.currentImage = -1;
	clearInterval(oSS.intervalID);
	oSS.intervalID = ""
	document.getElementById(oSS.playPauseID).src = "images/button_play.gif";
}


function pauseSlide(oSS) 
{
	if (oSS.intervalID == "") 
	{
		oSS.intervalID = eval('setInterval("nextSlide(SS' + oSS.uniqueID + ', false)", oSS.slideInterval)');
		document.getElementById(oSS.playPauseID).src = "images/button_pause.gif";
	} else {
		clearInterval(oSS.intervalID);
		oSS.intervalID = "";
		document.getElementById(oSS.playPauseID).src = "images/button_play.gif";
	}
}

function ImagePreloader(images, callback)
{
    // store the callback
    this.callback = callback;
    
    // initialize internal state.
    this.nLoaded = 0;
    this.nProcessed = 0;
    this.aImages = new Array;
    
    // record the number of images.
    this.nImages = images.length;
    
    // for each image, call preload()
    for ( var i = 0; i < images.length; i++ ) 
		this.preload(images[i]);
}




