1 | /** |
---|
2 | * file build from : |
---|
3 | * |
---|
4 | * # Interface Elements for jQuery |
---|
5 | * http://interface.eyecon.ro |
---|
6 | * Copyright (c) 2006 Stefan Petre |
---|
7 | * Dual licensed under the MIT (MIT-LICENSE.txt) |
---|
8 | * and GPL (GPL-LICENSE.txt) licenses. |
---|
9 | * - iUtil |
---|
10 | * - iDrag |
---|
11 | * - iDrop |
---|
12 | * - iSort |
---|
13 | * |
---|
14 | * # Nested Sortable Plugin for jQuery/Interface Version 1.0.1 |
---|
15 | * http://code.google.com/p/nestedsortables/ |
---|
16 | * Copyright (c) 2007 Bernardo de Padua dos Santos |
---|
17 | * Dual licensed under the MIT (MIT-LICENSE.txt) |
---|
18 | * and GPL (GPL-LICENSE.txt) licenses. |
---|
19 | * |
---|
20 | * Files unpacked with JSBeautifier |
---|
21 | * http://jsbeautifier.org/ |
---|
22 | * |
---|
23 | */ |
---|
24 | |
---|
25 | |
---|
26 | jQuery.iDrag = { |
---|
27 | helper: null, |
---|
28 | dragged: null, |
---|
29 | destroy: function () { |
---|
30 | return this.each(function () { |
---|
31 | if (this.isDraggable) { |
---|
32 | this.dragCfg.dhe.unbind('mousedown', jQuery.iDrag.draginit); |
---|
33 | this.dragCfg = null; |
---|
34 | this.isDraggable = false; |
---|
35 | if (jQuery.browser.msie) { |
---|
36 | this.unselectable = "off" |
---|
37 | } else { |
---|
38 | this.style.MozUserSelect = ''; |
---|
39 | this.style.KhtmlUserSelect = ''; |
---|
40 | this.style.userSelect = '' |
---|
41 | } |
---|
42 | } |
---|
43 | }) |
---|
44 | }, |
---|
45 | draginit: function (e) { |
---|
46 | if (jQuery.iDrag.dragged != null) { |
---|
47 | jQuery.iDrag.dragstop(e); |
---|
48 | return false |
---|
49 | } |
---|
50 | var elm = this.dragElem; |
---|
51 | jQuery(document).bind('mousemove', jQuery.iDrag.dragmove).bind('mouseup', jQuery.iDrag.dragstop); |
---|
52 | elm.dragCfg.pointer = jQuery.iUtil.getPointer(e); |
---|
53 | elm.dragCfg.currentPointer = elm.dragCfg.pointer; |
---|
54 | elm.dragCfg.init = false; |
---|
55 | elm.dragCfg.fromHandler = this != this.dragElem; |
---|
56 | jQuery.iDrag.dragged = elm; |
---|
57 | if (elm.dragCfg.si && this != this.dragElem) { |
---|
58 | parentPos = jQuery.iUtil.getPosition(elm.parentNode); |
---|
59 | sliderSize = jQuery.iUtil.getSize(elm); |
---|
60 | sliderPos = { |
---|
61 | x: parseInt(jQuery.css(elm, 'left')) || 0, |
---|
62 | y: parseInt(jQuery.css(elm, 'top')) || 0 |
---|
63 | }; |
---|
64 | dx = elm.dragCfg.currentPointer.x - parentPos.x - sliderSize.wb / 2 - sliderPos.x; |
---|
65 | dy = elm.dragCfg.currentPointer.y - parentPos.y - sliderSize.hb / 2 - sliderPos.y; |
---|
66 | jQuery.iSlider.dragmoveBy(elm, [dx, dy]) |
---|
67 | } |
---|
68 | return jQuery.selectKeyHelper || false |
---|
69 | }, |
---|
70 | dragstart: function (e) { |
---|
71 | var elm = jQuery.iDrag.dragged; |
---|
72 | elm.dragCfg.init = true; |
---|
73 | var dEs = elm.style; |
---|
74 | elm.dragCfg.oD = jQuery.css(elm, 'display'); |
---|
75 | elm.dragCfg.oP = jQuery.css(elm, 'position'); |
---|
76 | if (!elm.dragCfg.initialPosition) elm.dragCfg.initialPosition = elm.dragCfg.oP; |
---|
77 | elm.dragCfg.oR = { |
---|
78 | x: parseInt(jQuery.css(elm, 'left')) || 0, |
---|
79 | y: parseInt(jQuery.css(elm, 'top')) || 0 |
---|
80 | }; |
---|
81 | elm.dragCfg.diffX = 0; |
---|
82 | elm.dragCfg.diffY = 0; |
---|
83 | if (jQuery.browser.msie) { |
---|
84 | var oldBorder = jQuery.iUtil.getBorder(elm, true); |
---|
85 | elm.dragCfg.diffX = oldBorder.l || 0; |
---|
86 | elm.dragCfg.diffY = oldBorder.t || 0 |
---|
87 | } |
---|
88 | elm.dragCfg.oC = jQuery.extend(jQuery.iUtil.getPosition(elm), jQuery.iUtil.getSize(elm)); |
---|
89 | if (elm.dragCfg.oP != 'relative' && elm.dragCfg.oP != 'absolute') { |
---|
90 | dEs.position = 'relative' |
---|
91 | } |
---|
92 | jQuery.iDrag.helper.empty(); |
---|
93 | var clonedEl = elm.cloneNode(true); |
---|
94 | jQuery(clonedEl).css({ |
---|
95 | display: 'block', |
---|
96 | left: '0px', |
---|
97 | top: '0px' |
---|
98 | }); |
---|
99 | clonedEl.style.marginTop = '0'; |
---|
100 | clonedEl.style.marginRight = '0'; |
---|
101 | clonedEl.style.marginBottom = '0'; |
---|
102 | clonedEl.style.marginLeft = '0'; |
---|
103 | jQuery.iDrag.helper.append(clonedEl); |
---|
104 | var dhs = jQuery.iDrag.helper.get(0).style; |
---|
105 | if (elm.dragCfg.autoSize) { |
---|
106 | dhs.width = 'auto'; |
---|
107 | dhs.height = 'auto' |
---|
108 | } else { |
---|
109 | dhs.height = elm.dragCfg.oC.hb + 'px'; |
---|
110 | dhs.width = elm.dragCfg.oC.wb + 'px' |
---|
111 | } |
---|
112 | dhs.display = 'block'; |
---|
113 | dhs.marginTop = '0px'; |
---|
114 | dhs.marginRight = '0px'; |
---|
115 | dhs.marginBottom = '0px'; |
---|
116 | dhs.marginLeft = '0px'; |
---|
117 | jQuery.extend(elm.dragCfg.oC, jQuery.iUtil.getSize(clonedEl)); |
---|
118 | if (elm.dragCfg.cursorAt) { |
---|
119 | if (elm.dragCfg.cursorAt.left) { |
---|
120 | elm.dragCfg.oR.x += elm.dragCfg.pointer.x - elm.dragCfg.oC.x - elm.dragCfg.cursorAt.left; |
---|
121 | elm.dragCfg.oC.x = elm.dragCfg.pointer.x - elm.dragCfg.cursorAt.left |
---|
122 | } |
---|
123 | if (elm.dragCfg.cursorAt.top) { |
---|
124 | elm.dragCfg.oR.y += elm.dragCfg.pointer.y - elm.dragCfg.oC.y - elm.dragCfg.cursorAt.top; |
---|
125 | elm.dragCfg.oC.y = elm.dragCfg.pointer.y - elm.dragCfg.cursorAt.top |
---|
126 | } |
---|
127 | if (elm.dragCfg.cursorAt.right) { |
---|
128 | elm.dragCfg.oR.x += elm.dragCfg.pointer.x - elm.dragCfg.oC.x - elm.dragCfg.oC.hb + elm.dragCfg.cursorAt.right; |
---|
129 | elm.dragCfg.oC.x = elm.dragCfg.pointer.x - elm.dragCfg.oC.wb + elm.dragCfg.cursorAt.right |
---|
130 | } |
---|
131 | if (elm.dragCfg.cursorAt.bottom) { |
---|
132 | elm.dragCfg.oR.y += elm.dragCfg.pointer.y - elm.dragCfg.oC.y - elm.dragCfg.oC.hb + elm.dragCfg.cursorAt.bottom; |
---|
133 | elm.dragCfg.oC.y = elm.dragCfg.pointer.y - elm.dragCfg.oC.hb + elm.dragCfg.cursorAt.bottom |
---|
134 | } |
---|
135 | } |
---|
136 | elm.dragCfg.nx = elm.dragCfg.oR.x; |
---|
137 | elm.dragCfg.ny = elm.dragCfg.oR.y; |
---|
138 | if (elm.dragCfg.insideParent || elm.dragCfg.containment == 'parent') { |
---|
139 | parentBorders = jQuery.iUtil.getBorder(elm.parentNode, true); |
---|
140 | elm.dragCfg.oC.x = elm.offsetLeft + (jQuery.browser.msie ? 0 : jQuery.browser.opera ? -parentBorders.l : parentBorders.l); |
---|
141 | elm.dragCfg.oC.y = elm.offsetTop + (jQuery.browser.msie ? 0 : jQuery.browser.opera ? -parentBorders.t : parentBorders.t); |
---|
142 | jQuery(elm.parentNode).append(jQuery.iDrag.helper.get(0)) |
---|
143 | } |
---|
144 | if (elm.dragCfg.containment) { |
---|
145 | jQuery.iDrag.getContainment(elm); |
---|
146 | elm.dragCfg.onDragModifier.containment = jQuery.iDrag.fitToContainer |
---|
147 | } |
---|
148 | if (elm.dragCfg.si) { |
---|
149 | jQuery.iSlider.modifyContainer(elm) |
---|
150 | } |
---|
151 | dhs.left = elm.dragCfg.oC.x - elm.dragCfg.diffX + 'px'; |
---|
152 | dhs.top = elm.dragCfg.oC.y - elm.dragCfg.diffY + 'px'; |
---|
153 | dhs.width = elm.dragCfg.oC.wb + 'px'; |
---|
154 | dhs.height = elm.dragCfg.oC.hb + 'px'; |
---|
155 | jQuery.iDrag.dragged.dragCfg.prot = false; |
---|
156 | if (elm.dragCfg.gx) { |
---|
157 | elm.dragCfg.onDragModifier.grid = jQuery.iDrag.snapToGrid |
---|
158 | } |
---|
159 | if (elm.dragCfg.zIndex != false) { |
---|
160 | jQuery.iDrag.helper.css('zIndex', elm.dragCfg.zIndex) |
---|
161 | } |
---|
162 | if (elm.dragCfg.opacity) { |
---|
163 | jQuery.iDrag.helper.css('opacity', elm.dragCfg.opacity); |
---|
164 | if (window.ActiveXObject) { |
---|
165 | jQuery.iDrag.helper.css('filter', 'alpha(opacity=' + elm.dragCfg.opacity * 100 + ')') |
---|
166 | } |
---|
167 | } |
---|
168 | if (elm.dragCfg.frameClass) { |
---|
169 | jQuery.iDrag.helper.addClass(elm.dragCfg.frameClass); |
---|
170 | jQuery.iDrag.helper.get(0).firstChild.style.display = 'none' |
---|
171 | } |
---|
172 | if (elm.dragCfg.onStart) elm.dragCfg.onStart.apply(elm, [clonedEl, elm.dragCfg.oR.x, elm.dragCfg.oR.y]); |
---|
173 | if (jQuery.iDrop && jQuery.iDrop.count > 0) { |
---|
174 | jQuery.iDrop.highlight(elm) |
---|
175 | } |
---|
176 | if (elm.dragCfg.ghosting == false) { |
---|
177 | dEs.display = 'none' |
---|
178 | } |
---|
179 | return false |
---|
180 | }, |
---|
181 | getContainment: function (elm) { |
---|
182 | if (elm.dragCfg.containment.constructor == String) { |
---|
183 | if (elm.dragCfg.containment == 'parent') { |
---|
184 | elm.dragCfg.cont = jQuery.extend({ |
---|
185 | x: 0, |
---|
186 | y: 0 |
---|
187 | }, jQuery.iUtil.getSize(elm.parentNode)); |
---|
188 | var contBorders = jQuery.iUtil.getBorder(elm.parentNode, true); |
---|
189 | elm.dragCfg.cont.w = elm.dragCfg.cont.wb - contBorders.l - contBorders.r; |
---|
190 | elm.dragCfg.cont.h = elm.dragCfg.cont.hb - contBorders.t - contBorders.b |
---|
191 | } else if (elm.dragCfg.containment == 'document') { |
---|
192 | var clnt = jQuery.iUtil.getClient(); |
---|
193 | elm.dragCfg.cont = { |
---|
194 | x: 0, |
---|
195 | y: 0, |
---|
196 | w: clnt.w, |
---|
197 | h: clnt.h |
---|
198 | } |
---|
199 | } |
---|
200 | } else if (elm.dragCfg.containment.constructor == Array) { |
---|
201 | elm.dragCfg.cont = { |
---|
202 | x: parseInt(elm.dragCfg.containment[0]) || 0, |
---|
203 | y: parseInt(elm.dragCfg.containment[1]) || 0, |
---|
204 | w: parseInt(elm.dragCfg.containment[2]) || 0, |
---|
205 | h: parseInt(elm.dragCfg.containment[3]) || 0 |
---|
206 | } |
---|
207 | } |
---|
208 | elm.dragCfg.cont.dx = elm.dragCfg.cont.x - elm.dragCfg.oC.x; |
---|
209 | elm.dragCfg.cont.dy = elm.dragCfg.cont.y - elm.dragCfg.oC.y |
---|
210 | }, |
---|
211 | hidehelper: function (dragged) { |
---|
212 | if (dragged.dragCfg.insideParent || dragged.dragCfg.containment == 'parent') { |
---|
213 | jQuery('body', document).append(jQuery.iDrag.helper.get(0)) |
---|
214 | } |
---|
215 | jQuery.iDrag.helper.empty().hide().css('opacity', 1); |
---|
216 | if (window.ActiveXObject) { |
---|
217 | jQuery.iDrag.helper.css('filter', 'alpha(opacity=100)') |
---|
218 | } |
---|
219 | }, |
---|
220 | dragstop: function (e) { |
---|
221 | jQuery(document).unbind('mousemove', jQuery.iDrag.dragmove).unbind('mouseup', jQuery.iDrag.dragstop); |
---|
222 | if (jQuery.iDrag.dragged == null) { |
---|
223 | return |
---|
224 | } |
---|
225 | var dragged = jQuery.iDrag.dragged; |
---|
226 | jQuery.iDrag.dragged = null; |
---|
227 | if (dragged.dragCfg.init == false) { |
---|
228 | return false |
---|
229 | } |
---|
230 | if (dragged.dragCfg.so == true) { |
---|
231 | jQuery(dragged).css('position', dragged.dragCfg.oP) |
---|
232 | } |
---|
233 | var dEs = dragged.style; |
---|
234 | if (dragged.si) { |
---|
235 | jQuery.iDrag.helper.css('cursor', 'move') |
---|
236 | } |
---|
237 | if (dragged.dragCfg.frameClass) { |
---|
238 | jQuery.iDrag.helper.removeClass(dragged.dragCfg.frameClass) |
---|
239 | } |
---|
240 | if (dragged.dragCfg.revert == false) { |
---|
241 | if (dragged.dragCfg.fx > 0) { |
---|
242 | if (!dragged.dragCfg.axis || dragged.dragCfg.axis == 'horizontally') { |
---|
243 | var x = new jQuery.fx(dragged, { |
---|
244 | duration: dragged.dragCfg.fx |
---|
245 | }, 'left'); |
---|
246 | x.custom(dragged.dragCfg.oR.x, dragged.dragCfg.nRx) |
---|
247 | } |
---|
248 | if (!dragged.dragCfg.axis || dragged.dragCfg.axis == 'vertically') { |
---|
249 | var y = new jQuery.fx(dragged, { |
---|
250 | duration: dragged.dragCfg.fx |
---|
251 | }, 'top'); |
---|
252 | y.custom(dragged.dragCfg.oR.y, dragged.dragCfg.nRy) |
---|
253 | } |
---|
254 | } else { |
---|
255 | if (!dragged.dragCfg.axis || dragged.dragCfg.axis == 'horizontally') dragged.style.left = dragged.dragCfg.nRx + 'px'; |
---|
256 | if (!dragged.dragCfg.axis || dragged.dragCfg.axis == 'vertically') dragged.style.top = dragged.dragCfg.nRy + 'px' |
---|
257 | } |
---|
258 | jQuery.iDrag.hidehelper(dragged); |
---|
259 | if (dragged.dragCfg.ghosting == false) { |
---|
260 | jQuery(dragged).css('display', dragged.dragCfg.oD) |
---|
261 | } |
---|
262 | } else if (dragged.dragCfg.fx > 0) { |
---|
263 | dragged.dragCfg.prot = true; |
---|
264 | var dh = false; |
---|
265 | if (jQuery.iDrop && jQuery.iSort && dragged.dragCfg.so) { |
---|
266 | dh = jQuery.iUtil.getPosition(jQuery.iSort.helper.get(0)) |
---|
267 | } |
---|
268 | jQuery.iDrag.helper.animate({ |
---|
269 | left: dh ? dh.x : dragged.dragCfg.oC.x, |
---|
270 | top: dh ? dh.y : dragged.dragCfg.oC.y |
---|
271 | }, dragged.dragCfg.fx, function () { |
---|
272 | dragged.dragCfg.prot = false; |
---|
273 | if (dragged.dragCfg.ghosting == false) { |
---|
274 | dragged.style.display = dragged.dragCfg.oD |
---|
275 | } |
---|
276 | jQuery.iDrag.hidehelper(dragged) |
---|
277 | }) |
---|
278 | } else { |
---|
279 | jQuery.iDrag.hidehelper(dragged); |
---|
280 | if (dragged.dragCfg.ghosting == false) { |
---|
281 | jQuery(dragged).css('display', dragged.dragCfg.oD) |
---|
282 | } |
---|
283 | } |
---|
284 | if (jQuery.iDrop && jQuery.iDrop.count > 0) { |
---|
285 | jQuery.iDrop.checkdrop(dragged) |
---|
286 | } |
---|
287 | if (jQuery.iSort && dragged.dragCfg.so) { |
---|
288 | jQuery.iSort.check(dragged) |
---|
289 | } |
---|
290 | if (dragged.dragCfg.onChange && (dragged.dragCfg.nRx != dragged.dragCfg.oR.x || dragged.dragCfg.nRy != dragged.dragCfg.oR.y)) { |
---|
291 | dragged.dragCfg.onChange.apply(dragged, dragged.dragCfg.lastSi || [0, 0, dragged.dragCfg.nRx, dragged.dragCfg.nRy]) |
---|
292 | } |
---|
293 | if (dragged.dragCfg.onStop) dragged.dragCfg.onStop.apply(dragged); |
---|
294 | return false |
---|
295 | }, |
---|
296 | snapToGrid: function (x, y, dx, dy) { |
---|
297 | if (dx != 0) dx = parseInt((dx + (this.dragCfg.gx * dx / Math.abs(dx)) / 2) / this.dragCfg.gx) * this.dragCfg.gx; |
---|
298 | if (dy != 0) dy = parseInt((dy + (this.dragCfg.gy * dy / Math.abs(dy)) / 2) / this.dragCfg.gy) * this.dragCfg.gy; |
---|
299 | return { |
---|
300 | dx: dx, |
---|
301 | dy: dy, |
---|
302 | x: 0, |
---|
303 | y: 0 |
---|
304 | } |
---|
305 | }, |
---|
306 | fitToContainer: function (x, y, dx, dy) { |
---|
307 | dx = Math.min(Math.max(dx, this.dragCfg.cont.dx), this.dragCfg.cont.w + this.dragCfg.cont.dx - this.dragCfg.oC.wb); |
---|
308 | dy = Math.min(Math.max(dy, this.dragCfg.cont.dy), this.dragCfg.cont.h + this.dragCfg.cont.dy - this.dragCfg.oC.hb); |
---|
309 | return { |
---|
310 | dx: dx, |
---|
311 | dy: dy, |
---|
312 | x: 0, |
---|
313 | y: 0 |
---|
314 | } |
---|
315 | }, |
---|
316 | dragmove: function (e) { |
---|
317 | if (jQuery.iDrag.dragged == null || jQuery.iDrag.dragged.dragCfg.prot == true) { |
---|
318 | return |
---|
319 | } |
---|
320 | var dragged = jQuery.iDrag.dragged; |
---|
321 | dragged.dragCfg.currentPointer = jQuery.iUtil.getPointer(e); |
---|
322 | if (dragged.dragCfg.init == false) { |
---|
323 | distance = Math.sqrt(Math.pow(dragged.dragCfg.pointer.x - dragged.dragCfg.currentPointer.x, 2) + Math.pow(dragged.dragCfg.pointer.y - dragged.dragCfg.currentPointer.y, 2)); |
---|
324 | if (distance < dragged.dragCfg.snapDistance) { |
---|
325 | return |
---|
326 | } else { |
---|
327 | jQuery.iDrag.dragstart(e) |
---|
328 | } |
---|
329 | } |
---|
330 | var dx = dragged.dragCfg.currentPointer.x - dragged.dragCfg.pointer.x; |
---|
331 | var dy = dragged.dragCfg.currentPointer.y - dragged.dragCfg.pointer.y; |
---|
332 | for (var i in dragged.dragCfg.onDragModifier) { |
---|
333 | var newCoords = dragged.dragCfg.onDragModifier[i].apply(dragged, [dragged.dragCfg.oR.x + dx, dragged.dragCfg.oR.y + dy, dx, dy]); |
---|
334 | if (newCoords && newCoords.constructor == Object) { |
---|
335 | dx = i != 'user' ? newCoords.dx : (newCoords.x - dragged.dragCfg.oR.x); |
---|
336 | dy = i != 'user' ? newCoords.dy : (newCoords.y - dragged.dragCfg.oR.y) |
---|
337 | } |
---|
338 | } |
---|
339 | dragged.dragCfg.nx = dragged.dragCfg.oC.x + dx - dragged.dragCfg.diffX; |
---|
340 | dragged.dragCfg.ny = dragged.dragCfg.oC.y + dy - dragged.dragCfg.diffY; |
---|
341 | if (dragged.dragCfg.si && (dragged.dragCfg.onSlide || dragged.dragCfg.onChange)) { |
---|
342 | jQuery.iSlider.onSlide(dragged, dragged.dragCfg.nx, dragged.dragCfg.ny) |
---|
343 | } |
---|
344 | if (dragged.dragCfg.onDrag) dragged.dragCfg.onDrag.apply(dragged, [dragged.dragCfg.oR.x + dx, dragged.dragCfg.oR.y + dy]); |
---|
345 | if (!dragged.dragCfg.axis || dragged.dragCfg.axis == 'horizontally') { |
---|
346 | dragged.dragCfg.nRx = dragged.dragCfg.oR.x + dx; |
---|
347 | jQuery.iDrag.helper.get(0).style.left = dragged.dragCfg.nx + 'px' |
---|
348 | } |
---|
349 | if (!dragged.dragCfg.axis || dragged.dragCfg.axis == 'vertically') { |
---|
350 | dragged.dragCfg.nRy = dragged.dragCfg.oR.y + dy; |
---|
351 | jQuery.iDrag.helper.get(0).style.top = dragged.dragCfg.ny + 'px' |
---|
352 | } |
---|
353 | if (jQuery.iDrop && jQuery.iDrop.count > 0) { |
---|
354 | jQuery.iDrop.checkhover(dragged) |
---|
355 | } |
---|
356 | return false |
---|
357 | }, |
---|
358 | build: function (o) { |
---|
359 | if (!jQuery.iDrag.helper) { |
---|
360 | jQuery('body', document).append('<div id="dragHelper"></div>'); |
---|
361 | jQuery.iDrag.helper = jQuery('#dragHelper'); |
---|
362 | var el = jQuery.iDrag.helper.get(0); |
---|
363 | var els = el.style; |
---|
364 | els.position = 'absolute'; |
---|
365 | els.display = 'none'; |
---|
366 | els.cursor = 'move'; |
---|
367 | els.listStyle = 'none'; |
---|
368 | els.overflow = 'hidden'; |
---|
369 | if (window.ActiveXObject) { |
---|
370 | el.unselectable = "on" |
---|
371 | } else { |
---|
372 | els.mozUserSelect = 'none'; |
---|
373 | els.userSelect = 'none'; |
---|
374 | els.KhtmlUserSelect = 'none' |
---|
375 | } |
---|
376 | } |
---|
377 | if (!o) { |
---|
378 | o = {} |
---|
379 | } |
---|
380 | return this.each(function () { |
---|
381 | if (this.isDraggable || !jQuery.iUtil) return; |
---|
382 | if (window.ActiveXObject) { |
---|
383 | this.onselectstart = function () { |
---|
384 | return false |
---|
385 | }; |
---|
386 | this.ondragstart = function () { |
---|
387 | return false |
---|
388 | } |
---|
389 | } |
---|
390 | var el = this; |
---|
391 | var dhe = o.handle ? jQuery(this).find(o.handle) : jQuery(this); |
---|
392 | if (jQuery.browser.msie) { |
---|
393 | dhe.each(function () { |
---|
394 | this.unselectable = "on" |
---|
395 | }) |
---|
396 | } else { |
---|
397 | dhe.css('-moz-user-select', 'none'); |
---|
398 | dhe.css('user-select', 'none'); |
---|
399 | dhe.css('-khtml-user-select', 'none') |
---|
400 | } |
---|
401 | this.dragCfg = { |
---|
402 | dhe: dhe, |
---|
403 | revert: o.revert ? true : false, |
---|
404 | ghosting: o.ghosting ? true : false, |
---|
405 | so: o.so ? o.so : false, |
---|
406 | si: o.si ? o.si : false, |
---|
407 | insideParent: o.insideParent ? o.insideParent : false, |
---|
408 | zIndex: o.zIndex ? parseInt(o.zIndex) || 0 : false, |
---|
409 | opacity: o.opacity ? parseFloat(o.opacity) : false, |
---|
410 | fx: parseInt(o.fx) || null, |
---|
411 | hpc: o.hpc ? o.hpc : false, |
---|
412 | onDragModifier: {}, |
---|
413 | pointer: {}, |
---|
414 | onStart: o.onStart && o.onStart.constructor == Function ? o.onStart : false, |
---|
415 | onStop: o.onStop && o.onStop.constructor == Function ? o.onStop : false, |
---|
416 | onChange: o.onChange && o.onChange.constructor == Function ? o.onChange : false, |
---|
417 | axis: /vertically|horizontally/.test(o.axis) ? o.axis : false, |
---|
418 | snapDistance: o.snapDistance ? parseInt(o.snapDistance) || 0 : 0, |
---|
419 | cursorAt: o.cursorAt ? o.cursorAt : false, |
---|
420 | autoSize: o.autoSize ? true : false, |
---|
421 | frameClass: o.frameClass || false |
---|
422 | }; |
---|
423 | if (o.onDragModifier && o.onDragModifier.constructor == Function) this.dragCfg.onDragModifier.user = o.onDragModifier; |
---|
424 | if (o.onDrag && o.onDrag.constructor == Function) this.dragCfg.onDrag = o.onDrag; |
---|
425 | if (o.containment && ((o.containment.constructor == String && (o.containment == 'parent' || o.containment == 'document')) || (o.containment.constructor == Array && o.containment.length == 4))) { |
---|
426 | this.dragCfg.containment = o.containment |
---|
427 | } |
---|
428 | if (o.fractions) { |
---|
429 | this.dragCfg.fractions = o.fractions |
---|
430 | } |
---|
431 | if (o.grid) { |
---|
432 | if (typeof o.grid == 'number') { |
---|
433 | this.dragCfg.gx = parseInt(o.grid) || 1; |
---|
434 | this.dragCfg.gy = parseInt(o.grid) || 1 |
---|
435 | } else if (o.grid.length == 2) { |
---|
436 | this.dragCfg.gx = parseInt(o.grid[0]) || 1; |
---|
437 | this.dragCfg.gy = parseInt(o.grid[1]) || 1 |
---|
438 | } |
---|
439 | } |
---|
440 | if (o.onSlide && o.onSlide.constructor == Function) { |
---|
441 | this.dragCfg.onSlide = o.onSlide |
---|
442 | } |
---|
443 | this.isDraggable = true; |
---|
444 | dhe.each(function () { |
---|
445 | this.dragElem = el |
---|
446 | }); |
---|
447 | dhe.bind('mousedown', jQuery.iDrag.draginit) |
---|
448 | }) |
---|
449 | } |
---|
450 | }; |
---|
451 | jQuery.fn.extend({ |
---|
452 | DraggableDestroy: jQuery.iDrag.destroy, |
---|
453 | Draggable: jQuery.iDrag.build |
---|
454 | }); |
---|
455 | jQuery.iDrop = { |
---|
456 | fit: function (zonex, zoney, zonew, zoneh) { |
---|
457 | return zonex <= jQuery.iDrag.dragged.dragCfg.nx && (zonex + zonew) >= (jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.w) && zoney <= jQuery.iDrag.dragged.dragCfg.ny && (zoney + zoneh) >= (jQuery.iDrag.dragged.dragCfg.ny + jQuery.iDrag.dragged.dragCfg.oC.h) ? true : false |
---|
458 | }, |
---|
459 | intersect: function (zonex, zoney, zonew, zoneh) { |
---|
460 | return !(zonex > (jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.w) || (zonex + zonew) < jQuery.iDrag.dragged.dragCfg.nx || zoney > (jQuery.iDrag.dragged.dragCfg.ny + jQuery.iDrag.dragged.dragCfg.oC.h) || (zoney + zoneh) < jQuery.iDrag.dragged.dragCfg.ny) ? true : false |
---|
461 | }, |
---|
462 | pointer: function (zonex, zoney, zonew, zoneh) { |
---|
463 | return zonex < jQuery.iDrag.dragged.dragCfg.currentPointer.x && (zonex + zonew) > jQuery.iDrag.dragged.dragCfg.currentPointer.x && zoney < jQuery.iDrag.dragged.dragCfg.currentPointer.y && (zoney + zoneh) > jQuery.iDrag.dragged.dragCfg.currentPointer.y ? true : false |
---|
464 | }, |
---|
465 | overzone: false, |
---|
466 | highlighted: {}, |
---|
467 | count: 0, |
---|
468 | zones: {}, |
---|
469 | highlight: function (elm) { |
---|
470 | if (jQuery.iDrag.dragged == null) { |
---|
471 | return |
---|
472 | } |
---|
473 | var i; |
---|
474 | jQuery.iDrop.highlighted = {}; |
---|
475 | var oneIsSortable = false; |
---|
476 | for (i in jQuery.iDrop.zones) { |
---|
477 | if (jQuery.iDrop.zones[i] != null) { |
---|
478 | var iEL = jQuery.iDrop.zones[i].get(0); |
---|
479 | if (jQuery(jQuery.iDrag.dragged).is('.' + iEL.dropCfg.a)) { |
---|
480 | if (iEL.dropCfg.m == false) { |
---|
481 | iEL.dropCfg.p = jQuery.extend(jQuery.iUtil.getPositionLite(iEL), jQuery.iUtil.getSizeLite(iEL)); |
---|
482 | iEL.dropCfg.m = true |
---|
483 | } |
---|
484 | if (iEL.dropCfg.ac) { |
---|
485 | jQuery.iDrop.zones[i].addClass(iEL.dropCfg.ac) |
---|
486 | } |
---|
487 | jQuery.iDrop.highlighted[i] = jQuery.iDrop.zones[i]; |
---|
488 | if (jQuery.iSort && iEL.dropCfg.s && jQuery.iDrag.dragged.dragCfg.so) { |
---|
489 | iEL.dropCfg.el = jQuery('.' + iEL.dropCfg.a, iEL); |
---|
490 | elm.style.display = 'none'; |
---|
491 | jQuery.iSort.measure(iEL); |
---|
492 | iEL.dropCfg.os = jQuery.iSort.serialize(jQuery.attr(iEL, 'id')).hash; |
---|
493 | elm.style.display = elm.dragCfg.oD; |
---|
494 | oneIsSortable = true |
---|
495 | } |
---|
496 | if (iEL.dropCfg.onActivate) { |
---|
497 | iEL.dropCfg.onActivate.apply(jQuery.iDrop.zones[i].get(0), [jQuery.iDrag.dragged]) |
---|
498 | } |
---|
499 | } |
---|
500 | } |
---|
501 | } |
---|
502 | if (oneIsSortable) { |
---|
503 | jQuery.iSort.start() |
---|
504 | } |
---|
505 | }, |
---|
506 | remeasure: function () { |
---|
507 | jQuery.iDrop.highlighted = {}; |
---|
508 | for (i in jQuery.iDrop.zones) { |
---|
509 | if (jQuery.iDrop.zones[i] != null) { |
---|
510 | var iEL = jQuery.iDrop.zones[i].get(0); |
---|
511 | if (jQuery(jQuery.iDrag.dragged).is('.' + iEL.dropCfg.a)) { |
---|
512 | iEL.dropCfg.p = jQuery.extend(jQuery.iUtil.getPositionLite(iEL), jQuery.iUtil.getSizeLite(iEL)); |
---|
513 | if (iEL.dropCfg.ac) { |
---|
514 | jQuery.iDrop.zones[i].addClass(iEL.dropCfg.ac) |
---|
515 | } |
---|
516 | jQuery.iDrop.highlighted[i] = jQuery.iDrop.zones[i]; |
---|
517 | if (jQuery.iSort && iEL.dropCfg.s && jQuery.iDrag.dragged.dragCfg.so) { |
---|
518 | iEL.dropCfg.el = jQuery('.' + iEL.dropCfg.a, iEL); |
---|
519 | elm.style.display = 'none'; |
---|
520 | jQuery.iSort.measure(iEL); |
---|
521 | elm.style.display = elm.dragCfg.oD |
---|
522 | } |
---|
523 | } |
---|
524 | } |
---|
525 | } |
---|
526 | }, |
---|
527 | checkhover: function (e) { |
---|
528 | if (jQuery.iDrag.dragged == null) { |
---|
529 | return |
---|
530 | } |
---|
531 | jQuery.iDrop.overzone = false; |
---|
532 | var i; |
---|
533 | var applyOnHover = false; |
---|
534 | var hlt = 0; |
---|
535 | for (i in jQuery.iDrop.highlighted) { |
---|
536 | var iEL = jQuery.iDrop.highlighted[i].get(0); |
---|
537 | if (jQuery.iDrop.overzone == false && jQuery.iDrop[iEL.dropCfg.t](iEL.dropCfg.p.x, iEL.dropCfg.p.y, iEL.dropCfg.p.wb, iEL.dropCfg.p.hb)) { |
---|
538 | if (iEL.dropCfg.hc && iEL.dropCfg.h == false) { |
---|
539 | jQuery.iDrop.highlighted[i].addClass(iEL.dropCfg.hc) |
---|
540 | } |
---|
541 | if (iEL.dropCfg.h == false && iEL.dropCfg.onHover) { |
---|
542 | applyOnHover = true |
---|
543 | } |
---|
544 | iEL.dropCfg.h = true; |
---|
545 | jQuery.iDrop.overzone = iEL; |
---|
546 | if (jQuery.iSort && iEL.dropCfg.s && jQuery.iDrag.dragged.dragCfg.so) { |
---|
547 | jQuery.iSort.helper.get(0).className = iEL.dropCfg.shc; |
---|
548 | jQuery.iSort.checkhover(iEL) |
---|
549 | } |
---|
550 | hlt++ |
---|
551 | } else if (iEL.dropCfg.h == true) { |
---|
552 | if (iEL.dropCfg.onOut) { |
---|
553 | iEL.dropCfg.onOut.apply(iEL, [e, jQuery.iDrag.helper.get(0).firstChild, iEL.dropCfg.fx]) |
---|
554 | } |
---|
555 | if (iEL.dropCfg.hc) { |
---|
556 | jQuery.iDrop.highlighted[i].removeClass(iEL.dropCfg.hc) |
---|
557 | } |
---|
558 | iEL.dropCfg.h = false |
---|
559 | } |
---|
560 | } |
---|
561 | if (jQuery.iSort && !jQuery.iDrop.overzone && jQuery.iDrag.dragged.so) { |
---|
562 | jQuery.iSort.helper.get(0).style.display = 'none' |
---|
563 | } |
---|
564 | if (applyOnHover) { |
---|
565 | jQuery.iDrop.overzone.dropCfg.onHover.apply(jQuery.iDrop.overzone, [e, jQuery.iDrag.helper.get(0).firstChild]) |
---|
566 | } |
---|
567 | }, |
---|
568 | checkdrop: function (e) { |
---|
569 | var i; |
---|
570 | for (i in jQuery.iDrop.highlighted) { |
---|
571 | var iEL = jQuery.iDrop.highlighted[i].get(0); |
---|
572 | if (iEL.dropCfg.ac) { |
---|
573 | jQuery.iDrop.highlighted[i].removeClass(iEL.dropCfg.ac) |
---|
574 | } |
---|
575 | if (iEL.dropCfg.hc) { |
---|
576 | jQuery.iDrop.highlighted[i].removeClass(iEL.dropCfg.hc) |
---|
577 | } |
---|
578 | if (iEL.dropCfg.s) { |
---|
579 | jQuery.iSort.changed[jQuery.iSort.changed.length] = i |
---|
580 | } |
---|
581 | if (iEL.dropCfg.onDrop && iEL.dropCfg.h == true) { |
---|
582 | iEL.dropCfg.h = false; |
---|
583 | iEL.dropCfg.onDrop.apply(iEL, [e, iEL.dropCfg.fx]) |
---|
584 | } |
---|
585 | iEL.dropCfg.m = false; |
---|
586 | iEL.dropCfg.h = false |
---|
587 | } |
---|
588 | jQuery.iDrop.highlighted = {} |
---|
589 | }, |
---|
590 | destroy: function () { |
---|
591 | return this.each(function () { |
---|
592 | if (this.isDroppable) { |
---|
593 | if (this.dropCfg.s) { |
---|
594 | id = jQuery.attr(this, 'id'); |
---|
595 | jQuery.iSort.collected[id] = null; |
---|
596 | jQuery('.' + this.dropCfg.a, this).DraggableDestroy() |
---|
597 | } |
---|
598 | jQuery.iDrop.zones['d' + this.idsa] = null; |
---|
599 | this.isDroppable = false; |
---|
600 | this.f = null |
---|
601 | } |
---|
602 | }) |
---|
603 | }, |
---|
604 | build: function (o) { |
---|
605 | return this.each(function () { |
---|
606 | if (this.isDroppable == true || !o.accept || !jQuery.iUtil || !jQuery.iDrag) { |
---|
607 | return |
---|
608 | } |
---|
609 | this.dropCfg = { |
---|
610 | a: o.accept, |
---|
611 | ac: o.activeclass || false, |
---|
612 | hc: o.hoverclass || false, |
---|
613 | shc: o.helperclass || false, |
---|
614 | onDrop: o.ondrop || o.onDrop || false, |
---|
615 | onHover: o.onHover || o.onhover || false, |
---|
616 | onOut: o.onOut || o.onout || false, |
---|
617 | onActivate: o.onActivate || false, |
---|
618 | t: o.tolerance && (o.tolerance == 'fit' || o.tolerance == 'intersect') ? o.tolerance : 'pointer', |
---|
619 | fx: o.fx ? o.fx : false, |
---|
620 | m: false, |
---|
621 | h: false |
---|
622 | }; |
---|
623 | if (o.sortable == true && jQuery.iSort) { |
---|
624 | id = jQuery.attr(this, 'id'); |
---|
625 | jQuery.iSort.collected[id] = this.dropCfg.a; |
---|
626 | this.dropCfg.s = true; |
---|
627 | if (o.onChange) { |
---|
628 | this.dropCfg.onChange = o.onChange; |
---|
629 | this.dropCfg.os = jQuery.iSort.serialize(id).hash |
---|
630 | } |
---|
631 | } |
---|
632 | this.isDroppable = true; |
---|
633 | this.idsa = parseInt(Math.random() * 10000); |
---|
634 | jQuery.iDrop.zones['d' + this.idsa] = jQuery(this); |
---|
635 | jQuery.iDrop.count++ |
---|
636 | }) |
---|
637 | } |
---|
638 | }; |
---|
639 | jQuery.fn.extend({ |
---|
640 | DroppableDestroy: jQuery.iDrop.destroy, |
---|
641 | Droppable: jQuery.iDrop.build |
---|
642 | }); |
---|
643 | jQuery.recallDroppables = jQuery.iDrop.remeasure; |
---|
644 | |
---|
645 | jQuery.iSort = { |
---|
646 | changed: [], |
---|
647 | collected: {}, |
---|
648 | helper: false, |
---|
649 | inFrontOf: null, |
---|
650 | start: function () { |
---|
651 | if (jQuery.iDrag.dragged == null) { |
---|
652 | return |
---|
653 | } |
---|
654 | var shs, margins, c, cs; |
---|
655 | jQuery.iSort.helper.get(0).className = jQuery.iDrag.dragged.dragCfg.hpc; |
---|
656 | shs = jQuery.iSort.helper.get(0).style; |
---|
657 | shs.display = 'block'; |
---|
658 | jQuery.iSort.helper.oC = jQuery.extend(jQuery.iUtil.getPosition(jQuery.iSort.helper.get(0)), jQuery.iUtil.getSize(jQuery.iSort.helper.get(0))); |
---|
659 | shs.width = jQuery.iDrag.dragged.dragCfg.oC.wb + 'px'; |
---|
660 | shs.height = jQuery.iDrag.dragged.dragCfg.oC.hb + 'px'; |
---|
661 | margins = jQuery.iUtil.getMargins(jQuery.iDrag.dragged); |
---|
662 | shs.marginTop = margins.t; |
---|
663 | shs.marginRight = margins.r; |
---|
664 | shs.marginBottom = margins.b; |
---|
665 | shs.marginLeft = margins.l; |
---|
666 | if (jQuery.iDrag.dragged.dragCfg.ghosting == true) { |
---|
667 | c = jQuery.iDrag.dragged.cloneNode(true); |
---|
668 | cs = c.style; |
---|
669 | cs.marginTop = '0px'; |
---|
670 | cs.marginRight = '0px'; |
---|
671 | cs.marginBottom = '0px'; |
---|
672 | cs.marginLeft = '0px'; |
---|
673 | cs.display = 'block'; |
---|
674 | jQuery.iSort.helper.empty().append(c) |
---|
675 | } |
---|
676 | jQuery(jQuery.iDrag.dragged).after(jQuery.iSort.helper.get(0)); |
---|
677 | jQuery.iDrag.dragged.style.display = 'none' |
---|
678 | }, |
---|
679 | check: function (e) { |
---|
680 | if (!e.dragCfg.so && jQuery.iDrop.overzone.sortable) { |
---|
681 | if (e.dragCfg.onStop) e.dragCfg.onStop.apply(dragged); |
---|
682 | jQuery(e).css('position', e.dragCfg.initialPosition || e.dragCfg.oP); |
---|
683 | jQuery(e).DraggableDestroy(); |
---|
684 | jQuery(jQuery.iDrop.overzone).SortableAddItem(e) |
---|
685 | } |
---|
686 | jQuery.iSort.helper.removeClass(e.dragCfg.hpc).html(' '); |
---|
687 | jQuery.iSort.inFrontOf = null; |
---|
688 | var shs = jQuery.iSort.helper.get(0).style; |
---|
689 | shs.display = 'none'; |
---|
690 | jQuery.iSort.helper.after(e); |
---|
691 | if (e.dragCfg.fx > 0) { |
---|
692 | jQuery(e).fadeIn(e.dragCfg.fx) |
---|
693 | } |
---|
694 | jQuery('body').append(jQuery.iSort.helper.get(0)); |
---|
695 | var ts = []; |
---|
696 | var fnc = false; |
---|
697 | for (var i = 0; i < jQuery.iSort.changed.length; i++) { |
---|
698 | var iEL = jQuery.iDrop.zones[jQuery.iSort.changed[i]].get(0); |
---|
699 | var id = jQuery.attr(iEL, 'id'); |
---|
700 | var ser = jQuery.iSort.serialize(id); |
---|
701 | if (iEL.dropCfg.os != ser.hash) { |
---|
702 | iEL.dropCfg.os = ser.hash; |
---|
703 | if (fnc == false && iEL.dropCfg.onChange) { |
---|
704 | fnc = iEL.dropCfg.onChange |
---|
705 | } |
---|
706 | ser.id = id; |
---|
707 | ts[ts.length] = ser |
---|
708 | } |
---|
709 | } |
---|
710 | jQuery.iSort.changed = []; |
---|
711 | if (fnc != false && ts.length > 0) { |
---|
712 | fnc(ts) |
---|
713 | } |
---|
714 | }, |
---|
715 | checkhover: function (e, o) { |
---|
716 | if (!jQuery.iDrag.dragged) return; |
---|
717 | var cur = false; |
---|
718 | var i = 0; |
---|
719 | if (e.dropCfg.el.size() > 0) { |
---|
720 | for (i = e.dropCfg.el.size(); i > 0; i--) { |
---|
721 | if (e.dropCfg.el.get(i - 1) != jQuery.iDrag.dragged) { |
---|
722 | if (!e.sortCfg.floats) { |
---|
723 | if ((e.dropCfg.el.get(i - 1).pos.y + e.dropCfg.el.get(i - 1).pos.hb / 2) > jQuery.iDrag.dragged.dragCfg.ny) { |
---|
724 | cur = e.dropCfg.el.get(i - 1) |
---|
725 | } else { |
---|
726 | break |
---|
727 | } |
---|
728 | } else { |
---|
729 | if ((e.dropCfg.el.get(i - 1).pos.x + e.dropCfg.el.get(i - 1).pos.wb / 2) > jQuery.iDrag.dragged.dragCfg.nx && (e.dropCfg.el.get(i - 1).pos.y + e.dropCfg.el.get(i - 1).pos.hb / 2) > jQuery.iDrag.dragged.dragCfg.ny) { |
---|
730 | cur = e.dropCfg.el.get(i - 1) |
---|
731 | } |
---|
732 | } |
---|
733 | } |
---|
734 | } |
---|
735 | } |
---|
736 | if (cur && jQuery.iSort.inFrontOf != cur) { |
---|
737 | jQuery.iSort.inFrontOf = cur; |
---|
738 | jQuery(cur).before(jQuery.iSort.helper.get(0)) |
---|
739 | } else if (!cur && (jQuery.iSort.inFrontOf != null || jQuery.iSort.helper.get(0).parentNode != e)) { |
---|
740 | jQuery.iSort.inFrontOf = null; |
---|
741 | jQuery(e).append(jQuery.iSort.helper.get(0)) |
---|
742 | } |
---|
743 | jQuery.iSort.helper.get(0).style.display = 'block' |
---|
744 | }, |
---|
745 | measure: function (e) { |
---|
746 | if (jQuery.iDrag.dragged == null) { |
---|
747 | return |
---|
748 | } |
---|
749 | e.dropCfg.el.each(function () { |
---|
750 | this.pos = jQuery.extend(jQuery.iUtil.getSizeLite(this), jQuery.iUtil.getPositionLite(this)) |
---|
751 | }) |
---|
752 | }, |
---|
753 | serialize: function (s) { |
---|
754 | var i; |
---|
755 | var h = ''; |
---|
756 | var o = {}; |
---|
757 | if (s) { |
---|
758 | if (jQuery.iSort.collected[s]) { |
---|
759 | o[s] = []; |
---|
760 | jQuery('#' + s + ' .' + jQuery.iSort.collected[s]).each(function () { |
---|
761 | if (h.length > 0) { |
---|
762 | h += '&' |
---|
763 | } |
---|
764 | h += s + '[]=' + jQuery.attr(this, 'id'); |
---|
765 | o[s][o[s].length] = jQuery.attr(this, 'id') |
---|
766 | }) |
---|
767 | } else { |
---|
768 | for (a in s) { |
---|
769 | if (jQuery.iSort.collected[s[a]]) { |
---|
770 | o[s[a]] = []; |
---|
771 | jQuery('#' + s[a] + ' .' + jQuery.iSort.collected[s[a]]).each(function () { |
---|
772 | if (h.length > 0) { |
---|
773 | h += '&' |
---|
774 | } |
---|
775 | h += s[a] + '[]=' + jQuery.attr(this, 'id'); |
---|
776 | o[s[a]][o[s[a]].length] = jQuery.attr(this, 'id') |
---|
777 | }) |
---|
778 | } |
---|
779 | } |
---|
780 | } |
---|
781 | } else { |
---|
782 | for (i in jQuery.iSort.collected) { |
---|
783 | o[i] = []; |
---|
784 | jQuery('#' + i + ' .' + jQuery.iSort.collected[i]).each(function () { |
---|
785 | if (h.length > 0) { |
---|
786 | h += '&' |
---|
787 | } |
---|
788 | h += i + '[]=' + jQuery.attr(this, 'id'); |
---|
789 | o[i][o[i].length] = jQuery.attr(this, 'id') |
---|
790 | }) |
---|
791 | } |
---|
792 | } |
---|
793 | return { |
---|
794 | hash: h, |
---|
795 | o: o |
---|
796 | } |
---|
797 | }, |
---|
798 | addItem: function (e) { |
---|
799 | if (!e.childNodes) { |
---|
800 | return |
---|
801 | } |
---|
802 | return this.each(function () { |
---|
803 | if (!this.sortCfg || !jQuery(e).is('.' + this.sortCfg.accept)) jQuery(e).addClass(this.sortCfg.accept); |
---|
804 | jQuery(e).Draggable(this.sortCfg.dragCfg) |
---|
805 | }) |
---|
806 | }, |
---|
807 | destroy: function () { |
---|
808 | return this.each(function () { |
---|
809 | jQuery('.' + this.sortCfg.accept).DraggableDestroy(); |
---|
810 | jQuery(this).DroppableDestroy(); |
---|
811 | this.sortCfg = null; |
---|
812 | this.isSortable = null |
---|
813 | }) |
---|
814 | }, |
---|
815 | build: function (o) { |
---|
816 | if (o.accept && jQuery.iUtil && jQuery.iDrag && jQuery.iDrop) { |
---|
817 | if (!jQuery.iSort.helper) { |
---|
818 | jQuery('body', document).append('<div id="sortHelper"> </div>'); |
---|
819 | jQuery.iSort.helper = jQuery('#sortHelper'); |
---|
820 | jQuery.iSort.helper.get(0).style.display = 'none' |
---|
821 | } |
---|
822 | this.Droppable({ |
---|
823 | accept: o.accept, |
---|
824 | activeclass: o.activeclass ? o.activeclass : false, |
---|
825 | hoverclass: o.hoverclass ? o.hoverclass : false, |
---|
826 | helperclass: o.helperclass ? o.helperclass : false, |
---|
827 | onHover: o.onHover || o.onhover, |
---|
828 | onOut: o.onOut || o.onout, |
---|
829 | sortable: true, |
---|
830 | onChange: o.onChange || o.onchange, |
---|
831 | fx: o.fx ? o.fx : false, |
---|
832 | ghosting: o.ghosting ? true : false, |
---|
833 | tolerance: o.tolerance ? o.tolerance : 'intersect' |
---|
834 | }); |
---|
835 | return this.each(function () { |
---|
836 | var dragCfg = { |
---|
837 | revert: o.revert ? true : false, |
---|
838 | zindex: 3000, |
---|
839 | opacity: o.opacity ? parseFloat(o.opacity) : false, |
---|
840 | hpc: o.helperclass ? o.helperclass : false, |
---|
841 | fx: o.fx ? o.fx : false, |
---|
842 | so: true, |
---|
843 | ghosting: o.ghosting ? true : false, |
---|
844 | handle: o.handle ? o.handle : null, |
---|
845 | containment: o.containment ? o.containment : null, |
---|
846 | onStart: o.onStart && o.onStart.constructor == Function ? o.onStart : false, |
---|
847 | onDrag: o.onDrag && o.onDrag.constructor == Function ? o.onDrag : false, |
---|
848 | onStop: o.onStop && o.onStop.constructor == Function ? o.onStop : false, |
---|
849 | axis: /vertically|horizontally/.test(o.axis) ? o.axis : false, |
---|
850 | snapDistance: o.snapDistance ? parseInt(o.snapDistance) || 0 : false, |
---|
851 | cursorAt: o.cursorAt ? o.cursorAt : false |
---|
852 | }; |
---|
853 | jQuery('.' + o.accept, this).Draggable(dragCfg); |
---|
854 | this.isSortable = true; |
---|
855 | this.sortCfg = { |
---|
856 | accept: o.accept, |
---|
857 | revert: o.revert ? true : false, |
---|
858 | zindex: 3000, |
---|
859 | opacity: o.opacity ? parseFloat(o.opacity) : false, |
---|
860 | hpc: o.helperclass ? o.helperclass : false, |
---|
861 | fx: o.fx ? o.fx : false, |
---|
862 | so: true, |
---|
863 | ghosting: o.ghosting ? true : false, |
---|
864 | handle: o.handle ? o.handle : null, |
---|
865 | containment: o.containment ? o.containment : null, |
---|
866 | floats: o.floats ? true : false, |
---|
867 | dragCfg: dragCfg |
---|
868 | } |
---|
869 | }) |
---|
870 | } |
---|
871 | } |
---|
872 | }; |
---|
873 | jQuery.fn.extend({ |
---|
874 | Sortable: jQuery.iSort.build, |
---|
875 | SortableAddItem: jQuery.iSort.addItem, |
---|
876 | SortableDestroy: jQuery.iSort.destroy |
---|
877 | }); |
---|
878 | jQuery.SortSerialize = jQuery.iSort.serialize; |
---|
879 | |
---|
880 | jQuery.iUtil = { |
---|
881 | getPosition: function (e) { |
---|
882 | var x = 0; |
---|
883 | var y = 0; |
---|
884 | var es = e.style; |
---|
885 | var restoreStyles = false; |
---|
886 | if (jQuery(e).css('display') == 'none') { |
---|
887 | var oldVisibility = es.visibility; |
---|
888 | var oldPosition = es.position; |
---|
889 | restoreStyles = true; |
---|
890 | es.visibility = 'hidden'; |
---|
891 | es.display = 'block'; |
---|
892 | es.position = 'absolute' |
---|
893 | } |
---|
894 | var el = e; |
---|
895 | while (el) { |
---|
896 | x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ? parseInt(el.currentStyle.borderLeftWidth) || 0 : 0); |
---|
897 | y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ? parseInt(el.currentStyle.borderTopWidth) || 0 : 0); |
---|
898 | el = el.offsetParent |
---|
899 | } |
---|
900 | el = e; |
---|
901 | while (el && el.tagName && el.tagName.toLowerCase() != 'body') { |
---|
902 | x -= el.scrollLeft || 0; |
---|
903 | y -= el.scrollTop || 0; |
---|
904 | el = el.parentNode |
---|
905 | } |
---|
906 | if (restoreStyles == true) { |
---|
907 | es.display = 'none'; |
---|
908 | es.position = oldPosition; |
---|
909 | es.visibility = oldVisibility |
---|
910 | } |
---|
911 | return { |
---|
912 | x: x, |
---|
913 | y: y |
---|
914 | } |
---|
915 | }, |
---|
916 | getPositionLite: function (el) { |
---|
917 | var x = 0, |
---|
918 | y = 0; |
---|
919 | while (el) { |
---|
920 | x += el.offsetLeft || 0; |
---|
921 | y += el.offsetTop || 0; |
---|
922 | el = el.offsetParent |
---|
923 | } |
---|
924 | return { |
---|
925 | x: x, |
---|
926 | y: y |
---|
927 | } |
---|
928 | }, |
---|
929 | getSize: function (e) { |
---|
930 | var w = jQuery.css(e, 'width'); |
---|
931 | var h = jQuery.css(e, 'height'); |
---|
932 | var wb = 0; |
---|
933 | var hb = 0; |
---|
934 | var es = e.style; |
---|
935 | if (jQuery(e).css('display') != 'none') { |
---|
936 | wb = e.offsetWidth; |
---|
937 | hb = e.offsetHeight |
---|
938 | } else { |
---|
939 | var oldVisibility = es.visibility; |
---|
940 | var oldPosition = es.position; |
---|
941 | es.visibility = 'hidden'; |
---|
942 | es.display = 'block'; |
---|
943 | es.position = 'absolute'; |
---|
944 | wb = e.offsetWidth; |
---|
945 | hb = e.offsetHeight; |
---|
946 | es.display = 'none'; |
---|
947 | es.position = oldPosition; |
---|
948 | es.visibility = oldVisibility |
---|
949 | } |
---|
950 | return { |
---|
951 | w: w, |
---|
952 | h: h, |
---|
953 | wb: wb, |
---|
954 | hb: hb |
---|
955 | } |
---|
956 | }, |
---|
957 | getSizeLite: function (el) { |
---|
958 | return { |
---|
959 | wb: el.offsetWidth || 0, |
---|
960 | hb: el.offsetHeight || 0 |
---|
961 | } |
---|
962 | }, |
---|
963 | getClient: function (e) { |
---|
964 | var h, w, de; |
---|
965 | if (e) { |
---|
966 | w = e.clientWidth; |
---|
967 | h = e.clientHeight |
---|
968 | } else { |
---|
969 | de = document.documentElement; |
---|
970 | w = window.innerWidth || self.innerWidth || (de && de.clientWidth) || document.body.clientWidth; |
---|
971 | h = window.innerHeight || self.innerHeight || (de && de.clientHeight) || document.body.clientHeight |
---|
972 | } |
---|
973 | return { |
---|
974 | w: w, |
---|
975 | h: h |
---|
976 | } |
---|
977 | }, |
---|
978 | getScroll: function (e) { |
---|
979 | var t = 0, |
---|
980 | l = 0, |
---|
981 | w = 0, |
---|
982 | h = 0, |
---|
983 | iw = 0, |
---|
984 | ih = 0; |
---|
985 | if (e && e.nodeName.toLowerCase() != 'body') { |
---|
986 | t = e.scrollTop; |
---|
987 | l = e.scrollLeft; |
---|
988 | w = e.scrollWidth; |
---|
989 | h = e.scrollHeight; |
---|
990 | iw = 0; |
---|
991 | ih = 0 |
---|
992 | } else { |
---|
993 | if (document.documentElement) { |
---|
994 | t = document.documentElement.scrollTop; |
---|
995 | l = document.documentElement.scrollLeft; |
---|
996 | w = document.documentElement.scrollWidth; |
---|
997 | h = document.documentElement.scrollHeight |
---|
998 | } else if (document.body) { |
---|
999 | t = document.body.scrollTop; |
---|
1000 | l = document.body.scrollLeft; |
---|
1001 | w = document.body.scrollWidth; |
---|
1002 | h = document.body.scrollHeight |
---|
1003 | } |
---|
1004 | iw = self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0; |
---|
1005 | ih = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0 |
---|
1006 | } |
---|
1007 | return { |
---|
1008 | t: t, |
---|
1009 | l: l, |
---|
1010 | w: w, |
---|
1011 | h: h, |
---|
1012 | iw: iw, |
---|
1013 | ih: ih |
---|
1014 | } |
---|
1015 | }, |
---|
1016 | getMargins: function (e, toInteger) { |
---|
1017 | var el = jQuery(e); |
---|
1018 | var t = el.css('marginTop') || ''; |
---|
1019 | var r = el.css('marginRight') || ''; |
---|
1020 | var b = el.css('marginBottom') || ''; |
---|
1021 | var l = el.css('marginLeft') || ''; |
---|
1022 | if (toInteger) return { |
---|
1023 | t: parseInt(t) || 0, |
---|
1024 | r: parseInt(r) || 0, |
---|
1025 | b: parseInt(b) || 0, |
---|
1026 | l: parseInt(l) |
---|
1027 | }; |
---|
1028 | else return { |
---|
1029 | t: t, |
---|
1030 | r: r, |
---|
1031 | b: b, |
---|
1032 | l: l |
---|
1033 | } |
---|
1034 | }, |
---|
1035 | getPadding: function (e, toInteger) { |
---|
1036 | var el = jQuery(e); |
---|
1037 | var t = el.css('paddingTop') || ''; |
---|
1038 | var r = el.css('paddingRight') || ''; |
---|
1039 | var b = el.css('paddingBottom') || ''; |
---|
1040 | var l = el.css('paddingLeft') || ''; |
---|
1041 | if (toInteger) return { |
---|
1042 | t: parseInt(t) || 0, |
---|
1043 | r: parseInt(r) || 0, |
---|
1044 | b: parseInt(b) || 0, |
---|
1045 | l: parseInt(l) |
---|
1046 | }; |
---|
1047 | else return { |
---|
1048 | t: t, |
---|
1049 | r: r, |
---|
1050 | b: b, |
---|
1051 | l: l |
---|
1052 | } |
---|
1053 | }, |
---|
1054 | getBorder: function (e, toInteger) { |
---|
1055 | var el = jQuery(e); |
---|
1056 | var t = el.css('borderTopWidth') || ''; |
---|
1057 | var r = el.css('borderRightWidth') || ''; |
---|
1058 | var b = el.css('borderBottomWidth') || ''; |
---|
1059 | var l = el.css('borderLeftWidth') || ''; |
---|
1060 | if (toInteger) return { |
---|
1061 | t: parseInt(t) || 0, |
---|
1062 | r: parseInt(r) || 0, |
---|
1063 | b: parseInt(b) || 0, |
---|
1064 | l: parseInt(l) || 0 |
---|
1065 | }; |
---|
1066 | else return { |
---|
1067 | t: t, |
---|
1068 | r: r, |
---|
1069 | b: b, |
---|
1070 | l: l |
---|
1071 | } |
---|
1072 | }, |
---|
1073 | getPointer: function (event) { |
---|
1074 | var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0; |
---|
1075 | var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0; |
---|
1076 | return { |
---|
1077 | x: x, |
---|
1078 | y: y |
---|
1079 | } |
---|
1080 | }, |
---|
1081 | traverseDOM: function (nodeEl, func) { |
---|
1082 | func(nodeEl); |
---|
1083 | nodeEl = nodeEl.firstChild; |
---|
1084 | while (nodeEl) { |
---|
1085 | jQuery.iUtil.traverseDOM(nodeEl, func); |
---|
1086 | nodeEl = nodeEl.nextSibling |
---|
1087 | } |
---|
1088 | }, |
---|
1089 | purgeEvents: function (nodeEl) { |
---|
1090 | jQuery.iUtil.traverseDOM(nodeEl, function (el) { |
---|
1091 | for (var attr in el) { |
---|
1092 | if (typeof el[attr] === 'function') { |
---|
1093 | el[attr] = null |
---|
1094 | } |
---|
1095 | } |
---|
1096 | }) |
---|
1097 | }, |
---|
1098 | centerEl: function (el, axis) { |
---|
1099 | var clientScroll = jQuery.iUtil.getScroll(); |
---|
1100 | var windowSize = jQuery.iUtil.getSize(el); |
---|
1101 | if (!axis || axis == 'vertically') jQuery(el).css({ |
---|
1102 | top: clientScroll.t + ((Math.max(clientScroll.h, clientScroll.ih) - clientScroll.t - windowSize.hb) / 2) + 'px' |
---|
1103 | }); |
---|
1104 | if (!axis || axis == 'horizontally') jQuery(el).css({ |
---|
1105 | left: clientScroll.l + ((Math.max(clientScroll.w, clientScroll.iw) - clientScroll.l - windowSize.wb) / 2) + 'px' |
---|
1106 | }) |
---|
1107 | }, |
---|
1108 | fixPNG: function (el, emptyGIF) { |
---|
1109 | var images = jQuery('img[@src*="png"]', el || document), |
---|
1110 | png; |
---|
1111 | images.each(function () { |
---|
1112 | png = this.src; |
---|
1113 | this.src = emptyGIF; |
---|
1114 | this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')" |
---|
1115 | }) |
---|
1116 | } |
---|
1117 | }; |
---|
1118 | [].indexOf || (Array.prototype.indexOf = function (v, n) { |
---|
1119 | n = (n == null) ? 0 : n; |
---|
1120 | var m = this.length; |
---|
1121 | for (var i = n; i < m; i++) if (this[i] == v) return i; |
---|
1122 | return -1 |
---|
1123 | }); |
---|
1124 | |
---|
1125 | jQuery.iNestedSortable = { |
---|
1126 | checkHover: function (e, o) { |
---|
1127 | if (e.isNestedSortable) { |
---|
1128 | jQuery.iNestedSortable.scroll(e); |
---|
1129 | return jQuery.iNestedSortable.newCheckHover(e) |
---|
1130 | } else { |
---|
1131 | return jQuery.iNestedSortable.oldCheckHover(e, o) |
---|
1132 | } |
---|
1133 | }, |
---|
1134 | oldCheckHover: jQuery.iSort.checkhover, |
---|
1135 | newCheckHover: function (e) { |
---|
1136 | if (!jQuery.iDrag.dragged) { |
---|
1137 | return |
---|
1138 | } |
---|
1139 | if (!(e.dropCfg.el.size() > 0)) { |
---|
1140 | return |
---|
1141 | } |
---|
1142 | if (!e.nestedSortCfg.remeasured) { |
---|
1143 | jQuery.iSort.measure(e); |
---|
1144 | e.nestedSortCfg.remeasured = true |
---|
1145 | } |
---|
1146 | var a = jQuery.iNestedSortable.findPrecedingItem(e); |
---|
1147 | var b = jQuery.iNestedSortable.shouldNestItem(e, a); |
---|
1148 | var c = (!a) ? jQuery.iNestedSortable.isTouchingFirstItem(e) : false; |
---|
1149 | var d = false; |
---|
1150 | if (a) { |
---|
1151 | if (e.nestedSortCfg.lastPrecedingItem === a && e.nestedSortCfg.lastShouldNest === b) { |
---|
1152 | d = true |
---|
1153 | } |
---|
1154 | } else if (e.nestedSortCfg.lastPrecedingItem === a && e.nestedSortCfg.lastTouchingFirst === c) { |
---|
1155 | d = true |
---|
1156 | } |
---|
1157 | e.nestedSortCfg.lastPrecedingItem = a; |
---|
1158 | e.nestedSortCfg.lastShouldNest = b; |
---|
1159 | e.nestedSortCfg.lastTouchingFirst = c; |
---|
1160 | if (d) { |
---|
1161 | return |
---|
1162 | } |
---|
1163 | if (a !== null) { |
---|
1164 | if (b) { |
---|
1165 | jQuery.iNestedSortable.nestItem(e, a) |
---|
1166 | } else { |
---|
1167 | jQuery.iNestedSortable.appendItem(e, a) |
---|
1168 | } |
---|
1169 | } else if (c) { |
---|
1170 | jQuery.iNestedSortable.insertOnTop(e) |
---|
1171 | } |
---|
1172 | }, |
---|
1173 | scroll: function (e) { |
---|
1174 | if (!e.nestedSortCfg.autoScroll) { |
---|
1175 | return false |
---|
1176 | } |
---|
1177 | var a = e.nestedSortCfg.scrollSensitivity; |
---|
1178 | var b = e.nestedSortCfg.scrollSpeed; |
---|
1179 | var c = jQuery.iDrag.dragged.dragCfg.currentPointer; |
---|
1180 | var d = jQuery.iUtil.getScroll(); |
---|
1181 | if ((c.y - d.ih) - d.t > -a) { |
---|
1182 | window.scrollBy(0, b) |
---|
1183 | } |
---|
1184 | if (c.y - d.t < a) { |
---|
1185 | window.scrollBy(0, -b) |
---|
1186 | } |
---|
1187 | }, |
---|
1188 | check: function (a) { |
---|
1189 | jQuery.iNestedSortable.newCheck(a); |
---|
1190 | return jQuery.iNestedSortable.oldCheck(a) |
---|
1191 | }, |
---|
1192 | oldCheck: jQuery.iSort.check, |
---|
1193 | newCheck: function (a) { |
---|
1194 | if (jQuery.iNestedSortable.latestNestingClass && jQuery.iNestedSortable.currentNesting) { |
---|
1195 | jQuery.iNestedSortable.currentNesting.removeClass(jQuery.iNestedSortable.latestNestingClass); |
---|
1196 | jQuery.iNestedSortable.currentNesting = null; |
---|
1197 | jQuery.iNestedSortable.latestNestingClass = "" |
---|
1198 | } |
---|
1199 | if (jQuery.iDrop.overzone.isNestedSortable) { |
---|
1200 | jQuery.iDrop.overzone.nestedSortCfg.remeasured = false |
---|
1201 | } |
---|
1202 | }, |
---|
1203 | serialize: function (s) { |
---|
1204 | if (jQuery('#' + s).get(0).isNestedSortable) { |
---|
1205 | return jQuery.iNestedSortable.newSerialize(s) |
---|
1206 | } else { |
---|
1207 | return jQuery.iNestedSortable.oldSerialize(s) |
---|
1208 | } |
---|
1209 | }, |
---|
1210 | oldSerialize: jQuery.iSort.serialize, |
---|
1211 | newSerialize: function (s) { |
---|
1212 | var i; |
---|
1213 | var h = ''; |
---|
1214 | var j = ''; |
---|
1215 | var o = {}; |
---|
1216 | var e; |
---|
1217 | var k = function (f) { |
---|
1218 | var g = []; |
---|
1219 | thisChildren = jQuery(f).children('.' + jQuery.iSort.collected[s]); |
---|
1220 | thisChildren.each(function (i) { |
---|
1221 | var a = jQuery.attr(this, 'id'); |
---|
1222 | if (a && a.match) { |
---|
1223 | a = a.match(e.nestedSortCfg.serializeRegExp)[0] |
---|
1224 | } |
---|
1225 | if (h.length > 0) { |
---|
1226 | h += '&' |
---|
1227 | } |
---|
1228 | h += s + j + '[' + i + '][id]=' + a; |
---|
1229 | g[i] = { |
---|
1230 | id: a |
---|
1231 | }; |
---|
1232 | var b = jQuery(this).children(e.nestedSortCfg.nestingTag + "." + e.nestedSortCfg.nestingTagClass.split(" ").join(".")).get(0); |
---|
1233 | var c = j; |
---|
1234 | j += '[' + i + '][children]'; |
---|
1235 | var d = k(b); |
---|
1236 | if (d.length > 0) { |
---|
1237 | g[i].children = d |
---|
1238 | } |
---|
1239 | j = c |
---|
1240 | }); |
---|
1241 | return g |
---|
1242 | }; |
---|
1243 | if (s) { |
---|
1244 | if (jQuery.iSort.collected[s]) { |
---|
1245 | e = jQuery('#' + s).get(0); |
---|
1246 | o[s] = k(e) |
---|
1247 | } else { |
---|
1248 | for (a in s) { |
---|
1249 | if (jQuery.iSort.collected[s[a]]) { |
---|
1250 | e = jQuery('#' + s[a]).get(0); |
---|
1251 | o[s[a]] = k(e) |
---|
1252 | } |
---|
1253 | } |
---|
1254 | } |
---|
1255 | } else { |
---|
1256 | for (i in jQuery.iSort.collected) { |
---|
1257 | e = jQuery('#' + i).get(0); |
---|
1258 | o[i] = k(e) |
---|
1259 | } |
---|
1260 | } |
---|
1261 | return { |
---|
1262 | hash: h, |
---|
1263 | o: o |
---|
1264 | } |
---|
1265 | }, |
---|
1266 | findPrecedingItem: function (e) { |
---|
1267 | var d = 0; |
---|
1268 | var f = jQuery.grep(e.dropCfg.el, function (i) { |
---|
1269 | var a = (i.pos.y < jQuery.iDrag.dragged.dragCfg.ny) && (i.pos.y > d); |
---|
1270 | if (!a) { |
---|
1271 | return false |
---|
1272 | } |
---|
1273 | var b; |
---|
1274 | if (e.nestedSortCfg.rightToLeft) { |
---|
1275 | b = (i.pos.x + i.pos.wb + e.nestedSortCfg.snapTolerance > jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.wb) |
---|
1276 | } else { |
---|
1277 | b = (i.pos.x - e.nestedSortCfg.snapTolerance < jQuery.iDrag.dragged.dragCfg.nx) |
---|
1278 | } |
---|
1279 | if (!b) { |
---|
1280 | return false |
---|
1281 | } |
---|
1282 | var c = jQuery.iNestedSortable.isBeingDragged(e, i); |
---|
1283 | if (c) { |
---|
1284 | return false |
---|
1285 | } |
---|
1286 | d = i.pos.y; |
---|
1287 | return true |
---|
1288 | }); |
---|
1289 | if (f.length > 0) { |
---|
1290 | return f[(f.length - 1)] |
---|
1291 | } else { |
---|
1292 | return null |
---|
1293 | } |
---|
1294 | }, |
---|
1295 | isTouchingFirstItem: function (e) { |
---|
1296 | var c; |
---|
1297 | var d = jQuery.grep(e.dropCfg.el, function (i) { |
---|
1298 | var a = (c === undefined || i.pos.y < c); |
---|
1299 | if (!a) { |
---|
1300 | return false |
---|
1301 | } |
---|
1302 | var b = jQuery.iNestedSortable.isBeingDragged(e, i); |
---|
1303 | if (b) { |
---|
1304 | return false |
---|
1305 | } |
---|
1306 | c = i.pos.y; |
---|
1307 | return true |
---|
1308 | }); |
---|
1309 | if (d.length > 0) { |
---|
1310 | d = d[(d.length - 1)]; |
---|
1311 | return d.pos.y < jQuery.iDrag.dragged.dragCfg.ny + jQuery.iDrag.dragged.dragCfg.oC.hb && d.pos.y > jQuery.iDrag.dragged.dragCfg.ny |
---|
1312 | } else { |
---|
1313 | return false |
---|
1314 | } |
---|
1315 | }, |
---|
1316 | isBeingDragged: function (e, a) { |
---|
1317 | var b = jQuery.iDrag.dragged; |
---|
1318 | if (!b) { |
---|
1319 | return false |
---|
1320 | } |
---|
1321 | if (a == b) { |
---|
1322 | return true |
---|
1323 | } |
---|
1324 | if (jQuery(a).parents("." + e.sortCfg.accept.split(" ").join(".")).filter(function () { |
---|
1325 | return this == b |
---|
1326 | }).length !== 0) { |
---|
1327 | return true |
---|
1328 | } else { |
---|
1329 | return false |
---|
1330 | } |
---|
1331 | }, |
---|
1332 | shouldNestItem: function (e, a) { |
---|
1333 | if (!a) { |
---|
1334 | return false |
---|
1335 | } |
---|
1336 | if (e.nestedSortCfg.noNestingClass && jQuery(a).filter("." + e.nestedSortCfg.noNestingClass).get(0) === a) { |
---|
1337 | return false |
---|
1338 | } |
---|
1339 | if (e.nestedSortCfg.rightToLeft) { |
---|
1340 | return a.pos.x + a.pos.wb - (e.nestedSortCfg.nestingPxSpace - e.nestedSortCfg.snapTolerance) > jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.wb |
---|
1341 | } else { |
---|
1342 | return a.pos.x + (e.nestedSortCfg.nestingPxSpace - e.nestedSortCfg.snapTolerance) < jQuery.iDrag.dragged.dragCfg.nx |
---|
1343 | } |
---|
1344 | }, |
---|
1345 | nestItem: function (e, a) { |
---|
1346 | var b = jQuery(a).children(e.nestedSortCfg.nestingTag + "." + e.nestedSortCfg.nestingTagClass.split(" ").join(".")); |
---|
1347 | var c = jQuery.iSort.helper; |
---|
1348 | styleHelper = c.get(0).style; |
---|
1349 | styleHelper.width = 'auto'; |
---|
1350 | if (!b.size()) { |
---|
1351 | var d = "<" + e.nestedSortCfg.nestingTag + " class='" + e.nestedSortCfg.nestingTagClass + "'></" + e.nestedSortCfg.nestingTag + ">"; |
---|
1352 | b = jQuery(a).append(d).children(e.nestedSortCfg.nestingTag).css(e.nestedSortCfg.styleToAttach) |
---|
1353 | } |
---|
1354 | jQuery.iNestedSortable.updateCurrentNestingClass(e, b); |
---|
1355 | jQuery.iNestedSortable.beforeHelperRemove(e); |
---|
1356 | b.prepend(c.get(0)); |
---|
1357 | jQuery.iNestedSortable.afterHelperInsert(e) |
---|
1358 | }, |
---|
1359 | appendItem: function (e, a) { |
---|
1360 | jQuery.iNestedSortable.updateCurrentNestingClass(e, jQuery(a).parent()); |
---|
1361 | jQuery.iNestedSortable.beforeHelperRemove(e); |
---|
1362 | jQuery(a).after(jQuery.iSort.helper.get(0)); |
---|
1363 | jQuery.iNestedSortable.afterHelperInsert(e) |
---|
1364 | }, |
---|
1365 | insertOnTop: function (e) { |
---|
1366 | jQuery.iNestedSortable.updateCurrentNestingClass(e, e); |
---|
1367 | jQuery.iNestedSortable.beforeHelperRemove(e); |
---|
1368 | jQuery(e).prepend(jQuery.iSort.helper.get(0)); |
---|
1369 | jQuery.iNestedSortable.afterHelperInsert(e) |
---|
1370 | }, |
---|
1371 | beforeHelperRemove: function (e) { |
---|
1372 | var a = jQuery.iSort.helper.parent(e.nestedSortCfg.nestingTag + "." + e.nestedSortCfg.nestingTagClass.split(" ").join(".")); |
---|
1373 | var b = a.children("." + e.sortCfg.accept.split(" ").join(".") + ":visible").size(); |
---|
1374 | if (b === 0 && a.get(0) !== e) { |
---|
1375 | a.hide() |
---|
1376 | } |
---|
1377 | }, |
---|
1378 | afterHelperInsert: function (e) { |
---|
1379 | var a = jQuery.iSort.helper.parent(); |
---|
1380 | if (a.get(0) !== e) { |
---|
1381 | a.show() |
---|
1382 | } |
---|
1383 | e.nestedSortCfg.remeasured = false |
---|
1384 | }, |
---|
1385 | updateCurrentNestingClass: function (e, a) { |
---|
1386 | var b = jQuery(a); |
---|
1387 | if ((e.nestedSortCfg.currentNestingClass) && (!jQuery.iNestedSortable.currentNesting || b.get(0) != jQuery.iNestedSortable.currentNesting.get(0))) { |
---|
1388 | if (jQuery.iNestedSortable.currentNesting) { |
---|
1389 | jQuery.iNestedSortable.currentNesting.removeClass(e.nestedSortCfg.currentNestingClass) |
---|
1390 | } |
---|
1391 | if (b.get(0) != e) { |
---|
1392 | jQuery.iNestedSortable.currentNesting = b; |
---|
1393 | b.addClass(e.nestedSortCfg.currentNestingClass); |
---|
1394 | jQuery.iNestedSortable.latestNestingClass = e.nestedSortCfg.currentNestingClass |
---|
1395 | } else { |
---|
1396 | jQuery.iNestedSortable.currentNesting = null; |
---|
1397 | jQuery.iNestedSortable.latestNestingClass = "" |
---|
1398 | } |
---|
1399 | } |
---|
1400 | }, |
---|
1401 | destroy: function () { |
---|
1402 | return this.each(function () { |
---|
1403 | if (this.isNestedSortable) { |
---|
1404 | this.nestedSortCfg = null; |
---|
1405 | this.isNestedSortable = null; |
---|
1406 | jQuery(this).SortableDestroy() |
---|
1407 | } |
---|
1408 | }) |
---|
1409 | }, |
---|
1410 | build: function (a) { |
---|
1411 | if (a.accept && jQuery.iUtil && jQuery.iDrag && jQuery.iDrop && jQuery.iSort) { |
---|
1412 | this.each(function () { |
---|
1413 | this.isNestedSortable = true; |
---|
1414 | this.nestedSortCfg = { |
---|
1415 | noNestingClass: a.noNestingClass ? a.noNestingClass : false, |
---|
1416 | rightToLeft: a.rightToLeft ? true : false, |
---|
1417 | nestingPxSpace: parseInt(a.nestingPxSpace, 10) || 30, |
---|
1418 | currentNestingClass: a.currentNestingClass ? a.currentNestingClass : "", |
---|
1419 | nestingLimit: a.nestingLimit ? a.nestingLimit : false, |
---|
1420 | autoScroll: a.autoScroll !== undefined ? a.autoScroll == true : true, |
---|
1421 | scrollSensitivity: a.scrollSensitivity ? a.scrollSensitivity : 20, |
---|
1422 | scrollSpeed: a.scrollSpeed ? a.scrollSpeed : 20, |
---|
1423 | serializeRegExp: a.serializeRegExp ? a.serializeRegExp : /[^\-]*$/ |
---|
1424 | }; |
---|
1425 | this.nestedSortCfg.snapTolerance = parseInt(this.nestedSortCfg.nestingPxSpace * 0.4, 10); |
---|
1426 | this.nestedSortCfg.nestingTag = this.tagName; |
---|
1427 | this.nestedSortCfg.nestingTagClass = this.className; |
---|
1428 | this.nestedSortCfg.styleToAttach = (this.nestedSortCfg.rightToLeft) ? { |
---|
1429 | "padding-left": 0, |
---|
1430 | "padding-right": this.nestedSortCfg.nestingPxSpace + 'px' |
---|
1431 | } : { |
---|
1432 | "padding-left": this.nestedSortCfg.nestingPxSpace + 'px', |
---|
1433 | "padding-right": 0 |
---|
1434 | }; |
---|
1435 | jQuery(this.nestedSortCfg.nestingTag, this).css(this.nestedSortCfg.styleToAttach) |
---|
1436 | }); |
---|
1437 | jQuery.iSort.checkhover = jQuery.iNestedSortable.checkHover; |
---|
1438 | jQuery.iSort.check = jQuery.iNestedSortable.check; |
---|
1439 | jQuery.iSort.serialize = jQuery.iNestedSortable.serialize |
---|
1440 | } |
---|
1441 | return this.Sortable(a) |
---|
1442 | } |
---|
1443 | }; |
---|
1444 | jQuery.fn.extend({ |
---|
1445 | NestedSortable: jQuery.iNestedSortable.build, |
---|
1446 | NestedSortableDestroy: jQuery.iNestedSortable.destroy |
---|
1447 | }); |
---|
1448 | jQuery.iUtil.getScroll = function (e) { |
---|
1449 | var t, l, w, h, iw, ih; |
---|
1450 | if (e && e.nodeName.toLowerCase() != 'body') { |
---|
1451 | t = e.scrollTop; |
---|
1452 | l = e.scrollLeft; |
---|
1453 | w = e.scrollWidth; |
---|
1454 | h = e.scrollHeight; |
---|
1455 | iw = 0; |
---|
1456 | ih = 0 |
---|
1457 | } else { |
---|
1458 | if (document.documentElement && document.documentElement.scrollTop) { |
---|
1459 | t = document.documentElement.scrollTop; |
---|
1460 | l = document.documentElement.scrollLeft; |
---|
1461 | w = document.documentElement.scrollWidth; |
---|
1462 | h = document.documentElement.scrollHeight |
---|
1463 | } else if (document.body) { |
---|
1464 | t = document.body.scrollTop; |
---|
1465 | l = document.body.scrollLeft; |
---|
1466 | w = document.body.scrollWidth; |
---|
1467 | h = document.body.scrollHeight |
---|
1468 | } |
---|
1469 | iw = self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0; |
---|
1470 | ih = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0 |
---|
1471 | } |
---|
1472 | return { |
---|
1473 | t: t, |
---|
1474 | l: l, |
---|
1475 | w: w, |
---|
1476 | h: h, |
---|
1477 | iw: iw, |
---|
1478 | ih: ih |
---|
1479 | } |
---|
1480 | }; |
---|