var addHandler = (function()
{
	function ie(element, name, handler)
	{
		return (element.attachEvent(name, handler));
	}

	function ff(element, name, handler, capture)
	{
		return (element.addEventListener(name.replace(/^(on)?(.+)$/, "$2"), handler, capture ? true : false));
	}

	return (window["attachEvent"] ? ie : ff);
})();

var removeHandler = (function()
{
	function ie(element, name, handler)
	{
		return (element.detachEvent(name, handler));
	}

	function ff(element, name, handler, capture)
	{
		return (element.removeEventListener(name.replace(/^(on)?(.+)$/, "$2"), handler, capture ? true : false));
	}

	return (window["detachEvent"] ? ie : ff);
})();

function getAncestorOfType(node, type)
{
	type = type.toLowerCase();
	for (node = node.parentNode; node; node = node.parentNode)
		if (node.tagName.toLowerCase() == type)
			return (node);
	return (null);
}