Blame jquery/jquery.ui-1.8.18.mouse.js

Packit Service 50c9f2
/*!
Packit Service 50c9f2
 * jQuery UI Mouse 1.8.18
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
Packit Service 50c9f2
 * Dual licensed under the MIT or GPL Version 2 licenses.
Packit Service 50c9f2
 * http://jquery.org/license
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * http://docs.jquery.com/UI/Mouse
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Depends:
Packit Service 50c9f2
 *	jquery.ui.widget.js
Packit Service 50c9f2
 */
Packit Service 50c9f2
(function( $, undefined ) {
Packit Service 50c9f2
Packit Service 50c9f2
var mouseHandled = false;
Packit Service 50c9f2
$( document ).mouseup( function( e ) {
Packit Service 50c9f2
	mouseHandled = false;
Packit Service 50c9f2
});
Packit Service 50c9f2
Packit Service 50c9f2
$.widget("ui.mouse", {
Packit Service 50c9f2
	options: {
Packit Service 50c9f2
		cancel: ':input,option',
Packit Service 50c9f2
		distance: 1,
Packit Service 50c9f2
		delay: 0
Packit Service 50c9f2
	},
Packit Service 50c9f2
	_mouseInit: function() {
Packit Service 50c9f2
		var self = this;
Packit Service 50c9f2
Packit Service 50c9f2
		this.element
Packit Service 50c9f2
			.bind('mousedown.'+this.widgetName, function(event) {
Packit Service 50c9f2
				return self._mouseDown(event);
Packit Service 50c9f2
			})
Packit Service 50c9f2
			.bind('click.'+this.widgetName, function(event) {
Packit Service 50c9f2
				if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
Packit Service 50c9f2
				    $.removeData(event.target, self.widgetName + '.preventClickEvent');
Packit Service 50c9f2
					event.stopImmediatePropagation();
Packit Service 50c9f2
					return false;
Packit Service 50c9f2
				}
Packit Service 50c9f2
			});
Packit Service 50c9f2
Packit Service 50c9f2
		this.started = false;
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	// TODO: make sure destroying one instance of mouse doesn't mess with
Packit Service 50c9f2
	// other instances of mouse
Packit Service 50c9f2
	_mouseDestroy: function() {
Packit Service 50c9f2
		this.element.unbind('.'+this.widgetName);
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	_mouseDown: function(event) {
Packit Service 50c9f2
		// don't let more than one widget handle mouseStart
Packit Service 50c9f2
		if( mouseHandled ) { return };
Packit Service 50c9f2
Packit Service 50c9f2
		// we may have missed mouseup (out of window)
Packit Service 50c9f2
		(this._mouseStarted && this._mouseUp(event));
Packit Service 50c9f2
Packit Service 50c9f2
		this._mouseDownEvent = event;
Packit Service 50c9f2
Packit Service 50c9f2
		var self = this,
Packit Service 50c9f2
			btnIsLeft = (event.which == 1),
Packit Service 50c9f2
			// event.target.nodeName works around a bug in IE 8 with
Packit Service 50c9f2
			// disabled inputs (#7620)
Packit Service 50c9f2
			elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
Packit Service 50c9f2
		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
Packit Service 50c9f2
			return true;
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		this.mouseDelayMet = !this.options.delay;
Packit Service 50c9f2
		if (!this.mouseDelayMet) {
Packit Service 50c9f2
			this._mouseDelayTimer = setTimeout(function() {
Packit Service 50c9f2
				self.mouseDelayMet = true;
Packit Service 50c9f2
			}, this.options.delay);
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
Packit Service 50c9f2
			this._mouseStarted = (this._mouseStart(event) !== false);
Packit Service 50c9f2
			if (!this._mouseStarted) {
Packit Service 50c9f2
				event.preventDefault();
Packit Service 50c9f2
				return true;
Packit Service 50c9f2
			}
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		// Click event may never have fired (Gecko & Opera)
Packit Service 50c9f2
		if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
Packit Service 50c9f2
			$.removeData(event.target, this.widgetName + '.preventClickEvent');
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		// these delegates are required to keep context
Packit Service 50c9f2
		this._mouseMoveDelegate = function(event) {
Packit Service 50c9f2
			return self._mouseMove(event);
Packit Service 50c9f2
		};
Packit Service 50c9f2
		this._mouseUpDelegate = function(event) {
Packit Service 50c9f2
			return self._mouseUp(event);
Packit Service 50c9f2
		};
Packit Service 50c9f2
		$(document)
Packit Service 50c9f2
			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
Packit Service 50c9f2
			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
Packit Service 50c9f2
Packit Service 50c9f2
		event.preventDefault();
Packit Service 50c9f2
		
Packit Service 50c9f2
		mouseHandled = true;
Packit Service 50c9f2
		return true;
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	_mouseMove: function(event) {
Packit Service 50c9f2
		// IE mouseup check - mouseup happened when mouse was out of window
Packit Service 50c9f2
		if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
Packit Service 50c9f2
			return this._mouseUp(event);
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		if (this._mouseStarted) {
Packit Service 50c9f2
			this._mouseDrag(event);
Packit Service 50c9f2
			return event.preventDefault();
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
Packit Service 50c9f2
			this._mouseStarted =
Packit Service 50c9f2
				(this._mouseStart(this._mouseDownEvent, event) !== false);
Packit Service 50c9f2
			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		return !this._mouseStarted;
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	_mouseUp: function(event) {
Packit Service 50c9f2
		$(document)
Packit Service 50c9f2
			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
Packit Service 50c9f2
			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
Packit Service 50c9f2
Packit Service 50c9f2
		if (this._mouseStarted) {
Packit Service 50c9f2
			this._mouseStarted = false;
Packit Service 50c9f2
Packit Service 50c9f2
			if (event.target == this._mouseDownEvent.target) {
Packit Service 50c9f2
			    $.data(event.target, this.widgetName + '.preventClickEvent', true);
Packit Service 50c9f2
			}
Packit Service 50c9f2
Packit Service 50c9f2
			this._mouseStop(event);
Packit Service 50c9f2
		}
Packit Service 50c9f2
Packit Service 50c9f2
		return false;
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	_mouseDistanceMet: function(event) {
Packit Service 50c9f2
		return (Math.max(
Packit Service 50c9f2
				Math.abs(this._mouseDownEvent.pageX - event.pageX),
Packit Service 50c9f2
				Math.abs(this._mouseDownEvent.pageY - event.pageY)
Packit Service 50c9f2
			) >= this.options.distance
Packit Service 50c9f2
		);
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	_mouseDelayMet: function(event) {
Packit Service 50c9f2
		return this.mouseDelayMet;
Packit Service 50c9f2
	},
Packit Service 50c9f2
Packit Service 50c9f2
	// These are placeholder methods, to be overriden by extending plugin
Packit Service 50c9f2
	_mouseStart: function(event) {},
Packit Service 50c9f2
	_mouseDrag: function(event) {},
Packit Service 50c9f2
	_mouseStop: function(event) {},
Packit Service 50c9f2
	_mouseCapture: function(event) { return true; }
Packit Service 50c9f2
});
Packit Service 50c9f2
Packit Service 50c9f2
})(jQuery);