function ValidateForm() {

	field=document._mktf._PRE;
	if (field.value == "T"){
		var retValue = preProcess();
		if (retValue == false) return false;
	}
field = document._mktf.FIRST_NAME;
	if (isBlank(field, "First Name")) return false;

	field = document._mktf.LAST_NAME;
	if (isBlank(field, "Last Name")) return false;

	field = document._mktf.ADDRESS_LINE1;
	if (isBlank(field, "Address")) return false;

	field = document._mktf.CITY;
	if (isBlank(field, "City")) return false;

	field = document._mktf.STATE;
	if (isBlank(field, "State")) return false;

	field = document._mktf.ZIP_CODE;
	if (isBlank(field, "Zip")) return false;

	field = document._mktf.PHONE_1;
	if (isBlank(field, "Home Phone")) return false;
	if (!checkPhone(field,"Home Phone:")) return false;


	field = document._mktf.PRIMARY_EMAIL_ADDR;
	if (isBlank(field, "Email Address")) return false;
	if (!isEmail(field, "Email Address")) return false;


	field = document._mktf.tot_attending;
	if (isBlank(field, "Total Attending")) return false;
	if (field.value.length > 0)
		if (!isInteger(field, "Total Attending", 10)) return false;

	field = document._mktf.Enrolled;
	if (!isChecked(field, "Enrolled", 2)) return false;

	field = document._mktf.Enrolled;
	if (!isChecked(field, "Enrolled", 2)) return false;


}

function checkPhone(){
	stat=true;

	var ph=document._mktf.PHONE_1.value;
	var legal="0123456789";
	var cleanph=new Array();
        for(i=0; i< ph.length; i++){
	if(legal.indexOf(ph.charAt(i))!=-1){
		cleanph+=ph.charAt(i);
			}
		}
	cleanph.length>10?stat=false:(cleanph.length<10?stat=false:stat=true);
	document._mktf.PHONE_1.value=cleanph;
	if(!stat){
		document._mktf.PHONE_1.value="";
		alert("Please enter a 10 digit telephone number")
		document._mktf.PHONE_1.focus();
		}
	return stat;
	}


function trimLeft(s) {
	var whitespaces = " \t\n\r";
	for(n = 0; n < s.length; n++) { if (whitespaces.indexOf(s.charAt(n)) == -1) return (n > 0) ? s.substring(n, s.length) : s; }
	return("");
}

function trimRight(s){
	var whitespaces = " \t\n\r";
	for(n = s.length - 1; n  > -1; n--) { if (whitespaces.indexOf(s.charAt(n)) == -1) return (n < (s.length - 1)) ? s.substring(0, n+1) : s; }
	return("");
}

function trim(s) {return ((s == null) ? "" : trimRight(trimLeft(s))); }

function isBlank(field, strBodyHeader) {
	strTrimmed = trim(field.value);
	if (strTrimmed.length > 0) return false;
	var strMsg = "\"%%\" is a required field. Please type a value.";
	var strArr = strMsg.split("%%");
	if(strArr.length > 1)
		strMsg = strArr[0] + strBodyHeader + strArr[1];
	alert(strMsg);
	field.focus();
	return true;
}

function checkRadioOther(strField){
	var form = document._mktf;
	for (var i = 0; i < form.elements.length; i++){
	var field = form.elements[i];
	if ((field.type == "radio" || field.type == "checkbox")  && field.name == strField && field.value == "Other")
	field.checked = 1;}
}
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^" + specialChars + "\]";
var quotedString="(\"[^\"]*\")";
var ipDomainPat=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedString + ")";
var atomPat=new RegExp("^" + atom + "$");
var localPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var complexPat=/^(.+)<(.+)>$/;
var commentPat=/(.*)\((.*)\)(.*)$/;
function simpleEmailCheck (emailStr) {
	if(emailStr == "") return false;
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) return false;
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) return false;
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) return false;
	}
	if( !checkUser(user)) return false;
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) return false;
		}
		return true;
	}
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if( !checkDomain(domArr[i]) ) return false;
	}
	return true;
}
function checkDomain(domain){
	var validDomain = true;
	var domainArray = domain.match(commentPat);
	if( domainArray == null ) {
		if( domain.match(atomPat)==-1) validDomain = false;
	}
	else {
		for(var i=1; i<domainArray.length; i++){
			if( domainArray[i] != "" && !checkDomain(domainArray[i]) ) validDomain = false;
		}
	}
	return validDomain;
}
function checkUser(user){
	var validUser = true;
	var userArray = user.match(commentPat);
	if( userArray == null ){
		if (user.match(localPat)==null)  validUser = false;
	}
	else {
		for(var i=1; i<userArray.length; i++) {
			if( userArray[i] != "" && !checkUser(userArray[i]) ) validUser = false;
		}
	}
	return validUser;
}
function isEmail(field, strBodyHeader){
	emailStr = field.value;
	if(emailStr.length == 0) return true;
	if(!complexEmailCheck(emailStr)) {
		var strMsg = "Error: Invalid email address. Please type a valid email address for field \"%%\".";
		var strArr = strMsg.split("%%");
		if(strArr.length > 1)
		strMsg = strArr[0] + strBodyHeader + strArr[1];
		alert(strMsg);
		field.focus();
		return false;
	}
	return true;
}
function complexEmailCheck(emailStr){
	if(emailStr == null) return false;
	emailStr=trim(emailStr);
	if(emailStr == "") return false;
	if(emailStr.indexOf("@")==-1) return false;
	if(emailStr.indexOf(" ")!=-1) return false;
	if(emailStr.indexOf(",")!=-1) return false;
	var matchArray=emailStr.match(complexPat);
	if (matchArray==null) {
		if( simpleEmailCheck(emailStr) ) return true;
		else return false;
	}
	var phrase=matchArray[1];
	var routeAddr=matchArray[2];
	if( !simpleEmailCheck(routeAddr) ) return false;
	else return true;
}
// isNumber(s [, nDigitsLimit])
function isNumber(s) {
	if (s.length == 0) return -1 /*EMPTY_VALUE*/;
	var nDigitsLimit = (isNumber.arguments.length > 1) ? isNumber.arguments[1]: 10;
	if (s.length > nDigitsLimit) return -3 /*TOO_MANY_DIGITS*/;
	for(i=0;i < s.length; i++) { if (s.charAt(i) < '0' || s.charAt(i) > '9') return -4 /*INVALID_CHAR*/; }
	return 1 /*NO_ERROR*/;
}
// isNumberEx(s [, nDigitsLimit])
function isNumberEx(s) {
	var nReturn = 1 /*NO_ERROR*/;
	var nDigitsLimit = (isNumberEx.arguments.length > 1) ? isNumberEx.arguments[1]: 10;	
	var astrVals = s.split(',');
	if (astrVals.length > 0) {
		for(var i = 0; i < astrVals.length; i++) {
			if ((nReturn = isNumber(astrVals[i], nDigitsLimit)) != 1 /*NO_ERROR*/)
				break;
		}
		if (nReturn == 1 /*NO_ERROR*/) {
			strVal = astrVals.join('');
			nReturn = (strVal.length > nDigitsLimit) ? -3 /*TOO_MANY_DIGITS*/: 1 /*NO_ERROR*/;
		}
		return nReturn;
	}
	return nReturn;
}
// Removes all the occurrences of the specified char
function removeChar(s)
{
	var ch = (removeChar.arguments.length > 1) ? removeChar.arguments[1]: ','; // default = comma
	var astrVals = s.split(',');
	s = astrVals.join('');
	return s;
}

function isInteger(field, strBodyHeader) {
	var strVal = trim(field.value);
	if (strVal.length == 0) return true;
	var nDigitsLimit = (isInteger.arguments.length > 2) ? isInteger.arguments[2]: 10;
	var iStartPos = ((strVal.charAt(0) == '-') || (strVal.charAt(0) == '+')) ? 1: 0; // skip leading + or -
	var strVal = (iStartPos == 0) ? strVal : strVal.substring(iStartPos, strVal.length);
	nReturn = isNumberEx(strVal, nDigitsLimit);
	var strErr = "";
	switch(nReturn)
	{
		case 1: /*NO_ERROR*/
			strVal = removeChar(strVal, ',');
			var nMax = 2147483647; var nMin = -2147483648;
			if (strVal >= nMin && strVal <= nMax)
				return true;
			var strErrRange = "Please type a valid integer between %% and %%.";
			var strArrRange = strErrRange.split("%%");
			strErr = strArrRange[0] + nMin + strArrRange[1] + nMax + strArrRange[2];
			break;
		case -2: /*INVALUD_NUMBER*/
			break;
		case -3: /*TOO_MANY_DIGITS*/
			var strErrLimit = "No more than %% digits are allowed for this field.";
			var strArrLimit = strErrLimit.split("%%");
			strErr = strArrLimit[0] + nDigitsLimit + strArrLimit[1];
			break;
		case -4: /*INVALID_CHAR*/
			strErr = "Invalid character(s) found in integer value.";
			break;
	}
	var strTempIntMsg = "Error: Invalid integer value for field \"%%\". %%";
	var strArrIntMsg = strTempIntMsg.split("%%");
	var strFinalIntMsg = strArrIntMsg[0] + strBodyHeader + strArrIntMsg[1] + strErr;
	alert(strFinalIntMsg);
	field.focus();
	return false;
}

function isChecked(field, strBodyHeader, nLength) {
	if(nLength == 1) { if (!field.checked){
	var strMsg = "\"%%\" is a required field. Please choose a selection.";
	var strArr = strMsg.split("%%");
	if(strArr.length > 1)
		strMsg = strArr[0] + strBodyHeader + strArr[1];
	alert(strMsg);
	field.focus();
	return false;}
	else{return true;}}
	for(i = 0; i < nLength; i++) { if (field[i].checked) return true;}
	var strMsg = "\"%%\" is a required field. Please choose a selection.";
	var strArr = strMsg.split("%%");
	if(strArr.length > 1)
		strMsg = strArr[0] + strBodyHeader + strArr[1];
	alert(strMsg);
	if (nLength > 0)
		field[0].focus();
	return false;
}