
if(typeof window.refractFields != 'object') {
	window.refractFields = new Array();
}

if(typeof RefractField != 'function') {
	RefractField = function(nname, req, ignore_expression, validation_expression){
		this.nicename = nname;
		this.required = req;
		this.ignore_exp = ignore_expression;
		this.validation_exp = validation_expression;
		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';
				}

				//implemented by David  10/04/2008 for dynamic form validation checking
				if (field.ignore_exp!=null && field.validation_exp!=null)
				{
					if (!checkValidation(field, form.elements[name].value))
					{
								valid = false;
								invalid += '    * ' + 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' ;
			message += '\nNote: Please inlcude area code with all phone numbers.\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);
	};
}



function checkValidation(field, field_value) {
	if(field_value && field_value.replace(field.ignore_exp,'').search(field.validation_exp) < 0) {
		return(false);
	}
	else {		
		return(true);
	}
}

