var ajax_url = "https://bonosburgosma.es/wp-content/plugins/nt-webservice-form-stats/includes/ajax.php"; var nwfs_debug_param = "debug_form"; //Debug con envío real: ?debug_envio=. El servidor solo lo acepta si la clave coincide con wp-config.php var nwfs_debug_envio = (function(){ var m = window.location.search.match(/[?&]debug_envio=([^&#]*)/); return m ? decodeURIComponent(m[1]) : ""; })(); jQuery( document ).ready(function( $ ) { //las metermos dentro del ready para que se pueda usar el $ function showQrCodes(array_codes){ if(!array_codes){ return; } $("#containerQr").remove(); var contenedor = $("
"); $(".nwfs-container").append(contenedor); $.each(array_codes, function(key, value) { var mod = $("
"); mod.append($("
").text(key)); mod.append($("
").html(value)); mod.append($("").text("Descargar Qr").attr("data-code", key)); contenedor.append(mod); }); addListenerQr(); } function addListenerQr(){ $(".btn_download").off("click.nwfsqr").on("click.nwfsqr", function(){ var mod = $(this).closest(".qr_mod"); downloadQrCode($(this).attr("data-code"), mod.find("img.qr_code").attr("src")); }); $(".qr_code").off("click.nwfsqr").on("click.nwfsqr", function(){ var mod = $(this).closest(".qr_mod"); downloadQrCode(mod.find(".btn_download").attr("data-code"), $(this).attr("src")); }); } function downloadQrCode(qr_key, src){ if(!src){ return; } var downloadLink = document.createElement("a"); downloadLink.href = src; downloadLink.download = "bono_" + qr_key + ".svg"; downloadLink.click(); } function show_response(text, status){ var divclass = "msgok"; $(".nwfs-response").hide(); var capa = $(".nwfs-container"); if(status == "error"){ divclass = "msgerror"; capa = $(".nwfs-error-container"); $("#commerce-form").show(); } var div = "
"+text+"
"; $(".nwfs-response").removeClass("nwfs-debug"); capa.html(div); } function nwfs_is_debug_form(){ var m = window.location.search.match(new RegExp("[?&]" + nwfs_debug_param + "(?:=([^&]*))?(?:&|$)")); return m !== null && m[1] !== "0"; } function nwfs_with_debug(serialized){ if(nwfs_debug_envio !== ""){ serialized += "&debug_envio=" + encodeURIComponent(nwfs_debug_envio); } if(!nwfs_is_debug_form()){ return serialized; } return serialized + "&" + nwfs_debug_param + "=1"; } function nwfs_debug_captcha_line(captcha){ if(!captcha){ return "2. Captcha: no se verifica en este paso"; } if(!captcha.token_recibido){ return "2. Captcha: KO. No ha llegado el token (casilla sin marcar o caducada)"; } var g = captcha.google || {}; if(captcha.code == 1){ return "2. Captcha: OK. Verificado por Google para " + g.hostname + " a las " + g.challenge_ts; } var motivo = g["error-codes"] ? g["error-codes"].join(", ") : "sin respuesta de Google"; return "2. Captcha: KO. Google lo rechaza (" + motivo + ")"; } function show_debug(response){ var data = response.data || {}; var requests = data.requests && data.requests.length ? data.requests : [data]; var captcha_ok = !response.captcha || response.captcha.code == 1; var lines = ["MODO PRUEBA: no se ha enviado nada al webservice.", ""]; lines.push("1. Validación del formulario: OK"); lines.push(nwfs_debug_captcha_line(response.captcha)); var i; var key; for(i = 0; i < requests.length; i++){ var item = requests[i] || {}; lines.push(""); lines.push("3. Datos que se enviarían" + (requests.length > 1 ? " (envío " + (i + 1) + ")" : "") + ":"); lines.push(" URL: " + (item.url || "")); if(item.fields){ for(key in item.fields){ if(Object.prototype.hasOwnProperty.call(item.fields, key)){ lines.push(" " + key + " = " + item.fields[key]); } } }else{ lines.push(" " + (item.body || "")); } } lines.push(""); lines.push("4. Envío al webservice: NO realizado (modo prueba)"); var box = $("
"); box.append($("").text("Vista previa del envío")); box.append($("
").text(lines.join("\n")));
        $(".nwfs-response").addClass("nwfs-debug").empty().append(box).show();
        $("#commerce-form, #user-form, #user-resend-form, .user-form-step-1").show();
        if(window.grecaptcha){
            grecaptcha.reset();
        }
    }
    //Franja visible cuando la URL lleva el parámetro de modo prueba. Estilos en línea para no depender del CSS cacheado
    if(nwfs_is_debug_form()){
        var banner = $("
") .text("MODO PRUEBA: este formulario no envía datos al webservice") .css({background: "#fff3cd", color: "#7a4b00", border: "2px solid #e0a800", padding: "12px", margin: "0 0 20px", fontWeight: "bold", textAlign: "center"}); $(".nwfs-container").prepend(banner); } /*function nwfs_check_form_fields(form){ form.validate({ submitHandler: function(form) { //$(form).ajaxSubmit(); return false; } }); //return true; }*/ function is_person(){ if( $("#commerce_cifnif").val()==1){ return true; }else{ return false; } } function is_juridic(){ if( $("#commerce_cifnif").val()==2){ return true; }else{ return false; } } function required_subsector(){ var subsel = $("#commerce_iae_sub"); if(subsel.html()!="" && subsel.is(':enabled')){ return true; }else{ return false; } } function is_local_user(){ var usermode = $("#usermode"); if(usermode.val()=="empadronado"){ return true; }else{ return false; } } function authorize_sms_info(){ var user_agreement_info = $("#user_agreement_info").val(); if (user_agreement_info.checked){ user_agreement_info = 1; } else{ user_agreement_info = false; } return user_agreement_info; } //Envio de formulario var form = $("#commerce-form"); var max10 = "Este campo no puede tener más de 10 caracteres"; var max50 = "Este campo no puede tener más de 50 caracteres"; var max100 = "Este campo no puede tener más de 100 caracteres"; var min5 = "Este campo debe tener 5 caracteres como mínimo"; var reqfield = "Este campo es obligatorio"; $('#commerce_iban').mask('SS00 0000 0000 0000 0000 0000', { placeholder: 'ESXX XXXX XXXX XXXX XXXX XXXX' }); form.validate({ rules: { commerce_name: { required: true, maxlength: 100 }, commerce_manager: { required: true, maxlength: 100 }, commerce_mail: { required: true, email: true, maxlength: 100 }, commerce_iae: { required: true, min: 1 }, commerce_iae_sub: { required: required_subsector(), min: 1 }, /*commerce_employees: { required: true, min: 1 },*/ commerce_location: { required: true, maxlength: 100 }, commerce_cp: { required: true, minlength: 5, maxlength: 10 }, commerce_devices: { required: true, min: 1 }, commerce_iban: { required: true, maxlength: 100 }, commerce_nif: { required: { depends: is_person() }, minlength: { param: 8, depends: is_person() } }, commerce_cif: { required: { depends: is_juridic() }, minlength: { param: 8, depends: is_juridic() } }, commerce_represent: { required: { depends: is_juridic() } }, commerce_represent_nif: { required: { depends: is_juridic() }, minlength: { param: 8, depends: is_juridic() } }, commerce_device_num_1: { required: true }, commerce_agreement: { required: true }, commerce_agreement_rep: { required: true }, /*commerce_agreement_con: { required: true },*/ commerce_agreement_act: { required: true }, commerce_agreement_aut: { required: true }, commerce_agreement_cor: { required: true }, commerce_agreement_sub: { required: true } }, messages: { commerce_name: { required: "El nombre es obligatorio", maxlength: max100 }, commerce_manager: { required: "El titular del comercio es obligatorio", maxlength: max100 }, commerce_mail: { required: "Necesitamos tu email para enviarte toda la información", email: "Tu email debe tener un formato tipo nombre@dominio.com", maxlength: max100 }, commerce_iae: { required: "Selecciona un sector de la lista", min: "Selecciona un sector de la lista" }, commerce_iae_sub: { required: "El sector que has elegido requiere que especifiques un subsector", min: "El sector que has elegido requiere que especifiques un subsector" }, /*commerce_employees: { required: reqfield, min: 1 },*/ commerce_location: { required: reqfield, maxlength: max100 }, commerce_cp: { required: reqfield, minlength: min5, maxlength: max10 }, commerce_devices: { required: reqfield, min: 1 }, commerce_iban: { required: reqfield, maxlength: max100 }, commerce_nif: { required: reqfield }, commerce_cif: { required: reqfield }, commerce_represent: { required: reqfield }, commerce_represent_nif: { required: reqfield }, commerce_agreement: { required: "Debes aceptar los términos y condiciones." }, commerce_device_num_1: { required: reqfield }, commerce_agreement_rep: { required: "Debes aceptar todas las cláusulas" }, /*commerce_agreement_con: { required: "Debes aceptar todas las cláusulas" },*/ commerce_agreement_act: { required: "Debes aceptar todas las cláusulas" }, commerce_agreement_aut: { required: "Debes aceptar todas las cláusulas" }, commerce_agreement_cor: { required: "Debes aceptar todas las cláusulas" }, commerce_agreement_sub: { required: "Debes aceptar todas las cláusulas" } }, submitHandler: function(resform, e) { //$(form).ajaxSubmit(); e.preventDefault(); form.hide(); $(".nwfs-response").show(300); $([document.documentElement, document.body]).animate({ scrollTop: ($(".nwfs-response").offset().top - 120) }, 300); jQuery.ajax({ type: "POST", url: ajax_url, dataType: "json", data: nwfs_with_debug(form.serialize()), success: function (response) { //console.log(data); if(response != null && response.status !== typeof undefined){ if(response.status == 'debug'){ show_debug(response); }else if(response.status == 'success'){ //alert("Thank you for subscribing!"); show_response("La petición ha sido enviada con éxito.
" +"Hemos enviado un correo con toda la información necesaria.

" +"Se le acaba de enviar un correo electrónico a la dirección de email facilitada con el IMPRESO DE SOLICITUD completado y ANEXO III AUTORIZACIÓN PARA RECABAR DATOS A LA AEAT Y S.S. para que, una vez firmados, los remita al Ayuntamiento de El Burgo de Osma – Ciudad de Osma por Sede Electrónica.

" +"Gracias.", "ok"); }else if(response.status == 'error'){ var restext = ''; if(typeof undefined !== response.error_msg){ restext = ': ' + response.error_msg; } show_response("Error en el envío de datos" + restext, "error"); grecaptcha.reset(); } }else{ // Mensaje de Error show_response("Error en la comunicación", "error"); grecaptcha.reset(); } }, error: function() { // Mensaje de Error show_response("Error en la comunicación", "error"); grecaptcha.reset(); } }); } }); var userform = $("#user-form"); var userresend = $("#user-resend-form"); var user_menores = $("#user_menores"); var user_agreement_info; if(userform.length>0){ user_agreement_info = authorize_sms_info(); $("#action").val('check_send_user'); user_menores.val(""); if(nwfs_is_debug_form()){ $(".user-form-step-2").show(); } }else if(userresend.length>0){ user_agreement_info = authorize_sms_info(); $("#action").val('resend_user'); if(user_menores.length>0){ user_menores.val(""); } }else{ $("#action").val('send_commerce'); } userform.validate({ rules: { user_nif: { required: true, maxlength: 100 }, user_surname: { required: true, maxlength: 100 }, user_phone: { required: true, maxlength: 100 }, user_phone_confirm: { required: true, equalTo: "#user_phone" }, user_mail: { required: false, email: true, maxlength: 100 }, user_agreement: { required: true }, user_agreement_datos: { required: true }, user_agreement_info: { required: false, } }, messages: { user_nif: { required: "El NIF es obligatorio", maxlength: max100 }, user_surname: { required: "El primer apellido es obligatorio", maxlength: max100 }, user_mail: { //required: "Necesitamos tu email para enviarte toda la información", email: "Tu email debe tener un formato tipo nombre@dominio.com", maxlength: max100 }, user_phone: { required: "Necesitamos tu teléfono móvil para enviarte los Bonos Burgosma", maxlength: max100 }, user_phone_confirm: { required: "Confirma tu teléfono móvil", equalTo: "Debe coincidir con el teléfono introducido más arriba" }, user_agreement: { required: "Debes aceptar todas las cláusulas" }, user_agreement_datos: { required: "Debes aceptar todas las cláusulas" } }, submitHandler: function(resform, e) { //$(form).ajaxSubmit(); e.preventDefault(); userform.hide(); $(".user-form-step-1").hide(); $(".nwfs-response").show(300); $([document.documentElement, document.body]).animate({ scrollTop: ($(".nwfs-response").offset().top - 120) }, 300); jQuery.ajax({ type: "POST", url: ajax_url, dataType: "json", data: nwfs_with_debug(userform.serialize()), success: function (response) { //console.log(data); if(response != null && response.status !== typeof undefined){ if(response.status == 'debug'){ show_debug(response); if(response.bonosQr){ showQrCodes(response.bonosQr); } }else if(response.status == 'success'){ //alert("Thank you for subscribing!"); /*show_response("La petición ha sido enviada con éxito.
" +"Recibirás tus Bonos Burgosma en tu Teléfono Móvil.

" +"Gracias.", "ok");*/ var action = $("#action"); if(action.val()=='check_send_user'){ $(".nwfs-response").hide(); action.val('send_user'); if( response.children >0){ $(".user-form-step-2").show(); userform.show(); }else{ userform.trigger("submit"); } }else{ show_response("La petición ha sido enviada con éxito.
" +"Recibirás tus Bonos Burgosma en tu Teléfono Móvil.

" +"Gracias.", "ok"); if(response.bonosQr){ showQrCodes(response.bonosQr); } } }else if(response.status == 'error'){ var restext = ''; if(typeof undefined !== response.error_msg){ restext = ': ' + response.error_msg; } show_response("Error en el envío de datos" + restext, "error"); $(".user-form-step-1").show(); grecaptcha.reset(); } }else{ // Mensaje de Error show_response("Error en la comunicación", "error"); $(".user-form-step-1").show(); grecaptcha.reset(); } }, error: function() { // Mensaje de Error show_response("Error en la comunicación", "error"); $(".user-form-step-1").show(); grecaptcha.reset(); } }); } }); var userresend = $("#user-resend-form"); /*if(userform.length>0){ $("#action").val('check_send_user'); $("#user_menores").val(""); }else{ $("#action").val('send_commerce'); }*/ userresend.validate({ rules: { user_nif: { required: true, maxlength: 100 }, user_phone: { required: true, maxlength: 100 }, user_agreement: { required: true }, user_agreement_datos: { required: true } }, messages: { user_nif: { required: "El NIF es obligatorio", maxlength: max100 }, user_phone: { required: "Necesitamos tu teléfono móvil para enviarte los Bonos Burgosma", maxlength: max100 }, user_agreement: { required: "Debes aceptar todas las cláusulas" }, user_agreement_datos: { required: "Debes aceptar todas las cláusulas" } }, submitHandler: function(resform, e) { //$(form).ajaxSubmit(); e.preventDefault(); userresend.hide(); $(".user-form-step-1").hide(); $(".nwfs-response").show(300); $([document.documentElement, document.body]).animate({ scrollTop: ($(".nwfs-response").offset().top - 120) }, 300); jQuery.ajax({ type: "POST", url: ajax_url, dataType: "json", data: nwfs_with_debug(userresend.serialize()), success: function (response) { //console.log(data); if(response != null && response.status !== typeof undefined){ if(response.status == 'debug'){ show_debug(response); if(response.bonosQr){ showQrCodes(response.bonosQr); } }else if(response.status == 'success'){ show_response("La petición ha sido enviada con éxito.
" +"Recibirás tus Bonos Burgosma en tu Teléfono Móvil.

" +"Gracias.", "ok"); if(response.bonosQr){ showQrCodes(response.bonosQr); } }else if(response.status == 'error'){ var restext = ''; if(typeof undefined !== response.error_msg){ restext = ': ' + response.error_msg; } show_response("Error en el envío de datos" + restext, "error"); $(".user-form-step-1").show(); grecaptcha.reset(); } }else{ // Mensaje de Error show_response("Error en la comunicación", "error"); $(".user-form-step-1").show(); grecaptcha.reset(); } }, error: function() { // Mensaje de Error show_response("Error en la comunicación", "error"); $(".user-form-step-1").show(); grecaptcha.reset(); } }); } }); $("#user_phone_confirm").bind("paste",function(e) { e.preventDefault(); }); /*form.bind('submit', function (e) { form.hide(); $(".nwfs-response").show(300); e.preventDefault(); return false; });*/ //Carga de IAEs desde webservice var seliaes = $("#commerce_iae"); var seliaessub = $("#commerce_iae_sub"); var seliaessubcont = $("#commerce_iae_sub_cont"); var comcont = $("#comcont"); function decodeHTMLEntities(text) { return $("