(function($){
    $.preloadImages = function(arr){
        $.preloadImages.add(arr);
        queuedStop = false;
        startPreloading()
    };
    $.preloadImages.add = function(arr){
        if (typeof(arr) == 'string') {
            $.preloadImages.imageQueue.push(arr);
            return
        };
        if (arr.length < 1) 
            return;
        for (var i = 0, numimgs = arr.length; i < numimgs; i++) {
            if (typeof(arr[i]) == 'string') 
                $.preloadImages.imageQueue.push(arr[i]);
            else 
                if (typeof(arr[i]) == 'object' && arr[i].length > 0) 
                    $.preloadImages.add(arr[i])
        }
    };
    $.preloadImages.prepend = function(){
        if (typeof(arr) == 'string') {
            $.preloadImages.imageQueue.unshift(arr);
            return
        };
        if (arr.length < 1) 
            return;
        for (var i = numargs - 1; i >= 0; i--) {
            if (typeof(arr[i]) == 'string') 
                $.preloadImages.imageQueue.unshift(arr[i]);
            else 
                if (typeof(arr[i]) == 'object' && arr[i].length > 0) 
                    $.preloadImages.prepend(arr[i])
        }
    };
    $.preloadImages.clear = function(){
        $.preloadImages.imageQueue = []
    };
    $.preloadImages.stop = function(){
        queuedStop = true
    };
    $.preloadImages.start = function(){
        queuedStop = false;
        startPreloading()
    };
    $.preloadImages.imageQueue = [];
    var isPreloading = false;
    var queuedStop = false;
    function startPreloading(){
        if (isPreloading) 
            return;
        $j(document.createElement('img')).bind('load', function(){
            if (queuedStop) {
                queuedStop = isPreloading = false;
                return
            }
            isPreloading = true;
            if ($.preloadImages.imageQueue.length > 0) {
                this.src = $.preloadImages.imageQueue.shift()
            }
            else 
                isPreloading = false
        }).trigger('load')
    }
})(jQuery);

