PageSourceSearch

https://resources.viafirma.com/download/certificaciones-logotipos/grid-certificaciones.js

js viafirma.com collected 2026-09-24 08:53:47 UTC 10,130 bytes, 137 lines download raw bytes

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.