/*
 * string.js
 *
 * 1. jsf_Strings_Replace ( strOriginal, strToRep, strToIns )
 * 2. rightTrim( strValue ) 
 * 3. leftTrim( strValue ) 
 * 4. trimAll( strValue ) 
 * 5. removeCurrency( strValue ) 
 * 6. addCurrency( strValue ) 
 * 7. removeCommas( strValue )
 * 8. addCommas( strValue )
 * 9. removeCharacters( strValue, strMatchPattern ) 
 *
 */



 
/*
 * 1. 
 * jsf_Strings_Replace ( strOriginal, strToRep, strToIns )
 *
 */
function jsf_Strings_Replace ( strOriginal, strToRep, strToIns )
{
	var i, a, b;
	b = "";
	for ( i=0; i<strOriginal.length; i++ )
	{
		a = strOriginal.substring ( i, i + strToRep.length );
		if ( a==strToRep ) b = b + strToIns;
		else b = b + a;
	}
	return b;
}




/*
 * 2. 
 * rightTrim( strValue ) 
 *
 * Trims trailing whitespace chars.
 *
 */
function rightTrim( strValue ) 
{
	var objRegExp = /^([\w\W]*)(\b\s*)$/;
	if(objRegExp.test(strValue)) strValue = strValue.replace(objRegExp, '$1');
	return strValue;
}




/*
 * 3. leftTrim( strValue ) 
 * Trims leading whitespace chars.
 */
function leftTrim( strValue ) 
{
	var objRegExp = /^(\s*)(\b[\w\W]*)$/;
	if(objRegExp.test(strValue)) strValue = strValue.replace(objRegExp, '$2');
	return strValue;
}




/*
 * 4.
 * trimAll( strValue ) 
 *
 * Removes leading and trailing spaces.
 *
 */
function trimAll( strValue ) 
{
	var objRegExp = /^(\s*)$/;
	
	//check for all spaces
	if(objRegExp.test(strValue)) 
	{
		strValue = strValue.replace(objRegExp, '');
		if( strValue.length == 0) return strValue;
	}
	
	//check for leading & trailing spaces
	objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
	if(objRegExp.test(strValue)) strValue = strValue.replace(objRegExp, '$2');
	return strValue;
}




/*
 * 5.
 * removeCurrency( strValue ) 
 *
 * Removes currency formatting from source string.
 *
 */
function removeCurrency( strValue ) 
{
	var objRegExp = /\(/;
	var strMinus = '';
	if(objRegExp.test(strValue)) { strMinus = '-'; } //check if negative
	objRegExp = /\)|\(|[,]/g;
	strValue = strValue.replace(objRegExp,'');
	if(strValue.indexOf('$') >= 0) { strValue = strValue.substring(1, strValue.length); }
	return strMinus + strValue;
}




/*
 * 6.
 * addCurrency( strValue ) 
 *
 * Formats a number as currency.
 * Assumes number passed is a valid numeric value in the rounded to 2 decimal 
 * places.  If not, returns original value.
 *
 */
function addCurrency( strValue ) 
{
	var objRegExp = /-?[0-9]+\.[0-9]{2}$/;
	if( objRegExp.test(strValue)) 
	{
		objRegExp.compile('^-');
		strValue = addCommas(strValue);
		if (objRegExp.test(strValue)) { strValue = '($' + strValue.replace(objRegExp,'') + ')';	}
		else { strValue = '$' + strValue; }
		return  strValue;
	}
	else return strValue;
}




/*
 * 7. 
 * removeCommas( strValue )
 *
 * Removes commas from source string.
 *
 */
function removeCommas( strValue ) 
{
	var objRegExp = /,/g; //search for commas globally
	return strValue.replace(objRegExp,'');
}




/*
 * 8.
 * addCommas( strValue )
 *
 * Inserts commas into numeric string.
 * Used with integers or numbers with 2 or less decimal places.
 *
 */
function addCommas( strValue ) 
{
	var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})'); 
    //check for match to search criteria
    while(objRegExp.test(strValue)) 
    {
       //replace original string with first group match, 
       //a comma, then second group match
       strValue = strValue.replace(objRegExp, '$1,$2');
    }
  return strValue;
}




/*
 * 9. 
 * removeCharacters( strValue, strMatchPattern ) 
 *
 * Removes characters from a source string based upon matches 
 * of the supplied pattern.
 * strNoSpaces = removeCharacters( ' sfdf  dfd', '\s*' )
 *
 */
function removeCharacters( strValue, strMatchPattern ) 
{
	var objRegExp =  new RegExp( strMatchPattern, 'gi' );
	return strValue.replace(objRegExp,'');
}



