function FormUtils(){
	throw 'FormUtils can not be instantiated.';
}

FormUtils.clearDefault = function(field) {
  if (field.defaultValue == field.value)
  field.value = "";
};

FormUtils.getRadioValue = function(radioGroup){
	for(var i = 0; i < radioGroup.length; i++){
		if(radioGroup[i].checked){
			return radioGroup[i].value;
		}
	}
	return null;
};

FormUtils.toggleFee  = function(checkbox, feeField, valueOn, valueOff, callback){
	feeField.value = checkbox.checked ? valueOn : valueOff;
	if(callback){
		callback();
	}
};

FormUtils.toggleSection = function(checkbox, sectionId, callback){
	var displayVal = checkbox.checked ? '' : 'none';
	document.getElementById(sectionId).style.display = displayVal;
	if(callback){
		callback();
	}
};

FormUtils.validateTextField = function(field, message) {
	return (field.value == "") ? message + "\n" : '';
};

FormUtils.validateCheckbox = function(field, message) {
	return (!field.checked) ? message + "\n" : '';
};

FormUtils.validateRadioField = function(field, message){
	var checked = false;
	for(var i = 0; i < field.length; i++){
		if(field[i].checked){
			checked = true;
			return '';
		}
	}
	return message + "\n";
};

FormUtils.validateEmailAddress = function(field, message){
	return (field.value.match(/^[A-Z0-9_+.-]+@([A-Z0-9-]+\.)+[A-Z]+$/i)) ? '' : message + "\n\t(Invalid email address)\n";;
};

FormUtils.validateForm = function(form, evt){
	var errMsg = '';
	for(var i = 0; i < form.elements.length; i++){
		var field = form.elements[i];
		if(field.className.indexOf('required') > -1){
			if(field.onvalidate){
				errMsg += field.onvalidate();
			}else if(field.className.indexOf('email') > -1){
				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:\n\n" + errMsg);
		if(evt && evt.preventDefault){
			evt.preventDefault();
		}
		return false;
	} else {
		return true;
	}
};
