jQuery(function($) {
    var eventName = 'emchange';
    $.em = $.extend({
        version: '1.0',
        delay: 200,
        element: $('<div />').css({ left:     '-100em',
                                    position: 'absolute',
                                    width:    '100em' })
                             .prependTo('body')[0],
        action: function() {
            var currentWidth = $.em.element.offsetWidth / 100;
            if ( currentWidth != $.em.current ) {
                $.em.previous = $.em.current;
                $.em.current = currentWidth;
                $.event.trigger(eventName, [$.em.current, $.em.previous]);
            }
        }
    }, $.em );
    $.fn[eventName] = function(fn) { return fn ? this.bind(eventName, fn)
                                               : this.trigger(eventName); };
    $.em.current = $.em.element.offsetWidth / 100;
    $.em.iid = setInterval( $.em.action, $.em.delay );
});
