// Capture events
if (!document.all)
	window.captureEvents(Event.MOUSEDOWN);

// Set events on functions
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
document.onmousedown = mouseDown;

// Event function
var mouseEventObject = new Object();

function cleanUpMouseEventObject() 
{
	var o = new Object();
	o.x = mouseEventObject.x;
	o.y = mouseEventObject.y;
	mouseEventObject = o;
}

// Move events and mousecords
function mouseMove(e)
{
	function MousePositionUpdate(e)
	{
		if (document.all)
		{
			mouseEventObject.x = event.clientX + document.body.scrollLeft;
			mouseEventObject.y = event.clientY + document.body.scrollTop;
		}
		else 
		{
			mouseEventObject.x = e.pageX;
			mouseEventObject.y = e.pageY;
		}
	}
	
	MousePositionUpdate(e);
	
	if (mouseEventObject.move)
	{
		mouseEventObject.move(e);
		return false;
	}

	// allow it to bubble
	return true;
}

// Mouse button click events, but only left click
function mouseDown(e)
{
	if(mouseEventObject.down)
	{
		// Escape if not left click
		if ((document.all && event.button > 1) || (!document.all && e.which > 1))
			cleanUpMouseEventObject();
		else
		{
			mouseEventObject.down(e);
			return false;
		}
	}
	
	// allow it to bubble
	return true;
}

// Mouse button release events
function mouseUp(e)
{
	if (mouseEventObject.up)
		mouseEventObject.up(e);
	
	// allow it to bubble
	return true;
}