/**
*	@function	isValidEmail
*	@params		email		string, email to check for validity
*	@returns	boolean
**/
function isValidEmail( pEmail )
{
	var re = new RegExp( '^[\._a-z0-9-]+@[\.a-z0-9-]+[\.]{1}[a-z]{2,4}$', 'gi' );
	return re.test( pEmail );
}

/**
*	@function	isValidEmail
*	@params		url		string, email to check for validity
*	@returns	boolean
**/
function isValidUrl( pUrl )
{
	//var re = new RegExp('https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?', 'gi');
	//var re = new RegExp( 'https?://([-\w\.]+)+(:\d+)?(/([\w_\.]*([\?]\S+)?)?)?' );
	var re = /https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w_\.]*([\?]\S+)?)?)?/;
	return re.test( pUrl );
}

/**
*	@object		String
*	@method		lTrim
*	@params		none
*	@returns 	string
*	@usage:		var myNewString = myString.lTrim();
**/
String.prototype.lTrim = function()
{
	var s = this;
	if( s.length == 0 ) return s;
	while( s.indexOf(" ") == 0 ) s = s.substring( 1, s.length );
	return s;
}

/**
*	@object		String
*	@method		rTrim
*	@params		none
*	@returns 	string
*	@usage:		var myNewString = myString.rTrim();
**/
String.prototype.rTrim = function()
{
	var s = this;
	if( s.length == 0 ) return s;
	while( s.lastIndexOf( " " ) == s.length-1 ) s = s.substring( 0, s.length-1 );	
	return s;
}

/**
*	@object		String
*	@method		trim
*	@params		none
*	@returns 	string
*	@usage:		var myNewString = myString.trim();
**/
String.prototype.trim = function()
{
	var s = this;
	if( s.length == 0 ) return s;
	s = s.lTrim();
	s = s.rTrim();
	return s;
}

/**
*	@object		String
*	@method		getWordCount
*	@params		none
*	@returns	number ( of words in the string )
*	@usage		var wordCount = myString.getWordCount();
*/
String.prototype.getWordCount = function()
{
	var s = this;
	if( s.length == 0 ) return 0;
	var w_array = s.trim().split( " " );
	var i = w_array.length;
	while( i-- )
	{
		// clean out empty or space indexes
		if( w_array[i] == " " || w_array[i] == "" ) w_array.splice( i, 1 );
	}
	return w_array.length;
}