/*!
 * jQuery afterresize event plugin
 * http://github.com/roxeteer/jquery-afterresize
 *
 * Copyright (c) 2010 Visa Kopu, visa@visakopu.net
 *
 * Licensed under the BSD license.
 * http://github.com/roxeteer/jquery-afterresize/wiki/License
 */

(function($) {
    var resizeHandler = function(e) {
        var el = $(this);

        if (el.data("resizetimer")) {
            window.clearTimeout(el.data("resizetimer"));
        }

        el.data("resizetimer", window.setTimeout(function() {
            el.trigger("afterresize");
        }, 300));
    }

    $.event.special.afterresize = {
        add: function(handleObj) {
            $(this).bind("resize", resizeHandler);

            // apply old event handler
            var old_handler = handleObj.handler;
            handleObj.handler = function(event) {
                return old_handler.apply(this, arguments);
            }
        },

        remove: function(handleObj) {
            $(this).unbind("resize", resizeHandler);
        }
    };

    $.fn.extend({
        afterresize: function(f) {
            if ($.isFunction(f)) {
                $(this).bind("afterresize", f);
            } else {
                $(this).trigger("afterresize");
            }

            return this;
        }
    });
})(jQuery);
