function regOnSubmit()
	{
	var f = $("#regForm");
	f[0].submitted_once = true;
	var ok = true;
	
	var fn = $("[name='first_name']",f);
	var ln = $("[name='last_name']",f);
	var gme = $("[name='gender_self']",f);
	var gsk = $("[name='gender_seeking']",f);
	var zr = $("[name='zip_radius']",f);
	var z = $("[name='zip']",f);
	var e = $("[name='email']",f);
	var ce = $("[name='confirm_email']",f);
	var p = $("[name='pass']",f);
	var cp = $("[name='confirm_pass']",f);
	var sq = $("[name='security_question']",f);
	var sa = $("[name='security_answer']",f);
	var ra = $("[name='read_agreements']",f);
	
	var name_regexp = new RegExp("[^a-zA-Z\-]","g");
	var numeric_regexp = new RegExp("[^0-9]","g");
	var email_regexp = new RegExp("[^a-zA-Z0-9_@\+\-\.]","g");
	if (fn.val() != fn[0].defaultValue) fn.val(fn.val().replace(name_regexp,""));
	if (ln.val() != ln[0].defaultValue) ln.val(ln.val().replace(name_regexp,""));
	if (z.val() != z[0].defaultValue) z.val(z.val().replace(numeric_regexp,""));
	if (e.val() != e[0].defaultValue) e.val(e.val().replace(email_regexp,""));
	if (ce.val() != ce[0].defaultValue) ce.val(ce.val().replace(email_regexp,""));
	
	
	if (!inputHasValue(fn)) ok = alertField(fn,{id:"first_name",message:"Please enter your first name."});
	else alertField(fn,{id:"first_name"},true);
	if (!inputHasValue(ln)) ok = alertField(ln,{id:"last_name",message:"Please enter your last name."});
	else alertField(ln,{id:"last_name"},true);

	if (!gsk.val()) ok = alertField(gsk,{id:"gender",message:"Please select <strong>their</strong> gender."});
	else alertField(gsk,{},true);
	if (!gme.val()) ok = alertField(gme,{id:"gender",message:"Please select <strong>your</strong> gender."});
	else alertField(gme,{},true);
	if (gsk.val() && gme.val()) alertField(gme,{id:"gender"},true);
	
	if (!inputHasValue(z)) ok = alertField(z,{id:"zip",message:"Please enter your zip code."});
	else if (z.val().length != 5 && z.val().length != 6) ok = alertField(z,{id:"zip",message:"Please enter a valid 5/6-digit zip code."});
	else alertField(z,{},true);
	if (!zr.val()) ok = alertField(zr,{id:"zip",message:"Please select a number of miles."});
	else alertField(zr,{},true);
	if (inputHasValue(z) && inputHasValue(zr) && (z.val().length == 5 || z.val().length == 6)) alertField(zr,{id:"zip"},true);
	
	if (!inputHasValue(e)) ok = alertField(e,{id:"email",message:"Please enter your email address."});
	else if (!strContains(e.val(),["@","."])) ok = alertField(e,{id:"email",message:"Please a valid email address."});
	else alertField(e,{id:"email"},true);
	if (!inputHasValue(ce)) ok = alertField(ce,{id:"confirm_email",message:"Please re-enter your email address."});
	else if (e.val() != ce.val()) ok = alertField(ce,{id:"confirm_email",message:"Email accounts do not match. Please check."});
	else alertField(ce,{id:"confirm_email"},true);
	
	if (!inputHasValue(p)) ok = alertField(p,{id:"pass",message:"Please enter a password."});
	else alertField(p,{id:"pass"},true);
	if (!inputHasValue(cp)) ok = alertField(cp,{id:"confirm_pass",message:"Please re-enter your password."});
	else if (p.val() != cp.val()) ok = alertField(cp,{id:"confirm_pass",message:"Passwords do not match. Please re-enter."});
	else alertField(cp,{id:"confirm_pass"},true);

	if (!sq.val()) ok = alertField(sq,{id:"security_question",message:"Please select your security question"});
	else alertField(sq,{id:"security_question"},true);

	if (!inputHasValue(sa)) ok = alertField(sa,{id:"security_answer",message:"Please type an answer to your security question."});
	else alertField(sa,{id:"security_answer"},true);

	if (!ra[0].checked) ok = alertField(ra,{id:"read_agreements",message:"Verification required before registration."});
	else alertField(ra,{id:"read_agreements"},true);
	
	return ok;
	}

$(document).ready(function()
	{
	var relevants = $("#regForm .txt,#regForm select,#regForm input[type='checkbox']");
	relevants.bind("focus",function()
		{
		$(this).addClass("active");
		});
	relevants.bind("blur",function()
		{
		$(this).removeClass("active");
		if ($("#regForm")[0].submitted_once) regOnSubmit();
		});
	$("#regForm select").bind("change",function()
		{
		if ($("#regForm")[0].submitted_once) regOnSubmit();
		});
	
	$("#reg_links_out a").bind("mouseover",function()
		{
		$(".up",$(this)).css("display","none");
		$(".over",$(this)).css("display","block");
		});
	$("#reg_links_out a").bind("mouseout",function()
		{
		$(".over",$(this)).css("display","none");
		$(".up",$(this)).css("display","block");
		});
	$("#regForm [name='first_name']").focus();
	});