//Excellent Javascript image preloader by SystemWisdom
//
//http://www.trap17.com/index.php/image-preloader-progress-bar-status_t21316.html

var g_iStep = 0;


function StartPreload()
{
    var allImages = new Array();
    allImages[0]="http://www.swhowellcontractinginc.com/images/slideshow/mwS1.jpg";
	allImages[1]="http://www.swhowellcontractinginc.com/images/slideshow/mwS2.jpg";
	allImages[2]="http://www.swhowellcontractinginc.com/images/slideshow/mwS3.jpg";
	allImages[3]="http://www.swhowellcontractinginc.com/images/slideshow/mwS4.jpg";
	allImages[4]="http://www.swhowellcontractinginc.com/images/slideshow/mwS5.jpg";
	allImages[5]="http://www.swhowellcontractinginc.com/images/slideshow/mwC1.jpg";
	allImages[6]="http://www.swhowellcontractinginc.com/images/slideshow/mwC2.jpg";
	allImages[7]="http://www.swhowellcontractinginc.com/images/slideshow/mwC3.jpg";
	allImages[8]="http://www.swhowellcontractinginc.com/images/slideshow/mwC4.jpg";
	
	//first check if images cached
	//assume page was previously loaded
	var prevLoaded=true;

	//array of real images. just for cache testing.
	var allRealImages = new Array();
	for( var i = 0; i < allImages.length; i++ )
	{	allRealImages[i] = new Image();
		allRealImages[i].src = allImages[i];
	}
	
	//continue checking as long as this image is found to be prev loaded
    for( var i = 0; i < allRealImages.length && prevLoaded==true; i++ )
	{	
	//testImage = new Image();
    //testImage.src = allImages[i];
	//if this one is not loaded, stop checking. We must show meter.
	if (allRealImages[i].complete==false) 
		{			
			//image was found NOT to be preloaded; show meter 
			prevLoaded=false;
			//alert(allRealImages[i].src);
		}
	}
	//not preloaded; show meter
	if (prevLoaded==false) {
			//show loading image
			document.getElementById("mainWinCenter").style.backgroundImage="url(http://www.swhowellcontractinginc.com/images/slideshow/loading.jpg)";
			document.getElementById("progress").style.display = "block";
			//alert("was not preloaded, have to preload");
			// Execute Image Preloader
			var oPreload = new ImagePreload( allImages, OnImgUpdate, OnCompletion );
	}else {
				//alert("was preloaded");
				//act as if images were just preloaded
				    //document.getElementById("blenddiv").style.display = "block";
				    //document.getElementById("mainWinCenter").style.backgroundImage="url(" + allImages[0] + ")";
				var oPreload = new ImagePreload( allImages, OnImgUpdate, OnCompletion );
	}
	
	
	

   
}





function OnImgUpdate( iProgress )
{  
   if( (iProgress >= 1) && (iProgress <= 10) && (iProgress > g_iStep) )
   {  
       g_iStep++;
       var oSpan = document.getElementById( "sDot" + iProgress + "" );
       oSpan.className = 'ProgressFullDot';
   }
}

function OnCompletion()
{  
   document.getElementById("progress").style.display = "none";
   document.getElementById("blenddiv").style.display = "block";
}



function ImagePreload( p_aImages, p_pfnPercent, p_pfnFinished )
{  
   // Call-back functions
   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.oImagePreload = this;  // Give the Image Object a Reference to our Class..
   oImage.bLoaded = false;       // Custom value added to track state
   oImage.source = p_oImage;     // Original Source Path to Image (for later use)
   oImage.src = p_oImage;        // Image Object Source Path
}

ImagePreload.prototype.OnComplete = function()
{  
   this.m_nProcessed++;
   if ( this.m_nProcessed == this.m_nICount )
       this.m_pfnFinished();
   else
       //alert(Math.round( (this.m_nProcessed / this.m_nICount) * 10 ));
	   var calcPercent = Math.round( (this.m_nProcessed / this.m_nICount) * 10 );
	   //If after first bar, set the previous bar so that there are no skips in progress bar
	   if (calcPercent-1 > 0) {
		document.getElementById( "sDot" + (calcPercent-1) + "" ).className = 'ProgressFullDot';
	   }
	   this.m_pfnPercent( calcPercent );
}

ImagePreload.prototype.OnLoad = function()
{  
   // 'this' pointer points to oImage Object because this function was previously assigned
   // as an event-handler for the oImage Object.
   this.bLoaded = true;
   this.oImagePreload.m_nLoaded++; // Access our Class with the Reference assigned previously..
   this.oImagePreload.OnComplete();
}
