function validate_form()
{
    valid = true;
	message = "Error(s):\n\n";
	
    if ( document.emailForm.full_name.value == "" ||
		document.emailForm.address.value == "" ||
		document.emailForm.city.value == "" ||
		document.emailForm.zip.value == "" ||
		document.emailForm.email.value == "" )
		{
        	message = message + "One or more required fields are empty.\n";
	        valid = false;
    	}
		
	if (!checkboxLimit(document.emailForm.topics))
		{ 
			message = message + "Please select up to three (3) topics.\n";
			valid = false; 
		}
	if (!isValid(document.emailForm.zip.value,"^[0-9]{5}(\-{1}[0-9]{4})?$"))
		{ 
			message = message + "Zip code must be five digits, or nine digits with a dash.\n";
			valid = false; 
		}
	if (!isValid(document.emailForm.email.value,"^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$"))
		{ 
			message = message + "Invalid email address.\n";
			valid = false; 
		}
	if (!valid) { alert(message); }
    return valid;
}

function checkboxLimit(elements)
{
	var numChecked = 0;
	for (var i=0; i < elements.length; i++) {
		if (elements[i].checked) numChecked++; }
	if (numChecked > 3)  {
		return false; }
	else { 
		return true; }
}

function isValid(str,expr) 
{
	var regex = new RegExp(expr);
	var result = regex.test(str);	
	return(result);
}