var dragObject  = null;
var mouseOffset = null;

function mouseCoords(ev)
{         
    if(ev.pageX || ev.pageY)
	{ 
        return {x:ev.pageX, y:ev.pageY}; 
    } 
    return 	{x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop  - document.body.clientTop}; 
} 

function getMouseOffset(target, ev)
{
	ev = ev || window.event;
	
	var docPos = getPosition(target);
	var mousePos = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e)
{
	var left = 0;
	var 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 mouseMove(ev)
{
	ev = ev || window.event;
	var mousePos = mouseCoords(ev);
	
	if(dragObject)
	{
		dragObject.style.position = 'absolute';
		dragObject.style.top = mousePos.y - mouseOffset.y + "px";
		if(dragObject.style.top <= 0 + "px")
		{
			dragObject.style.top = 0 + "px"
		}
		dragObject.style.left = mousePos.x - mouseOffset.x + "px";
		if(dragObject.style.left <= 0 + "px")
		{
			dragObject.style.left = 0 + "px"
		}
		
		return false;
	}
}

function makeDraggable(item)
{
	if(!item) return;
	item.onmousedown = function(ev)
	{
		dragObject = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}

function mouseUp(ev)
{
	ev = ev || window.event;
	//var mousePos = mouseCoords(ev);
	document.onmousemove = null;
	document.onmousedown = null;
	document.onmouseup = null;
	dragObject = null;
}
function mouseDown(ev){
	ev = ev || window.event;
	var target = ev.target || ev.srcElement;

	if(target.onmousedown || target.getAttribute('DragObj')){
		return false;
	}
}

//document.onmousemove = mouseMove;
//document.onmousedown = mouseDown;
//document.onmouseup = mouseUp;
