$(document).ready(function(){

  // initialize input fields
  setExample('#invitation_first_name', '');
  setExample('#invitation_last_name', '');
  setExample('#invitation_email', '');

  // Set the validator default messages as empty text ('')
  jQuery.validator.messages.required = "This field is required";
  jQuery.validator.messages.minlength = "";
  jQuery.validator.messages.email = "Please Enter a Valid Email";

  // prevent double submit
  jQuery('#new_invitation').preventDoubleSubmit;

  // Validate the form
  $('#new_invitation').validate({
    focusInvalid: false,
    invalidHandler: function(form, validator) {
      // iterate over the error list
			for ( var i = 0; validator.errorList[i]; i++ ) {
				var error = validator.errorList[i];
			}
			if (validator.errorList.length > 0) {
			  Metrics.betaInvitationError(true);
			}
    },
    errorPlacement: function(error, element) {
      if (element.attr("name") == "invitation[account_type]") {
        $('#account_type_custom_error').append(error);
      } else if (element.attr("name") == "invitation[agreements_authorized]") {
        alert('saf' + error);
        $('#agreements_authorized_custom_error').append(error);
      } else if (element.attr("name") == "invitation[email]") {
        $('#email_custom_error').append(error);
      } else {
        error.insertAfter(element);
      }
     },
    rules: {
      'invitation[agreements_authorized]': 'required',
      'invitation[first_name]': {
        required: true,
        minlength: 2,
        letterswithbasicpunc: true
      },
      'invitation[last_name]': {
        required: true,
        minlength: 2,
        letterswithbasicpunc: true
      },
      'invitation[account_type]': 'required',
      'invitation[email]': {
        required: true,
        email: true,
        remote: {
          data: { email: function(){ return $("#invitation_email").val();} },
          type: 'get',
          url : "/invitations/check_email"
        }
      }
    },
    messages: {
      'invitation[account_type]': 'Please select your desired account type',
      'invitation[agreements_authorized]': 'You must accept the agreements to join'
    }
  });
});

