// JavaScript Document

//1-31-2006 added terms checkbox validation....can be used with older pages too...but needs testing.
//
function checkName(s) {
	if (! isAlpha(s) ) {
	    return "Only letters in names.";
	}		
	if (s.length < 3) {
	    return "Names must be three or more characters.";
	}
	return "OK";	
}

function checkEmail(s) {
	var objRegExp  = /^\w+([\-\.]\w+)*\@\w+([\-\.]\w+)*\.[a-z]{2,3}$/i;
	if (! objRegExp.test(s) ) {
		return "Please enter a valid e-mail address.";
	}
	return "OK";
}

function isblank(s) {
	for ( var i = 0; i < s.length; i++ ) {
		var c = s.charAt(i);
        if ( ( c != ' ' ) && ( c != '\n' ) && ( c != '\t' ) ) {
				return false;
		}
    }
    return true;
}

function isAlpha(s) {
	if (s.value == "") {
    	return false;
    }
    for (var i = 0; i < s.length; i++) {
  		if ((s.charAt(i) < "a" || s.charAt(i) > "z") && (s.charAt(i) < "A" || s.charAt(i) > "Z")) {
               return false;
        }
    }
    return true;
 }

function checkAreaCode(s) {
	var stripped = s.replace(/[\(\)\.\-\ ]/g, '');  //strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
		return "Please enter a valid phone number.";
	}
	if (!(stripped.length == 3) ) {
		return "Please enter a valid phone number.";
	}
	if ( (s =="999") || (s =="555") || (s == "000") ) {	
		return "Please enter a valid phone number.";
	}
    return "OK";
}

function checkPrefix(s) {
	var stripped = s.replace(/[\(\)\.\-\ ]/g, '');  //strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
		return "Please enter a valid phone number.";
	}
	if (!(stripped.length == 3) ) {
		return "Please enter a valid phone number.";
	}
	if ( (s =="999") || (s =="555") || (s == "000") ) {	
		return "Please enter a valid phone number.";
	}
    return "OK";
}

function checkExchange(s) {
	var stripped = s.replace(/[\(\)\.\-\ ]/g, '');  //strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
		return "Please enter a valid phone number.";
	}
	if (!(stripped.length == 4) ) {
		return "Please enter a valid phone number.";
	}
	if ( (s =="9999") || (s =="5555") || (s == "0000") ) {	
		return "Please enter a valid phone number.";
	}
    return "OK";
}

function checkPhone(s)
    {
	var stripped = s.replace(/[\(\)\.\-\ ]/g, '');  //strip out acceptable non-numeric characters
	var areacode1 = "";
	var prefix1 = "";
	var checker2 = "";

	if (isNaN(parseInt(stripped))) {
		return "Please enter a valid phone number.";
	}
	//Then we count the length of the number. It should have exactly ten digits - any more or less, and we reject it.
	if (!(stripped.length == 10)) {
		return "Please enter a valid phone number.";
	}

	//Now check for 555 999 in area code 
    for ( var pcounter = 0; pcounter < 3; pcounter++ ) {
		areacode1 += s.charAt(pcounter);
	}
	
	checker2 = checkAreaCode(areacode1);
	if (checker2 != "OK") {
		return "Please enter a valid phone number.";
	}

	//Now check for 555 999 in prefix
    for ( pcounter = 3; pcounter < 6; pcounter++ ) {
		prefix1 += stripped.charAt(pcounter);
	}
	
	checker2 = checkPrefix(prefix1);
	if (checker2 != "OK") {
		return "Please enter a valid phone number.";
	}

	return "OK";
}



function verify(f) {
	var msg = "";
    var empty_fields = "";
    var errors = "";
    var browserok;
	var telnoRegxp = /^([0-9]{10})$/;
	var checker = "";
	var pstemail1 = "";
	var pstemail2 = "";
	var pstbadphone = "FALSE";	
	var pstTermsCheck = "PASS";						// AGREE TO OUR TERMS CHECK BOX
	var pstGenderCheck = "PASS";					// GENDER RADIO GROUP 
	var pstCheckBoxCheck = "PASS";					// GENERIC CHECK BOX TEST - MAKE SURE AT LEAST ONE CLICKED
	var pstWorkString = new String ("empty");		// USED FOR STRING FUNCTIONS
	var pstCheckBoxVar = ""; 						// USED TO LABEL CHECKBOXES 

    browseok = (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 3))
	        || ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion)>=3)));

	if(browseok) { 
   	    for ( var i = 0; i < f.length; i++ ) {
        	var e = f.elements[i];
			// CHECK ALL ELEMENTS FOR EMPTY
	        if ( ( e.value == null ) || ( e.value == "" ) || isblank( e.value ) ) {
				// FIX FOR DAN'S AT DSG PAGES CHECK FOR ELEMENT NAME EXISTS
				// THERE Are APPARENTLY SOME DOC ELEMENTS WITH ALL PROPS = NULL
				if ( ( e.name )) {
					empty_fields += "\n        " + e.name;
				}
                continue;
            }	

			if (e.name == "fname") {
				checker = checkName(e.value);
				if (checker != "OK") {
					errors += "\n" +checker;
				}
			}

			if (e.name == "lname") {
				checker = checkName(e.value);
				if (checker != "OK") {
					errors += "\n" + checker;
				}
			}

			// CHECK FOR AGREEMENT CHECKBOX OF TERMS
			if (e.name == "termson") {			// HIDDEN VAR TO TELL US CHECKBOX IS ON 
				pstTermsCheck = "FAIL";			// MUST BE IN TOP OF WEBPAGE SO THIS GETS SET FIRST
			}

			if (e.name == "termscheck") {		// ACTUAL CHECK BOX EXISTS SO ITS CHECKED
					if (e.checked) {
						pstTermsCheck = "PASS";
					}
			}
			
			// CHECK FOR GENDER RADIO BUTTON
			if (e.name == "genderon") {			// HIDDEN VAR TO TELL US GENDER RADIO GROUP IS ON 
				pstGenderCheck = "FAIL";		// MUST BE IN TOP OF WEBPAGE SO THIS GETS SET FIRST
			}

			if (e.name == "gender") {		// RADIO BUTTON SO TEST IT
				if (e.value == "MALE" && e.checked == true) {  
					pstGenderCheck = "PASS";
				}
				if (e.value == "FEMALE" && e.checked == true) {
					pstGenderCheck = "PASS";
				}
			}

			// CHECK FOR GENERIC CHECKBOXs IF FORM NEEDS US TOO
			if (e.name == "checkboxon") {		// HIDDEN VAR TO TELL US CHECKBOX IS ON 
				pstCheckBoxCheck = "FAIL";		// MUST BE IN TOP OF WEBPAGE SO THIS GETS SET FIRST
				pstCheckBoxVar = e.value;
			}
			pstWorkString = e.name;							// STRIP OUT LEFTMOST 2 CHARS FOR CHECKING
			pstWorkString = pstWorkString.substring(0,2);	// THERE ARE USSUALLY MULTIPLE CHECKBOXES
			if (pstWorkString = "cb") {						// ACTUAL CHECK BOX EXISTS SO IT PASSES
					if (e.checked) {						// THESE CHECKBOXES ARE cb1, cb2, cb3 etc...
						pstCheckBoxCheck = "PASS";
					}
			}

			if (e.name == "email") {			// WHEN EMAIL (NOT EMAIL1) WE HAVE ONLY ONE EMAIL ADDRESS
				pstemail1 = e.value;			// IF WE GOT ONLY ONE EMAIL ADDRES 
				pstemail2 = e.value;			// LOAD INTO PSTEMAIL2 FOR MATCH CHECKING
				checker = checkEmail(e.value);
				if (checker != "OK") {
					errors += "\n" + checker;
				}
			}

			if (e.name == "email1") {
				pstemail1 = e.value;
				checker = checkEmail(e.value);
				if (checker != "OK") {
					errors += "\n" + checker;
				}
			}

			if (e.name == "email2") {
				pstemail2 = e.value;
				checker = checkEmail(e.value);
				if (checker != "OK") {
					errors += "\n" + checker;
				}
			}

			if ((e.name == "phone1") || (e.name == "phone2")) {
				checker = checkPhone(e.value);
				if (checker != "OK") {
					pstbadphone="TRUE";
				}
			}

			if ((e.name == "phone1a") || (e.name == "phone2a")) {
				checker = checkAreaCode(e.value);
				if (checker != "OK") {
					pstbadphone="TRUE";
				}
			}

			if ((e.name == "phone1b") || (e.name == "phone2b")) {
				checker = checkPrefix(e.value);
				if (checker != "OK") {
					pstbadphone="TRUE";
				}
			}

			if ((e.name == "phone1c") || (e.name == "phone2c")) {
				checker = checkExchange(e.value);
				if (checker != "OK") {
					pstbadphone="TRUE";
				}
			}
     }

	if (pstemail1 != pstemail2) {
		errors += "\n" + "e-mails do not match.";
	}		 	

	if (pstbadphone == 'TRUE') {
		errors += "\n" + "Please enter valid Phone Numbers.";
	}		 	

	if (pstTermsCheck == "FAIL") {
		errors += "\n" + "Please agree to our terms by clicking the check box.";
	}

	if (pstGenderCheck == "FAIL") {
		errors += "\n" + "Please select your gender.";
	}
	
	if (pstCheckBoxCheck == "FAIL") {
		errors += "\n" + "Please select a " + pstCheckBoxVar +" checkbox.";
	}

	if ( (!empty_fields) && (!errors) ) return true;

	msg = "_________________________________________________\n\n"
    msg += " The form was not submitted due to the following error(s).\n";
	msg += " Please correct these error(s) and re-submit.\n";
    msg += "_________________________________________________\n\n"

    if ( empty_fields ) {
		msg += "The field(s) listed below are required." + empty_fields + "\n";
		if ( errors ) msg += "\n";
    }

    msg += errors;
	alert(msg);
    return false;
}
	return true;  // if version ie3 or net3 or lower it does not check and returns true.
}



