(function($) {
	var caches = [];
	// Arguments are image paths relative to the current page.
	$.preLoadImages = function() {
		var args_len = arguments.length;
		for ( var i = 0; i<args_len; i++ ) {
			// build url hash
			var src = arguments[i],
			    hash = encodeURIComponent(src).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29')
			            .replace(/\*/g, '%2A').replace(/\./g, '%2E').replace(/-/g, '%2D').replace(/%/g, '-');
			
			if (caches[hash]) {
				for (var j in caches[hash]) {
					// image already cached
					if ( caches[hash][j].src == src )
						return;
				}
			}
			else
				caches[hash] = [];
			
			var cacheImage = document.createElement('img');
			cacheImage.src = src;
			caches[hash].push( cacheImage );
		}
	}
})(jQuery);
