// Prerequisites /////////////
// vector.js
/////////////////////////////

var includedFiles_eventManager = true;

var onDomReady_functions = new vector();
var onDomReady_eventRegistered = false

var domReady = false

//Adds a function to a list to be executed when dom is ready
function onDomReady(functionToCall)
{
	if (domReady == true)
	{
		functionToCall();
	}
	else
	{
		//Add function to be run to a vector
		onDomReady_functions.add(functionToCall);
	
		//If this is the first function to be added, register a function to run when dom is ready
		if (onDomReady_eventRegistered == false)
		{
			if (document.addEventListener)
			{
				document.addEventListener("DOMContentLoaded", onDomReady_run, false);
			}
			else
			{
				if (document.all && !window.opera)
				{
					document.write('<script src="//[]" type="text/javascript" id="contentloadtag" defer="defer"><\/script>')
					var contentloadtag=document.getElementById("contentloadtag")
					contentloadtag.onreadystatechange = function()
					{
						if (this.readyState=="complete")
						{
							setTimeout("onDomReady_run()", 0);
						}
					}
				}
				else
				{
					window.onload = function()
					{
						setTimeout("onDomReady_run()", 0);
					}
				}
			}
			//Dont register the run event again
			onDomReady_eventRegistered = true;
		}
	}
	
}

//Called when dom is ready // runs the list of functions
function onDomReady_run()
{	
	if (domReady == false)
	{
		for (var i = 0; i < onDomReady_functions.size(); i++)
		{		
			onDomReady_functions[i]();
		}
		domReady = true;
	}
}

//Attaches an event listener to an object
function addEvent(object, eventName, functionToCall, bubble)
{
	eventName = String(eventName).toLowerCase();
	
	//get firefox/ie versions of event name
	if (String(eventName).substring(0,2) == "on")
	{
		var eventName_addEventListener = String(eventName).substring(2,eventName.length)
		var eventName_attachEvent = eventName;
	}
	else
	{
		var eventName_addEventListener = eventName;
		var eventName_attachEvent = "on" + eventName;
	}

	// Attach the event // firefox // netscape // safari
	if (object.addEventListener)
	{
		object.addEventListener(eventName_addEventListener, functionToCall, bubble);
	}
	else
	{
		//ie
		if (object.attachEvent)
		{
			object.attachEvent(eventName_attachEvent, functionToCall);
		}
		else
		{
			//legacy
			switch(eventName_addEventListener)
			{
				case 'load':
					object.onload = functionToCall;
					break;
				case 'mouseover':
					object.onmouseover = functionToCall;
					break;
				case 'mousemove':
					object.onmousemove = functionToCall;
					break;
				case 'mouseout':
					object.onmouseout = functionToCall;
					break;
				case 'resize':
					object.onresize = functionToCall;
					break;
				case 'unload':
					object.onunload = functionToCall;
					break;
			}
		}
	}	
}

function getEventTarget(eventObject, targetType)
{	
	var tempObject;
	
	switch (targetType)
	{
	case 'target':
		if (eventObject.target) { tempObject = eventObject.target;}
		else { tempObject = eventObject.srcElement;}
		break;
		
	case 'currentTarget':
		if (eventObject.currentTarget) { tempObject = eventObject.currentTarget;}
		else { tempObject = eventObject.srcElement;}
		break;
		
	case 'caller':
		if (eventObject.currentTarget){tempObject = eventObject.currentTarget;}
		else
		{
		if (window.event) {tempObject = window.event.srcElement;}
		else { tempObject = this;}
		}
		alert (tempObject);
		break;
		
	default:
		tempObject = null;
		break;
	}
	
	//safari bug
	if (tempObject.nodeType == 3)
	{
		tempObject = tempObject.parentNode;
	}
	return tempObject;
}