/*! copyright (c) 2009 brandon aaron (http://brandonaaron.net) * dual licensed under the mit (http://www.opensource.org/licenses/mit-license.php) * and gpl (http://www.opensource.org/licenses/gpl-license.php) licenses. * thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. * thanks to: mathias bank(http://www.mathias-bank.de) for a scope bug fix. * * version: 3.0.2 * * requires: 1.2.2+ */ (function($) { var types = ['dommousescroll', 'mousewheel']; $.event.special.mousewheel = { setup: function() { if ( this.addeventlistener ) for ( var i=types.length; i; ) this.addeventlistener( types[--i], handler, false ); else this.onmousewheel = handler; }, teardown: function() { if ( this.removeeventlistener ) for ( var i=types.length; i; ) this.removeeventlistener( types[--i], handler, false ); else this.onmousewheel = null; } }; $.fn.extend({ mousewheel: function(fn) { return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); }, unmousewheel: function(fn) { return this.unbind("mousewheel", fn); } }); function handler(event) { var args = [].slice.call( arguments, 1 ), delta = 0, returnvalue = true; event = $.event.fix(event || window.event); event.type = "mousewheel"; if ( event.wheeldelta ) delta = event.wheeldelta/120; if ( event.detail ) delta = -event.detail/3; // add events and delta to the front of the arguments args.unshift(event, delta); return $.event.handle.apply(this, args); } })(jquery);