var dragObject=null;
var mouseOffset=null;

function Drag() {}
$extend(Drag,{
  drag:function(element) {
	dragObject=$(element);
	dragObject.onmousedown=function(ev){
		mouseOffset=Drag.getMouseOffset(dragObject,ev);
	}
	dragObject.onmouseup=function() {dragObject = null;}
	return true;
  },
  mouseCoords:function(ev) {
	if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY}; }
	return {x:ev.clientX, y:ev.clientY};
  },
  getMouseOffset:function(target,ev) {
	ev = ev || window.event;
	var docPos    = Drag.getPosition(target);
	var mousePos  = Drag.mouseCoords(ev);
	return {x:mousePos.x-docPos.x,y:mousePos.y-docPos.y};
  },
  getPosition:function(e){
	var left=0,top=0;
	if(e==null) return {x:left, y:top};
	while (e.offsetParent){ left += e.offsetLeft; top  += e.offsetTop; e = e.offsetParent; }
	left += e.offsetLeft;
	top  += e.offsetTop;
	return {x:left, y:top};
  }
});
function mouseMove(ev){
	ev=ev||window.event;
	if(dragObject!=null){
		var mousePos = Drag.mouseCoords(ev);
		var pt=mousePos.y-mouseOffset.y;
		pt=pt>0?pt:0;
		var pl=(mousePos.x-mouseOffset.x);
		pl=pl>0?pl:0;
		dragObject.style.position = 'absolute';
		dragObject.style.top = pt+"px";
		dragObject.style.left = pl+"px";
		return false;
	}
	return true;
}
document.onmousemove = mouseMove;
document.onmouseup = function() {dragObject=null;}