PageSourceSearch

https://inmersivos.pages.dev/app.js

js inmersivos.pages.dev collected 2026-10-03 05:18:25 UTC 4,690 bytes, 122 lines download raw bytes

1import { organizations } from './organizations.js';
2import { serviceButtons } from './services.js';
3
4window.addEventListener('DOMContentLoaded', () => {
5    const heroSection = document.querySelector('.hero');
6    if (heroSection) {
7        heroSection.style.backgroundImage = "linear-gradient(135deg, rgba(44, 62, 80, 0.7), rgba(52, 152, 219, 0.7)), url('https://ideogram.ai/assets/progressive-image/balanced/response/_zZkSG8hSrSoPsdjZr5-SA')";
8    }
9});
10
11document.addEventListener('DOMContentLoaded', () => {
12    const modal = document.getElementById('industryModal');
13    const span = document.getElementsByClassName('close')[0];
14    const categoryButtons = document.getElementById('categoryButtons');
15    const organizationsList = document.getElementById('organizationsList');
16    const industryBtns = document.querySelectorAll('.industry-btn');
17    const industryBtnsFooter = document.querySelectorAll('.industry-btn-footer');
18    
19    // Initialize categories
20    const categories = Object.keys(organizations);
21    categories.forEach(category => {
22        const button = document.createElement('button');
23        button.textContent = category;
24        button.className = 'category-btn';
25        button.dataset.category = category;
26        button.addEventListener('click', () => {
27            // Remove active class from all buttons
28            document.querySelectorAll('.category-btn').forEach(btn => 
29                btn.classList.remove('active'));
30            
31            // Add active class to clicked button
32            button.classList.add('active');
33            
34            // Show organizations for this category
35            showOrganizations(category);
36        });
37        categoryButtons.appendChild(button);
38    });
39
40    // Activate first category by default
41    if (categories.length > 0) {
42        const firstButton = categoryButtons.querySelector('.category-btn');
43        firstButton.classList.add('active');
44        showOrganizations(categories[0]);
45    }
46
47    function showOrganizations(category) {
48        organizationsList.innerHTML = '';
49        const orgs = organizations[category];
50        
51        Object.entries(orgs).forEach(([key, org]) => {
52            const link = document.createElement('a');
53            link.href = `https://tally.so/r/meAZvk?Servicio=PACK-VIDEOMARKETING&Marca=CortosVOS&Rubro=${key}`;
54            link.className = 'org-link';
55            link.textContent = org.name;
56            link.style.backgroundColor = `${org.theme.primary}15`; // Lighter background
57            link.style.color = org.theme.primary;
58            link.style.borderLeftColor = org.theme.secondary;
59            link.target = '_blank';
60            organizationsList.appendChild(link);
61        });
62    }
63    
64    // Add event listeners to industry buttons
65    industryBtns.forEach(btn => {
66        btn.addEventListener('click', () => {
67            modal.style.display = 'block';
68            const category = btn.dataset.category;
69            
70            // Activate the corresponding category button
71            document.querySelectorAll('.category-btn').forEach(btn => 
72                btn.classList.remove('active'));
73            
74            document.querySelector(`.category-btn[data-category="${category}"]`)?.classList.add('active');
75            
76            showOrganizations(category);
77        });
78    });
79
80    industryBtnsFooter.forEach(btn => {
81        btn.addEventListener('click', () => {
82            modal.style.display = 'block';
83            showOrganizations(btn.dataset.category);
84        });
85    });
86    
87    // Add parallax effect to hero images
88    window.addEventListener('scroll', function() {
89        const scrollPosition = window.pageYOffset;
90        const heroSection = document.querySelector('.hero');
91        
92        if (heroSection) {
93            heroSection.style.backgroundPositionY = -scrollPosition * 0.5 + 'px';
94        }
95    });
96
97    // Initialize accordion functionality
98    const accordionItems = document.querySelectorAll('.accordion-item');
99    accordionItems.forEach(item => {
100        const header = item.querySelector('.accordion-header');
101        header.addEventListener('click', () => {
102            // Close all other items
103            accordionItems.forEach(otherItem => {
104                if (otherItem !== item) {
105                    otherItem.classList.remove('active');
106                }
107            });
108            // Toggle current item
109            item.classList.toggle('active');
110        });
111    });
112
113    span.onclick = function() {
114        modal.style.display = 'none';
115    }
116
117    window.onclick = function(event) {
118        if (event.target == modal) {
119            modal.style.display = 'none';
120        }
121    }
122});

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.