﻿(function ($) {

    var ImagePreloader = function (options) {

        this.imageArray = options && options.images ? options.images : [];
        this.appendToObject = options && options.appendTo ? options.appendTo : window.document;
        this.container;
        this.waitDelay = options && options.waitDelay ? options.waitDelay : 50;
        this.imgWidth = options && options.imgWidth ? options.imgWidth : 100;
        this.imgHeight = options && options.imgHeight? options.imgHeight : 100;

        $.extend(this,
		{
		    init: function () {
	
    	        this.container = $('<div id="preloader"></div>');
		        this.container.appendTo(this.appendToObject);

		        for (var i = 0; i < this.imageArray.length; i++) {
		            this.container.append('<img src="' + this.imageArray[i] + '" />');
		        }
	
    	    },

		    wait: function (callback) {
		        var waitObj = this.container.find('img');
		        for (var i = 0; i < waitObj.length; i++) {
		            if (waitObj[i].complete || waitObj[i].readyState == 'complete') {
		                continue;
		            }
		            else {
		                setTimeout(function () {
		                    preloader.wait(callback);
		                }, this.waitDelay);

		                return;
		            }
		        }

		        if (callback && typeof callback === 'function') {
		            callback.call();
		        }
		    }
		});
    }

    var preloader;

    $.extend($,
	{
	    imagesPreload: function (options) {
	        preloader = new ImagePreloader(options);
	        preloader.init();
	    },

	    waitForImages: function (callback) {
	        preloader.wait(callback);
	    }
	});
})(jQuery);


