/** CONTENTS ************************************

function s_IsInvalid(field, description, minLen, maxLen)
function s_IsInvalidEmail(field, description)

*************************************************/

function s_IsEmpty(s)	// Returns true if string s is Empty
	{ return ( (s == null) || (s.length == 0)) }
	
/******************* TEXT FIELD VALIDATION *******************/
function s_IsInvalid(field, description, minLen, maxLen) { //Checks if field is between minLen and maxLen; 
	//-1 for minLen will prompt to fill in, but not require a min length.
	//-1 for maxLen allow unlimited characters to be entered.
	if (!field) //If field does not exist, exit
		return false;
    if (minLen==-1 && field.value=="") { alert("Please enter " + description + " before proceeding."); field.focus(); return true; }
  	if (minLen>0 && field.value.length<minLen) { alert("Please enter at least " + minLen + " characters for " + description +"."); field.focus(); return true; }
	if (maxLen>0 && field.value.length>maxLen) { alert("Please enter at most " + maxLen + " characters for " + description +"."); field.focus(); return true; }
	return false;
}

/******************* EMAIL VALIDATION *******************/
function s_IsInvalidEmail(field, description) { // Returns true if string field.value meets the basic format of an email address
	s = field.value;
	if ((s == null) || (s.length == 0)) {
		alert("Please enter "+ description +" before proceeding.");
		field.focus(); return true;
	}
	var i = 1;											// Look for @ starting with the second character in s												
	var sLen = s.length;
	while( (i < sLen ) && ( s.charAt(i) != "@" ) ) { i++; }
	if( ( i >= sLen ) || (s.charAt(i) != "@")) {
		alert("Please enter "+ description +" before proceeding.");
		field.focus(); return true;
	} else {
		i += 2;
	}
	while ((i < sLen) && (s.charAt(i) != ".")) { i++; }	// Look for a dot starting with the second character after the @
	if ((i >= sLen - 1) || (s.charAt(i) != ".")) {		// There must be at least one character after the dot
		alert("Please enter "+ description +" before proceeding.")
		field.focus(); return true;
	} else  {
		return false;
	}
}

/******************* RETURNS RADIO BUTTON VALUE *******************/
function s_GetRadioButtonValue(radio) { 
	var Value = ""
	if (isNaN(radio.length)) {
		if (radio.checked) Value = radio.value;
	}
	else {
		for (var i = 0; i < radio.length; i++){
			if (radio[i].checked) Value = radio[i].value;
		}
	}
	return Value
}
/******************** RADIO BUTTON VALIDATION ********************/
function s_NoRadioButton(field, description){
	if (s_IsEmpty(s_GetRadioButtonValue(field))) {
		alert("Please choose at least one of the "+ description +" options before proceeding."); 
		if (isNaN(field.length))
			field.focus(); 
		else 
			field[0].focus(); 
		return true;
	}
	else
		return false;
}