1 /** Because scriptaculous DnD sucks..
2 Written by Mathew McBride <matt@mcbridematt.dhs.org> / <matt@comalies>
4 var draggedElement = null;
5 var currentDropTargets = null;
7 var dragAndDropElement = null;
8 var oldSelectHandler = null;
9 function mouseDownHandler(event) {
10 var target = event.target;
11 var actualTarget = target;
12 if (target.nodeName.toLowerCase() == "td") {
13 actualTarget = target.parentNode;
15 if (!actualTarget.dropEnabled) {
19 draggedElement = actualTarget;
22 function mouseUpHandler(event) {
23 var target = event.target;
24 var dropped = dropTarget;
25 if (dragAndDropElement != null) {
26 if (dropped != null && dropped.dropHandler) {
27 dropped.dropHandler(dropped,draggedElement);
29 document.body.removeChild(dragAndDropElement);
31 dragAndDropElement = null;
32 draggedElement = null;
37 function mouseMoveHandler(event) {
38 if (draggedElement != null) {
39 if (dragAndDropElement == null) {
40 dragAndDropElement = draggedElement.ctdlDnDElement();
41 dragAndDropElement.className = "draganddrop";
42 document.body.appendChild(dragAndDropElement);
44 var clientX = event.clientX+5;
45 var clientY = event.clientY+5;
46 dragAndDropElement.style.top = clientY + "px";
47 dragAndDropElement.style.left = clientX + "px";
51 function mouseMoveOver(event) {
52 if (event.target.dropTarget) {
53 dropTarget = event.target;
56 function mouseMoveOut(event) {
61 function setupDragDrop() {
62 $(document.body).observe('mousedown', mouseDownHandler);
63 $(document.body).observe('mouseup',mouseUpHandler);
64 $(document.body).observe('mousemove',mouseMoveHandler);
65 $(document.body).observe('mouseover', mouseMoveOver);
66 $(document.body).observe('mouseout', mouseMoveOut);
68 function turnOffTextSelect() {
69 document.onmousedown = new Function("return false");
70 document.onmouseup = new Function("return true");
71 oldSelectHandler = document.onselectstart;
72 document.onselectstart = function() { return false; };
74 function turnOnTextSelect() {
75 document.onmousedown = null;
76 document.onmouseup = null;
77 document.onselectstart = oldSelectHandler;