function ImagePreloader(images, callback)
{
	this.callback = callback;
	this.nLoaded = 0;
   	this.nProcessed = 0;
   	this.aImages = new Array;
	this.nImages = images.length;

	for ( var i = 0; i < images.length; i++ )
      this.preload(images[i]);
}

ImagePreloader.prototype.preload = function(image)
{
	var oImage = new Image;

	this.aImages.push(oImage);

   	oImage.onload			= ImagePreloader.prototype.onload;
   	oImage.onerror			= ImagePreloader.prototype.onerror;
   	oImage.onabort			= ImagePreloader.prototype.onabort;
   	oImage.oImagePreloader 	= this;
   	oImage.bLoaded			= false;

   oImage.src = image;

}

ImagePreloader.prototype.onComplete = function()
{

	this.nProcessed++;

	if ( this.nProcessed == this.nImages )
	{
		this.callback(this.aImages, this.nLoaded);
   	}
}

ImagePreloader.prototype.onload = function()
{

   this.bLoaded = true;
   this.oImagePreloader.nLoaded++;
   this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function()
{
   this.bError = true;
   this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onabort = function()
{
   this.bAbort = true;
   this.oImagePreloader.onComplete();
}