/*---------------------------------------------------------------------------
 * string.js
 *
 * String handling functions
 *
 *
 *--------------------------------------------------------------------------*/


var STR_NOTFOUND = -1;

/*
	Returns the index of the first occurrence 
	of character, ch, in a string, str; if ch
	is not found, returns STR_NOTFOUND.
*/
function strFindChar( str, ch )
{
	var strlen = str.length;

	for (var i = 0; i < strlen && str.charAt(i) != ch; i++);

	return (i == strlen) ? STR_NOTFOUND : i;
}

/*
	Returns the index of the last occurrence 
	of character, ch, in a string, str; if ch
	is not found, returns STR_NOTFOUND.
*/
function strFindLastChar( str, ch )
{
	var strlen = str.length;

	for (var i = strlen-1; i >= 0 && str.charAt(i) != ch; i--);

	return (i < 0) ? STR_NOTFOUND : i;
}

/*
	Trim leading and trailing blanks
*/
function strTrimBoth( str )
{
	str = strTrimLeft( str );
	return strTrimRight( str );
}

/*
	Trim left (leading) white space	
*/
function strTrimLeft( str )
{
    for (var i = 0; i < str.length; i++)
	{
		if (str.charAt( i ) != ' ')
		{
			return str.substring( i, str.length );
		}
	}

	return str;	
}

/*
	Trim right (trailing) white space
*/
function strTrimRight( str )
{
    for (var i = str.length-1; i >= 0; i--)
	{
		if (str.charAt( i ) != ' ')
		{
			return str.substring( 0, i+1 );
		}
	}

	return str;	
}

/*
	Parse a sub-string from within a delimited string. Return the
	sub-string, if successful; otherwise an empty string.
		
		str is the delimited string

		delim is the delimeter

		which is the zero-based position of the delimited 
			  sub-string
*/
function strTokenize(str, delim, which)
{
	// validate parameters

	if (which < 0 || str == null || delim == null)
	{
		return "";
	}

	var iStart = 0;
	var iEnd = -1;
	var strlen = str.length;

	// make this zero-based to be consistent

	++which;

	// do the real work

	for(var i = 0; i < which; i++)
	{		
		if (iEnd == str.length)
		{
			return "";
		}

		iStart = iEnd + 1;
		iEnd = str.indexOf( delim, iStart );

		if (iEnd < 0) 
		{
			iEnd = str.length;			
		}
	}

	return str.substring( iStart, iEnd );
}

/*
Count the number of times a given character,ch appears in a
string, str
*/
function countChar( str, ch )
{

var strlen = str.length;
var chTotal = 0;

for (var i = 0; i < strlen; i++)
{
	if (str.charAt(i) == ch) chTotal++;
}

return chTotal;
}