//function ImagePreload( p_aImages, p_pfnPercent, p_pfnFinished ){   // Call-back routines

function ImagePreload( p_aImages, p_pfnFinished ){   // Call-back routines
   
   //this.m_pfnPercent = p_pfnPercent;
   this.m_pfnFinished = p_pfnFinished;

   // Class Member Vars
   this.m_nLoaded = 0;
   this.m_nProcessed = 0;
   this.m_aImages = new Array;
   this.m_nICount = p_aImages.length;

   // Preload Array of Images
   for( var i = 0; i < p_aImages.length; i++ )
       this.Preload( p_aImages[i] );
};

ImagePreload.prototype.Preload = function( p_oImage )
{   var oImage = new Image;
   this.m_aImages.push( oImage );

   oImage.onload = ImagePreload.prototype.OnLoad;
   oImage.onerror = ImagePreload.prototype.OnError;
   oImage.onabort = ImagePreload.prototype.OnAbort;

   oImage.oImagePreload = this;
   oImage.bLoaded = false;
   oImage.source = p_oImage;
   oImage.src = p_oImage;
};

ImagePreload.prototype.OnComplete = function()
{  
	
	this.m_nProcessed++;
   if ( this.m_nProcessed == this.m_nICount ) this.m_pfnFinished();
   //else
       //this.m_pfnPercent( Math.round( (this.m_nProcessed / this.m_nICount) * 10 ) );  
   
};

ImagePreload.prototype.OnLoad = function()
{   // 'this' pointer points to oImage Object
   this.bLoaded = true;
   this.oImagePreload.m_nLoaded++;
   this.oImagePreload.OnComplete();
};

ImagePreload.prototype.OnError = function()
{   // 'this' pointer points to oImage Object
   this.bError = true;
   this.oImagePreload.OnComplete();
};

ImagePreload.prototype.OnAbort = function()
{   // 'this' pointer points to oImage Object
   this.bAbort = true;
   this.oImagePreload.OnComplete();
};

function start_slideshow(start_frame, end_frame, delay) {
  setTimeout(switch_slides(start_frame,start_frame,end_frame, delay), delay);
};
                      
function switch_slides(frame, start_frame, end_frame, delay) {
  return (function() {
      Effect.Fade('photo' + frame);
      if (frame == end_frame) { frame = start_frame; } else { frame = frame + 1; }
      setTimeout("Effect.Appear('photo" + frame + "');", 0);
      setTimeout(switch_slides(frame, start_frame, end_frame, delay), delay + 850);
  })
};

function OnCompletion()
{  
	//alert ("Preloading complete");
	
	for (i=0; i<tImages.length; i++){
		var sBox = document.getElementById('headerphoto');
		var sImg = document.createElement("img");
		sImg.setAttribute('src', tImages[i]);
		sImg.setAttribute('id', "photo" + i);
		sImg.style.display = 'none';
		sBox.appendChild(sImg);
	}
	
	start_slideshow(0, (tImages.length-1), 3000)	
};