forked from dokuwiki/dokuwiki
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdrag.js
87 lines (79 loc) · 2.51 KB
/
drag.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
* Makes a DOM object draggable
*
* If you just want to move objects around, use drag.attach. For full
* customization, drag can be used as a javascript prototype, it is
* inheritance-aware.
*
* @deprecated
* @link http://nofunc.org/Drag_Drop/
*/
var drag = {
obj: null,
handle: null,
oX: 0, // object X position
oY: 0, // object Y position
eX: 0, // event X delta
eY: 0, // event Y delta
/**
* Attaches the needed handlers to the given object
*
* This can be called for multiple objects, the right one is later
* determined from the event itself. The handle is optional
*
* @param DOMObject obj The object that should be draggable
* @param DOMObject handle A handle on which the obj can be dragged
*/
attach: function (obj,handle) {
DEPRECATED('Use jQuery.draggable() instead.');
if(handle){
handle.dragobject = obj;
}else{
handle = obj;
}
var _this = this;
addEvent($(handle),'mousedown',function (e) {return _this.start(e); });
},
/**
* Starts the dragging operation
*/
start: function (e){
this.handle = e.target;
if(this.handle.dragobject){
this.obj = this.handle.dragobject;
}else{
this.obj = this.handle;
}
this.handle.className += ' ondrag';
this.obj.className += ' ondrag';
this.oX = parseInt(this.obj.style.left);
this.oY = parseInt(this.obj.style.top);
this.eX = e.pageX;
this.eY = e.pageY;
var _this = this;
this.mousehandlers = [function (e) {return _this.drag(e);}, function (e) {return _this.stop(e);}];
addEvent(document,'mousemove', this.mousehandlers[0]);
addEvent(document,'mouseup', this.mousehandlers[1]);
return false;
},
/**
* Ends the dragging operation
*/
stop: function(){
this.handle.className = this.handle.className.replace(/ ?ondrag/,'');
this.obj.className = this.obj.className.replace(/ ?ondrag/,'');
removeEvent(document,'mousemove', this.mousehandlers[0]);
removeEvent(document,'mouseup', this.mousehandlers[1]);
this.obj = null;
this.handle = null;
},
/**
* Moves the object during the dragging operation
*/
drag: function(e) {
if(this.obj) {
this.obj.style.top = (e.pageY+this.oY-this.eY+'px');
this.obj.style.left = (e.pageX+this.oX-this.eX+'px');
}
}
};