function HTMLElementFloater()
{
}

HTMLElementFloater.getElementWidth = function(o)
{
	if (typeof o.innerWidth != 'undefined')
		return o.innerWidth;
	else
		return o.clientWidth;
}

HTMLElementFloater.getElementHeight = function(o)
{
	if (typeof o.innerHeight != 'undefined')
		return o.innerHeight;
	else
		return o.clientHeight;
}

HTMLElementFloater.floatElementWithMouse = function(e, elementIDString)
{
	
	if (!document.getElementById(elementIDString))
		return true;
	
	var element = document.getElementById(elementIDString);
	
	// must be visible to get dimensions
	element.style.display = "";
	
	var w = HTMLElementFloater.getElementWidth(element);
	var h = HTMLElementFloater.getElementHeight(element);
	
	if (document.all) 
	{
		x = window.event.x + 10;
		y = window.event.y - h - 10;
	}
	else
	{
		x = e.pageX + 10;
		y = e.pageY - h - 10;
	}
	
	if (y < 0)
		y = 0;
	
	element.style.left = x + "px";
	element.style.top = y + "px";
	
	HTMLElementFloater.elementIDString = elementIDString;
	HTMLElementFloater.elementWidth = w;
	HTMLElementFloater.elementHeight = h;
	
	document.onmousemove = HTMLElementFloater.doFloat;
	
}

HTMLElementFloater.doFloat = function(e)
{
	var x, y;
	
	if (!document.getElementById(HTMLElementFloater.elementIDString))
		return true;
		
	var element = document.getElementById(HTMLElementFloater.elementIDString);
	
	if (document.all) 
	{
		x = window.event.x + 10;
		y = window.event.y - HTMLElementFloater.elementHeight - 10;
	}
	else
	{
		x = e.pageX + 10;
		y = e.pageY - HTMLElementFloater.elementHeight - 10;
	}
	
	//if (y < 0)
	//	y = 0;
	
	element.style.left = x + "px";
	element.style.top = y + "px";

}

HTMLElementFloater.unfloatElement = function(b)
{
	// if hiding un floated element
	if (b)
		if (document.getElementById(HTMLElementFloater.elementIDString))
			document.getElementById(HTMLElementFloater.elementIDString).style.display = "none";
		
	document.onmousemove = null;
}
