| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | /* http://james.padolsey.com/javascript/special-scroll-events-for-jquery/ */(function(){        var special = jQuery.event.special,        uid1 = "D" + (+new Date()),        uid2 = "D" + (+new Date() + 1);            special.scrollstart = {        setup: function() {                        var timer,                handler =  function(evt) {                                        var _self = this,                        _args = arguments;                                        if (timer) {                        clearTimeout(timer);                    } else {                        evt.type = "scrollstart";                        jQuery.event.dispatch.apply(_self, _args);                    }                                        timer = setTimeout( function(){                        timer = null;                    }, special.scrollstop.latency);                                    };                        jQuery(this).bind("scroll", handler).data(uid1, handler);                    },        teardown: function(){            jQuery(this).unbind( "scroll", jQuery(this).data(uid1) );        }    };        special.scrollstop = {        latency: 300,        setup: function() {                        var timer,                    handler = function(evt) {                                        var _self = this,                        _args = arguments;                                        if (timer) {                        clearTimeout(timer);                    }                                        timer = setTimeout( function(){                                                timer = null;                        evt.type = "scrollstop";                        jQuery.event.dispatch.apply(_self, _args);                                                                    }, special.scrollstop.latency);                                    };                        jQuery(this).bind("scroll", handler).data(uid2, handler);                    },        teardown: function() {            jQuery(this).unbind( "scroll", jQuery(this).data(uid2) );        }    };    })();
 |