// FORM VALIDATION
// Adriano Santi (contact@adrianosanti.com), September 2005

function validateForm(formObj) { 
var formElements = formObj.elements;

var canSubmit = true; 
var emailValid = true; 
var fieldsComplete = true; 
var anyChecked = true; 

var rcBoxes = new Array();
rcBoxes[0] = new Array();
rcBoxes[1] = new Array();
var rcArrays = new Array();
rcArrays[0] = new Array;
rcArrays[1] = new Array;
var colorOnBg = '#dddbdb';
var colorOffBg = '#b7a85f';

for (i=0;i<formElements.length;i++) {
	
	if (formElements[i].type == 'text' || formElements[i].type == 'textarea') {
		if (formElements[i].name.substring((formElements[i].name.length -4),(formElements[i].name.length)) == '_req' && (formElements[i].value == '' || formElements[i].value == 'undefined')) {
		formElements[i].style.backgroundColor = colorOffBg; 
		fieldsComplete = false;
			}
		if (formElements[i].name == 'email_req') {
			if (formElements[i].value.search('.+@.+\\.[a-z]+') == -1) {
				formElements[i].style.backgroundColor = colorOffBg; 
				emailValid = false;
				}
			else { 
				formElements[i].style.backgroundColor = colorOnBg;
				}
			}
		else if (formElements[i].name.substring((formElements[i].name.length -4),(formElements[i].name.length)) == '_req' && formElements[i].value != '') {
			formElements[i].style.backgroundColor = colorOnBg;
			}
		}

		else if (formElements[i].type == 'radio' || formElements[i].type == 'checkbox') {
			if (formElements[i].name.substring((formElements[i].name.length -4),(formElements[i].name.length)) == '_req') {
			rcBoxes[0].push(formElements[i].name);
			rcBoxes[1].push(formElements[i].checked);
			}
		}else if(formElements[i].type == 'select-one'){
			if(formElements[i].value == "Select an option"){
				formElements[i].style.backgroundColor = colorOffBg; 
				fieldsComplete = false;
			}else{
				formElements[i].style.backgroundColor = colorOnBg;
			}
		
		}
	}

if (rcBoxes[0].length > 0) {
	for (i=0;i<rcBoxes[0].length;i++) {
		targetCheck = formObj[rcBoxes[0][i]];
		i += targetCheck.length;
		for (j=0;j<targetCheck.length;j++) {
			if (targetCheck[j].checked) {
				rcArrays[1].push(true);
				rcArrays[0].push(targetCheck[j].name);
				break;
				}
			else if (j == (targetCheck.length -1)) {
				rcArrays[0].push(targetCheck[j].name);
				}
			}
		}
	if (rcArrays[0].length != rcArrays[1].length) {
		anyChecked = false;
		}
	}

if (!fieldsComplete || !anyChecked) {
	// This message will display if a required textfield was left blank or a checkbox was left un-checked.
	alert('Please fill out all fields before submitting.');
	
	canSubmit = false; // Don't let the form submit.
	//openAlert("Please fill out all * Required fields before submitting.");
	}
else if (!emailValid) {
	// This message will display if the user didn't enter a valid email address.
	alert('You did not enter a valid email address in the highlighted field.');
	
	canSubmit = false; // Don't let the form submit.
	//openAlert("You did not enter a valid email address in the highlighted field.");
	}
if (fieldsComplete && emailValid && anyChecked) {
	// If everything has been properly filled and a valid email address has been entered, the form can submit!
	document.getElementById('submit').style.display='none';
	canSubmit = true;
	}
return canSubmit;
}