/*
===============================================

	QueryStringToAssociativeArray
	
	Break the URL's query string into an associative array.

===============================================
*/
function QueryStringToAssociativeArray()
{
	var queryStringArray = new Array();
	var qs = (location.search.length > 0) ? location.search.substring(1) : '';
	if (qs.length > 0)
	{
		qsNameValuePairs = qs.split('&');
		var numPairs = qsNameValuePairs.length;
		for (var i = 0; i < numPairs; i++)
		{
			var pairParts = qsNameValuePairs[i].split('=');
			var name = pairParts[0];
			var value = pairParts[1];
			queryStringArray[name] = value;
		}
	}

	return queryStringArray;
}


/*
===============================================

	Delegate
	
	Allows the user to fire multiple event handlers
	when an event fires.

===============================================
*/
function Delegate( eventToDelegate )
{
	this.EventHandlers = new Array();
	this.Count = 0;
}

Delegate.prototype.Add = function(eventHandlerFunction)
{
	if (typeof (eventHandlerFunction) == "function")
	{
		this.EventHandlers[this.EventHandlers.length] = eventHandlerFunction;
		this.Count = this.EventHandlers.length;
	}
	else
		throw new Error("eventHandlerFunction must be a function");
}

Delegate.prototype.FireEvents = function()
{
	var numEventsToFire = this.EventHandlers.length;
	for (var x = 0; x < numEventsToFire; x++)
	{
		var eventHandlerToCall = this.EventHandlers[x];
		eventHandlerToCall();
	}
}


function GetCityLookupArray( cityDropDownList )
{
	var lookupArray = new Array();

	if (cityDropDownList && cityDropDownList.options && cityDropDownList.options.length && cityDropDownList.options.length > 0)
	{
		var numOptions = cityDropDownList.options.length;
		for (var i = 0; i < numOptions; i++)
		{
			var curOption = cityDropDownList.options[i];
			var text = curOption.text;
			var value = curOption.value;

			if( parseInt(value) > 0 )
				lookupArray[value] = text;
		}
	}

	lookupArray.GetCityName = function(cityId)
	{
		return this[cityId];
	}

	return lookupArray;
}


function SetCssClass(htmlElementObj, className)
{
	// See if the class already exists...
	var re_ClassNameExists = new RegExp("(^|[ ])(" + className + ")([ ]|$)");
	
	// If it doesn't... preserve the original (for later Reset) and add it.
	if (!re_ClassNameExists.test(htmlElementObj.className))
	{
		htmlElementObj.originalCssClass = htmlElementObj.className + '';
	
		if (htmlElementObj.className.length == 0)
			htmlElementObj.className = className;
		else
			htmlElementObj.className += " " + className;
	}
}


function ResetCssClass(htmlElementObj)
{
	if (typeof(htmlElementObj.originalCssClass) == "string")
	{
		htmlElementObj.className = htmlElementObj.originalCssClass;
	}
}


function Master_Page_Load()
{
	
}

//-------------------------------------------------------


// Set up the document
window.QueryString = QueryStringToAssociativeArray();
window.PageLoadEvents = new Delegate();
window.onload = function() { window.PageLoadEvents.FireEvents(); };

window.PageLoadEvents.Add(Master_Page_Load);

