PageSourceSearch

https://c3int.org/assets/js/ticker.js?260815-1

js c3int.org collected 2026-10-09 22:37:29 UTC 5,057 bytes, 157 lines download raw bytes

1// scrolling banner
2(function() {
3    'use strict';
4    
5    function createC3Ticker() {
6        // Create the ticker container
7        const tickerContainer = document.createElement('div');
8        tickerContainer.id = 'c3-unga-ticker';
9        tickerContainer.style.cssText = `
10            position: fixed;
11            top: 0;
12            left: 0;
13            width: 100%;
14            height: 45px;
15            background: linear-gradient(135deg, #f4fcff 0%, #e6f7ff 100%);
16            border-bottom: 2px solid #0f71e5;
17            z-index: 100000000 !important;
18            overflow: hidden;
19            font-family: 'Manrope', 'IBM Plex Serif', sans-serif;
20            font-weight: 600;
21            box-shadow: 0 2px 8px rgba(15, 113, 229, 0.1);
22        `;
23        
24        // Create the scrolling text link
25        const tickerLink = document.createElement('a');
26        tickerLink.href = 'https://ungaguide.com/events/healthcare-disrupted-the-future-of-ai-data-precision-medicine/';
27        tickerLink.target = '_blank';
28        tickerLink.rel = 'noopener noreferrer';
29        tickerLink.textContent = 'C3 Davos of Healthcare™ Summit listed in the Official UN General Assembly Guide (UNGA) for the fourth consecutive year';
30        
31        tickerLink.style.cssText = `
32            display: inline-block;
33            white-space: nowrap;
34            color: #0f71e5;
35            text-decoration: none;
36            font-size: 20px;
37            line-height: 45px;
38            padding: 0 2rem;
39            animation: tickerScroll 25s linear infinite;
40            transition: color 0.3s ease;
41            will-change: transform;
42        `;
43        
44        // Hover effects for the link
45        tickerLink.addEventListener('mouseenter', function() {
46            this.style.color = '#1ca5e7';
47        });
48        
49        tickerLink.addEventListener('mouseleave', function() {
50            this.style.color = '#0f71e5';
51        });
52        
53        // Add the link to container
54        tickerContainer.appendChild(tickerLink);
55        
56        // Pause animation on container hover
57        tickerContainer.addEventListener('mouseenter', function() {
58            tickerLink.style.animationPlayState = 'paused';
59        });
60        
61        tickerContainer.addEventListener('mouseleave', function() {
62            tickerLink.style.animationPlayState = 'running';
63        });
64        
65        return tickerContainer;
66    }
67    
68    function addTickerStyles() {
69        const style = document.createElement('style');
70        style.textContent = `
71            @keyframes tickerScroll {
72                0% {
73                    transform: translateX(100vw);
74                }
75                100% {
76                    transform: translateX(-100%);
77                }
78            }
79            
80            /* Mobile responsive adjustments */
81            @media (max-width: 768px) {
82                #c3-unga-ticker {
83                    height: 40px;
84                    font-size: 14px;
85                }
86                
87                #c3-unga-ticker a {
88                    font-size: 14px;
89                    line-height: 40px;
90                    padding: 0 1rem;
91                    animation-duration: 20s;
92                }
93            }
94            
95            @media (max-width: 480px) {
96                #c3-unga-ticker {
97                    height: 36px;
98                }
99                
100                #c3-unga-ticker a {
101                    font-size: 13px;
102                    line-height: 36px;
103                    padding: 0 0.5rem;
104                    animation-duration: 18s;
105                }
106            }
107            
108            /* Ensure body content isn't hidden behind ticker */
109            body {
110                padding-top: 45px !important;
111            }
112            
113            @media (max-width: 768px) {
114                body {
115                    padding-top: 40px !important;
116                }
117            }
118            
119            @media (max-width: 480px) {
120                body {
121                    padding-top: 36px !important;
122                }
123            }
124        `;
125        
126        document.head.appendChild(style);
127    }
128    
129    function initializeTicker() {
130        // Add styles first
131        addTickerStyles();
132        
133        // Create and insert ticker
134        const ticker = createC3Ticker();
135        document.body.insertBefore(ticker, document.body.firstChild);
136        
137        // Smooth entrance effect
138        requestAnimationFrame(() => {
139            ticker.style.opacity = '0';
140            ticker.style.transform = 'translateY(-100%)';
141            ticker.style.transition = 'all 0.5s ease-out';
142            
143            setTimeout(() => {
144                ticker.style.opacity = '1';
145                ticker.style.transform = 'translateY(0)';
146            }, 100);
147        });
148    }
149    
150    // Initialize when DOM is ready
151    if (document.readyState === 'loading') {
152        document.addEventListener('DOMContentLoaded', initializeTicker);
153    } else {
154        initializeTicker();
155    }
156    
157})();

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.