/** Internal function.  Starts dragging the element. */
var is_ie = document.all;
var dragging = false;
var xOffs = 0;
var yOffs = 0;

_dragStart = function (ev)
{
	if (dragging)
	{
		return;
	}
	dragging = true;
	var posX;
	var posY;
	if (is_ie) {
		posY = window.event.clientY + document.body.scrollTop;
		posX = window.event.clientX + document.body.scrollLeft;
	} else {
		posY = ev.clientY + window.scrollY;
		posX = ev.clientX + window.scrollX;
	}
	var st = document.getElementById('cart_window').style;
	xOffs = posX - parseInt(st.left);
	yOffs = posY - parseInt(st.top);
	addEvent(document, "mousemove", calDragIt);
	addEvent(document, "mouseup", calDragEnd);
};

calDragIt = function (ev) {
	if (!(dragging)) {
		return false;
	}
	var posX;
	var posY;
	if (is_ie) {
		posY = window.event.clientY + document.body.scrollTop;
		posX = window.event.clientX + document.body.scrollLeft;
	} else {
		posX = ev.pageX;
		posY = ev.pageY;
	}
	var st = document.getElementById('cart_window').style;
	st.left = (posX - xOffs) + "px";
	st.top = (posY - yOffs) + "px";
	return stopEvent(ev);
};

calDragEnd = function (ev) {
	dragging = false;
	removeEvent(document, "mousemove", calDragIt);
	removeEvent(document, "mouseup", calDragEnd);
	//tableMouseUp(ev);
};

addEvent = function(el, evname, func)
{
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
};

removeEvent = function(el, evname, func)
{
	if (el.detachEvent) { // IE
		el.detachEvent("on" + evname, func);
	} else if (el.removeEventListener) { // Gecko / W3C
		el.removeEventListener(evname, func, true);
	} else {
		el["on" + evname] = null;
	}
};

stopEvent = function(ev) {
	ev || (ev = window.event);
	if (is_ie) {
		ev.cancelBubble = true;
		ev.returnValue = false;
	} else {
		ev.preventDefault();
		ev.stopPropagation();
	}
	return false;
};