1(function() { 2 const renderViafirmaLogos = () => { 3 const container = document.getElementById('viafirma-certs-grid'); 4 if (!container || container.dataset.rendered) return; 5 6 const baseUrl = 'https://resources.viafirma.com/download/certificaciones-logotipos/img/'; 7 8 const logos = [ 9 { "id": "eidas-neg", "alt": "Sello de certificacion eIDAS para Sellado de Tiempo Cualificado", "url": "eIDAS_NEG.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#eidas", "scale": 0.9 }, 10 { "id": "pyme", "alt": "Sello de PYME Innovadora del Ministerio de Ciencia e Innovacion", "url": "pyme_inno_white.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#PYME", "scale": 0.9 }, 11 { "id": "ens", "alt": "Certificado ENS (Esquema Nacional de Seguridad) Nivel Alto", "url": "distintivo_ens_certificacion_ALTA_RD311-2022_opt.png", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#ENS", "scale": 1 }, 12 { "id": "onac-v-color", "alt": "Sello de acreditacion ONAC como Entidad de Certificacion Digital", "url": "onac_vf_color_ecd_color_vertical.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#onac", "scale": 1.2 }, 13 { "id": "onac-h-color", "alt": "Sello de acreditacion ONAC como Entidad de Certificacion Digital", "url": "onac_vf_color_ecd_color_horizontal.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#onac", "scale": 1.2 }, 14 { "id": "onac-blanco", "alt": "Sello de acreditacion ONAC como Entidad de Certificacion Digital", "url": "onac_ecd_blanco_vertical.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#onac", "scale": 1.2 }, 15 { "id": "indotel-color", "alt": "Sello de acreditacion INDOTEL para entidades de certificacion digital en Republica Dominicana", "url": "indotel_color.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#indotel", "scale": 0.75 }, 16 { "id": "indotel-blanco", "alt": "Sello de acreditacion INDOTEL para entidades de certificacion digital en Republica Dominicana", "url": "indotel_blanco.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#indotel", "scale": 0.75 }, 17 { "id": "iqnet", "alt": "Logo IQNet â sistema de gestion de calida
17d certificado ISO 9001", "url": "iqnet.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#9001", "scale": 0.95 }, 18 { "id": "aenor-eidas-pos", "alt": "Certificado AENOR de conformidad con el reglamento eIDAS", "url": "aenorEIDASPOS.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#eidas", "scale": 0.95 }, 19 { "id": "aenor-eidas-neg", "alt": "Certificado AENOR de conformidad con el reglamento eIDAS", "url": "aenorEIDASNEG.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#eidas", "scale": 0.95 }, 20 { "id": "aenor-9001-pos", "alt": "Certificado AENOR ISO 9001 de gestion de calidad", "url": "aenor9001POS.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#9001", "scale": 0.95 }, 21 { "id": "aenor-9001-neg", "alt": "Certificado AENOR ISO 9001 de gestion de calidad", "url": "aenor9001NEG.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#9001", "scale": 0.95 }, 22 { "id": "aenor-27001-pos", "alt": "Certificado AENOR ISO 27001 de seguridad de la informacion", "url": "aenor27001POS.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#27001", "scale": 0.95 }, 23 { "id": "aenor-27001-neg", "alt": "Certificado AENOR ISO 27001 de seguridad de la informacion", "url": "aenor27001NEG.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#27001", "scale": 0.95 }, 24 { "id": "aenor-14001-pos", "alt": "Certificado AENOR ISO 14001 de gestion medioambiental", "url": "aenor14001POS.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#14001", "scale": 0.95 }, 25 { "id": "aenor-14001-neg", "alt": "Certificado AENOR ISO 14001 de gestion medioambiental", "url": "aenor14001NEG.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#14001", "scale": 0.95 }, 26 { "id": "aenor-nis2-pos", "alt": "Certificado AENOR de cumplimiento de la directiva NIS2", "url": "aenorNIS2POS.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#NIS2", "scale": 0.95 }, 27 { "id": "aenor-nis2-neg", "alt": "Certificado AENOR de cumplimiento de la directiva NIS2", "url": "aenorNIS2NEG.svg", "link": "https://www.viafirma.com/es/certificados-y-reconocimientos/#NIS2", "scale": 0.95 }, 28 { "id": "camara_rd", "alt": "Logo Cámara de Comercio de la República Dominicana en España", "url": "camara_rd.svg", "link": "#", "scale": 0.95 } 29 ]; 30 31 const excludeAttr = container.getAttribute('data-exclude'); 32 const orderAttr = container.getAttribute('data-order'); 33 const excludeList = excludeAttr ? excludeAttr.split(',').map(s => s.trim()) : []; 34 const orderList = orderAttr ? orderAttr.split(',').map(s => s.trim()) : []; 35 36 let finalLogos = []; 37 if (orderList.length > 0) { 38 orderList.forEach(id => { 39 const found = logos.find(l => l.id === id); 40 if (found && !excludeList.includes(id)) finalLogos.push(found); 41 }); 42 } else { 43 finalLogos = logos.filter(l => !excludeList.includes(l.id)); 44 } 45 46 const count = finalLogos.length; 47 48 if (!document.getElementById('vf-grid-styles')) { 49 const style = document.createElement('style'); 50 style.id = 'vf-grid-styles'; 51 style.innerHTML = ` 52 .vf-logos-grid { 53 display: flex !important; flex-wrap: wrap !important; justify-content: center !important; 54 align-items: center !important; max-width: 1200px !important; margin: 0 auto !important; 55 padding: 20px 0 !important; row-gap: 50px !important; 56 min-height: 85px; 57 } 58 .vf-logo-item { 59 flex: 0 0 20% !important; width: 20% !important; height: 85px !important; 60 display: flex !important; justify-content: center !important; align-items: center !important; 61 } 62 63 /* Layouts especiales para Desktop */
64 .vf-count-6 .vf-logo-item { flex: 0 0 33.33% !important; width: 33.33% !important; } 65 .vf-count-7 .vf-logo-item.row-top { flex: 0 0 33.33% !important; width: 33.33% !important; } 66 .vf-count-7 .vf-logo-item.row-bottom { flex: 0 0 25% !important; width: 25% !important; } 67 .vf-count-9 .vf-logo-item.row-top { flex: 0 0 25% !important; width: 25% !important; } 68 .vf-count-9 .vf-logo-item.row-bottom { flex: 0 0 20% !important; width: 20% !important; } 69 70 .vf-logo-item a { display: flex !important; align-items: center !important; justify-content: center !important; height: 100% !important; width: 100% !important; } 71 72 .vf-logo-item img { 73 height: 85px !important; 74 width: auto !important; 75 max-width: 100% !important; 76 object-fit: contain !important; 77 } 78 79 /* RESPONSIVE TABLET */ 80 @media (max-width: 1024px) { 81 .vf-logo-item, 82 .vf-count-6 .vf-logo-item, 83 .vf-count-7 .vf-logo-item.row-top, .vf-count-7 .vf-logo-item.row-bottom, 84 .vf-count-9 .vf-logo-item.row-top, .vf-count-9 .vf-logo-item.row-bottom { 85 flex: 0 0 33.33% !important; 86 width: 33.33% !important; 87 height: 70px !important; 88 } 89 .vf-logo-item img { height: 70px !important; } 90 } 91 92 /* RESPONSIVE MÃVIL */ 93 @media (max-width: 600px) { 94 .vf-logo-item, 95 .vf-count-6 .vf-logo-item, 96 .vf-count-7 .vf-logo-item.row-top, .vf-count-7 .vf-logo-item.row-bottom, 97 .vf-count-9 .vf-logo-item.row-top, .vf-count-9 .vf-logo-item.row-bottom { 98 flex: 0 0 50% !important; 99 width: 50% !important; 100 height: 60px !important; 101 } 102 .vf-logo-item img { height: 60px !important; } 103 } 104 `; 105 document.head.appendChild(style); 106 } 107 108 if ([6, 7, 9].includes(count)) container.className = 'vf-count-' + count; 109 110 let html = '<div class="vf-logos-grid">'; 111 finalLogos.forEach((l, index) => { 112 const scaleVal = l.scale || 1; 113 let balanceClass = ''; 114 if (count === 7) balanceClass = (index < 3) ? 'row-top' : 'row-bottom'; 115 if (count === 9) balanceClass = (index < 4) ? 'row-top' : 'row-bottom'; 116 117 html += `<div class="vf-logo-item ${balanceClass}"> 118 <a href="${l.link}" target="_blank" rel="noopener"> 119 <img src="${baseUrl + l.url}" 120 alt="${l.alt}" 121 width="180" 122 height="85" 123 style="transform: scale(${scaleVal});" 124 loading="eager" 125 data-no-lazy="1"> 126 </a> 127 </div>`; 128 }); 129 130 container.innerHTML = html + '</div>'; 131 container.dataset.rendered = "true"; 132 }; 133 134 if (document.readyState === 'complete') renderViafirmaLogos(); 135 else window.addEventListener('load', renderViafirmaLogos); 136 setInterval(renderViafirmaLogos, 3000); 137})();
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.