//
// $Id: validate.js,v 1.1.1.1 2004/11/29 10:30:59 dshanks Exp $
//
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-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
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 reCAPost = /^[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d$/;

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 == 'passwd' && !isValidPasswordChar(e.value)) {
				errorCount++;
				errMsg += e.realname + " contains invalid characters\n";
      } else if ( e.name == 'passwd' && e.match ) {
        if ( !isPassMatch(e.value,f.passwd2.value) ) {
          errorCount++;
          errMsg += "Passwords do not match\n";
        }
			} else if (e.name == 'email' || e.name == 'frmEmail') {
				// 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";
					}
				}
			} else if (e.sizelimit) {
        if ( (e.value.length < e.sizeMin) || (e.value.length > e.sizeMax) ) {
					errorCount++;
					errMsg += e.realname + " must be between " + e.sizeMin + " and " +e.sizeMax + " characters in length\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) }
function isValidCanadaPostalCode(s) { return reCAPost.test(s) }
function isValidEmail(s) { return reEmail.test(s) }

function stripNonDigit(s) {
	var i;
	var returnValue = '';
	for (i=0;i<s.length;i++) {
		var c = s.charAt(i);
		if (isDigit(c)) returnValue += c;
	}
	return returnValue;
}

function stripNonAlphanumeric(s) {
	var i;
	var returnValue = '';
	for (i=0;i<s.length;i++) {
		var c = s.charAt(i);
		if (isLetterOrDigit(c)) returnValue += c;
	}
	return returnValue;
}

function isAlphanumeric(s) {
	if (isEmpty(s)) {
		if ( isAlphanumeric.arguments.length == 1 ) return false;
		else return (isAlphanumeric.arguments[1] == true);
	} else { 
    return reAlphanumeric.test(s); 
  }
}

function isValidPasswordChar(s) {
	if (isEmpty(s)) {
		if ( isValidPasswordChar.arguments.length == 1 ) return false;
		else return (isValidPasswordChar.arguments[1] == true);
	} else { 
    return rePasswordChars.test(s);
  }
}

function isPassMatch(s1,s2) {
  if ( s1 == s2 ) {
    return true;
  } else {
    return false;
  }
}


