function addLoadListener(fn)
{
	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener('load', fn, false);
		return;
	}
	if (typeof document.addEventListener != 'undefined')
	{
		document.addEventListener('load', fn, false);
		return;
	}
	if (typeof window.attachEvent != 'undefined')
	{
		window.attachEvent('onload', fn);
		return;
	}
	var oldfn = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = fn;
		return;
	}
	window.onload = function()
	{
		oldfn();
		fn();
	}
} // js::addLoadListener()

function addUnloadListener(fn)
{
	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener('unload', fn, false);
		return;
	}
	if (typeof document.addEventListener != 'undefined')
	{
		document.addEventListener('unload', fn, false);
		return;
	}
	if (typeof window.attachEvent != 'undefined')
	{
		window.attachEvent('onunload', fn);
		return;
	}
	var oldfn = window.onunload;
	if (typeof window.onunload != 'function')
	{
		window.onunload = fn;
		return;
	}
	window.onunload = function()
	{
		oldfn();
		fn();
	}
} // js::addUnloadListener()

function preloadImage(arg)
{
	if (document.images)
	{
		if (!web_root)
		{
			var web_root = '';
		}
		rslt = new Image();
		rslt.src = web_root + arg;
		return rslt;
	}
} // js::preloadImage()

function changeImageSources()
{
	if (document.images && (preloadFlag == true))
	{   
		for (var i=0; i<changeImageSources.arguments.length; i+=2)
		{
			var oldimg = document.getElementById(changeImageSources.arguments[i]);
			if (window.web_root)
			{
				oldimg.src = web_root+changeImageSources.arguments[i+1];
			}
			else
			{
				alert(changeImageSources.arguments[i+1]);
				oldimg.src = changeImageSources.arguments[i+1];
			}
		}
	}
} // js::changeImageSources()

var preloadFlag = false; // lets the changeImageSources function know when
	// swappable images have been preloaded

// one time use during onload
// To take advantage of this function, load imagesToPreload with relative
//  URLs to images
function preloadImages()
{
	if (document.images && window.imagesToPreload)
	{
		for (var i = 0; i < imagesToPreload.length; $i++)
		{
			var preloadedImage = preloadImage(imagesToPreload[i]);
		}
	}
	preloadFlag = true;
} // js::preloadImages()

// one time use during onload
function externalLinks()
{
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++)
	{
		var anchor = anchors[i];
		if (anchor.getAttribute("href") &&
				anchor.getAttribute("rel") == "external")
		{
			anchor.target = "_blank";
		}
	}
} // js::externalLinks()

function newwindow(url, target, width, height)
{
	window.open(url,target,'width='+width+',height='+height+',resizable=yes,status=no,menubar=no,scrollbars=yes,directories=no,location=no,left=25,top=25,screenX=25,screenY=25'); 
} 

addLoadListener(preloadImages);
addLoadListener(externalLinks);