function ImagePreloader(images, call_back) {
	this.call_back = call_back;
	
	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.call_back(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();
}
