// validate form.  
function daValidateForm(formName,requiredList,emailList,selectList,matchList) {
	var validEmails = true;
	var requiredFields = true;
	var selectFields = true;
	var matchFields = true;
	var errorDiv = document.getElementById("validationError");
	
	window.location = '#message';
	
	if (emailList != null) validEmails = daValidEmail(formName,emailList);
	if (requiredList != null && requiredList != '') requiredFields = daRequiredFields(formName,requiredList);
	if (selectList != null && selectList != '') selectFields = daSelectFields(formName,selectList);
	if (matchList != null && matchList != '') matchFields = daMatchFields(formName,matchList);
	var formIsValid = true;
	
	if (!validEmails || !requiredFields) formIsValid = false;
	if (!formIsValid) {
		errorDiv.style.display = "block";
	} else {
		errorDiv.style.display = "none";
	}
	return formIsValid;
}
	
function daRequiredFields (formName,requiredFields) {
	var fieldName = "";
	var requiredMsg = "";
	var validated = true;
	var valueArray = requiredFields.split(",");
	
	// each argument is a fieldname of an email field to validate.
	for (var i = 0; i < valueArray.length; i++) {
		fieldName = eval("document." + formName + "." + valueArray[i]);
		fieldValue = fieldName.value;
		requiredMsg = document.getElementById(valueArray[i] + 'required');
		
		if (fieldName.type != 'checkbox') {
			
			if (fieldValue == "") {
				validated = false;
				requiredMsg.style.display = "block";
			}
			else {
				requiredMsg.style.display = "none";
			}
		} else {
						
			if (!fieldName.checked) {
				
				validated = false;
				requiredMsg.style.display = "block";				
				
			} else {				
				
				requiredMsg.style.display = "none";
				
			};
			
		};
	}
	return validated;
}

function daValidEmail (formName,emailFields) {
	var email = "";
	var emailValid = "";
	var validated = true;
	var valueArray = emailFields.split(",");
	
	// each argument is a fieldname of an email field to validate.
	for(var i=0; i<valueArray.length; i++) {
		emailField = eval("document." + formName + "." + valueArray[i]);
		email = emailField.value;
		emailValid = document.getElementById(valueArray[i] + 'valid');

		if (!isValidEmail(email)) { 
			validated = false;
			emailValid.style.display = "block";
		} else {
			emailValid.style.display = "none";
		}
	}
	return validated;
}

// validate email address
function isValidEmail(src){
	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
	return regex.test(src);
}
	
	

function daSelectFields(formName,selectFields) {
		var valueArray = selectFields.split(",");
		var valueArrayIndex = 0;
		var requiredMsg = "";
		var validated = "";
		for (var i=0; i<valueArray.length; i++) {
			
			var selectID = document.getElementById(valueArray[i]);
			requiredMsg = document.getElementById(valueArray[i] + 'required');
			if (selectID.selectedIndex == 0) {
				validated = false;
				requiredMsg.style.display = "block";
			} else {
				validated = true;
				requiredMsg.style.display = "none";
			}
		}
		
		return validated;
	}
	
function daMatchFields(formName,matchFields) {
	
	var matchValuesArray = matchFields.split(",");
	var matched = false;
	var matchID = document.getElementById(matchValuesArray[1]);
	var	matchMsg = document.getElementById(matchValuesArray[1] + 'matchfields')
	var val1 = eval("document." + formName + "." + matchValuesArray[0] + ".value");
	var val2 = eval("document." + formName + "." + matchValuesArray[1] + ".value");
	
	if (val1 != null && val2 != null) {
	
		if (val1 === val2) {
			matched = true;
			matchMsg.style.display = "none";
			
		}
		
		else {
		
			matched = false;
			matchMsg.style.display = "block";
			
		}
		
	} 
	
	return matched;
	
}


