﻿(function($) {

    // DEBUG FUNCTION
	$.debug = function(message) {if(window.console) {console.log(message);} else {alert(message);}};
    $.debug_list = function(message) {if(window.console) {console.dir(message);} else {alert(message);}};

    // INSTANCE FUNCTION
	$.fn.exists = function(){if(jQuery(this).length == 0){return false;}else{return true;}};

    // BROWSER INFO
	$.browser_size = function() {
		if ($.browser.msie) {
			var document_width = $(window).height();
			var document_height = $(document).height();
			return [
				window.innerWidth || 						// ie7+
				document.documentElement.clientWidth || 	// ie6  
				document.body.clientWidth, 					// ie6 quirks mode
				document_height - document_width < 20 ? document_width : document_height
			];
		}
		return [$(window).width(), $(window).height()];
	};

    // LOADING INFO
	$.fn.images_loader = function(settings) {
        var config = $.fn.images_loader.defaults;
        if (settings) config = $.extend($.fn.images_loader.defaults, settings);
		return this.each(function() {
			var self = this;
			var $self = $(this);
			var total_img_to_loaded;
			var images_loaded = false;
			var number_of_images_preloaded = 0;
			$.extend(self, {
				image_loaded: function(number_of_images,total_img_to_load,images_loaded) {
					number_of_images++;
                    number_of_images_preloaded = number_of_images;
					if(number_of_images_preloaded >= total_img_to_load && images_loaded != true){
						images_loaded = true;
						config.after_load($self);
						return true;
					}
					return self;
				}
			});

			if(self.tagName == "IMG") {
				total_img_to_loaded = 1;
				var image = new Image();
				image.src = $self.attr('src');
                if(image.complete){
                    self.image_loaded(number_of_images_preloaded,total_img_to_loaded,images_loaded);
                }
                else {
                    $self.load(function(){
                        self.image_loaded(number_of_images_preloaded,total_img_to_loaded,images_loaded);
                    });
                }
			}
			else if($self.find('img').exists()) {
                total_img_to_loaded = $self.find('img').size();
				$self.find('img').each(function() {
					var image = new Image();
					image.src = $(this).attr('src');
                    if(image.complete){
                        self.image_loaded(number_of_images_preloaded,total_img_to_loaded,images_loaded);
                    }
                    else {
                        $(this).load(function() {
                            self.image_loaded(number_of_images_preloaded,total_img_to_loaded,images_loaded);
                        });
                    }
				});
			}
            else {
                config.after_load($self);
            }
		});
	};
    $.fn.images_loader.defaults = {
        after_load: function($obj){}
    };
})(jQuery);
