function QueryString(key)
{
	var value = null;
	for (var i=0;i<QueryString.keys.length;i++)
	{
		if (QueryString.keys[i]==key)
		{
			value = QueryString.values[i];
			break;
		}
	}
	return value;
}
QueryString.keys = new Array();
QueryString.values = new Array();


/**
 * Parse both the query string and hash variables.
 * Priority: # variables overwrite the ? variables..
 */
function QueryString_Parse()
{
    // if we have query variables, parse them.
    if (window.location.search.length > 0) {
	    var query = window.location.search.substring(1);
    	QueryString_ParseHelper(query);
    }
    // if we have hash variables, parse them.
    if (window.location.hash.length > 0) {
	    var query = window.location.hash.substring(1);
	    QueryString_ParseHelper(query);
    }
}

function QueryString_ParseHelper(query)
{
	var pairs = query.split("&");
	var keyExists = false;
	
	for (var i=0;i<pairs.length;i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos >= 0)
		{
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);

            // do we already have this key?			
        	for (var j=0;j<QueryString.keys.length;j++)
	        {
	            // if we already have the key, update the associated value
        		if (QueryString.keys[j]==argname)
		        {
        			QueryString.values[j] = value;
        			keyExists = true;
        			break;
        		}
        	}
        	
        	// if we did not find the key, we need to add it to the end of the list..
        	if (keyExists == false) 
        	{
			    QueryString.keys[QueryString.keys.length] = argname;
    			QueryString.values[QueryString.values.length] = value;		
        	} else 
        	{
        	    keyExists = false;
        	}
	
		}
	}
}
QueryString_Parse();


/**
 * Update the passed keys and values in the hash of the querystring.
 */
function QueryString_UpdateHash(hash)
{
}
