function MouseManager() {
	this.mouseXPos=0;
	this.mouseYPos=0;
	this.relativeXPos = null;
	this.relativeYPos = null;
	this.preventSelecting = false;
		
	this.setMousePos = function(e) {
		var d = document;
		var b = d.body;
		var E = d.documentElement;
		this.relativeXPos = (e||event).clientX;
		this.relativeYPos = (e||event).clientY;
		this.mouseXPos = this.relativeXPos+(E.scrollLeft||b.scrollLeft);
		this.mouseYPos = this.relativeYPos+(E.scrollTop||b.scrollTop);
		return false;
	}
	
	document.toDoOMM = new Array();
	document.addToDoOMM = function(id, action) {
		OMMAction = new Object();
		OMMAction.id = id;
		OMMAction.action = action;
		this.toDoOMM.push(OMMAction);
	}
	document.delToDoOMM = function(id) {
		var j = this.toDoOMM.length;
		for (var i=0; i<j; i++) {
			if (this.toDoOMM[i].id == id) {
				this.toDoOMM.splice(i,1);
				break;
			}
		}
	}
	document.onmousemove = function(e) {
		var j = this.toDoOMM.length;
		for (var i=0; i<j; i++) this.toDoOMM[i].action(e);
		if (project.MouseManager.preventSelecting) {
			if (e) e.preventDefault();
			if (window.event) window.event.returnValue = false;
			return false;
		}
	}
	
	document.toDoOMU = new Array();
	document.addToDoOMU = function(id, action) {
		OMUAction = new Object();
		OMUAction.id = id;
		OMUAction.action = action;
		this.toDoOMU.push(OMUAction);
	}
	document.delToDoOMU = function(id) {
		var j = this.toDoOMU.length;
		for (var i=0; i<j; i++) {
			if (this.toDoOMU[i].id == id) {
				this.toDoOMU.splice(i,1);
				break;
			}
		}
	}
	document.onmouseup = function(e) {
		var j = this.toDoOMU.length;
		for (var i=0; i<j; i++) this.toDoOMU[i].action(e);
		project.MouseManager.preventSelecting = false;
	}
	
	document.addToDoOMM('setMousePos', function(e) { project.MouseManager.setMousePos(e); });
}