__dragAndDrop_version=1;

document.onmousemove=mouseMove;
document.onmouseup=mouseUp;

var __dragAndDrop_dragObject = null;
var __dragAndDrop_mouseOffset = 0;
var __dragAndDrop_marginOffset = 0;

function getMouseOffset(target, ev)
{
	ev=ev||window.event;

	var docPos = getPositionDragAndDrop(target);
	var mousePos=mouseCoords(ev);
	return {x:mousePos.x-docPos.x, y:mousePos.y-docPos.y};
}

function getPositionDragAndDrop(e)
{
	var left=0,
	    top=0;

	while (e.offsetParent)
	{
		left+=e.offsetLeft;
		top+=e.offsetTop;
		e=e.offsetParent;
	}

	left+=e.offsetLeft;
	top+=e.offsetTop;

	return {x:left, y:top};
}

function mouseCoords(ev)
{
	if(ev.pageX || ev.pageY)
	    return { x: ev.pageX, y: ev.pageY };

	if (document.body == null)
	    return { x: ev.clientX, y: ev.clientY };

	return {x:ev.clientX+document.body.scrollLeft-document.body.clientLeft,
		    y:ev.clientY+document.body.scrollTop-document.body.clientTop};
}

function mouseMove(ev)
{
	ev= ev || window.event;
	var mousePos = mouseCoords(ev);

	if(__dragAndDrop_dragObject)
	{
	    __dragAndDrop_dragObject.style.position = 'absolute';
		__dragAndDrop_dragObject.style.top=mousePos.y-__dragAndDrop_mouseOffset.y;
		__dragAndDrop_dragObject.style.left = mousePos.x - __dragAndDrop_mouseOffset.x + __dragAndDrop_marginOffset;
		return false;
	}
}

function mouseUp()
{
	__dragAndDrop_dragObject = null;
}

function makeDraggable(item,offset)
{
	if(!item) return;
	if(offset)
	    __dragAndDrop_marginOffset=offset;
	else
	    __dragAndDrop_marginOffset = 0;

	item.onmousedown=function(ev)
	{
		__dragAndDrop_dragObject=this;
		__dragAndDrop_mouseOffset=getMouseOffset(this, ev);
		return false;
	}
}

