var FormValidator = {
	
	validateTextField: function(field, message) {
		return (field.value == "") ? message + '<br />' : '';
	},
	
	validateCheckbox: function(field, message) {
		return (!field.checked) ? message + '<br />' : '';
	},
	
	validateRadioField: function(field, message){
		var checked = false;
		for(var i = 0; i < field.length; i++){
			if(field[i].checked){
				checked = true;
				return '';
			}
		}
		return message + '<br />';
	},
	
	emailRegExp: /^[A-Z0-9_+.-]+@([A-Z0-9-]+\.)+[A-Z]+$/i,
	
	validateEmailAddress: function(field, message){
		return this.emailRegExp.test(field.value) ? '' : message + " (Invalid email address)";
	},
	
	validateForm: function(form, div){
		var errMsg = '';
		for(var i = 0; i < form.elements.length; i++){
			var field = form.elements[i];
			if(/\brequired\b/.test(field.className)){
				if(field.onvalidate){
					errMsg += field.onvalidate();
				}else if(/\bemail\b/.test(field.className)){
					errMsg += this.validateEmailAddress(field, field.title);
				}else if(field.type == "checkbox"){
					errMsg += this.validateCheckbox(field, field.title);
				}else if(field.type == "radio"){
					errMsg += this.validateRadioField(form[field.name], field.title);
				}else{
					errMsg += this.validateTextField(field, field.title);
				}
			}
		}
		if (errMsg != "") {
			//alert("Missing Required Fields:\r\n\r\n" + errMsg);
			div.innerHTML = "Missing Required Fields:<br />" + errMsg;
			return false;
		}
	}
};