| 12 |
|
|
| 13 |
var clickedElement = null; |
var clickedElement = null; |
| 14 |
var dragElement = null; |
var dragElement = null; |
| 15 |
|
var elems = null; |
| 16 |
|
|
| 17 |
var onMouseDownHandler = function(e) { |
function endDrag() { |
| 18 |
dragging = true; |
dragging = false; |
| 19 |
clickedElement = Event.element(e); |
clickedElement = null; |
| 20 |
var attr = clickedElement.attributes.getNamedItem("dragtarget"); |
dragElement = null; |
| 21 |
|
} |
| 22 |
|
|
| 23 |
|
function getDragTarget(elem) { |
| 24 |
|
var attr = elem.attributes.getNamedItem("dragtarget"); |
| 25 |
|
var ret = null; |
| 26 |
if (attr) { |
if (attr) { |
| 27 |
dragElement = $(attr.value); |
ret = $(attr.value); |
| 28 |
if (!dragElement) { |
if (!ret) { |
| 29 |
alert("Draggable dragtarget not found!"); |
alert("Draggable dragtarget not found!"); |
| 30 |
|
return; |
| 31 |
} |
} |
| 32 |
}else { |
}else { |
| 33 |
dragElement = clickedElement; |
ret = clickedElement; |
| 34 |
} |
} |
| 35 |
|
return ret; |
| 36 |
|
} |
| 37 |
|
|
| 38 |
|
var onMouseDownHandler = function(e) { |
| 39 |
|
clickedElement = Event.element(e); |
| 40 |
|
dragElement = getDragTarget(clickedElement); |
| 41 |
|
dragging = true; |
| 42 |
dragStartMousePos = Event.pointer(e); |
dragStartMousePos = Event.pointer(e); |
| 43 |
dragElementStartPos = [NaN0(parseInt(dragElement.style.left)), NaN0(parseInt(dragElement.style.top))]; |
dragElementStartPos = [NaN0(parseInt(dragElement.style.left)), NaN0(parseInt(dragElement.style.top))]; |
| 44 |
|
|
| 45 |
|
var maxZIndex = 0; |
| 46 |
|
for (var i=0; i<elems.length; ++i) { |
| 47 |
|
var elem = getDragTarget(elems[i]); |
| 48 |
|
maxZIndex = Math.max(elem.style.zIndex, maxZIndex); |
| 49 |
|
} |
| 50 |
|
dragElement.style.zIndex = maxZIndex + 1; |
| 51 |
Event.stop(e); |
Event.stop(e); |
| 52 |
}; |
}; |
| 53 |
|
|
| 54 |
this.attach = function(){ |
this.attach = function(){ |
| 55 |
var elems = getElementsByClassName('draggable'); |
elems = getElementsByClassName('draggable'); |
| 56 |
for (var i=0; i<elems.length; ++i) { |
for (var i=0; i<elems.length; ++i) { |
| 57 |
var elem = elems[i]; |
var elem = elems[i]; |
| 58 |
Event.observe(elem, 'mousedown', onMouseDownHandler); |
Event.observe(elem, 'mousedown', onMouseDownHandler); |
| 61 |
Event.observe(window, 'load', this.attach); |
Event.observe(window, 'load', this.attach); |
| 62 |
|
|
| 63 |
Event.observe(document, 'mouseup', function(){ |
Event.observe(document, 'mouseup', function(){ |
| 64 |
dragging = false; |
endDrag(); |
|
clickedElement = null; |
|
|
dragElement = null; |
|
| 65 |
}); |
}); |
| 66 |
Event.observe(document, 'mousemove', function(e){ |
Event.observe(document, 'mousemove', function(e){ |
| 67 |
if (!dragging) { |
if (!dragging) { |
| 76 |
dragElement.style.top = dragElementStartPos[1] + diffMousePos[1] + "px"; |
dragElement.style.top = dragElementStartPos[1] + diffMousePos[1] + "px"; |
| 77 |
}); |
}); |
| 78 |
Event.observe(document, 'blur', function(){ |
Event.observe(document, 'blur', function(){ |
| 79 |
dragging = false; |
endDrag(); |
| 80 |
}); |
}); |
| 81 |
|
|
| 82 |
|
|