var browser = "unknown";

if (document.all)
	browser="ie";
else if (document.layers)
	browser="nn";
else if (document.getElementById)
	browser="mozilla";
else
	browser="unknown";

var obj = "";
var ElName;
var objProps = new Array();
var startMCoords = new Array();


if (browser != "ie" && browser != "mozilla")
{
	document.captureEvents(Event.MOUSEMOVE);
	document.captureEvents(Event.CLICK);
	document.captureEvents(Event.MOUSEDOWN);
	document.captureEvents(Event.MOUSEUP);
	document.captureEvents(Event.SCROLL);
}

function eventMMove(name)
{
	ElName = name;
	document.onmousemove = MouseCoords;
}

function eventMClick()
{
	document.onclick = getHeight;
}

function eventMDown()
{
	document.onmousedown = startDrag;
}


function MouseCoords(e)
{
	var coords = new Array();
	var posX = 0;
	var posY = 0;

	var obj = getObject(ElName);
	
	coords[0] = 0;
	coords[1] = 0;

	var OutTargetX = 10;
	var OutTargetY = 32;

	// Getting client width
	if (document && document.body && document.body.clientWidth)
		var clientWidth = document.body.clientWidth;
	
	// If event is not defined
	if (!e)
		e = window.event;

	if (document.body.scrollLeft || document.body.scrollTop)
	{
		var scrollX = document.body.scrollLeft;
		var scrollY = document.body.scrollTop;
	}
	else if (browser == "mozilla")
	{
		var scrollX = e.clientLeft;
		var scrollY = e.clientTop;
	}
	else if (document.body.parentElement.clientLeft && document.body.parentElement)
	{
		var scrollX = document.body.parentElement.scrollLeft;
		var scrollY = document.body.parentElement.scrollTop;
	}

	if (browser != "ie")
	{
		if (e.pageX || e.pageY)
		{
			posX = e.pageX;
			posY = e.pageY;
			
			if (posX + 300 > clientWidth)
			{
				posX = posX - 50;
			}
		}
		else if (e.clientX || e.clientY)
		{
			posX = e.clientX;
			posY = e.clientY;
		}
		else
		{
			posX = 0;
			posY = 0;
		}
	}
	else
	{
		if (event && event.clientX)
		{
			posX = event.clientX + scrollX;
			posY = event.clientY + scrollY;
		}
	}

	var coordsWOPx = new Array();

	coordsWOPx[0] = posX;
	coordsWOPx[1] = posY;

	posX = posX + OutTargetX;
	posY = posY + OutTargetY;
	
	coords[0] = posX + "px";
	coords[1] = posY + "px";
	
	changeProp(ElName, coords[0], "left");
	changeProp(ElName, coords[1], "top");

	return coordsWOPx;
}

function changeProp(name, value, prop)
{
	if (browser == "ie")
	{
		eval("document.all."+name+".style."+prop+" = '"+value+"';");
	}
	else
	{
		eval("document.getElementById('"+name+"').style."+prop+" = '"+value+"';");

	}
}

function getHeight(e)
{
	var coords = new Array();
	var posX = 0;
	var posY = 0;

	coords[0] = 0;
	coords[1] = 0;

	// If event is not defined
	if (!e)
		e = window.event;

	if (document.body.scrollLeft || document.body.scrollTop)
	{
		var scrollX = document.body.scrollLeft;
		var scrollY = document.body.scrollTop;
	}
	else if (browser == "mozilla")
	{
		var scrollX = e.clientLeft;
		var scrollY = e.clientTop;
	}
	else if (document.body.parentElement.clientLeft && document.body.parentElement)
	{
		var scrollX = document.body.parentElement.scrollLeft;
		var scrollY = document.body.parentElement.scrollTop;
	}

	if (browser != "ie")
	{
		/*if (e.pageX || e.pageY)
		{
			posX = e.pageX;
			posY = e.pageY;
		}
		else if (e.clientX || e.clientY)
		{
			posX = e.clientX;
			posY = e.clientY;
		}
		else
		{
			posX = 1;
			posY = 100;
		}*/
		posY = e.layerY;
	}
	else
	{
		if (event.clientX)
		{
			posX = event.clientX + scrollX;
			posY = event.clientY + scrollY;
		}
	}

	coords[0] = posX + "px";
	coords[1] = posY + "px";

	changeProp("q", coords[1], "height");
	changeProp("q", "", "display");
}

function catchThis(name)
{
	if (name)
	{
		obj = name;
		return true;
		setRemovable();
	}
	else
		return false;
}

function startDrag(e)
{
	ElName = obj.id;
	startMCoords = MouseCoords(e);
	objProps[0] = obj.style.pixelLeft;
	objProps[1] = obj.style.pixelTop;
	changeProp(ElName, "0.6", "opacity");
	changeProp(ElName, "alpha(opacity = 60)", "filter");


	document.onmousemove = doDrag;
	document.onmouseup = terminateDrag;
	document.onscroll = addScrolling;
}

function doDrag(e)
{
	event = e;
	var MCoords = new Array();
	var Left, Top;

	MCoords = MouseCoords(e);

	if (MCoords[0] != startMCoords[0])
	{
		Left = objProps[0] + (MCoords[0] - startMCoords[0]);
		if (Left < 0)
			Left = 0;
		
		obj.style.left = Left;
	}

	if (MCoords[1] != startMCoords[1])
	{
		Top = objProps[1] + (MCoords[1] - startMCoords[1]);
		if (Top < 0)
			Top = 0;

		obj.style.top = Top;
	}

	return true;
}

function terminateDrag()
{
	document.onmousemove = null;
	document.onmouseup = null;
	document.onscroll = null;
	obj = null;
	changeProp(ElName, "1.0", "opacity");
	changeProp(ElName, "alpha(opacity = 100)", "filter");
	return true;
}

function addScrolling(e)
{
	ElName = obj.id;

	var MCoords = new Array();
	var Left, Top;

	MCoords = MouseCoords(event);

	Left = objProps[0] + (MCoords[0] - startMCoords[0]);
	if (Left < 0)
		Left = 0;

	obj.style.left = Left;

	Top = objProps[1] + (MCoords[1] - startMCoords[1]);
	if (Top < 0)
		Top = 0;

	obj.style.top = Top;

	document.onmousemove = doDrag;
	document.onmouseup = terminateDrag;
	document.onscroll = addScrolling;
}

function setRemovable()
{
	changeProp(obj.id, "absolute", "position");
}