function Console(element, clientPosId)
{
    this.Control = document.getElementById(element);
	this.ClientPos = document.getElementById(clientPosId);
	var clientPosition = this.ClientPos.value;
	if (clientPosition != "")
	{
		var left = clientPosition.split(",")[0];
		if (left != "")
		{
			this.Control.style.left = parseInt(left);
		}
		var top = clientPosition.split(",")[1];
		if (top != "")
		{
			this.Control.style.top = parseInt(top);	
		}
	}
	this.OffsetX = 0;
	this.OffsetY = 0;
	if (this.Control != null )
	{
		var console = this;
		console.MouseDownHandler = function(e) {console.MouseDown(e);};
		if (document.all && this.Control.attachEvent) 
		{	
			this.Control.attachEvent ("onmousedown", this.MouseDownHandler);
		} 
		else if (document.addEventListener)
		{
            this.Control.style.cursor = "";
            //this.Control.addEventListener("mousedown", this.MouseDownHandler, false);
		}
	}
}

Console.prototype.MouseDown = function(e)
{
	if (!e)
		var e = event;
	if (e.srcElement.tagName == "A")
	{
		return;
	}
	this.OffsetX = (e.offsetX == null)? e.layerX : e.offsetX;
	this.OffsetY = (e.offsetY == null)? e.layerY : e.offsetY;
	this.AttachEventHandlers();
}

Console.prototype.AttachEventHandlers = function()
{
	var console = this;
	
	this.DragHandler = function(e){ console.ConsoleDrag(e);};
	this.DragEndHandler = function(e){ console.ConsoleDragEnd();};
	
	if (document.all && document.body.attachEvent) 
	{	
		document.body.setCapture();
		document.body.attachEvent ("onmousemove", this.DragHandler);
		document.body.attachEvent ("onmouseup", this.DragEndHandler);
	} 
	else if (document.addEventListener)
	{
		//document.addEventListener("mousemove", this.DragHandler, false);
		//document.addEventListener("mouseup", this.DragEndHandler, false);			
	}
}

Console.prototype.ConsoleDragEnd = function()
{
	if (document.all && document.body.detachEvent)
	{
		document.body.detachEvent ("onmousemove", this.DragHandler);
		document.body.detachEvent ("onmouseup", this.DragEndHandler);
		document.body.releaseCapture();
	}
	else if (document.removeEventListener)
	{  
		//document.removeEventListener("mousemove", this.DragHandler, false);
		//document.removeEventListener("mouseup", this.DragEndHandler, false);
	}
	this.ClientPos.value = this.Control.style.left + "," + this.Control.style.top;
}

Console.prototype.ConsoleDrag = function(e)
{
	this.ConsoleMove(e);							
	e.cancelBubble = true;
	return false;
}

Console.prototype.ConsoleMove = function (e)
{	
	var ConsoleX = this.OffsetX;
	var ConsoleY = this.OffsetY;

	var el = this.Control;

	var left = 0;
	var top = 0;

	if (document.all)
	{   
		left = e.clientX * 1 + document.body.scrollLeft - ConsoleX;
		top = e.clientY * 1 + document.body.scrollTop - ConsoleY;
	}
	else
	{       
		left = e.pageX * 1 - ConsoleX;
		top = e.pageY * 1 - ConsoleY;
	}
	
	if (left < 0)
	{
		left = 0;
	}
		
	if (top < 0)
	{
		top = 0;
	}
	
	el.style.left = left + "px";
	el.style.top = top + "px";	
}


