/**
 * AUDI JavaScript library: Prealoding helpers
 * 
 * @projectDescription	Handles preloading
 * @namespace			preload
 *
 * @author 				$Author: mkrause $
 * @version				$Revision: 1 $
 * @copyright			NEUE DIGITALE GmbH, Berlin
 * 
 * @jslint: 2008-11-18, 1815
 * 
 * @file:				audi.preload.js
 */

/* create namespace */
audi_ngw.namespace(audi_ngw,'preload');

 
audi_ngw.preload._aSSrc = [];
audi_ngw.preload._aCached = [];

/**
 * Adds image sources to the preloading queue and preloades images
 * @param {String, Array} Image source as string  or an array of strings
 * @return {Void}
 */
audi_ngw.preload.add = function(){

	// add single image source
	if (arguments[0].constructor == String ) {
		audi_ngw.preload._aSSrc.push(audi_ngw.url.prefixUrlWithDomain(arguments[0]));
	}

	// add array of image sources
	if (arguments[0].constructor == Array) {
		jQuery(arguments[0]).each(
			function (_i,_sItemSource) {
				audi_ngw.preload._aSSrc.push(audi_ngw.url.prefixUrlWithDomain(_sItemSource));
			}
		);
	}

	// run queue
	audi_ngw.preload.run();

};
/**
 * Preloads images from queue, bridge to _doRun
 * @return {Void}
 */
audi_ngw.preload.run = function(){
	// check for necessity
	if (audi_ngw.preload._aSSrc.length) {
		// preload
		audi_ngw.preload._doRun();
	}
};

/**
 * Preloads images from queue by creating a new node.
 * Uses an itnernal cache to prevent multiple items being loaded.
 * @return {Void}
 */
audi_ngw.preload._doRun = function(){
	
	jQuery(audi_ngw.preload._aSSrc).each(
		function (_i,_sItemSource) {
			// create new node if this element haven't been preloaded
			if (jQuery.inArray(_sItemSource, audi_ngw.preload._aCached) === -1) {
				// add to cached items
				audi_ngw.preload._aCached.push(_sItemSource);
				// create node using jQuery
				var _img = jQuery('<img src="" />').attr('src', _sItemSource);
				//var _img = document.createElement('img');
				//_img.src = _sItemSource;
				// remove from queue
				audi_ngw.preload._aSSrc.shift();
				// clear memory
				_img = null;
			}
		}
	);
};

// execute on ready
/* moved to audi_ngw.navigation.js
jQuery(document).ready(function(){
	audi_ngw.preload.run();
});
*/
