function gLeftTrim(strString, strCharList)
{
	var strPattern;

	if (!strString)
	{
		return "";
	}
	strString = strString.toString();
	if (!strCharList || strCharList == "")
	{
		strCharList = " 　\r\n\t\x0B\x00";
	}
	strCharList = strCharList.toString();

	strPattern = new RegExp("([\\\\\\.\\*\\+\\?\\|\\(\\)\\{\\}\\[\\]]{1})", "gm");
	strCharList = strCharList.replace(strPattern, "\\$1");

	strPattern = new RegExp("[^" + strCharList + "]{1}");
	if (!strPattern.test(strString))
	{
		return "";
	}
	strPattern = new RegExp("^([" + strCharList + "]*)([^" + strCharList + "]{1})");
	strString = strString.replace(strPattern, "$2");

	return strString;
}
function gRightTrim(strString, strCharList)
{
	var strPattern;

	if (!strString)
	{
		return "";
	}
	strString = strString.toString();
	if (!strCharList || strCharList == "")
	{
		strCharList = " 　\r\n\t\x0B\x00";
	}
	strCharList = strCharList.toString();

	strPattern = new RegExp("([\\\\\\.\\*\\+\\?\\|\\(\\)\\{\\}\\[\\]]{1})", "gm");
	strCharList = strCharList.replace(strPattern, "\\$1");

	strPattern = new RegExp("[^" + strCharList + "]{1}");
	if (!strPattern.test(strString))
	{
		return "";
	}
	strPattern = new RegExp("([^" + strCharList + "]{1})([" + strCharList + "]*)$");
	strString = strString.replace(strPattern, "$1");

	return strString;
}
function gTrim(strString, strCharList)
{
	return gRightTrim(gLeftTrim(strString, strCharList), strCharList);
}
function gStrReplace(strSearch, strReplace, strSubject, intCount)
{
	var strPattern, i;

	if (!strSearch)
	{
		return "";
	}
	if (!strReplace)
	{
		strReplace = "";
	}
	if (!strSubject)
	{
		return "";
	}
	strSearch = strSearch.toString();
	strReplace = strReplace.toString();
	strSubject = strSubject.toString();

	strPattern = new RegExp("([\\\\\\.\\*\\+\\?\\|\\(\\)\\{\\}\\[\\]]{1})", "gm");
	strSearch = strSearch.replace(strPattern, "\\$1");

	if (!intCount || intCount == "")
	{
		strPattern = new RegExp(strSearch, "gm");
		strSubject = strSubject.replace(strPattern, strReplace);
	}
	else
	{
		intCount = parseInt(intCount);
		if (isNaN(intCount))
		{
			return strSubject;
		}
		strPattern = new RegExp(strSearch, "m");
		for (i = 0; i < intCount; i++)
		{
			if (!strPattern.test(strSubject))
			{
				break;
			}
			strSubject = strSubject.replace(strPattern, strReplace);
		}
	}

	return strSubject;
}
function gHtmlSpecialChars(strString, strQuoteStyle)
{
	if (!strString)
	{
		return "";
	}
	strQuoteStyle = "|" + strQuoteStyle + "|";

	strString = strString.replace(/&/gm, "&amp;");
	strString = strString.replace(/</gm, "&lt;");	
	strString = strString.replace(/>/gm, "&gt;");	
	if (strQuoteStyle.search(/\|ENT_NOQUOTES\|/gm) != -1)
	{
		strString = strString.replace(/\"/gm, "&quot;");
	}
	if (strQuoteStyle.search(/\|ENT_QUOTES\|/gm) != -1)
	{
		strString = strString.replace(/\'/gm, "&#039;");
	}
	if (strQuoteStyle.search(/\|ENT_SPACE\|/gm) != -1)
	{
		strString = strString.replace(/ /gm, "&nbsp;");
	}

	return strString;
}
