var invalidDomains = new Array(2);
invalidDomains[0] = "hotmail.com";
invalidDomains[1] = "yahoo.com";
invalidDomains[2] = "example.com";

function validate(formName){
	if(validateForm(formName) == true){
		submitForm(formName);
	}
}

function validateForm(formName){
	parentForm = document.getElementById(formName);
	emailField = document.getElementById(formName + "_email");
	fnameField = document.getElementById(formName + "_fname");
	snameField = document.getElementById(formName + "_sname");
	phoneField = document.getElementById(formName + "_phone");
	comField = document.getElementById(formName + "_company");
	addField = document.getElementById(formName + "_address");
	suburbField = document.getElementById(formName + "_suburb");
	stateField = document.getElementById(formName + "_state");
	pcField = document.getElementById(formName + "_postcode");
	
	// assume validity, then test for invalidity
	valid = true;
	document.getElementById(formName + "_errors").innerHTML = "";
	
	// if email is empty
	if(emailField.value == ""){
		valid = false;
		document.getElementById(formName + "_errors").innerHTML = "<strong>Error:</strong> You have not entered an email address.";

	// if email address is invalid
	} else if(isEmail(emailField.value) == false){
		valid = false;
		document.getElementById(formName + "_errors").innerHTML = "<strong>Error:</strong> The email address you have entered is invalid.";
	}
	
	// test for invalid domains
	for(a = 0; a < invalidDomains.length; a++){
		if(emailField.value.indexOf(invalidDomains[a]) > -1){
			valid = false;
			document.getElementById(formName + "_errors").innerHTML = "<strong>Error:</strong> Company email addresses only, please.";
		}
	}
	
	// no first name
	
	if(fnameField.value == ""){
		valid = false;
		if(document.getElementById(formName + "_errors").innerHTML == "")
			document.getElementById(formName + "_errors").innerHTML += "<strong>Error:</strong> You have not entered your first name.";
		else
			document.getElementById(formName + "_errors").innerHTML += "<br />You have not entered your first name.";
	}

	if(snameField.value == ""){
		valid = false;
		if(document.getElementById(formName + "_errors").innerHTML == "")
			document.getElementById(formName + "_errors").innerHTML += "<strong>Error:</strong> You have not entered your surname.";
		else
			document.getElementById(formName + "_errors").innerHTML += "<br />You have not entered your surname.";
	}

	if(phoneField.value == ""){
		valid = false;
		if(document.getElementById(formName + "_errors").innerHTML == "")
			document.getElementById(formName + "_errors").innerHTML += "<strong>Error:</strong> You have not entered your phone number.";
		else
			document.getElementById(formName + "_errors").innerHTML += "<br />You have not entered your phone number.";
	}

	if(comField.value == ""){
		valid = false;
		if(document.getElementById(formName + "_errors").innerHTML == "")
			document.getElementById(formName + "_errors").innerHTML += "<strong>Error:</strong> You have not entered your company name.";
		else
			document.getElementById(formName + "_errors").innerHTML += "<br />You have not entered your company name.";
	}

	if(addField.value == "" || suburbField.value == "" || stateField.value == "" || pcField.value == ""){
		valid = false;
		if(document.getElementById(formName + "_errors").innerHTML == "")
			document.getElementById(formName + "_errors").innerHTML += "<strong>Error:</strong> You have not entered your address details.";
		else
			document.getElementById(formName + "_errors").innerHTML += "<br />You have not entered your address details.";
	}

	return valid;
}

function submitForm(formName){
	document.getElementById(formName).submit();
}







// http://www.webreference.com/js/tips/990928.html

function isEmail(str) {
	// are regular expressions supported?
	var supported = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}
