/**
 * Envoie un signal lorsque toutes les images sont chargées
 * 
 * - onComplete: fonction appellée lorsque les images sont chargées
 * - onLoad: fonction appellée lorsque les images commencent à être chargées
 * - onLoading: fonction appelée lorsque les images ne sont pas encore chargées complètement
 * - classname: className des images à attendre le chargement total
 */
(function($) {
	$.fn.lImageLoader = function(settings) {
		var config = {};
		settings = $.extend(true,config,settings);
		return $.lImageLoader.impl.init(this,settings);
	};
	
	$.lImageLoader = function(elem,settings) {
		return $(elem).lImageLoader(settings);
	};
	
	$.lImageLoader.impl = {
		timerLoader: null,
		$e: null,
		PBar: {
			totalImages: 0,
			nbImagesLoaded: 0
		},
		
		init: function(e,settings) {
			var self = this;
			var funcOnLoad = settings.onLoad || {};
			this.PBar.totalImages = $("."+settings.classname).length;
			this.$e = $e = e;
			this.settings = settings;
			
			if( $.isFunction(funcOnLoad) ) {
				funcOnLoad.apply(this.PBar,[{}]);
			}
			
			window.timerLoader = setInterval(function(){self.checkLoaded(e)},100);
			
			return e;
		},
		
		checkLoaded: function(e) {
			var funcOnLoading = this.settings.onLoading || {};
			var funcOnComplete = this.settings.onComplete || {};
			
			var imgClassName = this.settings.classname;
			
			
			var allLoaded = true;
			for( var i=0; i<document.images.length; i++ ) {
				var image = document.images[i];
				if( image.className == imgClassName ) {
					if( !image.complete ) {
						allLoaded = false;
					} else {
						this.PBar.nbImagesLoaded += 1;
					}
				}
			}
			
			
			if( !allLoaded ) {
				if( $.isFunction(funcOnLoading) ) {
					funcOnLoading.apply(this.PBar,[{}]);
					this.PBar.nbImagesLoaded = 0;
				}
				return;
			}
			
			if( $.isFunction(funcOnComplete) ) {
				funcOnComplete.apply( $(e), [{images: $('.'+imgClassName)}] );
			}
			
			
			
			clearInterval(window.timerLoader);
			window.timerLoader = null;
		}
	};
	
} )(jQuery);

timerLoader = null;















