﻿/*
* cacheImage: a jQuery plugin
*
* cacheImage is a simple jQuery plugin for pre-caching images.  The
* plugin can be used to eliminate flashes of unstyled content (FOUC) and
* improve perceived page load time.  Callbacks for load, error and abort
* events are provided.
*
* For usage and examples, visit:
* http://github.com/alexrabarts/jquery-cacheimage
*
* Licensed under the MIT:
* http://www.opensource.org/licenses/mit-license.php
*
* Copyright (c) 2008 Stateless Systems (http://statelesssystems.com)
*
* @author   Alex Rabarts (alexrabarts -at- gmail -dawt- com)
* @requires jQuery v1.2 or later
* @version  0.2.1
*/

(function ($) {
    $.extend($, {
        cacheImage: function (src, options) {
            if (typeof src === 'object') {
                $.each(src, function () {
                    $.cacheImage(String(this), options);
                });

                return;
            }

            var image = new Image();

            options = options || {};

            $.each(['load', 'error', 'abort'], function () { // Callbacks
                var e = String(this);
                if (typeof options[e] === 'function') { $(image).bind(e, options[e]); }

                if (typeof options.complete === 'function') {
                    $(image).bind(e, options.complete);
                }
            });

            image.src = src;

            return image;
        }
    });

    $.extend($.fn, {
        cacheImage: function (options) {
            return this.each(function () {
                $.cacheImage(this.src, options);
            });
        }
    });
})(jQuery);
