/** * Drag.js: * beginDrag()is designed to be called from an onmousedown event handler. * elementToDrag may be the element that received the mousedown event, or it * may be some containing element. event must be the Event object for the * mousedown event. This implementation works with both the DOM Level 2 * event model and the IE event model. **/ function beginDrag(elementToDrag, event) { //Compute the distance between the upperleft corner of the element //and the mouse-click. The moveHandler function below needs these values. var deltaX = event.clientX - parseInt(elementToDrag.style.left); var deltaY = event.clientY - parseInt(elementToDrag.style.top); //Register the event handlers that will respond to the mousemove events //and mouseup event that follow this mousedown event. if (document.addEventListener) { // DOM Level 2 Event Model // Register capturing event handlers document.addEventListener("mousemove", moveHandler, true); document.addEventListener("mouseup", upHandler, true); } else if (document.attachEvent) { // IE 5 + Event Model // In the IE event model, we can't capture events, so these handlers // are triggered only if the event bubbles up to them. // This assumes that there aren't any intervening elements that // handle the events and stop them form bubbling. document.attachEvent("onmousemove", moveHandler); document.attachEvent("onmouseup", upHandler); } else { // IE 4 Event Model // In IE 4 we can't use attachEvent(), so assign the event handlers // directly after storing any previously assigned handlers, so they // can be restored. Note that this relies on event bubbling. var oldmovehandler = document.onmousemove; var olduphandler = document.onmouseup; document.onmousemove = moveHandler; document.onmouseup = upHandler; } // We've handled this event. Don't let anybody see it. if (event.stopPropagation) { event.stopPropagation(); } //DOM Level 2 else { event.cancelBubble = true; } // IE //Now prevent any default action. if (event.preventDefault) { event.preventDefault(); } // DOM Level 2 else { event.returnValue = false; } // IE /** * This is the handler that captures mousemove events when an element * is being dragged. It is responsible for moving the element. **/ function moveHandler(e) { if (!e) { e = window.event; } // IE Event Model // Move the element to the current mouse position, adjusted as // necessary by the offset of the initial mouse-click. elementToDrag.style.left = (e.clientX - deltaX) + "px"; elementToDrag.style.top = (e.clientY - deltaY) + "px"; // And don't let anyone else see this event. if (e.stopPropagation) { e.stopPropagation(); } // DOM Level 2 else { e.cancelBubble = true; } // IE } /** * This is the handler that captures final mouseup event that * occurs at the end of a drag. **/ function upHandler(e) { if (!e) e = window.event; // IE Event Model // Unregister the capturing event handlers. if (document.removeEventListener) { // DOM Event Model document.removeEventListener("mouseup", upHandler, true); document.removeEventListener("mousemove", moveHandler, true); } else if (document.detachEvent) { // IE 5+ Event Model document.detachEvent("onmouseup", upHandler); document.detachEvent("onmousemove", moveHandler); } else { // IE 4 Event Model document.onmouseup = olduphandler; document.onmousemove = oldmovehandler; } // And don't let the event propagate any further. if (e.stopPropagation) e.stopPropagation(); // DOM Level 2 else e.cancelBubble = true; // IE } } function hideHelp(objTekst) { obj = document.getElementById(objTekst); obj.style.visibility = "hidden"; } function showHelp(objTekst) { obj = document.getElementById(objTekst); obj.style.visibility = "visible"; return false; }