function ImagePreloader(images, call_back)
{
   this.call_back = call_back;
   this.num_loaded = 0;
   this.num_processed = 0;
   this.image_ary = new Array;
   this.num_images = images.length;

   for ( var i = 0; i < images.length; i++ ) 
      this.preload(images[i]);
}

ImagePreloader.prototype.preload = function(image)
{
   var image_obj = new Image;
   this.image_ary.push(image_obj);
   image_obj.onload = ImagePreloader.prototype.onload;
   image_obj.onerror = ImagePreloader.prototype.onerror;
   image_obj.onabort = ImagePreloader.prototype.onabort;
   image_obj.image_obj = this;
   image_obj.has_loaded = false;
   image_obj.src = image;
}

ImagePreloader.prototype.onComplete = function()
{
   this.num_processed++;
   if ( this.num_processed == this.num_images )
   {
      this.call_back(this.image_ary, this.num_loaded);
   }
}

ImagePreloader.prototype.onload = function()
{
   this.has_loaded = true;
   this.image_obj.num_loaded++;
   this.image_obj.onComplete();
}

ImagePreloader.prototype.onerror = function()
{
   this.bError = true;
   this.image_obj.onComplete();
}

ImagePreloader.prototype.onabort = function()
{
   this.bAbort = true;
   this.image_obj.onComplete();
}
