(function($) {
   $.fn.extend( {
      mousewheel : function(f) {
         if(!f.guid)f.guid = $.event.guid++; if(!$.event._mwCache)$.event._mwCache = []; return this.each(function() {
            if(this._mwHandlers)return this._mwHandlers.push(f); else this._mwHandlers = []; this._mwHandlers.push(f); var s = this; this._mwHandler = function(e) {
               e = $.event.fix(e || window.event); $.extend(e, this._mwCursorPos || {
                  }
               ); var delta = 0, returnValue = true; if(e.wheelDelta)delta = e.wheelDelta / 120; if(e.detail)delta =- e.detail / 3; if(window.opera)delta =- e.wheelDelta; for(var i = 0; i < s._mwHandlers.length; i++)if(s._mwHandlers[i])if(s._mwHandlers[i].call(s, e, delta) === false) {
                  returnValue = false; e.preventDefault(); e.stopPropagation(); }
               return returnValue; }; if($.browser.mozilla &&!this._mwFixCursorPos) {
               this._mwFixCursorPos = function(e) {
                  this._mwCursorPos = {
                     pageX : e.pageX, pageY : e.pageY, clientX : e.clientX, clientY : e.clientY}; }; $(this).bind('mousemove', this._mwFixCursorPos); }
            if(this.addEventListener)if($.browser.mozilla)this.addEventListener('DOMMouseScroll', this._mwHandler, false); else this.addEventListener('mousewheel', this._mwHandler, false); 
			else
				this.onmousewheel = this._mwHandler; $.event._mwCache.push($(this)); }
         ); }
      , unmousewheel : function(f) {
         return this.each(function() {
            if(f && this._mwHandlers) {
               for(var i = 0; i < this._mwHandlers.length; i++)if(this._mwHandlers[i] && this._mwHandlers[i].guid == f.guid)delete this._mwHandlers[i]; }
            else {
               if($.browser.mozilla &&!this._mwFixCursorPos)$(this).unbind('mousemove', this._mwFixCursorPos); if(this.addEventListener)if($.browser.mozilla)this.removeEventListener('DOMMouseScroll', this._mwHandler, false); else this.removeEventListener('mousewheel', this._mwHandler, false); 
			   else
			   	this.onmousewheel = null; this._mwHandlers = this._mwHandler = this._mwFixCursorPos = this._mwCursorPos = null; }
            }
         ); }
      }
   ); $(window).one('unload', function() {
      var els = $.event._mwCache || []; for(var i = 0; i < els.length; i++)els[i].unmousewheel(); }
   ); }
)(jQuery);