(function ($){ $.widget("ui.mouse", { options: { cancel: ':input,option', distance: 1, delay: 0} , _mouseInit: function (){ var self = this; this.element.bind('mousedown.' + this.widgetName, function (event){ return self._mouseDown(event); } ).bind('click.' + this.widgetName, function (event){ if (self._preventClickEvent) { self._preventClickEvent = false ; event.stopImmediatePropagation(); return false ; } } ); this.started = false ; } , _mouseDestroy: function (){ this.element.unbind('.' + this.widgetName); } , _mouseDown: function (event){ event.originalEvent = event.originalEvent || { } ; if (event.originalEvent.mouseHandled) { return ; } (this._mouseStarted && this._mouseUp(event)); this._mouseDownEvent = event; var self = this, btnIsLeft = (event.which == 1), elIsCancel = (typeof this.options.cancel == "string"? _AN_Read_length("length", $(_AN_Read_target("target", event)).parents().add(_AN_Read_target("target", event)).filter(this.options.cancel)): false ); if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { return true ; } this.mouseDelayMet = !this.options.delay; if (!this.mouseDelayMet) { this._mouseDelayTimer = _AN_Call_settimeout("setTimeout", window, function (){ self.mouseDelayMet = true ; } , this.options.delay); } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(event) !== false ); if (!this._mouseStarted) { event.preventDefault(); return true ; } } this._mouseMoveDelegate = function (event){ return self._mouseMove(event); } ; this._mouseUpDelegate = function (event){ return self._mouseUp(event); } ; $(document).bind('mousemove.' + this.widgetName, this._mouseMoveDelegate).bind('mouseup.' + this.widgetName, this._mouseUpDelegate); ($.browser.safari || event.preventDefault()); event.originalEvent.mouseHandled = true ; return true ; } , _mouseMove: function (event){ if ($.browser.msie && !event.button) { return this._mouseUp(event); } if (this._mouseStarted) { this._mouseDrag(event); return event.preventDefault(); } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event) !== false ); (this._mouseStarted? this._mouseDrag(event): this._mouseUp(event)); } return !this._mouseStarted; } , _mouseUp: function (event){ $(document).unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate).unbind('mouseup.' + this.widgetName, this._mouseUpDelegate); if (this._mouseStarted) { this._mouseStarted = false ; this._preventClickEvent = (_AN_Read_target('target', event) == _AN_Read_target('target', this._mouseDownEvent)); this._mouseStop(event); } return false ; } , _mouseDistanceMet: function (event){ return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance); } , _mouseDelayMet: function (event){ return this.mouseDelayMet; } , _mouseStart: function (event){ } , _mouseDrag: function (event){ } , _mouseStop: function (event){ } , _mouseCapture: function (event){ return true ; } } ); } )(jQuery);