var asQueryString = new Array();
var sScript_Name;
var sAnchor_Name;

//vul asQueryString met de querystringvariabelen
function getQueryStringVariables(sUrl)
{
	if (sUrl.indexOf('#') != -1){
		sAnchor_Name = getAnchor(sUrl);
		sUrl = sUrl.replace('#' + sAnchor_Name, '');
	} else {
		sAnchor_Name = null;
	}

	var iEnd = sUrl.indexOf('?');
	asQueryString = new Array();

	if(iEnd != -1)
	{
		sScript_Name = sUrl.substring(0,iEnd);
		var asKeyValues = sUrl.substring(iEnd+1).split('&');
		
		for(var i=0; i<asKeyValues.length; i++)
		{
		    var p = asKeyValues[i].indexOf('=');
		    if(p != -1)
		    {
		        var sKey=asKeyValues[i].substring(0, p);
		        var sValue=asKeyValues[i].substring(p+1);

				asQueryString[sKey.toLowerCase()] = sValue;					
		    }
		}		
	} else {
		sScript_Name = sUrl;
	}
	
}

//Verander een variabele in de QS. Let op, als er een anker in sUrl staat, 
//wordt deze er af gehaald en in sAnchor_Name gezet
function changeQueryStringOfURL(sUrl,sVariable,sNewValue)
{
	var bFound;
	var sNewURL;
	var iEnd;
	
	if (sUrl.indexOf('#') != -1){
		sAnchor_Name = getAnchor(sUrl);
		sUrl = sUrl.replace('#' + sAnchor_Name, '');
	} else {
		sAnchor_Name = null;
	}

	iEnd = sUrl.indexOf('?');
	bFound = false;
	
	if(iEnd != -1)
	{
		sNewURL = sUrl.substring(0,iEnd);
		sNewQS = '?'

		var asKeyValues = sUrl.substring(iEnd+1).split('&');
		for(var i=0; i<asKeyValues.length; i++)
		{
		    var p = asKeyValues[i].indexOf('=');
		    if(p != -1)
		    {
		        var sKey=asKeyValues[i].substring(0, p);
		        var sValue=asKeyValues[i].substring(p+1);
		        if (sKey.toUpperCase() == sVariable.toUpperCase())
		        {
					if(sNewValue && sNewValue != '')
						sNewQS += sKey + '=' + escape(sNewValue) + '&';					
					bFound = true;
		        }
		        else
		        {
					sNewQS += sKey + '=' + sValue + '&';					
		        }
		    }
		}
		sNewURL += sNewQS.substring(0,sNewQS.length - 1);
	}
	else
	{
		sNewURL = sUrl;
	}
	
	if(!bFound)
	{
		// niet vervange. Voeg 'm toe
		if(sUrl.indexOf('?') != -1)
		{
			sNewURL = sNewURL + '&' + sVariable + '=' + escape(sNewValue);
		}
		else
		{
			// eerste variabele in QS.
			sNewURL = sNewURL + '?' + sVariable + '=' + escape(sNewValue);
		}
	}

	return sNewURL
}

function changeQueryStringOfURLNoEscape(sUrl,sVariable,sNewValue){
	var bFound;
	var sNewURL;
	var iEnd;
	
	if (sUrl.indexOf('#') != -1) {
		sAnchor_Name = getAnchor(sUrl);
		sUrl = sUrl.replace('#' + sAnchor_Name, '');
	} else {
		sAnchor_Name = null;
	}

	iEnd = sUrl.indexOf('?');
	bFound = false;
	
	if(iEnd != -1) {
		sNewURL = sUrl.substring(0,iEnd);
		sNewQS = '?'

		var asKeyValues = sUrl.substring(iEnd+1).split('&');
		for(var i=0; i<asKeyValues.length; i++)	{
		    var p = asKeyValues[i].indexOf('=');
		    if(p != -1) {
		        var sKey=asKeyValues[i].substring(0, p);
		        var sValue=asKeyValues[i].substring(p+1);
		        if (sKey.toUpperCase() == sVariable.toUpperCase()) {
					if(sNewValue && sNewValue != '')
						sNewQS += sKey + '=' + sNewValue + '&';					
					bFound = true;
		        } else {
					sNewQS += sKey + '=' + sValue + '&';					
		        }
		    }
		}
		sNewURL += sNewQS.substring(0,sNewQS.length - 1);
	} else {
		sNewURL = sUrl;
	}
	
	if(!bFound)
	{
		// niet vervange. Voeg 'm toe
		if(sUrl.indexOf('?') != -1){
			sNewURL = sNewURL + '&' + sVariable + '=' + sNewValue;
		} else {
			// eerste variabele in QS.
			sNewURL = sNewURL + '?' + sVariable + '=' + sNewValue;
		}
	}

	return sNewURL
}


// Vergelijk twee querystrings op een aantal waardes
// levert true op wanneer ze gelijk zijn
function compareQueryStrings(sQueryString1, sQueryString2, asCompare)
{
	var sItem;
	
	getQueryStringVariables(sQueryString1);
	var asQS1 = asQueryString;
	asQueryString = new Array();
	
	getQueryStringVariables(sQueryString2);
	var asQS2 = asQueryString;

	for(var i=0;i<asCompare.length;i++)
	{
		sItem = asCompare[i].toLowerCase();
		
		if((asQS1[sItem]) && (asQS2[sItem]))
		{
			if(asQS1[sItem].toLowerCase()!=asQS2[sItem].toLowerCase())
			{
				return false;
			}
		} else {
			if (((asQS1[sItem]) || (asQS2[sItem])))
			{
				return false;
			}
		}
	}
	
	return true;
}

//Als er een anker in de opgegeven string staat, haal deze er dan af en geef hem terug
function getAnchor(theURL){
    var anchor;
    if (theURL.indexOf('#') != -1) {
		anchor = theURL.substr(theURL.indexOf('#')+1, theURL.length);
	} else anchor = '';
    return anchor;
}

