function CheckFieldsSurvey(f) {	// main user validation section - validates fields updated by user	// f - current form	hasErrors = false;	errorMsgsA = '';	errorMsgsC = '';	errorMsgs = '';	errorCount = 0;	//ClearFldStyle(f.Fld)	if(!CheckCBField(f.saq1)) hasErrors = true;	if(!CheckCBField(f.saq2)) hasErrors = true;	if(!CheckCBField(f.saq3)) hasErrors = true;	if(!CheckCBField(f.saq4)) hasErrors = true;	if(!CheckCBField(f.saq5)) hasErrors = true;		if(!CheckCBField(f.saq6)) hasErrors = true;	if(!CheckCBField(f.saq7)) hasErrors = true;	if(!CheckCBField(f.saq8)) hasErrors = true;	if(!CheckCBField(f.saq9)) hasErrors = true;	if(!CheckCBField(f.saq10)) hasErrors = true;	switch (errorCount) {		case 0: break;		case 1: errorMsgsA = 'A required value in Section A has not been answered'; break;		default: errorMsgsA = 'More then one required value in Section A has not been answered';	}	errorCount = 0	if(!CheckCBField(f.scq1)) hasErrors = true;	if(!CheckCBField(f.scq2)) hasErrors = true;	if(!CheckCBField(f.scq3)) hasErrors = true;		switch (errorCount) {		case 0: break;		case 1: errorMsgsC = 'A required value in Section C has not been answered'; break;		default: errorMsgsC = 'More then one required value in Section C has not been answered';	}	// validation components completed - display any errors to user return true     if(hasErrors==true) {     	if(errorMsgsA.length != 0 && errorMsgsC.length != 0){     		errorMsgs = errorMsgsA + '\n\r' + errorMsgsC;     	}else{     		if(errorMsgsA.length != 0){     			errorMsgs = errorMsgsA;     		}     		if(errorMsgsC.length != 0){     			errorMsgs = errorMsgsC;     		}     	}		alert(errorMsgs);		return false;	} else {		return true;	}}function CheckFieldsDonation(f) {	// main user validation section - validates fields updated by user	// f - current form	hasErrors = false;	errorMsgs = '';	errorCount = 0;	//ClearFldStyle(f.Fld)	if(!CheckCBField(f.donation)) hasErrors = true;	switch (errorCount) {		case 0: break;		case 1: errorMsgs = 'You have not selected a charity for the donation.';	}	// validation components completed - display any errors to user return true     if(hasErrors==true) {		alert(errorMsgs);		return false;	} else {		return true;	}}function validateSignUp() {		var valid = false;		//Check values for testing	valid = validateRequired();	if(valid==true) {		valid = validateEmail()	}	if(valid == true && f.SaveSaveOptions.value == 0){		//May be a direct link versus referal		f.SaveSaveOptions.value = 1;	}	return valid}function validateSubmit() {		var valid = false;	//Check values for testing	valid = validateRequired();		if(valid == true){		if(f.contactmethod[0].checked == true){			//Indicates that email is prefered value			valid = validateEmail();						if(valid == true){							alert('We will contact you by email');				f.ContactPref.value = 'Email';			}		}		if(f.contactmethod[1].checked == true){			//Indicates that phone is prefered value			valid = validatePhone();					if(valid == true){				alert('We will contact you by phone');				f.ContactPref.value = 'Phone';					}		}	}	if(valid == true && f.SaveSaveOptions.value == 0){		//May be a direct link versus referal		f.SaveSaveOptions.value = 1;	}	return valid}function ClearFldStyle(field) {	field.className="";	return true;	}function CheckField(field) {	if (field.type=="text" | field.type=="textarea") {		if (field.value =="") {			field.className="error";			errorCount += errorCount + 1;			field.focus();			return false;		}		field.className="";		return true;	}	if (field.type=="select-one") {		if (field.selectedIndex <=0) {			field.className="error";				errorCount += errorCount + 1;			field.focus();			return false;		}		field.className="";		return true;	}	return true;}function CheckCBField(field, msg) {	var ischecked = false;	for (i = 0; i < field.length; i ++) {		if (field[i].checked) {			ischecked = true; // as long as one is chosen this gets set true		}	}	if (ischecked == false) {		field.className="error";		errorCount += errorCount + 1;		return false;	}	field.className="";	return true;}function CheckButton(field, msg, chkvalue) {	// validate button - field	var selBtn = -1;	for (i=field.length-1; i > -1; i--) {		if (field[i].checked) {		selBtn = i;		}	}	if (selBtn == -1) {		// no button selected				field.className="error";		errorCount += errorCount + 1;		return false;	} else {		// a button was selected, check the value		if (chkvalue=='') {			// nothing passed, assume just looking for not null			return true;			}		if (field[selBtn].value == chkvalue) {			// match, return true			return true;		} else {			// no match, return false			if (msg != "") {				field.className="error";				errorCount += errorCount + 1;				return false;			}		}	}}String.prototype.trim = function() {	// call me with something like: this.value.trim()	return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'');}String.prototype.fulltrim = function() {	// call me with something like: this.value.fulltrim()	return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');}// misc field translations/validationsfunction chknum(myval) {	var mychar;	var mypoint = 0;	var isvalidnumber;	for(var i = 0; i < myval.length; i++) {		mychar = myval.charAt(i);		if(mychar == ".") {			mypoint++;		}	}	if(mypoint > 1) {		alert("Invalid Number: more than one decimal points.");		return false;	} else {		for(var i = 0; i < myval.length; i++) {			if(myval.charAt(i) != ".") {				if(isNaN(myval.charAt(i))) {				//alert("Invalid Number: non numeric character entered.");				return false;				}			}		}	}}// functions tests if passed object is valid (exists)function testIsValidObject(objToTest) {		if (null == objToTest) {			return false;		}		if ('undefined' == typeof(objToTest) ) {			return false;		}		return true;}function CheckFldDate(mo, dy, yr, ndir, ndys) {	// validates date passed (format mm/dd/yyyy)	// ndir - direction for successful test (ie. before or after today), pass 1 for future, 0 for any date, -1 for past	// ndays - number of days to test against	var moFlag = 0;	var dyFlag = 0;	var spareDys = 0;	if (mo =='' || dy =='' || yr =='' ) {		return false;	}	// create date objects and test date components for valid date	var tDate = new Date();							// doc / then date (will be replaced)	tDate.setFullYear(yr,mo-1,dy)					// months are base 0 not 1	var nDate = new Date();  							// current date (local), includes time which we don't want, setting after tDate so time component is later			var nowTime = nDate.getTime();				// current date/time (UTC)	var thenTime = tDate.getTime();	if (isNaN(mo) || isNaN(dy) || isNaN(yr)) {		alert("Month, day, or year are not valid numbers.");		return false;	}	if (dy>30 && (mo == 2 || mo==4 || mo==6 || mo==9 || mo==11)) {		alert("Day "+dy+" of Month "+mo+" is not a valid date");		return false;	} else {		dyFlag=1;	}	if (dy>29 && mo==2) {		alert("Day "+dy+" of Month "+mo+" is not a valid date");		return false;	} else {		dyFlag=1;	}	if ((mo == 2 && dy == 29)  && ((yr%4 != 0) || (yr%100 == 0 && yr%400 != 0))) {		alert("29th of February is not a valid date in " + yr);		return false;	} else {		dyFlag=1;	}	if (mo<1 || mo>12) {		alert("Day "+dy+" of Month "+mo+" is not a valid date");		return false;	} else {		moFlag=1;	}	// code below is from the JavaScript Source	if (dyFlag==1 && moFlag==1) {		// good date entered, test date		if (nowTime >= thenTime) {			// past or present			if ( ndir == 0 || ndir == -1) {				// date is today or past, okay				// test for number of days				spareDys = parseInt((nowTime - thenTime)/(3600000*24));				if (spareDys > ndys ) {					// too many days, return false					alert("Too many days has lapsed from today: " +spareDys +".");					return false;				} else {					// less than limit, okay					return true;				}			} else {				// not what programmer wanted, return failure				return false;			}		} else {			// future date			if ( ndir == 1) {				// date is future, okay				spareDys = parseInt((thenTime - nowTime)/(3600000*24));				// test for number of days				if (spareDys > ndys ) {					// too many days, return false					alert("Too many days has lapsed from today: " +spareDys +".");					return false;				} else {					// less than limit, okay					return true;				}			} else {				// not what programmer wanted, return failure				return false;			}		}	}}function validateRequired(){	var isValid = false;		firstName = f.FirstName.value;	lastName = f.LastName.value;	if(firstName.length >=2 && lastName.length >=2){		isValid = true;	}else{		alert('All required fields do not have values');			isValid = false;	}	if(firstName != lastName){		isValid = true;	}else{		alert('First name and last name cannot be the same!');			isValid = false;	}	return isValid;}function validatePhone(){	var validPhone = false;		phoneNumber = f.Phone.value;	//alert('Phone number before format is : ' + phoneNumber);		phoneNumber  = reformatTelephoneNumber(phoneNumber);	//alert('Phone number after format but before check is : ' + phoneNumber);	if(isValidTelephoneNum(phoneNumber) == true ){		//alert('Valid phone number');		validPhone = true;		return validPhone;		f.Phone.value = phoneNumer;		return true;	}else{		alert('Invalid phone number');		validPhone = false;		return validPhone;	}}function validateEmail(){	var validEmail = false;		emailAddress= f.Email.value;	if(isValidEmail(emailAddress) == true){		//alert('Valid email address');		validEmail = true;		return validEmail;	}else{		alert('Invalid email address');			validEmail = false;		return validEmail;		}}function isOnlyAlphabetic(string){  invalidCharactersRegExp = /[^a-z ]/i;  var isValid = !(invalidCharactersRegExp.test(string));  return isValid;}function isValidTelephoneNum(telephoneNum){//	alert('Passed Telephone number = ' + telephoneNum);	var isValid = false;	var legalCharactersRegExp = /[-\(\) \d]/;	var validFormatRegExpLong = /^(\(\d{3}\) \d{3}-\d{4})/;	var validFormatRegExpShort = /^(\d{3}-\d{4})/;	//Check for illegal characters first, then other operations	isValid = legalCharactersRegExp.test(telephoneNum);		if(isValid){		//check pattern		if(telephoneNum.length > 10){//			alert('Performing long expression check');			isValid = validFormatRegExpLong.test(telephoneNum);		}else{//			alert('Performing short expression check');					isValid = validFormatRegExpShort.test(telephoneNum);		}	}	return isValid;}/*function isValidTelephoneNum(telephoneNum){	var isValid = false;	var legalCharactersRegExp = /[-\(\) \d]/;	var validFormatRegExp = /^(\(\d{3}\) \d{3}-\d{4})/;	//Check for illegal characters first, then other operations	isValid = legalCharactersRegExp.test(telephoneNum);	//	if(isValid){		//no illegal characters, now check first digit//		isValid = (telephoneNum.substring(0,1) == '0')	if(isValid){		//check pattern (only one allowed pattern after formating)		isValid = validFormatRegExp.test(telephoneNum);	}	return isValid;}*/function isValidEmail(email){  var validFormatRegExp =     /^\w(\.?\w)*@\w(\.?[-\w])*\.[a-z]{2,4}$/i;  var isValid = validFormatRegExp.test(email);  return isValid;}function reformatTelephoneNumber(telephoneNumber){//Converts phone number to prefered format		//remove any spaces	while (telephoneNumber.indexOf(' ') != -1){		telephoneNumber = telephoneNumber.replace(' ', '');	}	//remove left par (	while (telephoneNumber.indexOf('(') != -1){			telephoneNumber = telephoneNumber.replace('(', '');	}		//remove right par )	while (telephoneNumber.indexOf(')') != -1){		telephoneNumber = telephoneNumber.replace(')', '');	}		//remove dash	while (telephoneNumber.indexOf('-') != -1){		telephoneNumber = telephoneNumber.replace('-', '');	}	//remove period	while (telephoneNumber.indexOf('.') != -1){		telephoneNumber = telephoneNumber.replace('.', '');	}//	alert('telephoneNumber.substring(0,1) = ' + telephoneNumber.substring(0,1));	//leading 1 means user entered long distance code not needed so remove	if (telephoneNumber.substring(0,1) == "1"){			telephoneNumber = telephoneNumber.replace('1', '');	}	if (telephoneNumber.length == 10 || telephoneNumber.length == 7){			//No problem	}else{			//alert('Phone number does not have 7 or 10 digits, this is a problem.');	}//	alert('Phone number before parsing = ' + telephoneNumber);//	alert('Phone number length before parsing = ' + telephoneNumber.length)	;	//return formatted phone number	if(telephoneNumber.length == 10){		telephoneNumber = '(' + 	telephoneNumber.substring(0,3) + ') ' + telephoneNumber.substring(3,6) +				   '-' + 	telephoneNumber.substring(6,10);	}	if(telephoneNumber.length == 7){		telephoneNumber = telephoneNumber.substring(0,3) + '-' + telephoneNumber.substring(3,7);	}//	alert('telephoneNumber after reformat is ' + telephoneNumber);				   	return telephoneNumber;				   }