//
// Javascript Common Library
//


//
// Add Load Listener
//

// Based on code from "The Javascript Anthology"

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




//
// Attach Event Listener
//
// Allows us to use event listeners, regardless of what
// browser is being used.
//
// Based on code from "The Javascript Anthology"

function attachEventListener(target, eventType, functionRef, capture)
{
	if(typeof target.addEventListener != "undefined")
	{
		target.addEventListener(eventType, functionRef, capture);
	}
	else if(typeof target.attachEvent != "undefined")
	{
		target.attachEvent("on" + eventType, functionRef);
	}
	else
	{
		eventType = "on" + eventType;
		
		if(typeof target[eventType] == "function")
		{
			var oldListener = target[eventType];
			
			target[eventType] = function()
			{
				oldListener();
				
				return functionRef;
			};
		}
		else
		{
			target[eventType] = functionRef;
		}
	}
}


//
// Prevent Default Action
//

function stopDefaultAction(event)
{
	event.returnValue = false;
	
	if(typeof event.preventDefault != "undefined")
	{
		event.preventDefault();
	}
}



//
// Detatch an event listener
//

function detachEventListener(target, eventType, functionRef, capture)
{
	if(typeof target.removeEventListener != "undefined")
	{
		target.removeEventListener(eventType, functionRef, capture);
	}
	else if(typeof target.detachEvent != "undefined")
	{
		target.detachEvent("on" + eventType, functionRef);
	}
	else
	{
		target["on" + eventType] = null;
	}
}


