

document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var dragObject  = null;
var mouseOffset = null;

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);
	var posLeft;
	var posTop;
	var ps;

	nMousePositionX = mousePos.x;
	nMousePositionY = mousePos.y;

	if(dragObject && dragObject != null){
		ps=getPageSize();
		posLeft = mousePos.x - mouseOffset.x
		posTop	= mousePos.y - mouseOffset.y
		
		if(posTop < 0){
			posTop = 0;
		}

		if(posTop > ps[1] - dragObject.offsetHeight){
			posTop = ps[1] - dragObject.offsetHeight;
		}


		if(posLeft < 0){
			posLeft = 0;
		}
		
		if(posLeft > ps[2] - dragObject.offsetWidth){
			posLeft = ps[2] - dragObject.offsetWidth;
		}
		
		
		dragObject.style.position = 'absolute';
		dragObject.style.top      = posTop;
		dragObject.style.left     = posLeft;

		return false;
	}
	
	
}
function mouseUp(){
	dragObject = null;
}

function makeDraggable(event,item){

	if(typeof(item) != 'object'){
		item = document.getElementById(item);
	}

	if(!item) return;
/*	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
*/
	dragObject  = item;
	mouseOffset = getMouseOffset(item, event);
	
	event.cancelBubble = false;
	return false;
}


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
	};
}
