/* =========================================================


// ========================================================= */

(function($) {

    $.fn.preloadImages = function(url, options) {
        return this.each(function() {   
            $.preloadImages(this, url, options);
        });
    };

	$.fn.preloadImages.createImage = function() {
		return new Image();
	};

	$.fn.preloadImages.addImage = function(image,container,options) {
		if (container) $(container).append(image);
		if (options.wrap) $(image).wrap(options.wrap);
	};

	$.fn.preloadImages.defaults = {
		wrap: null,
		oneachload: $.fn.preloadImages.addImage,
		onfinish: null
	};

    $.preloadImages = function(container, url, options) {
		var loaded = 0;
		var opts = $.extend({}, $.fn.preloadImages.defaults, options);
		var urls = (url.constructor == Array) ? url : [url];

		container = container ? container : '<div></div>'

		if ($.isFunction(opts.onfinish)) $(container).one('preloadImages',opts.onfinish)
		
		$.each(urls, function(i, url) {
			var image = $.fn.preloadImages.createImage();
			$(image).load(function() {
				if($.isFunction(opts.oneachload)) {
					opts.oneachload(this,container,opts);
				}
				if(++loaded == urls.length && $.isFunction(opts.onfinish)) {
					$(container).trigger('preloadImages');
				}
			});
			image.src = url;
		});
		
	}


})(jQuery);
