function onLoad()
{
	// call the page's local onPageLoad() passing the focus ID if any
	//
	var focusID = getById("ctl00_FocusIDHidden");
	if (!focusID || !focusID.value)
		call('onPageLoad()');
	else
	{
		setFocusByID(focusID.value);
		call("onPageLoad('" + focusID.value + "')");
		focusID.value = "";
	}
}

function onUnload()
{    
	call('onPageUnload()');
}

function getEvent(evt)
{
	return (evt ? evt : (window.event ? window.event : null));
}

function getTarget(evt)
{
	return (evt.target ? evt.target : (evt.srcElement ? evt.srcElement : null));
}

function keyCode(evt)
{
	return (evt.charCode ? evt.charCode : (evt.which ? evt.which : evt.keyCode));
}

function isEnter(key)
{
	return (key == 13);
}

function isDigit(key)
{
	return ((key >= 48) && (key <= 57));
}

function eatEnterKey(evt)
{
	evt = getEvent(evt);
	if (evt && isEnter(keyCode(evt)))
	{
		cancelEvent(evt);
		return true;
	}
	return false;
}

function cancelEvent(evt)	// cancels an event & prevents further event bubbling
{
	if (evt)
	{
		if (evt.preventDefault)
		{
			evt.preventDefault();
			evt.stopPropagation();
		}
		else	// IE
		{
			evt.returnValue = false;
			evt.cancelBubble = true;
		}
	}
	return false;
}

function click(ctrl)
{
	if (!ctrl)
		return;

	if (isString(ctrl))
	{
		ctrl = getById(ctrl);
		if (!ctrl)
			return;
	}

	if (ctrl.click)
		ctrl.click();
	else
	{
		var evt = document.createEvent('MouseEvents');
		evt.initEvent('click', true, true);
		ctrl.dispatchEvent(evt);
	}
}

function digitFilter(evt)
{
	evt = getEvent(evt);
	if (!evt)
		return true;

	if (!isIE() && isNavigation(evt.keyCode))
		return true;

	var key = keyCode(evt);
	var cancel = (evt.shiftKey || !isDigit(key));
	return (cancel ? cancelEvent(evt) : true);
}

function isNavigation(key)
{
	switch (key)
	{
		case 9:   // tab
		case 16:  // shift
		case 46:  // Delete
		case 8:   // Backspace
		case 33:  // page up
		case 34:  // page down
		case 35:  // end
		case 36:  // home
		case 37:  // up
		case 38:  // right
		case 39:  // down
		case 40:  // left
			return true;
		default:
			return false;
	}
}