// util
if(typeof(util)=="undefined")
{
	var util = new Object();
}

util.string = new Object();

function StringUtilsArrayScan(list, value)
{
	var i;
	for(i=0; ((i<list.length) && (list[i]!=value)); i++);
	return((i==list.length)? (-1):(i));
}
util.string.arrayScan = StringUtilsArrayScan;

function StringUtilsArrayToString(a, sep, skip)
{
	var s='';
	for (var i=0; i<a.length; i++)
	{
		s +=(((skip) && (a[i]==''))? '':(sep + a[i]));
	}
	return(s.substring(sep.length));
}
util.string.arrayToString = StringUtilsArrayToString;

function StringUtilsStringToArray(str, sep, skip)
{
	var a=str.split(sep);
	if(skip)
	{
		var b=new Array();
		for(var i=0; i<a.length; i++)
		{
			if(a[i]!='')
			{
				b[b.length]=a[i];
			}
		}
		a=b;
	}
	return(a);
}
util.string.stringToArray = StringUtilsStringToArray;

function StringUtilsLeft(str, len)
{
	return(str.substring(0, len));
}
util.string.left = StringUtilsLeft;

function StringUtilsRight(str, len)
{
	return(str.substring(str.length-len, str.length));
}
util.string.right = StringUtilsRight;

function StringUtilsMid(str, start, len)
{
	if(start<1)
	{
		start=1;
	}
	if(start+len>str.length)
	{
		len=str.length-start+1;
	}
	return(str.substring(start-1, start+len-1));
}
util.string.mid = StringUtilsMid;

function StringUtilsJavascriptEncode(str)
{
	return(str.toString().replace(/'/g, "\\" + "\'"));
}
util.string.javascriptEncode = StringUtilsJavascriptEncode;

function StringUtilsSQLEncode(str)
{
	return(str.replace(/'/g, "\'\'"));
}
util.string.SQLEncode = StringUtilsSQLEncode;

function StringUtilsCaselessCompare(str1, str2)
{
	// this function is meant to be used by the .sort property.
	// it will make string comparison not case sensitive.
	// the method .tpLowerCase is used instead of the .toUpperCase to have
	// characters such as "_" listed at the top.
		
	var s1, s2;
	s1=str1.toLowerCase();
	s2=str2.toLowerCase();
		
	if(s1<s2)
	{
		return(-1);
	}
	if(s1>s2)
	{
		return(1);
	}
	return(0);
}
util.string.caselessCompare = StringUtilsCaselessCompare;

function StringUtilsParseDecimal(val, precision)
{
	val = parseFloat(val);
	return(parseInt(val * Math.pow(10, precision)) / Math.pow(10, precision));
}
util.string.parseDecimal = StringUtilsParseDecimal;

function StringUtilsRound(val, digits)
{
	val = parseFloat(val);
	return(Math.round(val / Math.pow(10, digits)) * Math.pow(10, digits));
}
util.string.round = StringUtilsRound;

function StringUtilsTrimString()
{
   var ichar, icount;
   var strValue = this;
   ichar = strValue.length - 1;
   icount = -1;
   while (strValue.charAt(ichar)==' ' && ichar > icount)
       --ichar;
   if (ichar!=(strValue.length-1))
       strValue = strValue.slice(0,ichar+1);
   ichar = 0;
   icount = strValue.length - 1;
   while (strValue.charAt(ichar)==' ' && ichar < icount)
       ++ichar;
   if (ichar!=0)
       strValue = strValue.slice(ichar,strValue.length);
   return strValue.toString();
}
String.prototype.Trim = StringUtilsTrimString;

function StringUtilsLeftTrimChar(str, c)
{
	while(str.substring(0, 1)==c)
	{
		str = str.substring(1);
	}
	return(str);
}
util.string.leftTrimChar = StringUtilsLeftTrimChar;

function StringUtilsRightTrimChar(str, c)
{
	while(str.substring(str.length-1, 1)==c)
	{
		str = str.substring(0, str.length-2);
	}
	return(str);
}
util.string.rightTrimChar = StringUtilsRightTrimChar;

function StringUtilsTrimChar(str, c)
{
	str = StringUtilsLeftTrimChar(str, c);
	str = StringUtilsRightTrimChar(str, c);
	return(str);
}
util.string.trimChar = StringUtilsTrimChar;

function StringUtilsDateRendererEx(d)
{
	if((d==null) || (d==""))
	{
		return("");
	}
	var m_names = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

	if(typeof(d)=="string")
	{
		if(isNaN(Date.parse(d)))
		{
			return("");
		}
		d = new Date(d);
	}
	return(d.getDate() + " " + m_names[d.getMonth()] + " " + d.getFullYear());
}
util.string.dateRendererEx = StringUtilsDateRendererEx;