var reWhitespace = /^\s+$/;
var reAlphanumeric = /^[A-Za-z0-9]+$/;
var rePasswordChars = /^[A-Za-z0-9\_\-\@\.\*]+$/;
var errorCount = 0;
var errMsgDefault =  "--- Form Errors ----------------\n";
    errMsgDefault += "\nThe following Errors have occurred\n\n";
var errMsg = errMsgDefault;
var reWebAddress = /^http[s]?:\/\/(.*)?[\/]?$/i;
var reWebDomain = /^.*\.([A-Za-z]{2,})$/;
var reEmail = /^.+\@.+\.([A-Za-z]{2,})$/;
var validFLD = "COM|NET|ORG|EDU|MIL|GOV|BIZ|PRO|AERO|NAME|INFO|COOP|MUSEUM";

var reDigit = /^\d$/;
var reLetterOrDigit = /^[A-Za-z0-9]$/

var Delimeter = "|";

function validate(f) {
	// Start checking for blank required fields	
  for ( var k=0; k < f.length; k++ ) {
    var e = f.elements[k];
    if (e.required && ( e.type =="text" || e.type == 'password' || e.type == 'textarea' ) ) {
      if ( isWhitespace(e.value) ) {
				errorCount++;
				errMsg += e.realname + " is Required\n";
			} else if (e.name == 'email' || e.name == 'frmEmail' || e.name == 'customer_email') {
				// Check for valid email address
				if ( !reEmail.test(e.value) ) {
					errorCount++;
					errMsg += e.realname + " has an Invalid Format\n";
				} else {
					var FLD = e.value.replace(reEmail,"$1").toUpperCase();
					if ( validFLD.indexOf(FLD) == -1 && FLD.length > 2) {
						errorCount++;
						errMsg += e.realname + " has an Invalid Format\n";
					}
				}
			} else if (e.fieldtype == "number") {
				if (e.limit_high != null && e.limit_low != null && isDigit(e.value)) {
					if ( parseInt(e.value) < e.limit_low || parseInt(e.value) > e.limit_high ) {
					errorCount++;
					errMsg += e.realname + " must be between " + e.limit_low + " and " +e.limit_high + "\n";
					}
				}
			}
    }
    if (e.required && e.type =="select-one") {
      if (e.selectedIndex == 0) {
				errorCount++;
				errMsg += e.realname + " is Required\n";
			}
    }
  }

	if ( errorCount < 1 ) { return true; }
	else 
	{ 
		alert(errMsg); 
		errMsg = errMsgDefault;
		errorCount = 0;
		return false; 
	}

	return false;
}

function isEmpty(s) {	return ((s == null) || (s.length == 0)) }
function isWhitespace(s) { return ( isEmpty(s) || reWhitespace.test(s) ) }
function isValidLength(s,min,max) { return ( s.length >= min && s.length <= max ) }
function isDigit(c) { return reDigit.test(c) }
function isLetterOrDigit(c) { return reLetterOrDigit.test(c) }
