function urlQueryStringReplace(url, key, value)
{
	// if not query string
	if (url.indexOf("?") == -1 && value != null)
	{
		url += "?" + key + "=" + value;
	}
	else
	{
		// if key is there
		if (url.indexOf("?" + key + "=") != -1 || url.indexOf("&" + key + "=") != -1)
		{
			urlPage = url.substr(0, url.indexOf("?"));
			queryString = url.substr(url.indexOf("?") + 1);
			keys = queryString.split("&");
			
			// Loop through keys
			for (var i = 0; i < keys.length; i++)
			{
				// if key to change
				if (keys[i].indexOf(key + "=") != -1)
				{
					if (value != null)
					{
						// Change key
						keys[i] = key + "=" + value;
					}
					else
					{
						// Remove key
						keys.splice(i, 1);
					}
					
					break;
				}
			}
			
			if (keys.length > 0)
			{
				queryString = keys.toString().replace(/,/g, "&");
				url = urlPage + "?" + queryString;
			}
			else
			{
				url = urlPage;
			}
		}
		else if (value != null)
		{
			// Add key
			url += "&" + key + "=" + value;
		}
	}
	
	return url;

}

function orderBy(field, state, stateValue, state2, stateValue2)
{
	var url = window.location.href;
	
	if (url.indexOf("orderBy=" + field) != -1)
	{
		if (url.indexOf("desc=true") != -1)
		{
			url = urlQueryStringReplace(url, "orderBy", field);
			url = urlQueryStringReplace(url, "desc", null);
		}
		else
		{
			url = urlQueryStringReplace(url, "orderBy", field);
			url = urlQueryStringReplace(url, "desc", "true");
		}
	}
	else
	{
		url = urlQueryStringReplace(url, "orderBy", field);
		url = urlQueryStringReplace(url, "desc", null);
	}
	
	if (state != undefined)
	{
		url = urlQueryStringReplace(url, state, stateValue);
	}
	
	if (state2 != undefined)
	{
		url = urlQueryStringReplace(url, state2, stateValue2);
	}
	
	window.location.replace(url);
}

function orderBy2(field, state, stateValue, state2, stateValue2)
{
	var url = window.location.href;
	
	if (url.indexOf("orderBy2=" + field) != -1)
	{
		if (url.indexOf("desc2=true") != -1)
		{
			url = urlQueryStringReplace(url, "orderBy2", field);
			url = urlQueryStringReplace(url, "desc2", null);
		}
		else
		{
			url = urlQueryStringReplace(url, "orderBy2", field);
			url = urlQueryStringReplace(url, "desc2", "true");
		}
	}
	else
	{
		url = urlQueryStringReplace(url, "orderBy2", field);
		url = urlQueryStringReplace(url, "desc2", null);
	}
	
	if (state != undefined)
	{
		url = urlQueryStringReplace(url, state, stateValue);
	}
	
	if (state2 != undefined)
	{
		url = urlQueryStringReplace(url, state2, stateValue2);
	}
	
	window.location.replace(url);
}
