/*
	================================================================================
	= Naam             : String Functions                                          =
	= Programmeur      : Rob Timmers                                               =
	= Laatst gewijzigd : 24 januari 2007                                         =
	= Omschrijving     : Functies om strings to manipuleren                        =
	================================================================================
	
	================================================================================
	= Overzicht functies                                                           =
	================================================================================
	
	Trim(strString)
	---------------
	Omschijving: Verwijdert spaties voor en achter van de meegegeven string
	Invoer     : - strString: De bron string
	Geeft terug: Een getrimde string
	================================================================================
	
	
	LTrim(strString)
	----------------
	Omschijving: Verwijdert spaties voor (links van) de meegegeven string
	Invoer     : - strString: De bron string
	Geeft terug: Een getrimde string
	================================================================================
	
	
	RTrim(strString)
	----------------
	Omschijving: Verwijdert spaties achter (rechts van) de meegegeven string
	Invoer     : - strString: De bron string
	Geeft terug: Een getrimde string
	================================================================================
	
	
	LTrimZero(strString)
	--------------------
	Omschijving: Verwijdert voorloopnullen van de meegegeven string
	Invoer     : - strString: De bron string
	Geeft terug: Een string zonder voorloopnullen
	================================================================================
	
	
	FillZero(strString, lngToLength)
	--------------------------------
	Omschijving: Vult een string aan met voorloopnullen tot de aangegeven lengte
	Invoer     : - strString  : De bron string
	             - lngToLength: De lengte van de aan te vullen string 
	Geeft terug: Een string met voorloopnullen
	================================================================================
	
	
	LCase(strString)
	----------------
	Omschijving: Vervangt alle hoofdletters in een string door kleine letters
	Invoer     : - strString: De bron string
	Geeft terug: Een string waarvan alle letters klein zijn
	================================================================================
	
	
	UCase(strString)
	----------------
	Omschijving: Vervangt alle kleine letters in een string door hoofdletters
	Invoer     : - strString: De bron string
	Geeft terug: Een string waarvan alle letters hoofdletters zijn
	================================================================================
	
	
	InStr(lngStartPosition, strExpression, strStringToFind, blnCaseSensitive)
	-------------------------------------------------------------------------
	Omschijving: Geeft de locatie terug van opgegeven string [strStringToFind] die
				 gevonden word in de opgegeven string [strExpression]
	Invoer     : - lngStartPosition: De locatie waar vanaf gezocht moet worden (0 is het eerste teken)
				 - strExpression   : De string waarin gezocht moet worden
				 - strStringToFind : De string waarnaar gezocht moet worden
				 - blnCaseSensitive: Bepaalt of er hoofdlettergevoelig gezocht moet worden
	Geeft terug: lijlkjlkjlk
	================================================================================
	
	
	ReplaceString(strExpression, strStringToFind, strStringToReplaceWith, lngStartAtPosition, blnCaseSensitive)
	-----------------------------------------------------------------------------------------------------------
	Omschijving: Vervangt in een opgegeven string [strExpression] de te zoeken string
				 [strStringToFind] door de op te geven string [strStringToReplaceWith]
	Invoer     : - strExpression         : De string waarin gezocht moet worden
				 - strStringToFind       : De string waarnaar gezocht moet worden
				 - strStringToReplaceWith: De string waardoor [strStringToFind] door vervangen word
				 - lngStartPosition      : De locatie waar vanaf gezocht moet worden (0 is het eerste teken)
				 - blnCaseSensitive      : Bepaalt of er hoofdlettergevoelig gezocht moet worden
	Geeft terug: oijoijo
	================================================================================
	
	
	URLDecode(strString)
	--------------------
	Omschijving: Decodeert een URL encoded string
	Invoer     : - strString: Een URL encoded string
	Geeft terug: De gedecodeerde string
	================================================================================
	
*/
	
//	================================================================================
//	= De functies                                                                  =
//	================================================================================

function Trim(strString)
{
	strString = strString.replace( /^\s+/g, "" );
	return (strString.replace( /\s+$/g, "" ));
}

function RTrim(strString)
{
	return (strString.replace( /\s+$/g, "" ));
}

function LTrim(strString)
{
	return strString.replace( /^\s+/g, "" );
}

function LTrimZero(strString)
{
	while(strString.charAt(0) == "0")
	{
		strString = strString.substring(1, strString.length)
	}
	return (strString);
}

function FillZero(strString, lngToLength)
{
	var l_strString = new String();
	
	l_strString = strString.toString();
	while (l_strString.length < lngToLength)
	{
		l_strString = "0" + l_strString;
	}
	return (l_strString);
}

function UCase(strString)
{
	return (strString.toString().toUpperCase());
}
		
function LCase(strString)
{
	return (strString.toString().toLowerCase());
}

function ReplaceString(strExpression, strStringToFind, strStringToReplaceWith, lngStartAtPosition, blnCaseSensitive)
{
	var l_strExpression = new String();
	var l_strStringToFind = new String();
	var l_strStringToReplaceWith = new String();
	var l_strResult = new String();
	var l_lngPosition = new Number();
	
	l_strExpression = strExpression.toString();
	l_strStringToFind = strStringToFind.toString();
	l_strStringToReplaceWith = strStringToReplaceWith.toString();
	l_lngPosition = 0;
	
	if (!isNaN(lngStartAtPosition)) l_lngPosition = parseInt(lngStartAtPosition, 10);
	
	while (l_lngPosition < l_strExpression.length)
	{
		if (((l_strExpression.substr(l_lngPosition, l_strStringToFind.length) == l_strStringToFind) && blnCaseSensitive) || ((l_strExpression.substr(l_lngPosition, l_strStringToFind.length).toUpperCase()  == l_strStringToFind.toUpperCase()) && !blnCaseSensitive))
		{
			l_strResult = l_strResult + l_strStringToReplaceWith;
			l_lngPosition = l_lngPosition + l_strStringToFind.length;
		}
		else
		{
			l_strResult = l_strResult + l_strExpression.substr(l_lngPosition, 1);
			l_lngPosition = l_lngPosition + 1;
		}
	}
	return (l_strResult);
}

function InStr(lngStartPosition, strExpression, strStringToFind, blnCaseSensitive)
{
	var l_strExpression = new String();
	var l_strStringToFind = new String();
	var l_lngPosition = new Number();
	
	l_strExpression = strExpression.toString();
	l_strStringToFind = strStringToFind.toString();
	
	if (!isNaN(parseInt(lngStartPosition, 10)))
		l_lngPosition = parseInt(lngStartPosition, 10);
	else
		l_lngPosition = 0;
	
	if (strExpression.length == 0) return (l_lngPosition);
	
	for (l_lngPosition; l_lngPosition < (l_strExpression.length - l_strStringToFind.length + 1); l_lngPosition++)
	{
		if (blnCaseSensitive)
		{
			if (l_strExpression.substr(l_lngPosition, l_strStringToFind.length) == l_strStringToFind) return (l_lngPosition);
		}
		else
		{
			if (l_strExpression.toUpperCase().substr(l_lngPosition, l_strStringToFind.length) == l_strStringToFind.toUpperCase()) return (l_lngPosition);
		}
	}
	return (-1);
}

function URLDecode(strString)
{
	var l_strEncoded = new String();
	var l_strDecoded = new String();
	var l_lngPosition = new Number();
	var l_strHexCharacters = "0123456789ABCDEF";
	l_strEncoded = strString.toString();
	l_lngPosition = 0;
				
	while (l_lngPosition < l_strEncoded.length)
	{
		if (l_strEncoded.charAt(l_lngPosition) == "%")
		{
			if ((l_lngPosition + 2) < l_strEncoded.length)
			{
				if (l_strHexCharacters.indexOf(l_strEncoded.charAt(l_lngPosition + 1).toUpperCase(), 0) != -1 && l_strHexCharacters.indexOf(l_strEncoded.charAt(l_lngPosition + 2).toUpperCase(), 0) != -1)
				{
					l_strDecoded = l_strDecoded + unescape(l_strEncoded.substr(l_lngPosition, 3));
					l_lngPosition = l_lngPosition + 3;
				}
			} 
		}
		else if (l_strEncoded.charAt(l_lngPosition) == "+")
		{
			l_strDecoded = l_strDecoded + " ";
			l_lngPosition = l_lngPosition + 1;
		}
		else
		{
			l_strDecoded = l_strDecoded + l_strEncoded.charAt(l_lngPosition);
			l_lngPosition = l_lngPosition + 1;
		}
	}
	return (l_strDecoded);
}