librenms-librenms/jquery.mousewheel.js

75 lines
2.0 KiB
JavaScript
Raw Normal View History

2010-02-12 17:05:51 -06:00
/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
2008-10-15 20:35:05 -05:00
* 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.
*
2010-02-12 17:05:51 -06:00
* Version: 3.0.3-pre
2008-10-15 20:35:05 -05:00
*
* Requires: 1.2.2+
*/
(function($) {
2009-03-22 00:04:05 -05:00
var types = ['DOMMouseScroll', 'mousewheel'];
2008-10-15 20:35:05 -05:00
$.event.special.mousewheel = {
2010-02-12 17:05:51 -06:00
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;
}
2008-10-15 20:35:05 -05:00
};
$.fn.extend({
2010-02-12 17:05:51 -06:00
mousewheel: function(fn) {
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
},
unmousewheel: function(fn) {
return this.unbind("mousewheel", fn);
}
2008-10-15 20:35:05 -05:00
});
2009-03-22 00:04:05 -05:00
function handler(event) {
var orgEvent = event;
var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
2010-02-12 17:05:51 -06:00
event = $.event.fix(event || window.event);
event.type = "mousewheel";
// Old school scrollwheel delta
2010-02-12 17:05:51 -06:00
if ( event.wheelDelta ) delta = event.wheelDelta/120;
if ( event.detail ) delta = -event.detail/3;
// New school multidimensional scroll (touchpads) deltas
deltaY = delta;
// Gecko
if( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
deltaY = 0;
deltaX = -1*delta;
}
// Webkit
if( orgEvent.wheelDeltaY !== undefined ) deltaY = orgEvent.wheelDeltaY/120;
if( orgEvent.wheelDeltaX !== undefined ) deltaX = -1*orgEvent.wheelDeltaX/120;
2010-02-12 17:05:51 -06:00
// Add event and delta to the front of the arguments
args.unshift(event, delta, deltaX, deltaY);
2010-02-12 17:05:51 -06:00
return $.event.handle.apply(this, args);
2009-03-22 00:04:05 -05:00
}
2008-10-15 20:35:05 -05:00
})(jQuery);