var dhtml = (document.getElementById || document.all || document.layers)

function GetObjectRef(id)
{	if (document.getElementById)
	{	this.obj = document.getElementById(id)
		this.style = document.getElementById(id).style
	}
	else if (document.all)
	{	this.obj = document.all[id]
		this.style = document.all[id].style
	}
	else if (document.layers)
	{	this.obj = document.layers[id]
		this.style = document.layers[id]
	}
}

function ShowObject(evt, objectID)
{	var object = new GetObjectRef(objectID)
	MoveObjectToEvent(evt, object)
	object.style.visibility = "visible"
}

function HideObject(objectID)
{	var object = new GetObjectRef(objectID)
	object.style.visibility = "hidden"
}

function MoveObjectToEvent(evt, object)
{	var left = GetXCoord(evt)
	var top = GetYCoord(evt)
	var width = object.style.width
	var height = object.style.height
	
	if (left == null) //Could not locate mouse click coordinates, try and center object
	{	left = (GetAvailableWidth() - width) / 2
		top = (GetAvailableHeight() - height) / 2
	}
	
	//Ensure that object does not run off the screen
	if ((left + width) > GetAvailableWidth())
	{	left -= width
	}
	if ((top + height) > GetAvailableHeight())
	{	top -= height
	}
	
	object.style.left = left
	object.style.top = top
}

function GetParent(child)
{	if (child.parentElement)
	{	return child.parentElement
	}
	else if (child.parentNode)
	{	return child.parentNode
	}
}

function RemoveElement(element)
{	GetParent(element).removeChild(element)
}

function EventSrcElement(evt)
{	return (evt.srcElement) ? evt.srcElement : evt.target

	//evt.originalTarget
}

//Returns the x coordinate (left) of the click event passed
function GetXCoord(evt)
{	var x
	if (evt.clientX) {x = evt.clientX + document.body.scrollLeft}
	else if (evt.pageX) {x = e.pageX}
	else {x = null}
	return x
}

//Returns the y coordinate (top) of the click event passed
function GetYCoord(evt)
{	var y
	if (evt.clientY) {y = evt.clientY + document.body.scrollTop}
	else if (evt.pageY) {y = e.pageY}
	else {y = null}
	return y
}

//Returns the "available" screen width
function GetAvailableWidth()
{	var width
	if (document.body.offsetWidth)
	{width = document.body.offsetWidth}
	else if (window.innerWidth)
	{width = window.innerWidth}
	else
	{width = 800}
	return width
}

//Returns the "available" screen height
function GetAvailableHeight()
{	var height
	if (document.body.offsetHeight)
	{height = document.body.offsetHeight}
	else if (window.innerHeight)
	{height = window.innerHeight}
	else
	{height = 600}
	return height
}

function MouseOut(evt, element)
{	if (element.contains && evt.toElement)
	{	if (! element.contains(evt.toElement))
		{	return true
		}
	}
	else if (evt.relatedTarget)
	{	if (! ContainsDOM(element, evt.relatedTarget))
		{	return true
		}
	}
	return false
}


function CheckMouseLeave (element, evt)
{	if (element.contains && evt.toElement)
	{	if (! element.contains(evt.toElement))
		{	HideObject(element.id)
		}
	}
	else if (evt.relatedTarget)
	{	if (! ContainsDOM(element, evt.relatedTarget))
		{	HideObject(element.id)
		}
	}
}

function ContainsDOM (container, containee)
{	var isParent = false
	do
	{	if ((isParent = container == containee))
		break
		containee = containee.parentNode
	}
	while (containee != null)
	return isParent
}