$(function () {
  $(".mayusculas input[type='text']").css("text-transform", "uppercase");
  $(".mayusculas input[type='text']").keyup(function () {
    this.value = this.value.toUpperCase();
  });

  $(".mayusculas input[type='password']").css("text-transform", "uppercase");
  $(".mayusculas input[type='password']").keyup(function () {
    this.value = this.value.toUpperCase();
  });

  $('input[type="text"].dui').mask("00000000-0");
  $('input[type="text"].nit').mask("0000-000000-000-0");
  $('input[type="text"].telefono').mask("0000-0000");

  typeof selectpicker !== "undefined" &&
    $("select.selectpicker").selectpicker();

  if (typeof flatpickr !== "undefined") {
    let flatpickr_fields = document.querySelectorAll("input.flatpickr");

    flatpickr_fields.forEach((field) => {
      let opcionesAdicionales = {
        dateFormat: "d-m-Y",
        static: true,
        altInput: false,
        disableMobile: true,
      };

      if (
        $(field).attr("data-static") &&
        $(field).attr("data-static") == "false"
      )
        opcionesAdicionales.static = false;

      if (
        $(field).attr("data-datetime") &&
        $(field).attr("data-datetime") == "true"
      ) {
        opcionesAdicionales.enableTime = true;
        opcionesAdicionales.dateFormat = "d-m-Y h:i K";
        opcionesAdicionales.time_24hr = false;
      }

      if (
        $(field).attr("data-only-MY") &&
        $(field).attr("data-only-MY") == "true"
      ) {
        let opciones_plugin = {};

        if (
          $(field).attr("data-altInput") &&
          $(field).attr("data-altInput") == "true"
        ) {
          opcionesAdicionales.altInput = true;
          let altFormat =
            $(field).attr("data-altFormat") || opcionesAdicionales.dateFormat;
          opciones_plugin.altFormat = altFormat;
          opciones_plugin.dateFormat = opcionesAdicionales.dateFormat;
        }

        opcionesAdicionales.plugins = [
          new monthSelectPlugin({
            shorthand: true,
            ...opciones_plugin,
          }),
        ];
      }

      if (
        $(field).attr("data-only-adults") &&
        $(field).attr("data-only-adults") == "true"
      ) {
        opcionesAdicionales.maxDate = moment()
          .subtract(18, "years")
          .format("DD-MM-YYYY");
        opcionesAdicionales.minDate = moment()
          .subtract(100, "years")
          .format("DD-MM-YYYY");
      }

      if (
        $(field).attr("data-max-today") &&
        $(field).attr("data-max-today") == "true"
      ) {
        opcionesAdicionales.maxDate = moment().format("DD-MM-YYYY");
      }

      if (
        $(field).attr("data-min-today") &&
        $(field).attr("data-min-today") == "true"
      ) {
        opcionesAdicionales.minDate = moment().format("DD-MM-YYYY");
      }

      if ($(field).attr("data-min-month")) {
        opcionesAdicionales.minDate = moment()
          .subtract(1, "month")
          .format("DD-MM-YYYY");
      }

      $(field).flatpickr({
        locale: "es",
        ...opcionesAdicionales,
      });

      let invalidFeedback =
        opcionesAdicionales.static &&
        field.parentNode.parentNode.querySelector(".invalid-feedback");

      if (invalidFeedback) $(field).parent().append(invalidFeedback);

      let button = opcionesAdicionales.static
        ? field.parentNode.parentNode.querySelector("button")
        : field.parentNode.querySelector("button");

      if (opcionesAdicionales.static && button) {
        field.parentNode.classList.remove("flatpickr-wrapper");
        field.parentNode.classList.add("input-group");
        $(field).parent().append(button);
      }

      if (opcionesAdicionales.altInput) {
        let input = field.parentNode.querySelector("input.input");
        $(input).on("focus", ({ currentTarget }) => $(currentTarget).blur());
        $(input).prop("readonly", false);
        $(field).parent().parent().append(field);
      }

      if (!opcionesAdicionales.altInput) {
        $(field).on("focus", ({ currentTarget }) => $(currentTarget).blur());
        $(field).prop("readonly", false);
      }
    });
  }

  document
    .querySelectorAll(`input[type="search"]:not(.form-control-sm)`)
    .forEach((input) => input.classList.add("form-control-sm"));
});

//modificar para que también acepte punto decimal, tecla enter, flechas, backspace, delete
const soloNumeros = (e) => {
  let tecla = e.which || e.keyCode, //obtenemos el código ascii de la tecla que se presiona
    patron = /\d/, //definimos el patrón de búsqueda de la tecla presionada
    te = String.fromCharCode(tecla); //convertimos a un formato legible el ascii de la tecla presionada
  return (
    patron.test(te) ||
    tecla == 9 ||
    tecla == 8 ||
    tecla == 46 ||
    tecla == 37 ||
    tecla == 39 ||
    tecla == 13
  ); //si la tecla presionada es un número, la tecla enter, la tecla para borrar ó la tecla suprimir, devuelve el valor o la función de la tecla, caso contrario no hace nada.
};
