function dragEvent() { var d, e; if(document.addEventListener) { for(d in draggable) { e = draggable[d] = getE(d); e.draginfo = [0,0,0,0,newel('g',{cursor:'move'})]; (e.nearestViewportElement || document.documentElement).appendChild(e.draginfo[4]); e.parentNode.removeChild(e); e.draginfo[4].appendChild(e); } document.addEventListener('mouseup', function(e) { var t = finditem(e,draggable); if(t && t.dragging) { t.dragging = null; } }); document.addEventListener('mousedown', function(e) { var t = finditem(e,draggable), m; if(t && !t.dragging) { var pos = svgCursorCoords(e); t.draginfo[0] = pos[0]; t.draginfo[1] = pos[1]; t.dragging = 1; e.cancelBubble = true; e.preventDefault && e.preventDefault(); return false; } }); function dragmove(e) { var t = finditem(e,draggable), d; if(t && t.dragging) { d = t.draginfo; var pos = svgCursorCoords(e); d[2] = d[2] - d[0] + pos[0]; d[3] = d[3] - d[1] + pos[1]; d[0] = pos[0]; d[1] = pos[1]; setattr(d[4], 'transform', 'translate(' + d[2] + ',' + d[3] + ')'); e.cancelBubble = true; e.preventDefault && e.preventDefault(); return false; } }; document.addEventListener('mousemove', dragmove); document.addEventListener('mouseout', dragmove); } }