(function($) {
	var preloaderEl = null;

	$.haveLocalI = function(imgs, onComplete)
	{
		if (null === preloaderEl) {
			__createPreloaderEl();
		}

		var preloader = new __preloadImgs(imgs, onComplete);
		preloader.start();
	}

	function __preloadImgs(imgs, onComplete)
	{
		var that = this,
			loading = [];

		this.start = function()
		{
			$.each(imgs, function(i, val) {
				var img = document.createElement('img')
				img.src = val;
				loading.push(i);

				img.onload = function() {
					__loadingComplete(i);
				}

				preloaderEl.appendChild(img);
			});
		}

		function __loadingComplete(key)
		{
			var pos = $.inArray(key, loading);

			if (pos != -1) {
				loading.splice(pos, 1);
			}

			if (loading.length == 0 && typeof(onComplete) == 'function') {
				onComplete.call(that);
			}
		}
	}

	function __createPreloaderEl()
	{
	    preloaderEl = document.createElement('div');
	    preloaderEl.style.position = 'absolute';
	    preloaderEl.style.top = '0px';
	    preloaderEl.style.left = '0px';
	    preloaderEl.style.height = '1px';
	    preloaderEl.style.overflow = 'hidden';
	    preloaderEl.style.visibility = 'hidden';
	    document.body.appendChild(preloaderEl);
	}
}) (jQuery);

