
function ImagePreloader(imageList, callback)
{

	this.callback = callback; 

	this.nLoaded = 0;
	this.aImages = new Array;

	this.nImages = imageList.length;

	for(var i=0; i<imageList.length; i++)
	{
		this.preload(imageList[i]);
	}

}

ImagePreloader.prototype.preload = function(image)
{

	for(var i=0; i<this.aImages.length; i++)
	{
		if(this.aImages[i].name == image)
		{
			// already loaded

			this.callback();
			return;
		}
	}

	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.src = image;
	oImage.name = image;

	this.nImages++;

}

ImagePreloader.prototype.onComplete = function()
{

	this.callback(this.aImages, this.nLoaded);

}

ImagePreloader.prototype.onload = function()
{

	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();

}