	var sentinelVal = {};
	
	sentinelVal.isBlank = function(inField) {
		if((inField.value == '') || (inField.value == ' ') || (inField.value == null)) {
			return true;
		} else {
			return false;
		}
	}
	
	sentinelVal.isNotSelected = function(inSelect) {
		if(inSelect.selectedIndex == 0) {
			return true;
		} else {
			return false;
		}
	}
	
	sentinelVal.isNotValidZip = function(inZip) {
		var re = /^\d{5}([\-]\d{4})?$/;
   		return !(re.test(inZip.value));
	}
	
	sentinelVal.isNotValidEmail = function(inEmail) {
		var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3} \])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
    	return !(re.test(inEmail.value));
	}

	sentinelVal.isNotValidPhoneNumber = function(inPhone) {
		var returnFlag = false;
		if(inPhone.value.length > 0) {
			var inTrimmed = inPhone.value.replace(/([^0-9]+)/gi, "");
			if(inTrimmed.length != 10) {
				returnFlag = true;
			} else {
				inPhone.value = '(' + inTrimmed.substr(0,3) + ') ' + inTrimmed.substr(3,3) + '-' + inTrimmed.substr(6,4);
			}
		}
		return returnFlag;
	}
	
	sentinelVal.isNotNumeric = function(inString) {
		var returnFlag = false;
		if(isNaN(inString)) {
			returnFlag = true;
		}
		return returnFlag;
	}

	sentinelVal.isValidDate = function(myDate) {
		var year, month, day;
		var dteDate;
		var dateArray = myDate.value.split("/");
		if(myDate.value == '') {
			return true;
		} else {
			if(dateArray.length == 3) {
			
				month = parseInt(dateArray[0]) - 1;
				day = parseInt(dateArray[1]);
				year = parseInt(dateArray[2]);
				dteDate=new Date(year,month,day);
				return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
			} else {
				return false;
			}
		}
	}

	sentinelVal.selectAll = function(oField) {
		oField.select();
	}
	
	sentinelVal.showErrors = function(arrayErrors) {
		var oErrorDiv = document.getElementById('errorMessages');
		var oUL = document.createElement('ul');
		var oLI;
		while(oErrorDiv.hasChildNodes()) oErrorDiv.removeChild(oErrorDiv.firstChild);
		for(var i = 0; i < arrayErrors.length; i++) {
			oLI = document.createElement('li');
			oLI.appendChild(document.createTextNode(arrayErrors[i]));
			oUL.appendChild(oLI);
		}
		oErrorDiv.appendChild(document.createTextNode('Please correct the following errors and resubmit your form:'));
		oErrorDiv.appendChild(oUL);
		oErrorDiv.style.display = 'block';
	}
	
	sentinelVal.validateMe = function(inForm) {
		var returnFlag = true;
		var inputTags = inForm.getElementsByTagName('input');
		var selectTags = inForm.getElementsByTagName('select');
		var arrayErrors = new Array();	
		var numErrors = 0;
		for(var i = 0; i < inputTags.length; i++) {
			if(inputTags[i].getAttribute('valType')) {
				// Validate required fields
				if((inputTags[i].getAttribute('valType').indexOf('required') > -1) && (this.isBlank(inputTags[i]) == true)) {
					returnFlag = false;
					arrayErrors[numErrors] = 'The ' + inputTags[i].getAttribute('valName') + ' field is required.';
					numErrors++;
				}
				// Validate email format
				if((inputTags[i].getAttribute('valType').indexOf('email') > -1) && (this.isNotValidEmail(inputTags[i]) == true)) {
					returnFlag = false;
					arrayErrors[numErrors] = 'The ' + inputTags[i].getAttribute('valName') + ' field is not a properly-formatted email address.';
					numErrors++;
				}
				// Validate phone numbers
				if((inputTags[i].getAttribute('valType').indexOf('phone') > -1) && (this.isNotValidPhoneNumber(inputTags[i]) == true)) {
					returnFlag = false;
					arrayErrors[numErrors] = 'The ' + inputTags[i].getAttribute('valName') + ' field is not a properly-formatted phone number (999-999-9999).';
					numErrors++;
				}
				// Validate zip codes
				if((inputTags[i].getAttribute('valType').indexOf('zip') > -1) && (this.isNotValidZip(inputTags[i]) == true)) {
					returnFlag = false;
					arrayErrors[numErrors] = 'The ' + inputTags[i].getAttribute('valName') + ' field is not a properly-formatted zip code (99999 or 99999-9999).';
					numErrors++;
				}
				// Validate date
				if((inputTags[i].getAttribute('valType').indexOf('date') > -1) && (this.isValidDate(inputTags[i]) == false)) {
					returnFlag = false;
					arrayErrors[numErrors] = 'The ' + inputTags[i].getAttribute('valName') + ' field is not a valid date.';
					numErrors++;
				}
			}
		}
		for(i = 0; i < selectTags.length; i++) {
			if(selectTags[i].getAttribute('valType')) {
				// Validate required drop-down boxes
				if((selectTags[i].getAttribute('valType').indexOf('required') > -1) && (selectTags[i].selectedIndex == 0)) {
					returnFlag = false;
					arrayErrors[numErrors] = 'The ' + selectTags[i].getAttribute('valName') + ' field is required.';
					numErrors++;
				}
			}
		}
		if(returnFlag == false) {
			scroll(0,0);
			this.showErrors(arrayErrors);
		}
		
		return returnFlag;
	}