/**
 * Klasse zum sicheren Laden bestimmter Bilder.
 * 
 * @uses prototype 1.5.0
 */
function ImageLoader() {

	ImageLoader.strictH = true;

	ImageLoader.strictW = true;

	/**
	 * Statische Variable initialisieren.
	 *
	 * @access public
	 * @static
	 * @var string
	 */
	ImageLoader.callback = '';

	/**
	 * Abstand zwischen den einzelnen Prüfabfragen.
	 *
	 * @access public
	 * @static
	 * @var int
	 */
	ImageLoader.checkFreqMs = 100;
	
	/**
	 * Liste mit allen zu prüfenden Bildern.
	 *
	 * @access private
	 * @var imgElement[]
	 */ 
	ImageLoader.images = new Array();

	/**
	 * Registriert alle Image-Elemente des übergebenen Elementes zur Ladeprüfung.
	 *
	 * @access public
	 * @return void
	 */
	this.addChildImages = function (parentElement) {
		if (!ImageLoader.callback) {
			var nImgList = parentElement.getElementsByTagName("img");
			for (var i = 0; i < nImgList.length; i++) {
				ImageLoader.images.push(nImgList[i]);
			}
		}
	}

	/**
	 * Registriert eine Image-Elemente zur Ladeprüfung.
	 *
	 * @access public
	 * @return void
	 */
	this.addImage = function (imgElement) {
		if (!ImageLoader.callback) {
			ImageLoader.images.push(imgElement);
		}
	}
	
	/**
	 * Prüft den Ladezustand der registerierten Bilder und kehrt erst zurück wenn
	 * alle Bilder geladen sind.
	 * 
	 * @access public
	 * @param string Callback. 
	 * @return void
	 */
	this.run = function(cbck) {
		if (!ImageLoader.callback) {
			ImageLoader.callback = cbck; // callback setzen
			ImageLoader_chkLoadState(); // Prüfung starten
		}
	}
	
}


/**
 * Die eigentliche Prüfroutine.
 * 
 * @access private
 * @return bool
 */
function ImageLoader_chkLoadState() {
	// Zustand aller Bilder durchgehen
	var allImgLoaded = true; 

	for(var i=0; i < ImageLoader.images.length; i++)
	{
		if(ImageLoader.images[i].complete == false) {
			allImgLoaded = false;
		}
	}
	
	if (allImgLoaded) {
		var cbck = ImageLoader.callback;
		ImageLoader.callback = '';
		ImageLoader.images = new Array();
		window.setTimeout(cbck, 0); // Callback aufrufen
	}
	else {
		window.setTimeout('ImageLoader_chkLoadState()', ImageLoader.checkFreqMs); // Prüfung wiederholen
	}
		
}


/* Image Loader */
var loadImg = new ImageLoader();
