/*
 * aspc.js - client-side Javascript routines for ASPC website
 * Written by Nathan Reed, October 2006
 */

/* Show or hide a particular element */
function showElement (elem)
{
	if (typeof(elem) == "string")
		elem = document.getElementById(elem);
	elem.style.display = '';
}

function hideElement (elem)
{
	if (typeof(elem) == "string")
		elem = document.getElementById(elem);
	elem.style.display = 'none';
}

/* Delay hiding an element for a short time */
function delayedHide (elem)
{
	if (typeof(elem) == "string")
		elem = document.getElementById(elem);
	elem.timeout = setTimeout(function () { hideElement(elem) }, 50);
}
function cancelHide (elem)
{
	if (typeof(elem) == "string")
		elem = document.getElementById(elem);
	clearTimeout(elem.timeout);
}

/*
 * The ubiquitous positioning functions,
 * based on code from www.quirksmode.org
 */
function getElementRect (elem)
{
	if (typeof(elem) == "string")
		elem = document.getElementById(elem);
	var rect = { x: elem.offsetLeft, y: elem.offsetTop,
		width: elem.offsetWidth, height: elem.offsetHeight }
	var cur = elem.offsetParent;
	while (cur != null)
	{
		rect.x += cur.offsetLeft;
		rect.y += cur.offsetTop;
		cur = cur.offsetParent;
	}
	return rect;
}

function getScrollOffset ()
{
	var pt = new Object;
	if (self.pageYOffset) // all except Explorer
	{
		pt.x = self.pageXOffset;
		pt.y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		pt.x = document.documentElement.scrollLeft;
		pt.y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		pt.x = document.body.scrollLeft;
		pt.y = document.body.scrollTop;
	}
	return pt;
}

function getEventPoint (e)
{
	var pt = new Object;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY)
	{
		pt.x = e.pageX;
		pt.y = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		pt.x = e.clientX + document.body.scrollLeft;
		pt.y = e.clientY + document.body.scrollTop;
	}
	return pt;
}
