liquid_feedback_frontend

annotate static/js/dragdrop.js @ 202:2be6bb086d95

Little improvements and corrections of the Esperanto text thanks to helpers
author Thomas Wuerfel
date Thu Jan 06 15:29:17 2011 +0100 (2011-01-06)
parents 8d91bccab0bf
children 7492497005bd
rev   line source
bsw/jbe@5 1 window.addEventListener("load", function(event) {
bsw/jbe@5 2 var originalElement;
bsw/jbe@5 3 var draggedElement;
bsw/jbe@5 4 var mouseX;
bsw/jbe@5 5 var mouseY;
bsw/jbe@5 6 var mouseOffsetX;
bsw/jbe@5 7 var mouseOffsetY;
bsw/jbe@5 8 var elementOffsetX;
bsw/jbe@5 9 var elementOffsetY;
bsw/jbe@5 10 var dropFunc;
bsw/jbe@5 11 var dragElement = function(element, func) {
bsw/jbe@5 12 //if (typeof(element) == "string") element = document.getElementById(element);
bsw/jbe@5 13 originalElement = element;
bsw/jbe@5 14 draggedElement = originalElement.cloneNode(true);
bsw/jbe@5 15 originalElement.style.visibility = "hidden";
bsw/jbe@5 16 draggedElement.style.margin = 0;
bsw/jbe@5 17 draggedElement.style.position = "absolute";
bsw/jbe@5 18 draggedElement.style.left = elementOffsetX = originalElement.offsetLeft;
bsw/jbe@5 19 draggedElement.style.top = elementOffsetY = originalElement.offsetTop;
bsw/jbe@5 20 draggedElement.style.width = originalElement.clientWidth;
bsw/jbe@5 21 draggedElement.style.height = originalElement.clientHeight;
bsw/jbe@5 22 draggedElement.style.backgroundColor = "#eee";
bsw/jbe@5 23 draggedElement.style.opacity = 0.8;
bsw/jbe@5 24 originalElement.offsetParent.appendChild(draggedElement);
bsw/jbe@5 25 // workaround for wrong clientWidth and clientHeight information:
bsw/jbe@5 26 draggedElement.style.width = 2*originalElement.clientWidth - draggedElement.clientWidth;
bsw/jbe@5 27 draggedElement.style.height = 2*originalElement.clientHeight - draggedElement.clientHeight;
bsw/jbe@5 28 mouseOffsetX = mouseX;
bsw/jbe@5 29 mouseOffsetY = mouseY;
bsw/jbe@5 30 dropFunc = func;
bsw/jbe@5 31 };
bsw/jbe@5 32 window.addEventListener("mousemove", function(event) {
bsw/jbe@5 33 mouseX = event.pageX;
bsw/jbe@5 34 mouseY = event.pageY;
bsw/jbe@5 35 if (draggedElement) {
bsw/jbe@5 36 draggedElement.style.left = elementOffsetX + mouseX - mouseOffsetX;
bsw/jbe@5 37 draggedElement.style.top = elementOffsetY + mouseY - mouseOffsetY;
bsw/jbe@5 38 }
bsw/jbe@5 39 }, true);
bsw/jbe@5 40 var mouseDrop = function(event) {
bsw/jbe@5 41 if (draggedElement) {
bsw/jbe@5 42 dropFunc(
bsw/jbe@5 43 originalElement,
bsw/jbe@5 44 elementOffsetX + mouseX - mouseOffsetX,
bsw/jbe@5 45 elementOffsetY + mouseY - mouseOffsetY
bsw/jbe@5 46 );
bsw/jbe@5 47 originalElement.style.visibility = '';
bsw/jbe@5 48 draggedElement.parentNode.removeChild(draggedElement);
bsw/jbe@5 49 originalElement = null;
bsw/jbe@5 50 draggedElement = null;
bsw/jbe@5 51 }
bsw/jbe@5 52 };
bsw/jbe@5 53 window.addEventListener("mouseup", mouseDrop, true);
bsw/jbe@5 54 window.addEventListener("mousedown", mouseDrop, true);
bsw/jbe@5 55 var elements = document.getElementsByTagName("*");
bsw/jbe@5 56 for (var i=0; i<elements.length; i++) {
bsw/jbe@5 57 var element = elements[i];
bsw/jbe@5 58 if (element.className == "movable") {
bsw/jbe@5 59 element.addEventListener("mousedown", function(event) {
bsw/jbe@5 60 event.target.style.cursor = "move";
bsw/jbe@5 61 dragElement(event.currentTarget, function(element, dropX, dropY) {
bsw/jbe@6 62 event.target.style.cursor = '';
bsw/jbe@5 63 elementDropped(element, dropX, dropY);
bsw/jbe@5 64 });
bsw/jbe@5 65 event.preventDefault();
bsw/jbe@5 66 }, false);
bsw/jbe@5 67 } else if (element.className == "clickable") {
bsw/jbe@5 68 element.addEventListener("mousedown", function(event) {
bsw/jbe@5 69 event.stopPropagation();
bsw/jbe@5 70 }, false);
bsw/jbe@5 71 }
bsw/jbe@5 72 }
bsw/jbe@5 73 }, false);

Impressum / About Us