QueryString = function (url)
{
	this.keyValuePairs = new Array ();
	
	var keyValueObject = null; 
	var searchPart = null;
	if (url)
	{
		var questionIndex = url.indexOf ("?");
		if (questionIndex >= 0)
		{
			searchPart = url.substring (questionIndex);
		}
	}
	else
	{
		searchPart = document.location.search;
	}
	
	if (searchPart)
	{
		var pairs = searchPart.substring (1).split ("&");
		for (var pairIndex = 0; pairIndex < pairs.length; pairIndex++)
		{
			var equalIndex = pairs [pairIndex].indexOf ("=");
			if (equalIndex >= 0)
			{
				keyValueObject = new Object ();
				keyValueObject.key = pairs [pairIndex].substring (0, equalIndex);
				
				if (pairs [pairIndex].length > equalIndex + 1)
				{
					keyValueObject.value = pairs [pairIndex].substring (equalIndex + 1);
				}
				else
				{
					keyValueObject.value = "";
				}

				this.keyValuePairs.push (keyValueObject);
			}
			else if (pairs [pairIndex].length > 0)
			{
				keyValueObject = new Object ();
				keyValueObject.key = pairs [pairIndex];
				keyValueObject.value = null;

				this.keyValuePairs.push (keyValueObject);
			}
		}
	}
	
	this.get = function (key)
	{
		var value = null;
		for (var keyValuePairsIndex = 0; keyValuePairsIndex < this.keyValuePairs.length; keyValuePairsIndex++)
		{
			if (this.keyValuePairs [keyValuePairsIndex].key == key)
			{
				value = this.keyValuePairs [keyValuePairsIndex].value;
				break;
			}
		}
		
		return value;
	};

	this.getMultiple = function (key)
	{
		var values = new Array ();
		for (var keyValuePairsIndex = 0; keyValuePairsIndex < this.keyValuePairs.length; keyValuePairsIndex++)
		{
			if (this.keyValuePairs [keyValuePairsIndex].key == key)
			{
				keyValueObject = new Object ();
				keyValueObject.key = this.keyValuePairs [keyValuePairsIndex].key;
				keyValueObject.value = this.keyValuePairs [keyValuePairsIndex].value;
				values.push (keyValueObject);
			}
		}
		
		return values;
	};
	
	this.set = function (key, value)
	{
		keyValueObject = new Object ();
		keyValueObject.key = key;
		keyValueObject.value = value;
		this.keyValuePairs.push (keyValueObject);
	};
}

QueryString.prototype.getQueryString = function (arrayOfKeys)
{
	var queryString = "";
	for (var keyValuePairsIndex = 0; keyValuePairsIndex < this.keyValuePairs.length; keyValuePairsIndex++)
	{
		for (var arrayOfKeysIndex = 0; arrayOfKeysIndex < arrayOfKeys.length; arrayOfKeysIndex++)
		{
			if (this.keyValuePairs [keyValuePairsIndex].key == arrayOfKeys [arrayOfKeysIndex])
			{
				if (queryString.length > 0)
				{
					queryString += "&";
				}
				
				queryString += this.keyValuePairs [keyValuePairsIndex].key;
				
				if (this.keyValuePairs [keyValuePairsIndex].value != null)
				{
					queryString += "=" + this.keyValuePairs [keyValuePairsIndex].value;
				}
			}
		}
	}
	
	return queryString;
}
