function pre_request(formData, jqForm, options) {
  $("div#register_message").removeClass("error notice").html("").hide();
  disable_form();
  return true; // returning anything other than false will allow the form submit to continue 
}

function post_request(json, statusText) { 
  $("div#register_message").flashMessage(json.type, json.msg, 6000);
  if( json.type == "error") {
    enable_form();
    select_first_field();
  }
  else { // result = success!!
    setTimeout("document.location.href='index.php?type=notice&msg=Check your email for your temporary password, then come back and login.'", 5000);
  }
}


$(document).ready(function() {
  $("form#register_form").show();

  $('input#phone').mask("(999) 999-9999? x99999");
  $('input#zip_code').mask("99999?-9999");

  select_first_field();

  // create option object for the ajaxSubmit call 
  var ajaxsubmit_options = {
    beforeSubmit:  pre_request,    // pre-submit callback 
    success:       post_request,   // post-submit callback
    dataType:     'json'           // 'xml', 'script', or 'json' (expected server response type)       
  }
  
	// validate signup form on keyup and submit
	var validator = $("#register_form").validate({
		rules: {
			company: {
			  required: true,
			  minlength: 2
			},
			first_name: {
			  required: true,
			  minlength: 2
			},
			last_name: {
			  required: true,
			  minlength: 2
			},
      phone: {
        required: true,
        phone: true
      },
			email: {
				required: true,
				email: true,
				remote: "./php/email_available.php"
			},
			zip_code: {
			  required: true,
        zip_code: true
			}
		},
		messages: {
			company: {
				required: "Enter your organization",
				minlength: "Invalid organization"
			},
			first_name: {
				required: "Enter your first name",
				minlength: "Incomplete first name"
			},
			last_name: {
				required: "Enter your last name",
				minlength: "Incomplete last name"
			},
			phone: {
				required: "Invalid phone number",
			  phone: "Invalid phone number"
			},
			email: {
				required: "Invalid email address",
				email: "Invalid email address",
        remote: "Already in use"
			},
			zip_code: {
			  required: "Invalid zip code",
			  zip_code: "Invalid zip code"
			}
		},
		// set this class to error-labels to indicate valid fields
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		},
		submitHandler: function() {
			$("form#register_form").ajaxSubmit(ajaxsubmit_options);
      return false;  //  return false to prevent standard browser submit
		}
	});

});
