templates/frontend/Inscritos/new_equipo.html.twig line 1

Open in your IDE?
  1. {% extends 'base_frontend_new.html.twig' %}
  2. {% form_theme form 'frontend/Form/fields2_semantic.html.twig' %}
  3. {% block title %}{{ 'competicion.inscritos.inscripcion'|trans({}, 'FrontendBundle') }} - {{ competicion.nombre }}{% endblock %}
  4. {% block stylesheets %}
  5.     <style>
  6.         /* Arreglos visuales del search que salía descuadrado */
  7.         .ui.search >.results {
  8.             top: unset;
  9.             left: unset;
  10.         }
  11.         .centerRadio.inline.fields {justify-content: center;}
  12.         label.centerRadio{text-align: center;}
  13.         #popupInscripcionDimmer{
  14.             overflow: scroll;
  15.         }
  16.         #popupInscripcionDimmer p{
  17.             margin: 1rem auto;
  18.             max-width: 30vw;
  19.         }
  20.         @media only screen and (max-width: 767px){
  21.             #popupInscripcionDimmer p{
  22.                 margin: initial;
  23.                 max-width: 100vw;
  24.             }
  25.             .button.entendido{
  26.                 margin-top: 1rem !important;
  27.             }
  28.         }
  29.         input[type='text'],
  30.         input[type='number'],
  31.         textarea {
  32.             font-size: 16px!important;
  33.         }
  34.     </style>
  35.     <script src='https://www.google.com/recaptcha/api.js'></script>
  36. {% endblock %}
  37. {% block container %}
  38.     {% include 'frontend/Competicion/competicionComun-torneo.html.twig' %}
  39.     {% include 'mensajes_new.html.twig' with {'layout': 0} %}
  40.     {% set placeholder = "" %}
  41.     {% if (competicion.restringirLicencia != 'abierto') %}
  42.         {% if (competicion.organizador.id|slice(2,2) == "00") %}
  43.             {% set placeholder = competicion.organizador.id|slice(0,2) ~ "..." %}
  44.         {% else %}
  45.             {% set placeholder = competicion.organizador.id ~ "..." %}
  46.         {% endif %}
  47.     {% endif %}
  48.     {{ form_start(form) }}
  49.     {% if not form.vars.valid %}
  50.         <div class="ui message">
  51.             {{ form_errors(form) }}
  52.         </div>
  53.     {% endif %}
  54.     {% for index in 1..competicion.jugadores %}
  55.         {% set required = 'required' %}
  56.         {%  if (not competicion.estricto) and loop.last %}
  57.             {% set required = '' %}
  58.         {% endif %}
  59.         <div class="ui segments">
  60.             <div class="ui segment">
  61.                 <div class="ui grid">
  62.                     <div class="six wide column">
  63.                         <div class="row">
  64.                             <div class="six wide column">
  65.                                 <h5 class="ui blue header">
  66.                                     {{ 'competicion.inscritos.player'|trans({}, 'FrontendBundle') }}-{{ index }}
  67.                                 </h5>
  68.                             </div>
  69.                             {% if placeholder != "" %}
  70.                                 <div class="ten wide column">
  71.                                     <div class="ui basic blue tiny label">
  72.                                         {% if (competicion.restringirLicencia == 'restringir') %}
  73.                                             {{ 'competicion.inscritos.region-player'|trans({"%club%": placeholder}, 'FrontendBundle') }}
  74.                                         {% else %}
  75.                                             {{ 'competicion.inscritos.region-player-preference'|trans({"%club%": placeholder}, 'FrontendBundle') }}
  76.                                         {% endif %}
  77.                                     </div>
  78.                                 </div>
  79.                             {% endif %}
  80.                         </div>
  81.                     </div>
  82.                     <div class="ten wide right aligned column">
  83.                         <h5 class="ui header transition hidden inscribible">
  84.                             <span class="ui orange label">
  85.                                 <i class="exclamation triangle icon"></i>
  86.                                 {% for err in 1..7 %}
  87.                                     <span class="ui transition hidden error-{{ err }} errores">
  88.                                         {% set errTrans = 'messages.inscripcion.inscribible-' ~ err %}
  89.                                         {{ errTrans|trans({}, 'FrontendBundle') }}
  90.                                     </span>
  91.                                 {% endfor %}
  92.                             </span>
  93.                         </h5>
  94.                     </div>
  95.                 </div>
  96.             </div>
  97.             <div class="ui secondary segment">
  98.                 <div class="ui form">
  99.                     <div class="two fields">
  100.                         <div class="one {{required}} field ui search introducePareja jugador{{index}}" data-jugador="{{ index }}">
  101.                             {{ form_label(attribute(form, 'licencia' ~ index)) }}
  102.                             <div class="ui right icon fluid input">
  103.                                 {% if not loop.first %}
  104.                                     {{ form_widget(attribute(form, 'licencia' ~ index), { 'attr': {'placeholder': placeholder} }) }}
  105.                                 {% else %}
  106.                                     {{ form_widget(attribute(form, 'licencia' ~ index), { 'attr': {'placeholder': placeholder, 'value': app.request.get('lic')|default('') } }) }}
  107.                                 {% endif %}
  108.                                 <i class="search icon"></i>
  109.                             </div>
  110.                             <a href="http://www.rfegolf.es/paginasservicios/serviciohandicap.aspx" target="_blank" rel="noopener noreferrer">
  111.                                 {{ 'titles.inscripcion.requestRFEG'|trans({}, 'FrontendBundle') }}
  112.                             </a>
  113.                             {{ form_errors(attribute(form, 'licencia' ~ index)) }}
  114.                         </div>
  115.                         <div class="{{ required }} field">
  116.                             {{ form_label(attribute(form, 'nombre_jugador' ~ index)) }}
  117.                             {{ form_widget(attribute(form, 'nombre_jugador' ~ index)) }}
  118.                             {{ form_errors(attribute(form, 'nombre_jugador' ~ index)) }}
  119.                         </div>
  120.                     </div>
  121.                     <div class="two fields">
  122.                         {% if attribute(form, 'categoria_select' ~ index) is defined  %}
  123.                             <div class="required field">
  124.                                 {{ form_label(attribute(form, 'categoria_select' ~ index)) }}
  125.                                 {{ form_widget(attribute(form, 'categoria_select' ~ index)) }}
  126.                                 {{ form_errors(attribute(form, 'categoria_select' ~ index)) }}
  127.                             </div>
  128.                         {% endif %}
  129.                         {% if attribute(form, 'barra' ~ index) is defined %}
  130.                             <div class="required field">
  131.                                 {{ form_label(attribute(form, 'barra' ~ index)) }}
  132.                                 {{ form_widget(attribute(form, 'barra' ~ index)) }}
  133.                                 {{ form_errors(attribute(form, 'barra' ~ index)) }}
  134.                                 {#<label class="required" for="inscripcion_pareja_barra1">Barra de salida</label>
  135.                                 <select id="inscripcion_pareja_barra" name="barra1" class="noselection">
  136.                                     <option value="">Elija una barra</option>
  137.                                 </select>#}
  138.                             </div>
  139.                         {% endif %}
  140.                         <div class="{{ required }} field">
  141.                             {{ form_label(attribute(form, 'tarifa_select' ~ index)) }}
  142.                             {{ form_widget(attribute(form, 'tarifa_select' ~ index)) }}
  143.                             {{ form_errors(attribute(form, 'tarifa_select' ~ index)) }}
  144.                         </div>
  145.                     </div>
  146.                     <div class="two fields">
  147.                         <div class="telefonoJugador{{ index }} transition hidden field">
  148.                             {{ form_label(attribute(form, 'telefono_jugador' ~ index)) }}
  149.                             {{ form_widget(attribute(form, 'telefono_jugador' ~ index)) }}
  150.                             {{ form_errors(attribute(form, 'telefono_jugador' ~ index)) }}
  151.                         </div>
  152.                     </div>
  153.                     {% set compAdicionales = competicion.adicionales|length %}
  154.                     {% if compAdicionales > 0 %}
  155.                         <div class="ui padded adicionales-segment raised segment">
  156.                             <div class="ui section horizontal divider">
  157.                                 {{ 'titles.inscripcion.aditional'|trans({}, 'FrontendBundle') }}
  158.                             </div>
  159.                             {% for adicional in competicion.adicionales %}
  160.                                 {% if ((loop.index0 % 3) == 0) and (compAdicionales > 1) %}
  161.                                     <div class="two fields">
  162.                                 {% endif %}
  163.                                 <div class="{{ required }} field {{ adicional.tipo|lower }}">
  164.                                     {% if adicional.tipo != "Si/No" %}
  165.                                         <label>{{ adicional.nombre|capitalize }}<span class="noProcede" style="float: right;">N/A<input type="checkbox" class="no-procede" data-label="{{ adicional.nombre|lower }}" name="no-procede" style="margin-top: 3px;margin-left: 3px;"></span></label>
  166.                                         <input placeholder="{% if adicional.tipo != 'DNI' %}{{ adicional.nombre|capitalize }}{% else %}12345678A{% endif %}" type="text" name="adicional{{ adicional.id }}_{{ index }}" {{ required }} {% if adicional.tipo == "DNI" %}class="dni"{% endif %}>
  167.                                     {% else %}
  168.                                         <label class="centerRadio">{{ adicional.nombre|capitalize }}</label>
  169.                                         <div class="inline fields centerRadio">
  170.                                             <div class="field">
  171.                                                 <div class="ui radio checkbox">
  172.                                                     <input type="radio" name="adicional{{ adicional.id }}_{{ index }}" value="0" {{ required }}>
  173.                                                     <label>No</label>
  174.                                                 </div>
  175.                                             </div>
  176.                                             <div class="field">
  177.                                                 <div class="ui radio checkbox">
  178.                                                     <input type="radio" name="adicional{{ adicional.id }}_{{ index }}" value="1" {{ required }}>
  179.                                                     <label>Sí</label>
  180.                                                 </div>
  181.                                             </div>
  182.                                         </div>
  183.                                     {% endif %}
  184.                                 </div>
  185.                                 {% if ((loop.index0 % 3 == 2) or loop.last) and (compAdicionales > 1) %}
  186.                                     </div>
  187.                                 {% endif %}
  188.                             {% endfor %}
  189.                         </div>
  190.                     {% endif %}
  191.                 </div>
  192.             </div>
  193.         </div>
  194.     {% endfor %}
  195.     <div class="ui top attached segment">
  196.         <div class="ui form">
  197.             <div class="field">
  198.                 {{ form_label(form.teamname) }}
  199.                 {{ form_widget(form.teamname) }}
  200.                 {{ form_errors(form.teamname) }}
  201.             </div>
  202.             <div class="two fields">
  203.                 <div class="required field">
  204.                     {{ form_label(form.email) }}
  205.                     {{ form_widget(form.email, { 'attr': {'value': app.request.get('email')|default('') } }) }}
  206.                     {{ form_errors(form.email) }}
  207.                 </div>
  208.                 {% if form.turno is defined %}
  209.                     <div class="turnoJugador required field">
  210.                         {{ form_label(form.turno) }}
  211.                         {{ form_widget(form.turno) }}
  212.                         {{ form_errors(form.turno) }}
  213.                     </div>
  214.                 {% else %}
  215.                     {% if form.voucher is defined %}
  216.                         <div class="field">
  217.                             {{ form_label(form.voucher) }}
  218.                             {{ form_widget(form.voucher) }}
  219.                             {{ form_errors(form.voucher) }}
  220.                         </div>
  221.                     {% endif %}
  222.                 {% endif %}
  223.                 {#
  224.                 <div class="field">
  225.                     <div class="g-recaptcha" data-sitekey="6Ld1hVIUAAAAAFWMYl6XkxR5XOht1UNxQ9ulGCwe"></div>
  226.                 </div>
  227.                 #}
  228.             </div>
  229.             <div class="two fields">
  230.                 <div class="{% if not competicion.observacionesFrontend %}disabled transition hidden{% endif %} field">
  231.                     {{ form_label(form.observaciones) }}
  232.                     {{ form_widget(form.observaciones) }}
  233.                     {{ form_errors(form.observaciones) }}
  234.                 </div>
  235.                 <div class="required field">
  236.                     {% if form.turno is defined %}
  237.                         {% if form.voucher is defined %}
  238.                             {{ form_label(form.voucher) }}
  239.                             {{ form_widget(form.voucher) }}
  240.                             {{ form_errors(form.voucher) }}
  241.                         {% endif %}
  242.                     {% endif %}
  243.                     {% if competicion.organizador.id == "CM00" %}
  244.                         <div class="ui checkbox" id="conducta">
  245.                             <input type="checkbox" name="conducta" required>
  246.                             <label>
  247.                                 <a href="https://fedgolfmadrid.com/competiciones#seccion-locales" target="_blank" rel="noreferrer noopener">
  248.                                     {{ 'messages.inscripcion.behaviour'|trans({}, 'FrontendBundle') }}
  249.                                     <i class="external alternate icon"></i>
  250.                                 </a>
  251.                             </label>
  252.                         </div>
  253.                     {% endif %}
  254.                     <div class="ui checkbox" id="privacidad" style="margin-bottom: 2ex; margin-top: 1ex;">
  255.                         <input type="checkbox" name="privacidad" required>
  256.                         <label>
  257.                             {%  set nameCliente = competicion.organizador.cliente.nombre %}
  258.                             {%  set UrlPrivCliente = competicion.organizador.cliente.urlPrivacidad %}
  259.                             {%  set UrlPrivNxt = path('privacidad') %}
  260.                             {{ ('messages.inscripcion.privacy' ~ (competicion.permitirExtranjeros ? "-andEnglish" : ""))|trans({'%UrlPrivCliente%': UrlPrivCliente, '%nameCliente%': nameCliente}, 'FrontendBundle')|raw }}
  261.                             {% if competicion.organizador.id != "CM00" and codigo_federacion is same as('CM00') and UrlPrivCliente != "https://fedgolfmadrid.com/privacidad" %}, de la <a href="https://fedgolfmadrid.com/privacidad">Federación de Golf de Madrid</a>
  262.                             {% elseif competicion.organizador.id != "AM00" and codigo_federacion is same as('AM00') and UrlPrivCliente != 'https://portal.golfandalucia.com/es/privacidad' %}, y de la <a href="https://portal.golfandalucia.com/es/privacidad">Federación Andaluza de Golf</a>
  263.                             {% endif %}
  264.                             {{ ('messages.inscripcion.privacy_nextcaddy' ~ (competicion.permitirExtranjeros ? "-andEnglish" : ""))|trans({'%UrlPrivNxt%': UrlPrivNxt,'%UrlPrivCliente%': UrlPrivCliente,'%nameCliente%': nameCliente}, 'FrontendBundle')|raw }}
  265.                         </label>
  266.                     </div>
  267.                     {{ form_widget(form.save) }}
  268.                 </div>
  269.             </div>
  270.         </div>
  271.     </div>
  272.     <div class="ui bottom attached segment">
  273.         <div class="ui grid">
  274.             <div class="ten wide column">
  275.                 Pagos mediante tarjeta de crédito con
  276.                 <div class="ui mini horizontal list">
  277.                     <div class="item">
  278.                         <img class="ui avatar image" src="{{ asset("img/frontend/visa.svg") }}">
  279.                         <div class="content">
  280.                             <div class="header">Visa</div>
  281.                         </div>
  282.                     </div>
  283.                     <div class="item">
  284.                         <img class="ui avatar image" src="{{ asset("img/frontend/mastercard.svg") }}">
  285.                         <div class="content">
  286.                             <div class="header">Master Card</div>
  287.                         </div>
  288.                     </div>
  289.                 </div>
  290.             </div>
  291.             <div class="six wide right aligned column">
  292.                 <div class="ui small horizontal list">
  293.                     <div class="item">
  294.                         <a href="{{ path("cookies") }}">
  295.                             Politica de cookies
  296.                         </a>
  297.                     </div>
  298.                     <div class="item">
  299.                         <a href="{{ path("terminos_condiciones") }}#cancelacion">
  300.                             Politica de cancelacion
  301.                         </a>
  302.                     </div>
  303.                 </div>
  304.             </div>
  305.             <div class="sixteen wide column">
  306.                 <p>
  307.                     <span class="ui small disabled text">
  308.                         Pagos gestionados por GREEN SLOPE SL - B90160888 - TLF  +34 954 36 93 20 - Plaza Aviador Ruiz de Alda 11, 41004 Sevilla (España)
  309.                     </span>
  310.                     {% if competicion.organizador.cliente %}
  311.                         <br/>
  312.                         <span class="ui small disabled text">
  313.                             GREEN SLOPE SL actúa como medio intermediario técnico para&nbsp;{{ competicion.organizador.cliente.nombre }} en la competición. Los datos del titular de los derechos de inscripción son:&nbsp;{{ competicion.organizador.cliente.razonSocial }}&nbsp;{{ competicion.organizador.cliente.cif }}&nbsp;-&nbsp;{{ competicion.organizador.cliente.direccionFacturacion }}
  314.                         </span>
  315.                     {% endif %}
  316.                 </p>
  317.             </div>
  318.         </div>
  319.     </div>
  320.     <div class="ui inverted blue bottom attached segment transition hidden" id="incompleto">
  321.         {{ 'messages.inscripcion.incompleto'|trans({}, 'FrontendBundle') }}
  322.     </div>
  323.     {{ form_rest(form) }}
  324.     {{ form_end(form) }}
  325.     {% if ((competicion.popupInscripcion) or (competicion.listaEspera and ((num_inscritos - competicion.plazas) >= 0))) %}
  326.         <div class="ui page dimmer" id="popupInscripcionDimmer">
  327.             <div class="content">
  328.                 {% if competicion.popupInscripcion %}
  329.                     <h3 class="ui inverted icon header">
  330.                         <i class="user outline icon"></i>
  331.                         {{ 'messages.inscripcion.popupInscripcion'|trans({}, 'FrontendBundle') }}
  332.                     </h3>
  333.                     <div>
  334.                         {% if competicion.popupInscripcionTexto|trim is not empty %}
  335.                             {{ competicion.popupInscripcionTexto|raw }}
  336.                         {% else %}
  337.                             {{ 'messages.inscripcion.popupInscripcionSub'|trans({}, 'FrontendBundle') }}
  338.                         {% endif %}
  339.                     </div>
  340.                 {% endif %}
  341.                 {% if competicion.popupInscripcion and competicion.listaEspera %}
  342.                     <div class="ui inverted divider"></div>
  343.                 {% endif %}
  344.                 {% if competicion.listaEspera and ((num_inscritos - competicion.plazas) >= 0) %}
  345.                     <h3 class="ui inverted icon header">
  346.                         <i class="hourglass outline icon"></i>
  347.                         {{ 'messages.inscripcion.espera-title'|trans({}, 'FrontendBundle')|raw }}
  348.                         <div class="sub header">
  349.                             {{ 'messages.inscripcion.espera-subtitle'|trans({"%plazas%": competicion.plazas, "%espera%": (num_inscritos - competicion.plazas)}, 'FrontendBundle') }}
  350.                         </div>
  351.                     </h3>
  352.                     <div>
  353.                         {{ 'messages.inscripcion.espera'|trans({"%comp%": competicion.nombre}, 'FrontendBundle')|raw }}
  354.                     </div>
  355.                 {% endif %}
  356.                 {% if (competicion.restringirLicencia == 'preferencia') %}
  357.                     {{ 'messages.inscripcion.preferencia-not-individual'|trans({"%club%": placeholder}, 'FrontendBundle')|raw }}
  358.                 {% endif %}
  359.                 <div class="ui divider hidden"></div>
  360.                 <div class="ui inverted checkbox entendido">
  361.                     <input type="checkbox">
  362.                     <label>{{ 'buttons.entendido'|trans({}, 'FrontendBundle') }}</label>
  363.                 </div>
  364.                 <div class="ui clearing divider hidden"></div>
  365.                 <a class="ui inverted red button cancelar" href="{{ path("_tournament", {'id': competicion.id}) }}">
  366.                     {{ 'buttons.no-continue-inscription'|trans({}, 'FrontendBundle') }}
  367.                 </a>
  368.                 <div class="ui disabled green button entendido">
  369.                     {{ 'buttons.continue'|trans({}, 'FrontendBundle') }}
  370.                 </div>
  371.             </div>
  372.         </div>
  373.     {% endif %}
  374. {% endblock %}
  375. {% block javascripts %}
  376.     <script>
  377.         var competicionID = parseInt("{{ competicion.id }}");
  378.         var njugadores = parseInt("{{ competicion.jugadores }}");
  379.     </script>
  380.     <script>
  381.         var checkBoxPrivacidad = $('#privacidad');
  382.         $(".dropdown").dropdown();
  383.         checkBoxPrivacidad.checkbox();
  384.         $('.ui.accordion').accordion({
  385.             exclusive: true
  386.         });
  387.         {% if not (is_granted("ROLE_ADMIN")) %}
  388.             $('input.prompt').bind('paste', function (e) {
  389.                 e.preventDefault();
  390.             }).on("contextmenu", function (e) {
  391.                 return false;
  392.             });
  393.         {% endif %}
  394.         $('#inscripcion_equipo_save').click(function () {
  395.             var emailVal = $("#inscripcion_equipo_email").val();
  396.             if (emailVal != null && emailVal.trim() != "" && validateEmail($("#inscripcion_equipo_email")) && checkBoxPrivacidad.checkbox('is checked') && $('#inscripcion_equipo_nombre_jugador1').val().trim() != '' && $('#inscripcion_equipo_nombre_jugador2').val().trim() != '' && comprobarBarrasValidos() && comprobarDnisValidos() && comprobarTelefonoValidos() && comprobarTarifasValido()) {
  397.                 $(this).addClass('disabled');   //evitamos el doble click en el submit
  398.             }
  399.         });
  400.         checkBoxPrivacidad.change(function () {
  401.             comprobarContinuar();
  402.         });
  403.         $('.barraSalida').dropdown({
  404.             onChange: function () {
  405.                 comprobarContinuar();
  406.             }
  407.         });
  408.         function comprobarContinuar() {
  409.             var emailVal = $("#inscripcion_equipo_email").val();
  410.             if (checkBoxPrivacidad.checkbox('is checked') && $('#inscripcion_equipo_nombre_jugador1').val().trim() != '' && $('#inscripcion_equipo_nombre_jugador2').val().trim() != '' && emailVal != null && emailVal.trim() != "" && validateEmail($("#inscripcion_equipo_email")) && comprobarBarrasValidos() && comprobarDnisValidos() && comprobarTelefonoValidos() && comprobarTarifasValido()) {
  411.                 $('#inscripcion_equipo_save').removeClass('disabled');
  412.                 $("#incompleto").transition("hide");
  413.             } else {
  414.                 $('#inscripcion_equipo_save').addClass('disabled');
  415.                 $("#incompleto").transition("show");
  416.             }
  417.         }
  418.         //Mostrar/Ocultar mensaje de informacion
  419.         $(".contenedorInformacion .header").click(function () {
  420.             $(".contenedorInformacion").find(".textoInformacion").transition("fade");
  421.             $(".contenedorInformacion").find(".iconito").toggleClass("up down");
  422.         });
  423.         {% set informacionPopup = "" %}
  424.         {% if competicion.informacionPopup != null %}
  425.             {% set informacionPopup = competicion.informacionPopup %}
  426.         {% endif %}
  427.         if (('{{ informacionPopup|raw }}' !== null) && ('{{ informacionPopup|raw|trim }}' !== '')) {
  428.             $("#informacionPopup").dimmer('show');
  429.             $("#informacionPopup button").click(function () {
  430.                 $("#informacionPopup").dimmer('hide');
  431.             });
  432.         }
  433.         var jugadoresPedidos = 0;
  434.         var jugadoresRellenos = 0;
  435.         $(document).keydown(function (objEvent) {
  436.             if (objEvent.keyCode == 9) {  //tab pressed
  437.                 objEvent.preventDefault(); // stops its action
  438.             }
  439.         });
  440.         $('.introducePareja').each(function () {
  441.             $(this).search({
  442.                 apiSettings: {
  443.                     url: Routing.generate('ajax_inscripcion_autocompletar', {'idc': competicionID, 'permitir': 0}) + '/{query}'
  444.                 },
  445.                 fields: {
  446.                     results: 'items',
  447.                     description: 'nombre',
  448.                     title: 'label'
  449.                 },
  450.                 cache: false,
  451.                 selectFirstResult: true,
  452.                 minCharacters: 10,
  453.                 searchOnFocus: true,
  454.                 onResults: function (response) {
  455.                     var nJug = $(this).data('jugador');
  456.                     var errorSegm = $(this).closest('.introducePareja').closest('.segments').find('.inscribible');
  457.                     if (errorSegm.find(".errores").hasClass('hidden')) {
  458.                         errorSegm.find(".errores").transition("hide");
  459.                     }
  460.                     if (typeof (response.items[0]) != "undefined") {
  461.                         {% if not competicion.seleccionTarifas %}
  462.                             $('#inscripcion_equipo_tarifa' + nJug).val(response.items[0].tarifa);
  463.                             $('#inscripcion_equipo_tarifa_select' + nJug).dropdown('set selected', response.items[0].tarifa);
  464.                         {% endif %}
  465.                         $('#inscripcion_equipo_nombre_jugador' + nJug).val(response.items[0].nombre);
  466.                         $('#inscripcion_equipo_id' + nJug).val(response.items[0].id);
  467.                         if (response.items[0].categoria){
  468.                             $('#inscripcion_equipo_categoria' + nJug).val(response.items[0].categoria);
  469.                             $('#inscripcion_equipo_categoria_select' + nJug).dropdown('set selected', response.items[0].categoria);
  470.                         }
  471.                     }
  472.                     if (response.items[0].barras){
  473.                         let barrasKeys = Object.keys(response.items[0].barras);
  474.                         var arr = [];
  475.                         barrasKeys.forEach(function(value){
  476.                             arr.push({value: response.items[0].barras[value], name: value });
  477.                         });
  478.                         $('#inscripcion_equipo_barra' + nJug).dropdown("change values", arr).dropdown("restore default value").dropdown("restore placeholder text").dropdown("restore default text");
  479.                     }
  480.                     if (response.items[0].inscribible) {
  481.                         jugadoresRellenos++;
  482.                         if (!errorSegm.hasClass('hidden')) {
  483.                             errorSegm.transition('fade down out');
  484.                         }
  485.                         $(this).closest('.introducePareja').find('input').transition('remove looping');
  486.                     } else {
  487.                         if(response.offline === 1) {
  488.                             lanzarToast('error', 'No hemos podido contactar con la rfga para validar su licencia', 7500, "exclamation triangle");
  489.                         }
  490.                         if (response.items[0].error == -7) {// para preferencia en inscripcion
  491.                             jugadoresRellenos++;
  492.                         }
  493.                         $('#inscripcion_equipo_email').attr('disabled', 'disabled');
  494.                         errorSegm.transition('fade down in');
  495.                         errorSegm.find(".error"+response.items[0].error).transition("show");
  496.                         $(this).closest('.introducePareja').find('input').transition('set looping').transition('glow', '800ms');
  497.                     }
  498.                     {% if competicion.estricto %}
  499.                         if (jugadoresRellenos >= njugadores) {
  500.                     {% else %}
  501.                         if (jugadoresRellenos >= 2) {
  502.                     {% endif %}
  503.                         $('#inscripcion_equipo_email').removeAttr('disabled');
  504.                     } else if (response.items[0].error) {
  505.                         errorSegm.transition('fade down in');
  506.                         errorSegm.find(".error" + response.items[0].error).transition("show");
  507.                         $(this).closest('.introducePareja').find('input').transition('set looping').transition('glow', '800ms');
  508.                     }
  509.                     if (!response.items[0].telefono) {
  510.                         $('.telefonoJugador' + nJug).transition('show').transition("shake");
  511.                         $('.telefonoJugador' + nJug).find("input").attr("required", "required").transition("glow").transition("glow").transition("glow");
  512.                         $('.telefonoJugador' + nJug).find("input").prop("disabled", false);
  513.                         $('.telefonoJugador' + nJug).addClass("required");
  514.                     } else {
  515.                         if ($('.telefonoJugador' + nJug).transition("is visible")) {
  516.                             $('.telefonoJugador' + nJug).transition("hide");
  517.                         }
  518.                         $('.telefonoJugador' + nJug).find("input").prop("disabled", true);
  519.                     }
  520.                 },
  521.                 onResultsOpen: function () {
  522.                     $(this).closest('.introducePareja').find('input').transition('remove looping');
  523.                 },
  524.                 error: {
  525.                     noResultsHeader: 'No se ha encontrado esta licencia en la Federación Española de Golf.',
  526.                     noResults: '',
  527.                     serverError: 'El servidor de la Federación Española de Golf no está disponible en este momento. Inténtelo de nuevo más tarde.'
  528.                 }
  529.             });
  530.         });
  531.         function validateEmail(inputEmail) {
  532.             var mailformat = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
  533.             if (inputEmail.val().trim().match(mailformat)) {
  534.                 inputEmail.closest(".field").removeClass("error");
  535.                 return true;
  536.             } else {
  537.                 inputEmail.closest(".field").addClass("error").transition("shake");
  538.                 return false;
  539.             }
  540.         }
  541.         function comprobarTarifasValido() {
  542.             var ok = true;
  543.             let bS = $('.tarifa');
  544.             for (var nj = 1; nj <= bS.length; nj++) {
  545.                 var tarifaField = $(".tarifa" + nj);
  546.                 if (tarifaField.length > 0) {
  547.                     let v = tarifaField.dropdown('get value');
  548.                     ok = (("" != v) && (null != v)) && ok;
  549.                 }
  550.             }
  551.             return ok;
  552.         }
  553.         for (var i = 1; i <= njugadores; i++) {
  554.             $('#inscripcion_equipo_tarifa_select' + i).closest(".dropdown").dropdown({
  555.                 onChange: function(){
  556.                     comprobarContinuar();
  557.                 }
  558.             });
  559.         }
  560.         function comprobarBarrasValidos() {
  561.             var ok = true;
  562.             let bS = $('.barraSalida');
  563.             for (var nj = 1; nj <= bS.length; nj++) {
  564.                 var barraField = $(".barraSalida" + nj);
  565.                 if (barraField.length > 0) {
  566.                     let v = barraField.dropdown('get value');
  567.                     ok = (("" != v) && (null != v)) && ok;
  568.                 }
  569.             }
  570.             return ok;
  571.         }
  572.         function comprobarTelefonoValidos() {
  573.             var ok = true;
  574.             var tlfnJug = $(".tlfnJug");
  575.             for (var nj = 0; nj < tlfnJug; nj++) {
  576.                 var tlfField = $(".telefonoJugador" + (nj + 1));
  577.                 var tlfVal = tlfField.find("input").val();
  578.                 if (tlfField.hasClass("visible")) {
  579.                     ok = ((tlfVal != "") && (tlfVal.length >= 9)) && ok;
  580.                 }
  581.             }
  582.             return ok;
  583.         }
  584.         function comprobarDnisValidos() {
  585.             var dnis = $(".field.dni");
  586.             var todosOk = true, valor, error;
  587.             dnis.each(function (index, element) {
  588.                 valor = $(element).find("input").val();
  589.                 error = $(element).hasClass("error");
  590.                 todosOk = ((valor != "") && (!error)) && todosOk;
  591.             });
  592.             return todosOk;
  593.         }
  594.         function letraDni(dni) {
  595.             var letras = "TRWAGMYFPDXBNJZSQVHLCKE";
  596.             var resto = (dni % 23);
  597.             return letras.charAt(resto);
  598.         }
  599.         $("body").on('focusout', 'input.dni', function () {
  600.             var valorInput = $(this).val().toUpperCase();
  601.             var valorDNI = valorInput;
  602.             var primerChar = valorInput.charAt(0);
  603.             if (primerChar == "X") {
  604.                 valorDNI = replaceStr(valorDNI, 0, '0');
  605.             } else if (primerChar == "Y") {
  606.                 valorDNI = replaceStr(valorDNI, 0, '1');
  607.             } else if (primerChar == "Z") {
  608.                 valorDNI = replaceStr(valorDNI, 0, '2');
  609.             }
  610.             if (valorDNI.length < 8 || valorDNI.length > 9) {
  611.                 //mostrarToast('error', 'Longitud DNI incorrecta');
  612.                 $(this).transition("shake");
  613.             } else if (valorDNI.length == 9) {
  614.                 var letraInput = valorDNI.charAt(8);  //empieza el indice en 0
  615.                 var letra = letraDni(valorDNI.substring(0, 8));
  616.                 if (letraInput != letra) {
  617.                     //mostrarToast('error', 'DNI incorrecto');
  618.                     $(this).transition("shake").parent().addClass("error");
  619.                 } else {
  620.                     $(this).parent().removeClass("error");
  621.                     var emailVal = $("#inscripcion_equipo_email").val();
  622.                     if (emailVal != null && emailVal.trim() != "" && validateEmail($("#inscripcion_equipo_email")) && checkBoxPrivacidad.checkbox('is checked') && $('#inscripcion_equipo_nombre_jugador1').val().trim() != '' && $('#inscripcion_equipo_nombre_jugador2').val().trim() != '' && comprobarDnisValidos()) {
  623.                         $('#inscripcion_equipo_save').removeClass('disabled');
  624.                     }
  625.                 }
  626.             }
  627.         });
  628.         {% if ((competicion.popupInscripcion) or (competicion.listaEspera and ((num_inscritos - competicion.plazas) >= 0))) %}
  629.             $(document).ready(function () {
  630.                 setTimeout(function () {
  631.                     $("#popupInscripcionDimmer").dimmer({
  632.                         closable: false
  633.                     }).dimmer("show");
  634.                 }, 2000);
  635.             });
  636.             $(".checkbox.entendido").checkbox({
  637.                 onChecked: function () {
  638.                     $(".button.entendido").removeClass("disabled");
  639.                 },
  640.                 onUnchecked: function () {
  641.                     $(".button.entendido").addClass("disabled");
  642.                 }
  643.             });
  644.             $(".button.entendido").click(function (e) {
  645.                 e.preventDefault();
  646.                 $("#popupInscripcionDimmer").dimmer("hide");
  647.             });
  648.         {% endif %}
  649.         {% if competicion.seleccionTarifas %}
  650.             {% for i in 1..competicion.jugadores %}
  651.                 $('#inscripcion_equipo_tarifa_select{{ i }}').prop("disabled", false);
  652.                 $('#inscripcion_equipo_tarifa_select{{ i }}').parent().removeClass('disabled');
  653.                 $('#inscripcion_equipo_tarifa_select{{ i }}').change(function () {
  654.                     $('#inscripcion_equipo_tarifa{{ i }}').val($(this).val());
  655.                 });
  656.             {% endfor %}
  657.         {% endif %}
  658.         $('.no-procede').change(function () {
  659.             var $this = $(this);
  660.             if ($this.prop('checked')) {
  661.                 $this.closest('label').next().val('Sin ' + $this.data('label'));
  662.             }
  663.         });
  664.         $.fn.search.settings.templates.message = function (message, type) {
  665.             var html = '';
  666.             if (message !== undefined && type !== undefined) {
  667.                 html += '' + '<div class="message ' + type + '">';
  668.                 // message type
  669.                 if (type == 'empty') {
  670.                     html += ''
  671.                             + '<div class="header">'
  672.                             + "{{ 'messages.no_results_title'|trans({}, 'GestionBundle') }}"
  673.                             + '</div class="header">'
  674.                             + '<div class="description">'
  675.                             + "{{ 'messages.no_results_msg'|trans({}, 'GestionBundle') }}"
  676.                             + '</div class="description">';
  677.                 } else {
  678.                     html += ' <div class="description">' + message + '</div>';
  679.                 }
  680.                 html += '</div>';
  681.             }
  682.             return html;
  683.         };
  684.     </script>
  685.     <script src="https://cdn.jsdelivr.net/npm/linkifyjs@4.1.0/dist/linkify.min.js"></script>
  686.     <script src="https://cdn.jsdelivr.net/npm/linkify-html@4.1.0/dist/linkify-html.min.js"></script>
  687.     <script src="https://cdn.jsdelivr.net/npm/linkify-jquery@4.1.0/dist/linkify-jquery.min.js"></script>
  688.     <script>
  689.         $(document).ready(function() {
  690.             let optlnk = { defaultProtocol: "https", rel: "noopener noreferrer" };
  691.             $(".container").linkify(optlnk);
  692.             $("#inscripcion_equipo_licencia1").focus();
  693.             // lanzarToast('error', 'Los servicios de Handicap de la Federación Española no están disponibles en estos momentos, espere unos minutos para realizar su inscripción', 0);
  694.         });
  695.     </script>
  696. {% endblock %}