/*	JAVASCRIPT FORM VALIDATION LIBRARY 
	Victor Damien DiCara


	v5.0.3	9/20.2008	Added isMoney
	v5.0.2	3/26		Added ridRepeats
	v5.0.1	3/25/2002	Add CreateOptions & SetSel
						String "rid" functions together correctly
	v4.0	3/22/2002	Add form functions
	v3.01	3/22/2002	Bug fix: return(undefined)
	v3.0 	3/21/2002	Switch to Regular Expressions
	v2.02 	3/20/2002	minor bug fixes
	v2.0 	3/20/2002	
___________________________________________________________________	*/

function isEmail( str ){
	return( /\S+@\S+\.\S+/.test(str) ) 
}

// Password = no spaces, only alphanumerics
function isPassword( str ){
	return( !/\W{1,}/.test(str) )
}

function isUserName( str ){
	return( !/['|"]{1,}/.test(str) )
}

function isNumber( str ){
	return( /^\d+$/.test(str) ) 
}

function isUSzip( str ){
	return( /^\d{5}$/.test(str) || /^\d{5}-\d{4}$/.test(str) ) 
}

function isBlank( str ){
    return( isEmpty(str) || !/\S/.test(str) ? true : false ) 
}

function isSame( str1, str2 ){
	return( str1 == str2 );
}

function isMoney( str ){
	return( /^\d+\.\d{2}$/.test(str) ) 
}


function ridBlanks( str ){
	return(  ridOutsideBlanks( ridReturns( ridRepeats( str.replace( /[ \t\v]{2,}/g, " ") ) ) )  );
}

// ======================================= Low Level ==========	v
function ridRepeats( str ){
	return( str.replace(/(.)\1{3,}/gi, "$1$1$1") );
}
function ridReturns( str ){
	return( str.replace( /[\f\n\r]{2,}/g, "\n") );
}
function ridOutsideBlanks( str ){
	return( str.replace( /^\s/gi, "").replace( /\s$/gi, "") );
}
function isEmpty( str ){
	return( (str == null) || (str.length == 0) );
}
function isDigit( c ){
	return (/\d/.test(c));
}

// =================================== Formatting =========	v
function formatUSzip( str ){
	if( str.length > 5 && isDigit(str.charAt(5)) ) 
		str = str.substring(0,5) + "-" + str.substring(5);
	else if( str.length > 5 && !isDigit(str.charAt(5)) ) 
		str = str.substring(0,5) + "-" + str.substring(6);
	return( str );
}

//	============================= Form Functions ==========	v
/*	Arguments -	[0] = the form object
				[1] = names of required fields
_______________________________________________________	*/
rtn2obj	= "";

function requiredFields(){
	form = requiredFields.arguments[0];
	for( i=1; i<requiredFields.arguments.length; i++ ){
		rtn2obj = form.elements[requiredFields.arguments[i]];
		if( isBlank(rtn2obj.value) ) return( false );
	}
	return (true)
}

function trimFields(){
	form = trimFields.arguments[0];
	for( i=1; i<trimFields.arguments.length; i++ ){
		obj = form.elements[trimFields.arguments[i]];
		obj.value = ridBlanks(obj.value);
	}
}

// 	Variables - set these
AlertURL		= "/Lib/Script_Global/FormAlert.asp";
AlertDetails 	= "height=200,width=300";

function rtn2form( obj, msg ){
	rtn2obj = obj	// the bad element on the form
	FullURL = AlertURL + "?" + escape(msg);
	AlertWin = open( FullURL, "AlertWin", AlertDetails );
	return( false );
}

function closeAlertWin(){
	AlertWin.close();
	rtn2obj.focus();
	if ("text,password,textarea".indexOf(rtn2obj.type.toLowerCase()) != -1 )
		rtn2obj.select();
}

// Select a specific menu option
function setSel(El, Value){
	for ( ss=0; ss<El.options.length; ss++) {
		if ( El.options[ss].value == Value )
			El.selectedIndex = ss;
	}
}

