// Simple class implementing mouse motions
//

function MouseNavigation ()
{
var MouseX = 0;
var MouseY = 0;
var AnchorX = 0;
var AnchorY = 0;
var OffsetX = 0;
var OffsetY = 0;
var Dragging = false;
var Cursor = null;
} // MouseNavigation

MouseNavigation.prototype.getAbsLeftTop = function (elem)
{
 	var prnt = elem.offsetParent;
	var absLeft = elem.offsetLeft;
	var absTop = elem.offsetTop;
	while (prnt)
	{
		absLeft += prnt.offsetLeft;
		absTop += prnt.offsetTop;
		lastparent = prnt;
		prnt = prnt.offsetParent;
	}
	var out = [absLeft, absTop];
	return out;
} // getAbsLeftTop
	
MouseNavigation.prototype.initEvent = function (doc)
{
	if (doc.captureEvents)
	{
		doc.captureEvents (Event.MOUSEMOVE |
			Event.MOUSEUP |
			Event.MOUSEDOWN );
	}
	this.doc = doc;
	doc.onmousemove = this.mouseMove (this);
	doc.onmousedown = this.mouseDown (this);
	doc.onmouseup = this.mouseUp (this);
	this.Cursor = doc.body.style;
} // initEvent

MouseNavigation.prototype.getMouseXY = function (self, evt)
{ 
	if (window.event)
	{
		self.MouseX = window.event.clientX;
		self.MouseY = window.event.clientY;
	}
	else
	{
		self.MouseX = evt.pageX;
		self.MouseY = evt.pageY;
	}
} // getMouseXY

MouseNavigation.prototype.mouseDown = function (self)
{
	return function (e) 
	{
	self.getMouseXY (self, e);
	self.AnchorX = self.MouseX;
	self.AnchorY = self.MouseY;
	self.Dragging = true;
	self.doc.onmousemove = self.mouseDrag (self);
	self.Cursor.cursor = 'move';
	return false;
}} // mouseDown

MouseNavigation.prototype.mouseMove = function (self)
{
	return function (e) 
	{
	var prnt = parent.document;

	self.getMouseXY (self, e);
	var x = self.MouseX + self.OffsetX;
	var y = self.MouseY + self.OffsetY;

	return false;
}} // mouseMove

MouseNavigation.prototype.mouseUp = function (self)
{
	return function (e) 
	{
	self.Dragging = false;
	self.doc.onmousemove = self.mouseMove (self);
	self.Cursor.cursor = 'default';
	return false;
}} // mouseUp

MouseNavigation.prototype.mouseDrag = function (self)
{
	return function (e) 
	{
	var prnt = parent.document;

	self.getMouseXY (self, e);
	var x = self.MouseX;
	var y = self.MouseY;

	self.AnchorX = x;
	self.AnchorY = y;
	return false;
}} // mouseDrag

