﻿//Query String parser
//  Jared Parnell

//Find the item value
function getQueryString(arrayList,key) 
{            
    //Search the query string for our key
    for (var i=0;i<arrayList.length;i++)
    {
        var thisPair=arrayList[i].split("=");
        if(thisPair[0] == key)
            return thisPair[1];
    }
    
    //Nothing found return empty string
    return "";
}

//set the item value
function setQueryString(arrayList,key,value) 
{            
    //Search the query string for our key
    for (var i=0;i<arrayList.length;i++)
    {
        var thisPair=arrayList[i].split("=");
        if(thisPair[0] == key)
        {
            arrayList[i] =  key + "=" + value;
            return arrayList;
        }   
    }
    
    //Nothing found make the string and key
    arrayList[arrayList.length] = key + "=" + value;
    return arrayList;
}

//Parse the string
function ParseQueryString()
{
    return ParseQueryString(window.location.search.substring(1));
} 

//Parse the string
function ParseQueryString(query)
{
     var pairs = query.split("&");
     var output = new Array();
     var apair;
     var iCount = 0;
     for (var i=0;i<pairs.length;i++)
     {
        
        //Get the pair split
        apair=pairs[i].split("=");
        
        //Save only if valid!
        if((pairs[i] != null) &&(pairs[i] != "") && (apair[0] != "") && (apair[0] != null))
        {
            output[iCount] = pairs[i];
            iCount++;   
        }
     }
     return output;
} 

//Build Query String
function BuildQueryString(arrayList)
{
    var queryString = "";
    for (var i=0;i<arrayList.length;i++)
    {
        var thisPair=arrayList[i].split("=");
        if(thisPair[1] != "")
        {
            if (queryString != "") queryString += "&";
            queryString = queryString + arrayList[i]
        }
    }
    return queryString;
}

///////////////////////////////////////////////////////////////////
// Name: ModifyQueryStringAndRedirect
// Notes: Modifies query string with new name and value and redirects to new url
///////////////////////////////////////////////////////////////////
function ModifyQueryStringAndRedirect(name, value)
{
	var url = ModifyCurrentQueryString(name, value);
	window.location.href = url;
}

///////////////////////////////////////////////////////////////////
// Name: ModifyCurrentQueryString
// Notes: Modifies current query string with new name and value and returns new url
///////////////////////////////////////////////////////////////////
function ModifyCurrentQueryString(name, value)
{
	return ModifyQueryString(window.location.href, name, value);
}

///////////////////////////////////////////////////////////////////
// Name: ModifyQueryString
// Notes: Modifies query string with new name and value and returns new url
///////////////////////////////////////////////////////////////////
function ModifyQueryString(original, name, value)
{
    var noAnchor = original.split('#');
	var url = noAnchor[0].split('?');   
	var baseUrl = url[0];
	
	if( url.length == 1 )
	{
	    if( value != undefined && value != "" )
	        return baseUrl + "?" + name + "=" + value;
        else
            return baseUrl;
    }

	var queryString = url[1];
	var queryStringParams = queryString.split('&');
	var newQueryString = new String();

	for( var i = 0; i < queryStringParams.length; i++ )
	{
		var nameValue = queryStringParams[i].split('=');
		if( nameValue[0] != name )
		{
			if( newQueryString != '' ) newQueryString += '&';
			newQueryString += nameValue[0] + '=' + nameValue[1];
		}
	}

	var newUrl = new String();
	if( newQueryString != '' )
	{
	    if( value != undefined && value != "" )
		    newUrl = baseUrl + '?' + newQueryString + '&' + name + '=' + value;
        else
            newUrl = baseUrl + '?' + newQueryString;
	}
	else
	{
	    if( value != undefined && value != "" )
		    newUrl = baseUrl + '?' + name + '=' + value;
        else
            newUrl = baseUrl;
	}

	return newUrl;
}
