/*
var required_fields = new Array(
	new FormField('firstname', 'First Name', 'text'),
	new FormField('lastname', 'Last Name', 'text'),
	new FormField('email', 'Email Adress', 'email'),
	new FormField('companyname', 'Company Name', 'text'),
	new FormField('jobtitle', 'Job Title', 'text'),
	new FormField('industry', 'Industry', 'select'),
	new FormField('businessphone', 'Business Phone', 'text')
);
*/

function FormField(name, desc, type, additional_params) {
	this.name = name;
	this.desc = desc;
	this.type = type;
	this.additional_params = additional_params; // multi-use

	this.isValid = function(f) {
		switch (this.type) {
			case "text" :
				return (f.elements[this.name].value != "");
				break;

			case "email" :
				var email_regex = /^([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9_-]+\.)+[a-z]{2,3}$/i;
				return (email_regex.test(f.elements[this.name].value));
				break;

			case "select" :
				return (f.elements[this.name].options[f.elements[this.name].selectedIndex].value != "");
				break;

			case "number" :
				var number_regex = /^[0-9]+$/;
				return ( number_regex.test(f.elements[this.name].value) && (f.elements[this.name].value.length == this.additional_params) );
				break;

			case "confirm" :
 				return ( (f.elements[this.name].value != "") && (f.elements[this.additional_params].value == f.elements[this.name].value) );
				break;

			case "checkbox" :
				return (f.elements[this.name].checked == true);
				break;

			default : return false;
		};
	};
}


function validateForm(f) {
	var fields_with_errors = new Array();

	for (var i in required_fields) {
		if (!required_fields[i].isValid(f)) {
			fields_with_errors[fields_with_errors.length] = required_fields[i].desc;
		}
	}

	if (fields_with_errors.length > 0) {
		alert("Please make sure the following fields are complete:\n\n - " + fields_with_errors.join("\n - "));
		return false;
	} else {
		return true;
	}
}


