/*
Copyright (c) 2008, Xavier CAMBAR.
Code licensed under the BSD License:

* Copyright (c) 1998, Regents of the University of California
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
*     * Redistributions of source code must retain the above copyright
*       notice, this list of conditions and the following disclaimer.
*     * Redistributions in binary form must reproduce the above copyright
*       notice, this list of conditions and the following disclaimer in the
*       documentation and/or other materials provided with the distribution.
*     * Neither the name of the University of California, Berkeley nor the
*       names of its contributors may be used to endorse or promote products
*       derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

version: 1.1
*/

if(typeof Ueye=="undefined"||!Ueye){var Ueye={};}

Ueye.ImgPreloader = function (srcArray) {
	this.imgList = srcArray;
	this.afterLoading.subscribe(this.stopTimer, [], this);
};

Ueye.ImgPreloader.prototype = {
	imgList: [],
	afterLoading : new YAHOO.util.CustomEvent('afterLoading'),
	onCheck : new YAHOO.util.CustomEvent('onCheck'),
  timerID: null,
	
	run: function() {
		for (var i=0; i < this.imgList.length; i++) {
			var tmp = new Image();
			tmp.src = this.imgList[i];
			this.imgList[i] = tmp;
		};
		if(this.imgList.length>0) {
			var startTimer = this.timerID ? false : true;
      this.timerID = this.timerID || YAHOO.lang.later(500, this, this.checkLoad, [], true);
			if(startTimer) this.checkLoad();
		}
	},
	stopTimer: function() {
		if(this.timerID)
    	this.timerID.cancel();
	},
	countComplete: function() {
		var c = 0;
		for (var i=0; i < this.imgList.length; i++) {
			if(this.imgList[i].complete) c++;
		}
		return c;
	},
	checkLoad: function() {
		if (this.countComplete() == this.imgList.length) {
   		this.afterLoading.fire();
  		return;
  	}
    else
    {
   		this.onCheck.fire();
    }
	},
	getImages: function() {
		return this.imgList;
	}
};
