bsw@519: if (!jsFail) { bsw@519: window.addEventListener("load", function(event) { bsw@519: var originalElement; bsw@519: var draggedElement; bsw@519: var mouseX; bsw@519: var mouseY; bsw@519: var mouseOffsetX; bsw@519: var mouseOffsetY; bsw@519: var elementOffsetX; bsw@519: var elementOffsetY; bsw@519: var dropFunc; bsw@519: var dragElement = function(element, func) { bsw@519: //if (typeof(element) == "string") element = document.getElementById(element); bsw@519: originalElement = element; bsw@519: draggedElement = originalElement.cloneNode(true); bsw@519: originalElement.style.visibility = "hidden"; bsw@519: draggedElement.style.margin = 0; bsw@519: draggedElement.style.position = "absolute"; bsw@519: draggedElement.style.left = elementOffsetX = originalElement.offsetLeft; bsw@519: draggedElement.style.top = elementOffsetY = originalElement.offsetTop; bsw@519: draggedElement.style.width = originalElement.clientWidth; bsw@519: draggedElement.style.height = originalElement.clientHeight; bsw@519: draggedElement.style.backgroundColor = "#eee"; bsw@519: draggedElement.style.opacity = 0.8; bsw@519: originalElement.offsetParent.appendChild(draggedElement); bsw@519: // workaround for wrong clientWidth and clientHeight information: bsw@519: draggedElement.style.width = 2*originalElement.clientWidth - draggedElement.clientWidth; bsw@519: draggedElement.style.height = 2*originalElement.clientHeight - draggedElement.clientHeight; bsw@519: mouseOffsetX = mouseX; bsw@519: mouseOffsetY = mouseY; bsw@519: dropFunc = func; bsw@519: }; bsw@519: window.addEventListener("mousemove", function(event) { bsw@519: mouseX = event.pageX; bsw@519: mouseY = event.pageY; bsw@519: if (draggedElement) { bsw@519: draggedElement.style.left = elementOffsetX + mouseX - mouseOffsetX; bsw@519: draggedElement.style.top = elementOffsetY + mouseY - mouseOffsetY; bsw@519: } bsw@519: }, true); bsw@519: var mouseDrop = function(event) { bsw@519: if (draggedElement) { bsw@519: dropFunc( bsw@519: originalElement, bsw@519: elementOffsetX + mouseX - mouseOffsetX, bsw@519: elementOffsetY + mouseY - mouseOffsetY bsw@519: ); bsw@519: originalElement.style.visibility = ''; bsw@519: draggedElement.parentNode.removeChild(draggedElement); bsw@519: originalElement = null; bsw@519: draggedElement = null; bsw@519: } bsw@519: }; bsw@519: window.addEventListener("mouseup", mouseDrop, true); bsw@519: window.addEventListener("mousedown", mouseDrop, true); bsw@519: var elements = document.getElementsByTagName("*"); bsw@519: for (var i=0; i