annotate client/digitallibrary/jquery/ui/jquery.ui.draggable.js @ 749:4b492b7900fb jquery

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