liquid_feedback_frontend

annotate static/js/dragdrop.js @ 660:d97d13db0081

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

Impressum / About Us