/*
 * ImagePreloader
 *
 * Definition du preloader d'image
 */
function ImagePreloader(viewer, images, callback)
{
	// store the call-back
	this.callback = callback;

   	// Viewer
   	this.viewer = viewer;

	// initialize internal state
	this.nLoaded = 0;
	this.nProcessed = 0;
	this.aImages = new Array;

	// record the number of images.
	this.nImages = images.length;

	// for each image, call preload()
	for ( var i = 0; i < images.length; i++ ) this.preload(images[i]);
}

ImagePreloader.prototype.preload = function(image)
{
	// create new Image object and add to array
	var oImage = new Image();
	this.aImages.push(oImage);

	// set up event handlers for the Image object
	oImage.onload = ImagePreloader.prototype.onload;
	oImage.onerror = ImagePreloader.prototype.onerror;
	oImage.onabort = ImagePreloader.prototype.onabort;

	// assign pointer back to this.
	oImage.oImagePreloader = this;
	oImage.bLoaded = false;

	// assign the .src property of the Image object
	oImage.src = image;
}

ImagePreloader.prototype.onComplete = function()
{
	this.nProcessed++;
	if (this.nProcessed == this.nImages){
		this.callback(this.viewer, 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();
}

/*
 * onPreload
 *
 * CallBack du preloader d'image
 */
function onPreload(aImages, nImages)
{
	if ( nImages < aImages.length )
	{
		Debugger.debug("Images did not load properly");
	}else{
		Debugger.debug(aImages[0].src);
	}
}
