/******************* dragable.js v0.4 http://www.obliquemotion.com/js/dragable.js license: http://creativecommons.org/licenses/by/1.0/ by Byron Tredwell (byron(AT)obliquemotion(DOT)com) ******************/ function dragable(event,elm,boundingBox,movefunc,releaseFunc){ if(elm==null){ if(event.srcElement){ elm=event.srcElement; }else{ elm=event.target; } } var maxLeft = 0; var maxTop = 0; var maxRight = 0; var maxBottom = 0; if (document.documentElement) { var maxRight = document.documentElement.offsetWidth; var maxBottom = document.documentElement.offsetHeight; }else if (document.body && document.body.offsetWidth) { var maxRight = document.body.offsetWidth; var maxBottom = document.body.offsetHeight; } if(boundingBox != null && boundingBox != document.body) { maxRight = boundingBox.offsetWidth; maxBottom = boundingBox.offsetHeight; } var x = parseInt(elm.style.left); var y = parseInt(elm.style.top); if(isNaN(x) == true) x = 0; if(isNaN(y) == true) y = 0; var deltaX = event.clientX - x; var deltaY = event.clientY - y; stopBubbleStopReturn(event); addListener(document,"mousemove",startDrag); addListener(document,"mouseup",stopDrag); function startDrag(e){ if(!e) var e = window.event; stopBubbleStopReturn(e); var newX = (e.clientX - deltaX); var newY = (e.clientY - deltaY); if( (newX >= 0 && newX <= maxRight-elm.offsetWidth) ){ elm.style.left = newX + "px"; }else if (newX < 0){ elm.style.left = "0px"; } else { elm.style.left = maxRight-elm.offsetWidth + "px"; } if( (newY >= 0 && newY <= maxBottom-elm.offsetHeight) ) { elm.style.top = newY + "px"; } else if (newY < 0){ elm.style.top = "0px"; } else { elm.style.top = maxBottom-elm.offsetHeight + "px"; } if(movefunc) movefunc(newX,newY) } function stopDrag(e){ if(!e) var e = window.event; stopBubbleStopReturn(e); removeListener(document,"mousemove",startDrag); removeListener(document,"mouseup",stopDrag); if(releaseFunc) releaseFunc(); } }