﻿var genericValidationOptions = {

  //the validation rules for the various fields
  rules: {
    geslacht_field: {
      required: true
    },
    achternaam_field: {
      required: true
    },
    voornaam_field: {
      required: true
    },
    email_field: {
      required: true,
      email: true
    },
    bericht_field: {
      required: true
    },
    telefoonnummer_field: {
      required: true,
      number: true
    }
  },

  //the messages shown on a validation error for various fields
  messages: {
    geslacht_field: {
      required: "Selecteer uw geslacht"
    },
    achternaam_field: {
      required: "Vul uw achternaam in"
    },
    voornaam_field: {
      required: "Vul uw voornaam in"
    },
    email_field: {
      required: "Vul uw e-mailadres in",
      email: "Vul een geldig emailadres in"
    },
    bericht_field: {
      required: "Vul uw reactie in"
    },
    telefoonnummer_field: {
      required: "Vul uw telefoonnummer in",
      number: "Vul een geldig telefoonnummer in"
    }
  },

  //the class for valid and invalid messages
  success: "valid",
  errorClass: "invalid",


  //the placement of the errormessages
  errorPlacement: function (error, element) {
    if (element.context.name == ("geslacht_field")) {
      error.insertBefore(element.next().next());
    } else {
      error.insertBefore(element.next());
    }
  }
};

$().ready(function () {
  // validate the comment form when it is submitted
  $("#genericForm").validate(genericValidationOptions);

  //register the custom validator to the validator object
  $.validator.addMethod("postalCode", postalCodeValidator, "");
  $.validator.addMethod("birthDateNL", birthdateValidator, "");
  $.validator.addMethod("selectCheck", selectValidator, "");
  $.validator.addMethod("selectNotFirst", function (value, element) {
    var options = $("option:selected", element).val();
    var first = $(element).children(":first").val();
    return (options != first);
  }, ""
	);
});


//custom validation methods
function postalCodeValidator(value, element) {
  return /^\d{4}\s?[A-Z,a-z]{2}$/.test(value);
}

function birthdateValidator(value, element) {
  if (value == '') {
    return true;
  } else {
    return /^(0[1-9]|[1-2][0-9]|3[01])-(0[1-9]|1[0-2])-(19|20)\d\d$/.test(value);
  }
}

function selectValidator(value, element) {
  if (value == '-1') {
    return false;
  }
  return true;
}

function selectValidator(value, element, params) {
  if (params) {
    if (value == '-1') {
      return false;
    }
  }
  return true;
}

