function attachEventListener(target, eventType, functionRef, capture)
{
	if (typeof target.addEventListener != "undefined")
	{
		target.addEventListener(eventType, functionRef, capture);	
	}
	else if (typeof target.attachEvent != "undefined")
	{
		var functionString = eventType + functionRef;
		target["e" + functionString] = functionRef;
		
		target[functionString] = function(event)
		{
			if (typeof event == "undefined")
			{
				event = window.event;
			}
			target["e" + functionString](event);
		};
		
		target.attachEvent("on" + eventType, target[functionString]);
	}
	else
	{
		eventType = "on" + eventType;
		
		if (typeof target[eventType] == "function")
		{
			var oldListener = target[eventType];
			
			target[eventType] = function()
			{
				oldListener();
				
				return functionRef();
			};
		}
		else
		{
			target[eventType] = functionRef;
		}
	}
}

function detachEventListener(target, eventType, functionRef, capture)
{
	if (typeof target.removeEventListener != "undefined")
	{
		target.removeEventListener(eventType, functionRef, capture);
	}
	else if (typeof target.detachEvent != "undefined")
	{
		var functionString = eventType + functionRef;
		
		target.detachEvent("on" + eventType, target[functionString]);
		
		target["e" + functionString] = null;
		target[functionString] = null;
	}
	else
	{
		target["on" + eventType] = null;
	}
}

function stopDefaultAction(event)
{
	event.returnValue = false;
	
	if (typeof event.preventDefault != "undefined")
	{
		event.preventDefault();
	}
}

function stopEvent(event)
{
	if (typeof event.stopPropagation != "undefined")
	{
		event.stopPropagation();
	}
	else
	{
		event.cancelBubble = true;
	}
}

function engage(event)
{
	if (typeof event == "undefined")
	{
		event = window.event;
	}
	
	alert("She canna take no more cap'n!");
	
	stopEvent(event);
	
	return true;
}

function getEventTarget(event)
{
	var targetElement = null;
	
	if (typeof event.target != "undefined")
	{
		targetElement = event.target;
	}
	else 
	{
		targetElement = event.srcElement;
	}
	
	while (targetElement.nodeType == 3 && targetElement.parentNode != null)
	{
		targetElement = targetElement.parentNode;
	}
	
	return targetElement;
}

function addLoadListener(fn)
{
    try
    {

	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();
			};
		}
	}
	
    }
    catch (exc)
    {
    }
}