﻿(function ($) {
    $.fn.extend({
        smartpreload: function (options) {
            var settings = $.extend({
                images: null,
                oneachimageload: null,
                onloadall: null
            }, options);
            var step = 100;
            if (settings.images.length > 0) {
                step = 100 / settings.images.length;
            }            
            return this.each(function () {
                var loadcounter = 0;
                var stepcounter = 0;
                for (var i = 0; i < settings.images.length; i++) {
                    var img = $('<img/>').addClass('preloading').css('display', 'none').attr('src', settings.images[i]).load(function () {
                        loadcounter++;
                        stepcounter += step;
                        if (settings.oneachimageload != null) settings.oneachimageload($(this).attr('src'), stepcounter);
                        if (loadcounter == settings.images.length) {
                            if (settings.onloadall != null) settings.onloadall();
                        }
                    });
                }
            });
        }
    });
})(jQuery);
