
if(typeof window.refractFields != 'object') {
	window.refractFields = new Array();
}

if(typeof RefractField != 'function') {
	RefractField = function(nname, req){
		this.nicename = nname;
		this.required = req;
		return this;
	};
}

if(typeof window.prevalidateDynamicForm != 'function') {
	window.prevalidateDynamicForm = function (formName) {
		var message = '';
		var missing = '';
		var invalid = '';
		var valid = true;
		var fields = window.refractFields[formName];
		var form = document.getElementById('dynamicForm:' + formName);
	
		if(!fields || !form) return true;
	
		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 || form.elements[name][form.elements[name].selectedIndex].value=='')) {
					valid = false;
					missing += '    * ' + field['nicename'] + '\n';
				}
				break;
			case 'a_':
			default:
				if(field['required'] && !form.elements[name].value) {
					valid = false;
					missing += '    * ' + field['nicename'] + '\n';
				}
				break;
			}
		}
	
		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 enquiry.\n\n' + message;
			alert(message);
		}
	
		if(valid) form.submitted = true;
		return(valid);
	};
}
