9 ua = navigator.userAgent;
12 if ((i = ua.indexOf(s)) >= 0) {
14 this.version = parseFloat(ua.substr(i + s.length));
19 if ((i = ua.indexOf(s)) >= 0) {
21 this.version = parseFloat(ua.substr(i + s.length));
25 // Treat any other "Gecko" browser as NS 6.1.
28 if ((i = ua.indexOf(s)) >= 0) {
35 var browser = new Browser();
37 // Global object to hold drag information.
39 var dragObj = new Object();
42 function dragStart(event, id) {
47 // If an element id was given, find it. Otherwise use the element being
51 dragObj.elNode = document.getElementById(id);
54 dragObj.elNode = window.event.srcElement;
56 dragObj.elNode = event.target;
58 // If this is a text node, use its parent element.
60 if (dragObj.elNode.nodeType == 3)
61 dragObj.elNode = dragObj.elNode.parentNode;
64 // Get cursor position with respect to the page.
67 x = window.event.clientX + document.documentElement.scrollLeft
68 + document.body.scrollLeft;
69 y = window.event.clientY + document.documentElement.scrollTop
70 + document.body.scrollTop;
73 x = event.clientX + window.scrollX;
74 y = event.clientY + window.scrollY;
77 // Save starting positions of cursor and element.
79 dragObj.cursorStartX = x;
80 dragObj.cursorStartY = y;
81 dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10);
82 dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10);
84 if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
85 if (isNaN(dragObj.elStartTop)) dragObj.elStartTop = 0;
87 // Update element's z-index.
89 dragObj.elNode.style.zIndex = ++dragObj.zIndex;
91 // Capture mousemove and mouseup events on the page.
94 document.attachEvent("onmousemove", dragGo);
95 document.attachEvent("onmouseup", dragStop);
96 window.event.cancelBubble = true;
97 window.event.returnValue = false;
100 document.addEventListener("mousemove", dragGo, true);
101 document.addEventListener("mouseup", dragStop, true);
102 event.preventDefault();
106 function dragGo(event) {
110 // Get cursor position with respect to the page.
113 x = window.event.clientX + document.documentElement.scrollLeft
114 + document.body.scrollLeft;
115 y = window.event.clientY + document.documentElement.scrollTop
116 + document.body.scrollTop;
119 x = event.clientX + window.scrollX;
120 y = event.clientY + window.scrollY;
123 // Move drag element by the same amount the cursor has moved.
125 dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
126 dragObj.elNode.style.top = (dragObj.elStartTop + y - dragObj.cursorStartY) + "px";
129 window.event.cancelBubble = true;
130 window.event.returnValue = false;
133 event.preventDefault();
136 function dragStop(event) {
138 // Stop capturing mousemove and mouseup events.
141 document.detachEvent("onmousemove", dragGo);
142 document.detachEvent("onmouseup", dragStop);
145 document.removeEventListener("mousemove", dragGo, true);
146 document.removeEventListener("mouseup", dragStop, true);
148 //alert(document.getElementById('boxA').style.top + "\n" + document.getElementById('boxA').style.left );