var mousex = 0; var mousey = 0; var grabx = 0; var graby = 0; var orix = 0; var oriy = 0; var elex = 0; var eley = 0; var algor = 0; var dragobj = null; function falsefunc() { return false; } // used to block cascading events function mm_init() { document.onmousemove = update; // update(event) implied on NS, update(null) implied on IE update(); } function getMouseXY(e) // works on IE6,FF,Moz,Opera7 { if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event) if (e) { if (e.pageX || e.pageY) { // this doesn't work on IE6!! (works on FF,Moz,Opera7) mousex = e.pageX; mousey = e.pageY; algor = '[e.pageX]'; if (e.clientX || e.clientY) algor += ' [e.clientX] ' } else if (e.clientX || e.clientY) { // works on IE6,FF,Moz,Opera7 // Note: I am adding together both the "body" and "documentElement" scroll positions // this lets me cover for the quirks that happen based on the "doctype" of the html page. // (example: IE6 in compatibility mode or strict) // Based on the different ways that IE,FF,Moz,Opera use these ScrollValues for body and documentElement // it looks like they will fill EITHER ONE SCROLL VALUE OR THE OTHER, NOT BOTH // (from info at http://www.quirksmode.org/js/doctypes.html) mousex = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; mousey = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; algor = '[e.clientX]'; if (e.pageX || e.pageY) algor += ' [e.pageX] ' } } } function update(e) { getMouseXY(e); // NS is passing (event), while IE is passing (null) positiontip(e); /* document.getElementById('span_browser').innerHTML = navigator.appName; document.getElementById('span_winevent').innerHTML = window.event ? window.event.type : '(na)'; document.getElementById('span_autevent').innerHTML = e ? e.type : '(na)'; document.getElementById('span_mousex').innerHTML = mousex; document.getElementById('span_mousey').innerHTML = mousey; document.getElementById('span_grabx').innerHTML = grabx; document.getElementById('span_graby').innerHTML = graby; document.getElementById('span_orix').innerHTML = orix; document.getElementById('span_oriy').innerHTML = oriy; document.getElementById('span_elex').innerHTML = elex; document.getElementById('span_eley').innerHTML = eley; document.getElementById('span_algor').innerHTML = algor; document.getElementById('span_dragobj').innerHTML = dragobj ? (dragobj.id ? dragobj.id : 'unnamed object') : '(null)'; */ /*document.getElementById('debug').innerHTML = 'mouse x: '+mousex+' mouse y: '+mousey+'
grab x: '+grabx+' grab y: '+graby+'
ori x: '+orix+' ori y: '+oriy+'
ele x: '+elex+' ele y: '+eley;*/ } function grab(context) { update(); document.onmousedown = falsefunc; // in NS this prevents cascading of events, thus disabling text selection dragobj = context; dragobj.style.zIndex = 2000; // move it to the top document.onmousemove = drag; document.onmouseup = drop; grabx = mousex; graby = mousey; elex = orix = dragobj.offsetLeft; eley = oriy = dragobj.offsetTop; update(); } function drag(e) // parameter passing is important for NS family { if (dragobj) { elex = orix + (mousex-grabx); eley = oriy + (mousey-graby); dragobj.style.position = "absolute"; dragobj.style.left = (elex).toString(10) + 'px'; dragobj.style.top = (eley).toString(10) + 'px'; } update(e); return false; // in IE this prevents cascading of events, thus text selection is disabled } function drop() { if (dragobj) { /* var objdata = dragobj; dragobj.style.zIndex = 0; dragobj = null; var dropbox = document.getElementById('dropbox_content'); var lastdrop = document.getElementById('lastdrop'); if (elex > 250 && elex < 400 && eley > 200 && eley < 400) { document.getElementById(objdata.id).style.display='none'; // hide on dropbox if (dropbox.innerHTML == 'Drop Here...') dropbox.innerHTML = ''; // clear dropbox text if empty var tmp = '
'+objdata.id+' [X]
'; dropbox.innerHTML = dropbox.innerHTML + tmp; lastdrop.innerHTML = 'DROP-BOX: ('+elex+':'+eley+')'; } else { lastdrop.innerHTML = 'Last drop coords: ('+elex+':'+eley+')'; } objdata = null; */ } update(); document.onmousemove = update; document.onmouseup = null; document.onmousedown = null; // re-enables text selection on NS } function dropbox_remove(target) { var trg = document.getElementById(target); trg.style.left='100px'; trg.style.top='100px'; trg.style.display='block'; }