2 * 'this' -> original element
\r
3 * 1. argument: browser event
\r
4 * 2.argument: ui object
\r
9 $.ui.plugin.add("draggable", "stop", "effect", function(e,ui) {
\r
11 if(ui.options.effect[1]) {
\r
13 ui.options.beQuietAtEnd = true;
\r
14 switch(ui.options.effect[1]) {
\r
16 $(t).fadeOut(300, function() { $(this).remove(); });
\r
26 $.ui.plugin.add("draggable", "start", "effect", function(e,ui) {
\r
27 if(ui.options.effect[0]) {
\r
28 switch(ui.options.effect[0]) {
\r
30 $(ui.helper).hide().fadeIn(300);
\r
36 //----------------------------------------------------------------
\r
38 $.ui.plugin.add("draggable", "start", "cursor", function(e,ui) {
\r
40 if (t.css("cursor")) ui.options.ocursor = t.css("cursor");
\r
41 t.css("cursor", ui.options.cursor);
\r
44 $.ui.plugin.add("draggable", "stop", "cursor", function(e,ui) {
\r
45 if (ui.options.ocursor) $('body').css("cursor", ui.options.ocursor);
\r
48 //----------------------------------------------------------------
\r
50 $.ui.plugin.add("draggable", "start", "zIndex", function(e,ui) {
\r
51 var t = $(ui.helper);
\r
52 if(t.css("zIndex")) ui.options.ozIndex = t.css("zIndex");
\r
53 t.css('zIndex', ui.options.zIndex);
\r
56 $.ui.plugin.add("draggable", "stop", "zIndex", function(e,ui) {
\r
57 if(ui.options.ozIndex) $(ui.helper).css('zIndex', ui.options.ozIndex);
\r
61 //----------------------------------------------------------------
\r
63 $.ui.plugin.add("draggable", "start", "opacity", function(e,ui) {
\r
64 var t = $(ui.helper);
\r
65 if(t.css("opacity")) ui.options.oopacity = t.css("opacity");
\r
66 t.css('opacity', ui.options.opacity);
\r
69 $.ui.plugin.add("draggable", "stop", "opacity", function(e,ui) {
\r
70 if(ui.options.oopacity) $(ui.helper).css('opacity', ui.options.oopacity);
\r
73 //----------------------------------------------------------------
\r
75 $.ui.plugin.add("draggable", "stop", "revert", function(e,ui) {
\r
78 var rpos = { left: 0, top: 0 };
\r
79 o.beQuietAtEnd = true;
\r
81 if(ui.helper != this) {
\r
83 rpos = $(ui.draggable.sorthelper || this).offset({ border: false });
\r
85 var nl = rpos.left-o.po.left-o.margins.left;
\r
86 var nt = rpos.top-o.po.top-o.margins.top;
\r
89 var nl = o.co.left - (o.po ? o.po.left : 0);
\r
90 var nt = o.co.top - (o.po ? o.po.top : 0);
\r
93 var self = ui.draggable;
\r
95 $(ui.helper).animate({
\r
98 }, 500, function() {
\r
100 if(o.wasPositioned) $(self.element).css('position', o.wasPositioned);
\r
101 if(o.stop) o.stop.apply(self.element, [self.helper, self.pos, [o.co.left - o.po.left,o.co.top - o.po.top],self]);
\r
103 if(self.helper != self.element) window.setTimeout(function() { $(self.helper).remove(); }, 0); //Using setTimeout because of strange flickering in Firefox
\r
109 //----------------------------------------------------------------
\r
111 $.ui.plugin.add("draggable", "start", "iframeFix", function(e,ui) {
\r
113 var o = ui.options;
\r
114 if(!ui.draggable.slowMode) { // Make clones on top of iframes (only if we are not in slowMode)
\r
115 if(o.iframeFix.constructor == Array) {
\r
116 for(var i=0;i<o.iframeFix.length;i++) {
\r
117 var co = $(o.iframeFix[i]).offset({ border: false });
\r
118 $("<div class='DragDropIframeFix' style='background: #fff;'></div>").css("width", $(o.iframeFix[i])[0].offsetWidth+"px").css("height", $(o.iframeFix[i])[0].offsetHeight+"px").css("position", "absolute").css("opacity", "0.001").css("z-index", "1000").css("top", co.top+"px").css("left", co.left+"px").appendTo("body");
\r
121 $("iframe").each(function() {
\r
122 var co = $(this).offset({ border: false });
\r
123 $("<div class='DragDropIframeFix' style='background: #fff;'></div>").css("width", this.offsetWidth+"px").css("height", this.offsetHeight+"px").css("position", "absolute").css("opacity", "0.001").css("z-index", "1000").css("top", co.top+"px").css("left", co.left+"px").appendTo("body");
\r
130 $.ui.plugin.add("draggable","stop", "iframeFix", function(e,ui) {
\r
131 if(ui.options.iframeFix) $("div.DragDropIframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers
\r
134 //----------------------------------------------------------------
\r
136 $.ui.plugin.add("draggable", "start", "containment", function(e,ui) {
\r
138 var o = ui.options;
\r
140 if(!o.cursorAtIgnore || o.containment.left != undefined || o.containment.constructor == Array) return;
\r
141 if(o.containment == 'parent') o.containment = this.parentNode;
\r
144 if(o.containment == 'document') {
\r
148 $(document).width()-o.margins.right,
\r
149 ($(document).height() || document.body.parentNode.scrollHeight)-o.margins.bottom
\r
151 } else { //I'm a node, so compute top/left/right/bottom
\r
152 var ce = $(o.containment)[0];
\r
153 var co = $(o.containment).offset({ border: false });
\r
156 co.left-o.margins.left,
\r
157 co.top-o.margins.top,
\r
158 co.left+(ce.offsetWidth || ce.scrollWidth)-o.margins.right,
\r
159 co.top+(ce.offsetHeight || ce.scrollHeight)-o.margins.bottom
\r
165 $.ui.plugin.add("draggable", "drag", "containment", function(e,ui) {
\r
167 var o = ui.options;
\r
168 if(!o.cursorAtIgnore) return;
\r
170 var h = $(ui.helper);
\r
171 var c = o.containment;
\r
172 if(c.constructor == Array) {
\r
174 if((ui.draggable.pos[0] < c[0]-o.po.left)) ui.draggable.pos[0] = c[0]-o.po.left;
\r
175 if((ui.draggable.pos[1] < c[1]-o.po.top)) ui.draggable.pos[1] = c[1]-o.po.top;
\r
176 if(ui.draggable.pos[0]+h[0].offsetWidth > c[2]-o.po.left) ui.draggable.pos[0] = c[2]-o.po.left-h[0].offsetWidth;
\r
177 if(ui.draggable.pos[1]+h[0].offsetHeight > c[3]-o.po.top) ui.draggable.pos[1] = c[3]-o.po.top-h[0].offsetHeight;
\r
181 if(c.left && (ui.draggable.pos[0] < c.left)) ui.draggable.pos[0] = c.left;
\r
182 if(c.top && (ui.draggable.pos[1] < c.top)) ui.draggable.pos[1] = c.top;
\r
185 if(c.right && ui.draggable.pos[0]+h[0].offsetWidth > p[0].offsetWidth-c.right) ui.draggable.pos[0] = (p[0].offsetWidth-c.right)-h[0].offsetWidth;
\r
186 if(c.bottom && ui.draggable.pos[1]+h[0].offsetHeight > p[0].offsetHeight-c.bottom) ui.draggable.pos[1] = (p[0].offsetHeight-c.bottom)-h[0].offsetHeight;
\r
193 //----------------------------------------------------------------
\r
195 $.ui.plugin.add("draggable", "drag", "grid", function(e,ui) {
\r
196 var o = ui.options;
\r
197 if(!o.cursorAtIgnore) return;
\r
198 ui.draggable.pos[0] = o.co.left + o.margins.left - o.po.left + Math.round((ui.draggable.pos[0] - o.co.left - o.margins.left + o.po.left) / o.grid[0]) * o.grid[0];
\r
199 ui.draggable.pos[1] = o.co.top + o.margins.top - o.po.top + Math.round((ui.draggable.pos[1] - o.co.top - o.margins.top + o.po.top) / o.grid[1]) * o.grid[1];
\r
202 //----------------------------------------------------------------
\r
204 $.ui.plugin.add("draggable", "drag", "axis", function(e,ui) {
\r
205 var o = ui.options;
\r
206 if(!o.cursorAtIgnore) return;
\r
207 if(o.constraint) o.axis = o.constraint; //Legacy check
\r
208 o.axis ? ( o.axis == 'x' ? ui.draggable.pos[1] = o.co.top - o.margins.top - o.po.top : ui.draggable.pos[0] = o.co.left - o.margins.left - o.po.left ) : null;
\r
211 //----------------------------------------------------------------
\r
213 $.ui.plugin.add("draggable", "drag", "scroll", function(e,ui) {
\r
215 var o = ui.options;
\r
216 o.scrollSensitivity = o.scrollSensitivity || 20;
\r
217 o.scrollSpeed = o.scrollSpeed || 20;
\r
219 if(o.pp && o.ppOverflow) { // If we have a positioned parent, we only scroll in this one
\r
220 // TODO: Extremely strange issues are waiting here..handle with care
\r
222 if((ui.draggable.rpos[1] - $(window).height()) - $(document).scrollTop() > -o.scrollSensitivity) window.scrollBy(0,o.scrollSpeed);
\r
223 if(ui.draggable.rpos[1] - $(document).scrollTop() < o.scrollSensitivity) window.scrollBy(0,-o.scrollSpeed);
\r
224 if((ui.draggable.rpos[0] - $(window).width()) - $(document).scrollLeft() > -o.scrollSensitivity) window.scrollBy(o.scrollSpeed,0);
\r
225 if(ui.draggable.rpos[0] - $(document).scrollLeft() < o.scrollSensitivity) window.scrollBy(-o.scrollSpeed,0);
\r
230 //----------------------------------------------------------------
\r
232 $.ui.plugin.add("draggable", "drag", "wrapHelper", function(e,ui) {
\r
234 var o = ui.options;
\r
235 if(o.cursorAtIgnore) return;
\r
238 if(!o.pp || !o.ppOverflow) {
\r
239 var wx = $(window).width() - ($.browser.mozilla ? 20 : 0);
\r
240 var sx = $(document).scrollLeft();
\r
242 var wy = $(window).height();
\r
243 var sy = $(document).scrollTop();
\r
245 var wx = o.pp.offsetWidth + o.po.left - 20;
\r
246 var sx = o.pp.scrollLeft;
\r
248 var wy = o.pp.offsetHeight + o.po.top - 20;
\r
249 var sy = o.pp.scrollTop;
\r
252 ui.draggable.pos[0] -= ((ui.draggable.rpos[0]-o.cursorAt.left - wx + t.offsetWidth+o.margins.right) - sx > 0 || (ui.draggable.rpos[0]-o.cursorAt.left+o.margins.left) - sx < 0) ? (t.offsetWidth+o.margins.left+o.margins.right - o.cursorAt.left * 2) : 0;
\r
254 ui.draggable.pos[1] -= ((ui.draggable.rpos[1]-o.cursorAt.top - wy + t.offsetHeight+o.margins.bottom) - sy > 0 || (ui.draggable.rpos[1]-o.cursorAt.top+o.margins.top) - sy < 0) ? (t.offsetHeight+o.margins.top+o.margins.bottom - o.cursorAt.top * 2) : 0;
\r