function validate(form,trigger)
{
	err = false; 
	for (i=0; i<form.elements.length; i++)
	{
		el = form.elements[i]; el_inspect = false; el_is_text = false;
		if (el.name.indexOf('[')<0)
		{
			if (document.getElementById('check_'+el.name))
			{
				el_check = document.getElementById('check_'+el.name);
				if (el_check.value) el_inspect = true;
			}
		}
		if (el_inspect)
		{
			if (el.type.search(/text|texarea|password/)>-1) el_is_text = true;
			if (el_is_text)
			{
				if (!el.value) err = el_check.value;
				else
				{
					if (el.name.search(/email/i) > -1)//email
					{
						if (el.value.search(/^\w[\w.-]*@\w[\w.-]*\.[a-z]{2,7}$/i) < 0) err = "Please enter a valid email address.";
					}
					if (el.name.search(/zip.?code/i)>-1)//zip code
					{
						if (el.value.search(/^\d{5}(\-\d{4})?$/) < 0) err = "Please enter a valid zip code.";
					}
					if (el_nospecial = document.getElementById("nospecial_" + el.name))//no special
					{
						if (el.value.search(/\W/) > -1) err = el_nospecial.value;
					}
					if (el_verify = document.getElementById("verify_" + el.name))//verify
					{
						el_verify_match = document.getElementById("Verify" + el.name);
						if (el.value != el_verify_match.value) err = el_verify.value;
					}
				}
			}
			else if (el.type=="select-one" && el.selectedIndex==0) err = el_check.value;
			else if (el.type=="radio" && !check_radio(el.name)) err = el_check.value;
			else if (el.type=="checkbox" && !el.checked) err = el_check.value;
		}
		if (err)
		{
			alert(err);
			el.focus();
			if (el_is_text && el.value) el.select();
			return false;
		}
	}
	if (!err)
	{
		if (trigger) {trigger.focus(); trigger.disabled = true;}
		return true;
	}
}

function check_radio(group)
{
	radios = document.getElementsByName(group);
	for (r=0; r<radios.length; r++) if (radios[r].checked) return true;
}
