function sendFormAgencySignUp(f, highLight)
{
	var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
	var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
	var reg3str = "[0-9]";
	var reg1 = new RegExp(reg1str);
	var reg2 = new RegExp(reg2str);
	var reg3 = new RegExp(reg3str);
	var msg = "Please fill in the following fields:\n\n";
	var reqFields = "";

	//style information for valid and invalid form elements
	var defStyle = "formField";
	var altStyle = "invalid";
	
	//array to style elements
	var labelStyle = new Array(fields.length);
	
	//BBT specific fix for underscore
	//for(var k=0; k < fields.length; k++) { fields[k].replace("_", ""); }
	
	//itterate through each of the form fields to be validated
	for(i=0;i<fields.length;i++) {
		//for text and textarea form types perform the following validation 
		if(f[fields[i]].type == "text" || f[fields[i]].type == "textarea" || f[fields[i]].type == "password") {
			//if email, compare against regular expressions
			if(fields[i] == "email") {
				//retain the value of the email in a variable
				var strEmail = f[fields[i]].value;
				
				//checks to make sure the email address is valid and sets appropriate style.
				if (!reg1.test(strEmail) && reg2.test(strEmail)) {
					labelStyle[i] = defStyle;
				} else {
					labelStyle[i] = altStyle;
					reqFields += fieldInfo[i]+"\n";
				}
				
			} else if(fields[i] == "emailConfirm") { //if emailConfirm box is included, verify against email
				//retain values of email and emailConfirm in a variable
				var strEmailConfirm = f[fields[i]].value;
				var strEmail = f["email"].value;
				
				//compare email against confirmEmail pass if the same
				if(strEmailConfirm == strEmail && (!reg1.test(strEmailConfirm) && reg2.test(strEmailConfirm))) {
					labelStyle[i] = defStyle;
				} else {
					labelStyle[i] = altStyle;
					reqFields += fieldInfo[i]+"\n"
				}
			} else if(fields[i] == 'password') {
				var password = f[fields[i]].value;
				var repeatPassword = f["password2"].value;
				
				if(password != repeatPassword || password.length < 1) {
					labelStyle[i] = altStyle;
					reqFields += fieldInfo[i]+"\n";
				}
			} else { //general form fields, just looking for a length greater than 0
				if(f[fields[i]].value.length == 0) {
					if(f[fields[i]].type == "textarea") {
						document.getElementById(fields[i]).className = altStyle;
					} else {
						labelStyle[i] = altStyle;
					}
					reqFields += fieldInfo[i]+"\n";
				} else {
					labelStyle[i] = defStyle;
				}
			}
		} else if (f[fields[i]].type == "select-one") { //check select boxes, again length greater than 0
			if(f[fields[i]].options.length < 1 || f[fields[i]].options[f[fields[i]].selectedIndex].value.length == 0) {
				labelStyle[i] = altStyle;
				reqFields += fieldInfo[i]+"\n";
			} else {
				labelStyle[i] = defStyle;
			}
		}
	}
	
	//Handle required fields and display as appropriate
	if(reqFields.length > 0) {
		//two types of display either highLight or alert
		if(highLight == 1) {
			for(var i=0;i<fields.length;i++)
				f[fields[i]].className = labelStyle[i];
				alert(msg+reqFields);
		} else {
			alert(msg+reqFields);
		}
			
		return false;
	} else {
		if ( document.getElementById("vettingConsent_Y") )
		{
			if ( !document.getElementById("vettingConsent_Y").checked )
			{
				alert("As you have not consented to credit checking, we are unable to process your application. Please click OK to go back to the Agency Application Form");
				return false;
			}
		}
		else
		{
			return true;
		}
	}
}
