﻿jQuery.extend(jQuery, {
    imagesToLoad: 0,
    loadedImages: [],
    preloadImages: function () {
        var settings = {
            urls: [],
            begin: function () { },
            each: function () { },
            complete: function () { },
            scope: window
        };
        jQuery.extend(settings, arguments[0]);
        var images = [];

        jQuery.imagesToLoad = settings.urls.length;

        settings.begin.call(settings.scope, settings.urls);
        for (var i = 0; i < settings.urls.length; i++) {
            images[i] = new Image();
            images[i].onload = function () {
                settings.each.call(settings.scope, this);
                jQuery.loadedImages.push(this);
                if (jQuery.loadedImages.length >= jQuery.imagesToLoad) {
                    settings.complete.call(settings.scope, jQuery.loadedImages);
                }
            }
            images[i].src = settings.urls[i];
        }
    }
});

