annotate client/digitallibrary/jquery/ui/jquery.ui.draggable.js @ 847:c662bf335881 jquery

fixed a bug in geom.intersect
author hertzhaft
date Sun, 06 Mar 2011 12:58:09 +0100
parents ccf67eaf97ee
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
756
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
1 /*
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
2 * jQuery UI Draggable 1.8.9
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
3 *
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
4 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
5 * Dual licensed under the MIT or GPL Version 2 licenses.
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
6 * http://jquery.org/license
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
7 *
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
8 * http://docs.jquery.com/UI/Draggables
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
9 *
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
10 * Depends:
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
11 * jquery.ui.core.js
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
12 * jquery.ui.mouse.js
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
13 * jquery.ui.widget.js
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
14 */
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
15 (function( $, undefined ) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
16
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
17 $.widget("ui.draggable", $.ui.mouse, {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
18 widgetEventPrefix: "drag",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
19 options: {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
20 addClasses: true,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
21 appendTo: "parent",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
22 axis: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
23 connectToSortable: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
24 containment: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
25 cursor: "auto",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
26 cursorAt: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
27 grid: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
28 handle: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
29 helper: "original",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
30 iframeFix: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
31 opacity: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
32 refreshPositions: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
33 revert: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
34 revertDuration: 500,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
35 scope: "default",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
36 scroll: true,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
37 scrollSensitivity: 20,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
38 scrollSpeed: 20,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
39 snap: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
40 snapMode: "both",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
41 snapTolerance: 20,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
42 stack: false,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
43 zIndex: false
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
44 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
45 _create: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
46
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
47 if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
48 this.element[0].style.position = 'relative';
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
49
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
50 (this.options.addClasses && this.element.addClass("ui-draggable"));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
51 (this.options.disabled && this.element.addClass("ui-draggable-disabled"));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
52
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
53 this._mouseInit();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
54
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
55 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
56
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
57 destroy: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
58 if(!this.element.data('draggable')) return;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
59 this.element
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
60 .removeData("draggable")
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
61 .unbind(".draggable")
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
62 .removeClass("ui-draggable"
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
63 + " ui-draggable-dragging"
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
64 + " ui-draggable-disabled");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
65 this._mouseDestroy();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
66
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
67 return this;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
68 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
69
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
70 _mouseCapture: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
71
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
72 var o = this.options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
73
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
74 // among others, prevent a drag on a resizable-handle
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
75 if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
76 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
77
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
78 //Quit if we're not on a valid handle
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
79 this.handle = this._getHandle(event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
80 if (!this.handle)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
81 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
82
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
83 return true;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
84
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
85 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
86
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
87 _mouseStart: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
88
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
89 var o = this.options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
90
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
91 //Create and append the visible helper
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
92 this.helper = this._createHelper(event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
93
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
94 //Cache the helper size
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
95 this._cacheHelperProportions();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
96
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
97 //If ddmanager is used for droppables, set the global draggable
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
98 if($.ui.ddmanager)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
99 $.ui.ddmanager.current = this;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
100
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
101 /*
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
102 * - Position generation -
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
103 * This block generates everything position related - it's the core of draggables.
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
104 */
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
105
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
106 //Cache the margins of the original element
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
107 this._cacheMargins();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
108
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
109 //Store the helper's css position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
110 this.cssPosition = this.helper.css("position");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
111 this.scrollParent = this.helper.scrollParent();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
112
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
113 //The element's absolute position on the page minus margins
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
114 this.offset = this.positionAbs = this.element.offset();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
115 this.offset = {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
116 top: this.offset.top - this.margins.top,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
117 left: this.offset.left - this.margins.left
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
118 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
119
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
120 $.extend(this.offset, {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
121 click: { //Where the click happened, relative to the element
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
122 left: event.pageX - this.offset.left,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
123 top: event.pageY - this.offset.top
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
124 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
125 parent: this._getParentOffset(),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
126 relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
127 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
128
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
129 //Generate the original position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
130 this.originalPosition = this.position = this._generatePosition(event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
131 this.originalPageX = event.pageX;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
132 this.originalPageY = event.pageY;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
133
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
134 //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
135 (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
136
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
137 //Set a containment if given in the options
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
138 if(o.containment)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
139 this._setContainment();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
140
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
141 //Trigger event + callbacks
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
142 if(this._trigger("start", event) === false) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
143 this._clear();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
144 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
145 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
146
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
147 //Recache the helper size
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
148 this._cacheHelperProportions();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
149
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
150 //Prepare the droppable offsets
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
151 if ($.ui.ddmanager && !o.dropBehaviour)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
152 $.ui.ddmanager.prepareOffsets(this, event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
153
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
154 this.helper.addClass("ui-draggable-dragging");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
155 this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
156 return true;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
157 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
158
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
159 _mouseDrag: function(event, noPropagation) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
160
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
161 //Compute the helpers position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
162 this.position = this._generatePosition(event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
163 this.positionAbs = this._convertPositionTo("absolute");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
164
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
165 //Call plugins and callbacks and use the resulting position if something is returned
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
166 if (!noPropagation) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
167 var ui = this._uiHash();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
168 if(this._trigger('drag', event, ui) === false) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
169 this._mouseUp({});
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
170 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
171 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
172 this.position = ui.position;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
173 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
174
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
175 if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
176 if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px';
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
177 if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
178
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
179 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
180 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
181
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
182 _mouseStop: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
183
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
184 //If we are using droppables, inform the manager about the drop
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
185 var dropped = false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
186 if ($.ui.ddmanager && !this.options.dropBehaviour)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
187 dropped = $.ui.ddmanager.drop(this, event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
188
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
189 //if a drop comes from outside (a sortable)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
190 if(this.dropped) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
191 dropped = this.dropped;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
192 this.dropped = false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
193 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
194
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
195 //if the original element is removed, don't bother to continue if helper is set to "original"
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
196 if((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original")
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
197 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
198
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
199 if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
200 var self = this;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
201 $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
202 if(self._trigger("stop", event) !== false) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
203 self._clear();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
204 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
205 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
206 } else {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
207 if(this._trigger("stop", event) !== false) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
208 this._clear();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
209 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
210 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
211
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
212 return false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
213 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
214
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
215 cancel: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
216
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
217 if(this.helper.is(".ui-draggable-dragging")) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
218 this._mouseUp({});
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
219 } else {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
220 this._clear();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
221 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
222
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
223 return this;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
224
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
225 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
226
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
227 _getHandle: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
228
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
229 var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
230 $(this.options.handle, this.element)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
231 .find("*")
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
232 .andSelf()
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
233 .each(function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
234 if(this == event.target) handle = true;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
235 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
236
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
237 return handle;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
238
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
239 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
240
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
241 _createHelper: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
242
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
243 var o = this.options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
244 var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
245
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
246 if(!helper.parents('body').length)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
247 helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
248
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
249 if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
250 helper.css("position", "absolute");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
251
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
252 return helper;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
253
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
254 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
255
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
256 _adjustOffsetFromHelper: function(obj) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
257 if (typeof obj == 'string') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
258 obj = obj.split(' ');
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
259 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
260 if ($.isArray(obj)) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
261 obj = {left: +obj[0], top: +obj[1] || 0};
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
262 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
263 if ('left' in obj) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
264 this.offset.click.left = obj.left + this.margins.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
265 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
266 if ('right' in obj) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
267 this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
268 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
269 if ('top' in obj) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
270 this.offset.click.top = obj.top + this.margins.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
271 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
272 if ('bottom' in obj) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
273 this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
274 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
275 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
276
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
277 _getParentOffset: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
278
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
279 //Get the offsetParent and cache its position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
280 this.offsetParent = this.helper.offsetParent();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
281 var po = this.offsetParent.offset();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
282
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
283 // This is a special case where we need to modify a offset calculated on start, since the following happened:
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
284 // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
285 // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
286 // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
287 if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
288 po.left += this.scrollParent.scrollLeft();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
289 po.top += this.scrollParent.scrollTop();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
290 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
291
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
292 if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
293 || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
294 po = { top: 0, left: 0 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
295
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
296 return {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
297 top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
298 left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
299 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
300
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
301 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
302
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
303 _getRelativeOffset: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
304
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
305 if(this.cssPosition == "relative") {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
306 var p = this.element.position();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
307 return {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
308 top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
309 left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft()
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
310 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
311 } else {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
312 return { top: 0, left: 0 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
313 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
314
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
315 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
316
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
317 _cacheMargins: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
318 this.margins = {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
319 left: (parseInt(this.element.css("marginLeft"),10) || 0),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
320 top: (parseInt(this.element.css("marginTop"),10) || 0)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
321 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
322 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
323
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
324 _cacheHelperProportions: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
325 this.helperProportions = {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
326 width: this.helper.outerWidth(),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
327 height: this.helper.outerHeight()
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
328 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
329 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
330
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
331 _setContainment: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
332
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
333 var o = this.options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
334 if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
335 if(o.containment == 'document' || o.containment == 'window') this.containment = [
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
336 (o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
337 (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
338 (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
339 (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
340 ];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
341
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
342 if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
343 var ce = $(o.containment)[0]; if(!ce) return;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
344 var co = $(o.containment).offset();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
345 var over = ($(ce).css("overflow") != 'hidden');
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
346
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
347 this.containment = [
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
348 co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
349 co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
350 co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
351 co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
352 ];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
353 } else if(o.containment.constructor == Array) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
354 this.containment = o.containment;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
355 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
356
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
357 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
358
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
359 _convertPositionTo: function(d, pos) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
360
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
361 if(!pos) pos = this.position;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
362 var mod = d == "absolute" ? 1 : -1;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
363 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
364
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
365 return {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
366 top: (
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
367 pos.top // The absolute mouse position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
368 + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
369 + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
370 - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
371 ),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
372 left: (
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
373 pos.left // The absolute mouse position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
374 + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
375 + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
376 - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
377 )
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
378 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
379
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
380 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
381
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
382 _generatePosition: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
383
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
384 var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
385 var pageX = event.pageX;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
386 var pageY = event.pageY;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
387
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
388 /*
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
389 * - Position constraining -
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
390 * Constrain the position to a mix of grid, containment.
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
391 */
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
392
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
393 if(this.originalPosition) { //If we are not dragging yet, we won't check for options
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
394
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
395 if(this.containment) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
396 if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
397 if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
398 if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
399 if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
400 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
401
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
402 if(o.grid) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
403 var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
404 pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
405
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
406 var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
407 pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
408 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
409
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
410 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
411
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
412 return {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
413 top: (
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
414 pageY // The absolute mouse position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
415 - this.offset.click.top // Click offset (relative to the element)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
416 - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
417 - this.offset.parent.top // The offsetParent's offset without borders (offset + border)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
418 + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
419 ),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
420 left: (
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
421 pageX // The absolute mouse position
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
422 - this.offset.click.left // Click offset (relative to the element)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
423 - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
424 - this.offset.parent.left // The offsetParent's offset without borders (offset + border)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
425 + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
426 )
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
427 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
428
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
429 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
430
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
431 _clear: function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
432 this.helper.removeClass("ui-draggable-dragging");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
433 if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
434 //if($.ui.ddmanager) $.ui.ddmanager.current = null;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
435 this.helper = null;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
436 this.cancelHelperRemoval = false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
437 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
438
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
439 // From now on bulk stuff - mainly helpers
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
440
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
441 _trigger: function(type, event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
442 ui = ui || this._uiHash();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
443 $.ui.plugin.call(this, type, [event, ui]);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
444 if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
445 return $.Widget.prototype._trigger.call(this, type, event, ui);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
446 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
447
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
448 plugins: {},
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
449
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
450 _uiHash: function(event) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
451 return {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
452 helper: this.helper,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
453 position: this.position,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
454 originalPosition: this.originalPosition,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
455 offset: this.positionAbs
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
456 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
457 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
458
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
459 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
460
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
461 $.extend($.ui.draggable, {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
462 version: "1.8.9"
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
463 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
464
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
465 $.ui.plugin.add("draggable", "connectToSortable", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
466 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
467
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
468 var inst = $(this).data("draggable"), o = inst.options,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
469 uiSortable = $.extend({}, ui, { item: inst.element });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
470 inst.sortables = [];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
471 $(o.connectToSortable).each(function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
472 var sortable = $.data(this, 'sortable');
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
473 if (sortable && !sortable.options.disabled) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
474 inst.sortables.push({
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
475 instance: sortable,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
476 shouldRevert: sortable.options.revert
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
477 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
478 sortable._refreshItems(); //Do a one-time refresh at start to refresh the containerCache
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
479 sortable._trigger("activate", event, uiSortable);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
480 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
481 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
482
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
483 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
484 stop: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
485
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
486 //If we are still over the sortable, we fake the stop event of the sortable, but also remove helper
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
487 var inst = $(this).data("draggable"),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
488 uiSortable = $.extend({}, ui, { item: inst.element });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
489
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
490 $.each(inst.sortables, function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
491 if(this.instance.isOver) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
492
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
493 this.instance.isOver = 0;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
494
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
495 inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
496 this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
497
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
498 //The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
499 if(this.shouldRevert) this.instance.options.revert = true;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
500
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
501 //Trigger the stop of the sortable
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
502 this.instance._mouseStop(event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
503
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
504 this.instance.options.helper = this.instance.options._helper;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
505
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
506 //If the helper has been the original item, restore properties in the sortable
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
507 if(inst.options.helper == 'original')
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
508 this.instance.currentItem.css({ top: 'auto', left: 'auto' });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
509
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
510 } else {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
511 this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
512 this.instance._trigger("deactivate", event, uiSortable);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
513 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
514
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
515 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
516
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
517 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
518 drag: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
519
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
520 var inst = $(this).data("draggable"), self = this;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
521
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
522 var checkPos = function(o) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
523 var dyClick = this.offset.click.top, dxClick = this.offset.click.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
524 var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
525 var itemHeight = o.height, itemWidth = o.width;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
526 var itemTop = o.top, itemLeft = o.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
527
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
528 return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
529 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
530
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
531 $.each(inst.sortables, function(i) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
532
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
533 //Copy over some variables to allow calling the sortable's native _intersectsWith
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
534 this.instance.positionAbs = inst.positionAbs;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
535 this.instance.helperProportions = inst.helperProportions;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
536 this.instance.offset.click = inst.offset.click;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
537
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
538 if(this.instance._intersectsWith(this.instance.containerCache)) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
539
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
540 //If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
541 if(!this.instance.isOver) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
542
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
543 this.instance.isOver = 1;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
544 //Now we fake the start of dragging for the sortable instance,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
545 //by cloning the list group item, appending it to the sortable and using it as inst.currentItem
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
546 //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
547 this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
548 this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
549 this.instance.options.helper = function() { return ui.helper[0]; };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
550
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
551 event.target = this.instance.currentItem[0];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
552 this.instance._mouseCapture(event, true);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
553 this.instance._mouseStart(event, true, true);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
554
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
555 //Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
556 this.instance.offset.click.top = inst.offset.click.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
557 this.instance.offset.click.left = inst.offset.click.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
558 this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
559 this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
560
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
561 inst._trigger("toSortable", event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
562 inst.dropped = this.instance.element; //draggable revert needs that
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
563 //hack so receive/update callbacks work (mostly)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
564 inst.currentItem = inst.element;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
565 this.instance.fromOutside = inst;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
566
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
567 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
568
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
569 //Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
570 if(this.instance.currentItem) this.instance._mouseDrag(event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
571
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
572 } else {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
573
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
574 //If it doesn't intersect with the sortable, and it intersected before,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
575 //we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
576 if(this.instance.isOver) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
577
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
578 this.instance.isOver = 0;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
579 this.instance.cancelHelperRemoval = true;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
580
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
581 //Prevent reverting on this forced stop
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
582 this.instance.options.revert = false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
583
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
584 // The out event needs to be triggered independently
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
585 this.instance._trigger('out', event, this.instance._uiHash(this.instance));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
586
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
587 this.instance._mouseStop(event, true);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
588 this.instance.options.helper = this.instance.options._helper;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
589
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
590 //Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
591 this.instance.currentItem.remove();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
592 if(this.instance.placeholder) this.instance.placeholder.remove();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
593
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
594 inst._trigger("fromSortable", event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
595 inst.dropped = false; //draggable revert needs that
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
596 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
597
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
598 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
599
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
600 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
601
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
602 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
603 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
604
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
605 $.ui.plugin.add("draggable", "cursor", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
606 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
607 var t = $('body'), o = $(this).data('draggable').options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
608 if (t.css("cursor")) o._cursor = t.css("cursor");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
609 t.css("cursor", o.cursor);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
610 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
611 stop: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
612 var o = $(this).data('draggable').options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
613 if (o._cursor) $('body').css("cursor", o._cursor);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
614 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
615 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
616
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
617 $.ui.plugin.add("draggable", "iframeFix", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
618 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
619 var o = $(this).data('draggable').options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
620 $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
621 $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
622 .css({
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
623 width: this.offsetWidth+"px", height: this.offsetHeight+"px",
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
624 position: "absolute", opacity: "0.001", zIndex: 1000
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
625 })
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
626 .css($(this).offset())
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
627 .appendTo("body");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
628 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
629 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
630 stop: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
631 $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
632 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
633 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
634
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
635 $.ui.plugin.add("draggable", "opacity", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
636 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
637 var t = $(ui.helper), o = $(this).data('draggable').options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
638 if(t.css("opacity")) o._opacity = t.css("opacity");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
639 t.css('opacity', o.opacity);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
640 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
641 stop: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
642 var o = $(this).data('draggable').options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
643 if(o._opacity) $(ui.helper).css('opacity', o._opacity);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
644 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
645 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
646
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
647 $.ui.plugin.add("draggable", "scroll", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
648 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
649 var i = $(this).data("draggable");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
650 if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
651 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
652 drag: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
653
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
654 var i = $(this).data("draggable"), o = i.options, scrolled = false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
655
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
656 if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
657
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
658 if(!o.axis || o.axis != 'x') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
659 if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
660 i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
661 else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
662 i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
663 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
664
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
665 if(!o.axis || o.axis != 'y') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
666 if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
667 i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
668 else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
669 i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
670 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
671
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
672 } else {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
673
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
674 if(!o.axis || o.axis != 'x') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
675 if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
676 scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
677 else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
678 scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
679 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
680
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
681 if(!o.axis || o.axis != 'y') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
682 if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
683 scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
684 else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
685 scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
686 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
687
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
688 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
689
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
690 if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
691 $.ui.ddmanager.prepareOffsets(i, event);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
692
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
693 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
694 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
695
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
696 $.ui.plugin.add("draggable", "snap", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
697 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
698
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
699 var i = $(this).data("draggable"), o = i.options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
700 i.snapElements = [];
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
701
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
702 $(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
703 var $t = $(this); var $o = $t.offset();
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
704 if(this != i.element[0]) i.snapElements.push({
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
705 item: this,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
706 width: $t.outerWidth(), height: $t.outerHeight(),
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
707 top: $o.top, left: $o.left
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
708 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
709 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
710
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
711 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
712 drag: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
713
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
714 var inst = $(this).data("draggable"), o = inst.options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
715 var d = o.snapTolerance;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
716
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
717 var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
718 y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
719
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
720 for (var i = inst.snapElements.length - 1; i >= 0; i--){
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
721
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
722 var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
723 t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
724
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
725 //Yes, I know, this is insane ;)
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
726 if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
727 if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
728 inst.snapElements[i].snapping = false;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
729 continue;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
730 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
731
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
732 if(o.snapMode != 'inner') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
733 var ts = Math.abs(t - y2) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
734 var bs = Math.abs(b - y1) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
735 var ls = Math.abs(l - x2) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
736 var rs = Math.abs(r - x1) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
737 if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
738 if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
739 if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
740 if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
741 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
742
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
743 var first = (ts || bs || ls || rs);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
744
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
745 if(o.snapMode != 'outer') {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
746 var ts = Math.abs(t - y1) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
747 var bs = Math.abs(b - y2) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
748 var ls = Math.abs(l - x1) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
749 var rs = Math.abs(r - x2) <= d;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
750 if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
751 if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
752 if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
753 if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
754 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
755
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
756 if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
757 (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
758 inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
759
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
760 };
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
761
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
762 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
763 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
764
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
765 $.ui.plugin.add("draggable", "stack", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
766 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
767
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
768 var o = $(this).data("draggable").options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
769
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
770 var group = $.makeArray($(o.stack)).sort(function(a,b) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
771 return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
772 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
773 if (!group.length) { return; }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
774
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
775 var min = parseInt(group[0].style.zIndex) || 0;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
776 $(group).each(function(i) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
777 this.style.zIndex = min + i;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
778 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
779
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
780 this[0].style.zIndex = min + group.length;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
781
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
782 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
783 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
784
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
785 $.ui.plugin.add("draggable", "zIndex", {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
786 start: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
787 var t = $(ui.helper), o = $(this).data("draggable").options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
788 if(t.css("zIndex")) o._zIndex = t.css("zIndex");
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
789 t.css('zIndex', o.zIndex);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
790 },
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
791 stop: function(event, ui) {
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
792 var o = $(this).data("draggable").options;
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
793 if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
794 }
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
795 });
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
796
ccf67eaf97ee added jQuery ui and svg javascripts
hertzhaft
parents:
diff changeset
797 })(jQuery);