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);
}

window["preload"] = (function()
{
	if (/MSIE 6\./.test(navigator.appVersion))
	{
		try
		{
		  document.execCommand("BackgroundImageCache", false, true);
		}
		catch (error)
		{
		}
	}

	function asyncload(img, src)
	{
		return (function()
		{
			img.setAttribute("src", src, 0);
		});
	}

	return (function(src)
	{
		var images = window["preload"]["images"];
		var img = images[images.length] = document.createElement("img");

		if (window["preload"]["async"])
			setTimeout(asyncload(img, src), 1);
		else
			img.setAttribute("src", src, 0);
	});
})();

window["preload"]["images"] = [];
window["preload"]["async"] = true;