/*
	================================================================================
	= Naam             : String Functions                                          =
	= Programmeur      : Rob Timmers                                               =
	= Laatst gewijzigd : 24 september 2006                                         =
	= Omschrijving     : Functies om strings to manipuleren                        =
	================================================================================
	
	================================================================================
	= Overzicht functies                                                           =
	================================================================================
	
	Trim(strString)
	LTrim(strString)
	RTrim(strString)
	LTrimZero(strString)
	FillZero(strString, lngToLength)
	LCase(strString)
	UCase(strString)
	InStr(lngStartPosition, strExpression, strStringToFind, blnCaseSensitive)
	ReplaceString(strExpression, strStringToFind, strStringToReplaceWith, lngStartAtPosition, blnCaseSensitive)
	URLDecode(strString)
*/
	
//	================================================================================
//	= 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);
}
