1const SuscripcionBoletin=function(config){const btnSuscribir=document.getElementById(config.btnSuscribirId);const infoText=btnSuscribir.parentNode.nextElementSibling;const cajaEmail=btnSuscribir.previousElementSibling;const checkCondicionesUso=btnSuscribir.parentNode.querySelector("input[type='checkbox']");const tema=config.tema;const entidad=config.entidadId;const validaEmail=function(email){if(email==="") 2return false;const regexValidEmail=/^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,}$/i;return regexValidEmail.test(email);};const aceptaCondiciones=function(){return checkCondicionesUso.checked;};const showMsg=function(msg){infoText.textContent=msg;};const postSuscripcion=function(email){const data="email="+email+"&tema="+tema+"&entidad="+entidad+"&uh=1";const request=new XMLHttpRequest();request.open('POST','/ws/AltaBoletin.ashx',true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');request.onload=function(){if(request.status===200){showMsg(request.responseText);trackEventGA("cajaboletin","suscripcion")}else{showMsg(request.statusText);}};request.onerror=function(){showMsg("Parece que se ha producido un error. Vuelve a intentarlo.");};request.send(data);};const suscribir=function(){const email=cajaEmail.value;if(!validaEmail(email)){showMsg("Introduce una dirección de email válida.");return;} 3if(!aceptaCondiciones()){showMsg("Debes aceptar las condiciones de uso.");return;} 4postSuscripcion(email);};this.init=function(){if(btnSuscribir===null){return;} 5cajaEmail.addEventListener("keypress",function(e){if((e.which===13)||(e.which===10)){e.preventDefault();suscribir();}});btnSuscribir.addEventListener("click",suscribir);};};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.