function prevalidate(form) {
	var message = '';
	var missing = '';
	var invalid = '';
	var valid = true;
	var fields = window.refractFields["contact_us"];

	if(form.submitted) return false;

	for(name in fields) {
	
		var field = fields[name];
		switch(name.substr(0,2)) {
		case 'r_':
		case 'c_':
			if(!field['required']) continue;
			fieldSet = form.elements[name];
			var oneChecked = false;
			for(var j = 0 ; j < fieldSet.length ; j++) {
				if(fieldSet[j].checked) {
					oneChecked = true;
					continue;
				}
			}
			if(!oneChecked) {
				valid = false;
				missing += '    * ' + field['nicename'] + '\n';
			}
			break;
		case 's_':
		case 'm_':
			if(field['required'] && form.elements[name].selectedIndex < 0) {
				valid = false;
				missing += '    * ' + field['nicename'] + '\n';
			}
			break;
		case 'a_':
		default:
			if(field['required'] && !form.elements[name].value) {
				valid = false;
				missing += '    * ' + field['nicename'] + '\n';
			}
			break;
		}
	}

	// Extra field validation
	if(form.elements['email'].value && form.elements['email'].value.search(/^[^@]+@([A-Za-z0-9-]+\.)+[A-Za-z]{2,4}$/) < 0) {
		valid = false;
		invalid += '    * ' + fields['email']['nicename'] + '\n';
	}
	
//	if(form.elements['recipient_email'].value && form.elements['recipient_email'].value.search(/^[^@]+@([A-Za-z0-9-]+\.)+[A-Za-z]{2,4}$/) < 0) {
//		valid = false;
//		invalid += '    * ' + fields['recipient_email']['nicename'] + '\n';
//	}
//	if(form.elements['postcode'].value && form.elements['postcode'].value.search(/^[0-9]{4}$/) < 0) {
//		valid = false;
//		invalid += '    * ' + fields['postcode'].nicename + '\n';
//	}         



	if(missing)
		message += 'The following required fields have not been completed:\n' + missing + '\n' ;

	if(invalid)
		message += 'The following fields contain invalid data:\n' + invalid + '\n' ;

	if(!valid) {
		message = 'The following problems were found with the data entered.\nPlease correct these in order to proceed with your registration.\n\n' + message;
		alert(message);
	}

	if(valid) form.submitted = true;
	return(valid);

}

