PageSourceSearch

https://www.atticaradios.gr/rockfm969/listenlive/

html atticaradios.gr collected 2026-10-10 00:48:39 UTC 68,014 bytes, 1,629 lines download raw bytes

1
2<!doctype html>
3
4<html lang="el">
5<head>
6        
6<script>
7            window.onerror = function (msg, url, lineNo, columnNo, error) {
8                console.error("msg:", msg, " url: ", url, " lineNo: ", lineNo, " columnNo", columnNo, " error: ", error);
9                return true;
10            }
11        </script>
11
12
13    
13<script>
14        var reconsent = window.localStorage.getItem('reconsent3');
15        if (!reconsent) {
16            window.localStorage.clear();
17            window.localStorage.setItem('reconsent3', 'enforced');
18            (function () {
19                var cookies = document.cookie.split("; ");
20                for (var c = 0; c < cookies.length; c++) {
21                    var d = window.location.hostname.split(".");
22                    while (d.length > 0) {
23                        var cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
24                        var p = location.pathname.split('/');
25                        document.cookie = cookieBase + '/';
26                        while (p.length > 0) {
27                            document.cookie = cookieBase + p.join('/');
28                            p.pop();
29                        };
30                        d.shift();
31                    }
32                }
33            })();
34        }
35    </script>
35
36
37    
38<script>var dataLayer = [{"dlVersion":1,"page":{"site":"atticaradios.gr","pageType":"Desktop"}}];</script>
38    
38<script>
39        (function (w, d, s, l, i) {
40            w[l] = w[l] || []; w[l].push({
41                'gtm.start':
42                    new Date().getTime(), event: 'gtm.js'
43            }); var f = d.getElementsByTagName(s)[0],
44                j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = false; j.defer = true; j.src =
45                    'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
46        })(window, document, 'script', 'dataLayer', 'GTM-KKR6MB2');</script>
46
47
48    
49
50
51    
52    <meta charset="utf-8">
53    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
54    <meta name="viewport" content="width=device-width, initial-scale=1">
55    <title>Rock FM - 96.9 | Oλα τα αγαπημένα σας rock τραγούδια παίζουν εδώ! - Listen Live | AtticaRadios</title>
56    <meta name="robots" content="index,follow" />
57    <meta name="Googlebot" content="index,follow" />
58    <meta name="MSNbot" content="index,follow" />
59    <meta name="Slurp" content="index,follow" />
60    <meta name="description" content="Άκου online τις μεγαλύτερες rock επιτυχίες στο live πρόγραμμα του Rock FM"/>
61    <link rel="canonical" href="https://www.atticaradios.gr/rockfm969/listenlive/" />
62 
63   
64            <meta property="og:locale" content="el_GR" />
65    <meta property="og:site_name" content="96.9 Rock FM" />
66    <meta property="og:url" content="https://www.atticaradios.gr/rockfm969" />
67    <meta property="og:image" content="https://www.atticaradios.gr/content/images/logos/rockfm-facebook-default.jpg" />
68    <meta property="og:image:type" content="image/jpeg" />
69    <meta property="og:image:width" content="1500" />
70    <meta property="og:image:height" content="500" />
71    <meta property="og:title" content="96.9 Rock FM | AtticaRadios.gr" />
72    <meta property="og:description" content="Άκου online τις μεγαλύτερες rock επιτυχίες στο live πρόγραμμα του Rock FM." />
73    <meta property="og:type" content="website" />
74    <meta property="fb:app_id" content="259907912599" />
75<meta property="fb:pages" content="132045200154445" />
76
77
78    <meta name="twitter:description" content="Άκου online τις μεγαλύτερες rock επιτυχίες στο live πρόγραμμα του Rock FM." />
79    <meta name="twitter:image" content="https://www.atticaradios.gr/content/images/logos/rockfm-facebook-default.jpg" />
80    <link rel="shortcut icon" type="image/x-icon" href="/content/favicons/favicon.ico" />
81    <link rel="apple-touch-icon" sizes="180x180" href="/content/favicons/apple-touch-icon.png">
82    <link rel="shortcut icon" type="image/png" sizes="32x32" href="/content/favicons/favicon-32x32.png">
83    <link rel="shortcut icon" type="image/png" sizes="16x16" href="/content/favicons/favicon-16x16.png">
84    
85    <link rel="mask-icon" href="/content/favicons/safari-pinned-tab.svg" color="#000000">
86
87
88    <meta name="apple-mobile-web-app-title" content="Attica Radios">
89    <meta name="application-name" content="Attica Radios">
90    <meta name="msapplication-TileColor" content="#ffce00">
91    <meta name="theme-color" content="#ffce00">
92
93    
94
95
96
97
98    `
99    
100    <link href="/Content/sass/style.css?v=15" rel="stylesheet" />
101    
102    
103    <style>
104        .bannerlazy {
105            position: absolute;
106        }
107    </style>
108    <meta name="facebook-domain-verification" content="lxbaxbcjsw9aa9jnvobh44a4z5nemu" />
109    
110
111    
112    
112<script>
113        (function () {
114            var insertProcterAndGambleJs = function (tcData) {
115                resolveProc();
116                return;
117                if (tcData) {
118                    var s = document.createElement('script');
119                    s.type = 'text/javascript';
120                    s.async = false;
121                    var x = document.getElementsByTagName('script')[0];
122                    x.parentNode.insertBefore(s, x);
123                    s.addEventListener("load", function (event) {
124                        //if gdpr is not relevant, null values are passed for gdpr related parameters
125                        //if gdpr is relevant, send gdpr and gdpr consent values
126                        //if ccpa is not relevant, null values are passed for ccpa related parameters
127                        //if ccpa is relevant, send ccpa value
128                        //see integration guide for gdpr and ccpa details
129                        //bpid = business partner id, this is a unique code for identifying partner data to P&G
130                        var metadata = {
131                            gdpr: ~~tcData.gdprApplies,
132                            gdpr_consent: null,
133                            ccpa: null,
134                            bp_id: "attica2"
135                        };
136
137                        if (tcData.purpose.consents[1] &&
138                            tcData.vendor.consents[577] &&
139                            tcData.vendor.consents[89] &&
140                            (tcData.purpose.consents[2] || tcData.purpose.legitimateInterests[2]) &&
141                            (tcData.purpose.consents[3] || tcData.purpose.legitimateInterests[3]) &&
142                            (tcData.purpose.consents[4] || tcData.purpose.legitimateInterests[4]) &&
143                            (tcData.purpose.consents[5] || tcData.purpose.legitimateInterests[5]) &&
144                            (tcData.purpose.consents[6] || tcData.purpose.legitimateInterests[6]) &&
145                            (tcData.purpose.consents[7] || tcData.purpose.legitimateInterests[7]) &&
146                            (tcData.purpose.consents[8] || tcData.purpose.legitimateInterests[8]) &&
147                            (tcData.purpose.consents[9] || tcData.purpose.legitimateInterests[9])
148                        ) {
149                            metadata.gdpr_consent = tcData.tcString;
150                        }
151
152                        //required configuration parameters do not change
153                        var config = {
154                            name: "P&G",
155                            pixelUrl: "https://pandg.tapad.com/tag"
156                        };
157
158                        //initialize tag object
159                        var tagger = Tapad.init(metadata, config);
160
161                        //prepare object for passing custom data parameters
162                        //object can be empty if passing no custom data parameters
163                        //one or more additional parameters can be added - depending on availability
164                        var data = {
165                            category: dataLayer[0] ? dataLayer[0].page ? dataLayer[0].page.category ?? "" : "" : ""
166                            //sample custom parameters
167                            //category: "Parenting",
168                            //age_range: "26_30",
169                            //gender: "female"
170                        };
171
172                        //for more information on firing the tag on custom events see the integration guide
173                        //fire tag sync when ready
174                        tagger.sync(data).then(console.log);
175                    });
176                    s.src = 'https://pghub.io/js/pandg-sdk.js';
177                }
178            };
179
180            var insertAdsByGoogleJs = function (tcData) {
181                try {
182                    insertProcterAndGambleJs(tcData);
183                } catch { };
184
185                window.googletag = window.googletag || {};
186                window.vmpbjs = window.vmpbjs || {};
187                window.vpb = window.vpb || {};
188                vpb.fastLoad = true;
189                googletag.cmd = googletag.cmd || [];
190                vmpbjs.cmd = vmpbjs.cmd || [];
191                var cmds = googletag.cmd.slice(0) || [];
192                googletag.cmd.length = 0;
193                var ready = false;
194                function exec(cb) { return cb.call(googletag); }
195                googletag.cmd.push(function () { googletag.cmd.unshift = function (cb) { if (ready) { return exec(cb); } cmds.unshift(cb); if (cb._startgpt) { ready = true; for (var k = 0; k < cmds.length; k++) { exec(cmds[k]); } } }; googletag.cmd.push = function (cb) { if (ready) { return exec(cb); } cmds.push(cb); }; }); googletag.cmd.push = function (cb) { cmds.push(cb) }; googletag.cmd.unshift = function (cb) { cmds.unshift(cb); if (cb._startgpt) { ready = true; if (googletag.apiReady) { cmds.forEach(function (cb) { googletag.cmd.push(cb); }) } else { googletag.cmd = cmds; } } }; var dayMs = 36e5, cb = parseInt(Date.now() / dayMs), vpbSrc = '//player.hb.selectmedia.asia/prebidlink/' + cb + '/wrapper_hb_308331_8392.js', pbSrc = vpbSrc.replace('wrapper_hb', 'hb'), gptSrc = '//securepubads.g.doubleclick.net/tag/js/gpt.js', c = document.head || document.body || document.documentElement; function loadScript(src, cb) { var s = document.createElement('script'); s.src = src; s.defer = true; c.appendChild(s); s.onload = cb; s.onerror = function () { var fn = function () { }; fn._startgpt = true; googletag.cmd.unshift(fn); }; return s; } loadScript(pbSrc);
195 loadScript(gptSrc); loadScript(vpbSrc);
196            }
197
198            var insertPubmaticJs = function (tcData) {
199                let pubmaticPromise = new Promise(function (resolveProc, rejectProc) {
200                    var PWT = {}; //Initialize Namespace
201                    var googletag = googletag || {};
202                    googletag.cmd = googletag.cmd || [];
203                    PWT.jsLoaded = function () { //PubMatic pwt.js on load callback is used to load GPT
204                        resolveProc();
205                    };
206                    // Failsafe to call gpt. 500 ms timeout can be updated as per publisher preference.
207                    setTimeout(resolveProc, 500);
208
209
210                    (function () {
211                        var purl = window.location.href;
212                        var url = '//ads.pubmatic.com/AdServer/js/pwt/161695/7796';
213                        var profileVersionId = '';
214                        if (purl.indexOf('pwtv=') > 0) {
215                            var regexp = /pwtv=(.*?)(&|$)/g;
216                            var matches = regexp.exec(purl);
217                            if (matches.length >= 2 && matches[1].length > 0) {
218                                profileVersionId = '/' + matches[1];
219                            }
220                        }
221                        var wtads = document.createElement('script');
222                        wtads.async = true;
223                        wtads.type = 'text/javascript';
224                        wtads.src = url + profileVersionId + '/pwt.js';
225                        var node = document.getElementsByTagName('script')[0];
226                        node.parentNode.insertBefore(wtads, node);
227                    })();
228                });
229                return pubmaticPromise;
230            }
231
232            var insertAdsByGoogleNoHb = function (tcData) {
233                window.googletag = window.googletag || { cmd: [] };
234                var gads = document.createElement("script");
235                var useSSL = "https:" == document.location.protocol;
236                gads.async = false;
237                gads.src = (useSSL ? "https:" : "http:") + "//securepubads.g.doubleclick.net/tag/js/gpt.js";
238                var node = document.getElementsByTagName("script")[0];
239                node.parentNode.insertBefore(gads, node);
240            }
241
242            var insertGdprExtras = function (tcData) {
243                if (window.gdprExtras) {
244                    for (var i = 0; i < window.gdprExtras.length; i++) {
245                        window.gdprExtras[i] = window.gdprExtras[i].toString().replace(/\${GDPR_CONSENT_\d+}/mg, tcData.tcString)
246                            .replace("${GDPR}", ~~tcData.gdprApplies)
247                            .replace("[timestamp]", Date.now() / 1000 | 0);
248                        var fn = eval('(' + window.gdprExtras[i] + ')');
249                        fn(tcData);
250                    }
251                }
252            }
253
254
255            var insertGdprScripts = function (tcData) {
256                try {
257                    insertPubmaticJs(tcData).then(function () {
258                        console.log("%c" + new Date().toLocaleTimeString() + " Pubmatic Promise Resolved", "color: #e7c036; font-weight: bold; font-size: 24px;");
259                        insertAdsByGoogleNoHb();
260                        console.log("%c" + new Date().toLocaleTimeString() + " Google Ad Manager Promise Resolved", "color: #e7c036; font-weight: bold; font-size: 24px;");
261                    });
262                    insertGdprExtras(tcData);
263                } catch { };
264            };
265
266            // Run this in an interval (every 0.1s) just in case we are still waiting for consent
267            var cnt = 0;
268            var consentSetInterval = setInterval(function () {
269                cnt += 1;
270                // Bail if we have not gotten a consent response after 60 seconds.
271                if (cnt === 500) {
272                    clearInterval(consentSetInterval);
273                    //insertAdsByGoogleNoHb();
274                    //insertAdsByGoogleJs();
275                    insertGdprScripts();
276                }
277                if (typeof window.__tcfapi !== 'undefined') { // Check if window.__tcfapi has been set
278                    clearInterval(consentSetInterval);
279                    window.__tcfapi('addEventListener', 2, function (tcData, listenerSuccess) {
280                        if (listenerSuccess) {
281                            if (tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete') {
282                                //insertAdsByGoogleJs(tcData);
283                                //insertAdsByGoogleNoHb(tcData);
284                                insertGdprScripts(tcData);
285                            }
286                        }
287                    });
288                }
289                cnt++;
290            }, 100);
291        })();
292    </script>
292
293
294    
294<script>
295        var googletag = googletag || {};
296        googletag.cmd = googletag.cmd || [];
297    </script>
297
298    
298<script>
299
300        function responsiveAdsFn(bannerDivId, adWidth, adHeight) {
301            var container = document.getElementById(bannerDivId);
302            var advWidth = container.clientWidth;
303            var advHeight = container.clientHeight;
304            var iframe = container.querySelectorAll('iframe')[0];
305            var iframeWidth = iframe.clientWidth;
306            var iframeHeight = iframe.clientHeight;
307
308            var baseBanner = {
309                width: iframeWidth,
310                height: iframeHeight,
311                scale: 1
312            };
313
314            scaleBanner(iframe, advWidth, advHeight);
315
316            function scaleBanner(iframe, maxWidth, maxHeight) {
317                var scaleX = 1,
318                    scaleY = 1;
319                scaleX = maxWidth / baseBanner.width;
320                scaleY = maxHeight / baseBanner.height;
321                baseBanner.scaleX = scaleX;
322                baseBanner.scaleY = scaleY;
323                baseBanner.scale = (scaleX > scaleY) ? scaleY : scaleX;
324                iframe.style.transformOrigin = "left top 0px";
325                iframe.style.transform = "matrix(" + baseBanner.scale + ", 0, 0, " + baseBanner.scale + ", 0, 0)";
326                container.style.height = (baseBanner.height * baseBanner.scale) + "px";
327            }
328        }
329
330        //AD SCRIPTS
331
332        var fadeTimeout = 0;
333
334        var getClosest = function (elem, selector) {
335            for (; elem && elem !== document; elem = elem.parentNode) {
336                if (elem.matches(selector)) return elem;
337            }
338            return null;
339        };
340
341        function fadeOut(el) {
342            clearTimeout(fadeTimeout);
343            el.style.opacity = 1;
344
345            (function fade() {
346                if ((el.style.opacity -= .1) < 0) {
347                    if (el.classList) {
348                        el.classList.remove("stickyad");
349                    }
350                    el.style.opacity = 1;
351                } else {
352                    requestAnimationFrame(fade);
353                }
354            })();
355        };
356
357        googletag.cmd.push(function () {
358
359
360            googletag.pubads().addEventListener('impressionViewable', function (event) {
361                var containerId = event.slot.getSlotElementId();
362                console.log('Impression for slot', containerId, 'became viewable.');
363                if (window.innerWidth <= 670) {
364                    var adunitContainer = document.getElementById(containerId);
365                    var parentSection = getClosest(adunitContainer, "section");
366                    if (parentSection && parentSection.classList && parentSection.classList.contains("topbillboard")) {
367                        console.log("topbillboard Viewable");
368                        fadeTimeout = setTimeout(function () {
369                            console.log("topbillboard hidding");
370                            fadeOut(parentSection);
371                        }, 5000);
372                    }
373
374                }
375            });
376
377
378            googletag.pubads().addEventListener('slotRenderEnded', function (event) {
379                var containerId = event.slot.getSlotElementId();
380                var containsAd = !event.isEmpty;
381                console.log('%c slotRenderEnded: ' + event.slot.getAdUnitPath() + ' Container:' + containerId, 'font-size:15px;font-weight:bold; background: #222; color: #99ccff');
382                var parentNode = getClosest(document.getElementById(containerId), ".bannerparent");
383                if (containsAd == true) {
384                    console.log('%c AD OK!!! DISPLAYING: ' + event.slot.getAdUnitPath() + ' Container:' + containerId, 'font-size:15px;font-weight:bold;background: #222; color: #009933');
385
386                    if (window.innerWidth <= 670) {
387                        var adunitContainer = document.getElementById(containerId);
388                        var parentSection = getClosest(adunitContainer, "section");
389                        if (parentSection && parentSection.classList && parentSection.classList.contains("topbillboard")) {
390                            console.log("topbillboard Render");
391                            parentSection.classList.add("stickyad");
392                            fadeTimeout = setTimeout(function () {
393                                fadeOut(parentSection);
394                            }, 6000);
395                        }
396                    }
397
398                    var mobileBottomBanner = document.getElementById(containerId);
399                    if (mobileBottomBanner && mobileBottomBanner.classList && mobileBottomBanner.classList.contains("banner-300x50-mobile")) {
400                        var cmpButton = document.getElementById("qc-cmp2-persistent-link");
401                        if (cmpButton && cmpButton.classList) {
402                            cmpButton.classList.add("fixCmpButtonPosition");
403                        }
404                    }
405
406                    var skinBanner = document.getElementById(containerId);
407                    if (skinBanner && skinBanner.classList && skinBanner.classList.contains("advertising-skin")) {
408                        document.body.className += ' skin-layout';
409                    }
410                    if (typeof parentNode != 'undefined' && parentNode != null) {
411                        // parentNode.style.display = "block";
412                    }
413                } else {
414
415                    var adunitContainer = document.getElementById(containerId);
416                    var parentSection = getClosest(adunitContainer, "section");
417                    if (parentSection && parentSection.classList && parentSection.classList.contains("topbillboard")) {
418
419                    } else {
420                        console.log('%c NO AD Hiding: ' + event.slot.getAdUnitPath() + ' Container:' + containerId, 'font-size:15px;font-weight:bold; background: #222; color: #ff4d4d');
421                        document.getElementById(containerId).style.display = "none";
422                        if (typeof parentNode != 'undefined' && parentNode != null) {
423                            parentNode.style.display = "none";
424                        }
425                    }
426                }
427
428            });
429        });
430
431
432    </script>
432
433
434    <style>
435
436        .fixCmpButtonPosition {
437            bottom: 51px;
438        }
439
440        .stickyad {
441            position: sticky;
442            position: -webkit-sticky;
443            /*top: 60px;*/
444            top: 0;
445            z-index: 10000;
446        }
447
448        .fixedHeightBillboard, .fixedHeightBillboardArticle {
449            height: 312px;
450        }
451
452
453            .fixedHeightBillboard .banner-container {
454                top: 50%;
455                transform: translateY(-50%);
456            }
457
458        @media only screen and (max-width: 600px) {
459            .fixedHeightBillboard {
460                height: 129px;
461            }
462
463            .fixedHeightBillboard, .fixedHeightBillboardArticle {
464                height: 129px;
465            }
466
467                .fixedHeightBillboard .banner-container {
468                    top: 50%;
469                    transform: translateY(-50%);
470                }
471                /*            .fixedHeightBillboardArticle {
472                        position: fixed;
473                        top: 56px;
474                        width: 100vw;
475                        height: 130px;
476                        z-index: -1
477                    }
478        */
479                .fixedHeightBillboardArticle .banner-container {
480                    top: 50%;
481                    transform: translateY(-50%);
482                }
483        }
484
485/*        @media only screen and (max-width: 650px) {
486            .qc-cmp2-summary-section {
487                height: 70vh !important;
488                overflow-y: scroll !important;
489                zoom: 100% !important;
490            }
491        }
492*/
493        .footer-membership {
494            position: relative;
495            width: 100%;
496            height: auto;
497            padding: 12px 0;
498            text-align: center;
499            border-top: 1px solid rgba(0, 0, 0, 0.1);
500        }
501
502            .footer-membership p {
503                margin: 10px 0px 5px 0px;
504                font-size: 12px;
505                font-weight: 700;
506                color: #6d6d70;
507                line-height: 35px;
508            }
509
510            .footer-membership img {
511                border: 1px solid rgba(0, 0, 0, 0.1);
512                border-radius: 5px;
513            }
514    </style>
515
516
517
518</head>
519<body data-scroll="false" data-loading="true" data-content="rock">
vendor: 105 bytes, lines 519-526
519
520
521    
522    
523
524    
525    <noscript>
526        <iframe src="https://www.googletagmanager.com/ns.html?id=
526GTM-KKR6MB2
vendor: 104 bytes, lines 526-533
526" height="0" width="0" style="display:none;visibility:hidden"></iframe>
527    </noscript>
528
529
530
531
532
533    
533<!-- Stations Marquee -->
534    <div class="stations-marquee">
535
536        
537
538<div class="marquee-inner">
539
540    <div class="marquee-header">
541        <h4>Διαλεξε σταθμο <span>και ακου live τι παιζει</span></h4>
542        <button class="close">
543            <span class="text">Close</span>
544            <span class="icon"></span>
545        </button>
546    </div>
547
548    <div class="marquee-flex-group">
549
550
551
552
553
554
555
556    <a href="/rockfm969/listenlive/" target="atticaRadiosPlayerWindow" class="item rock horizontal listen-live-player">
557
558        <div class="item-image">
559            <img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/b6/b6fc2ce81c4a49fa8e1229a31b4f5cd7.svg?quality=85&amp;404=default&amp;v=4" alt="">
560        </div>
561        <div class="item-content">
562            <span class="station-name">RockFm 969 - Live Now</span>
563            <h4>969 ROCKFM OVERNIGHT</h4>
564            <div class="item-infos">
565                    <span class="time">00:00 - 06:00</span>
566            </div>
567        </div>
568        <div class="play-icon">
569            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
570                <circle fill="#fff" cx="25" cy="25" r="25" />
571                <path d="m20.3,30.6v-11.2c0-.9,1-1.5,1.8-1l9.1,5.6c.7.5.7,1.5,0,2l-9.2,5.6c-.7.5-1.7-.1-1.7-1Z" />
572            </svg>
573        </div>
574    </a>
575
576
577
578
579
580    <a href="/best926/listenlive/" target="atticaRadiosPlayerWindow" class="item best horizontal listen-live-player">
581
582        <div class="item-image">
583            <img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/be/beacb687958a453286a9bc7d07333915.svg?quality=85&amp;404=default&amp;v=4" alt="">
584        </div>
585        <div class="item-content">
586            <span class="station-name">Best 926 - Live Now</span>
587            <h4>Izo Darko</h4>
588            <div class="item-infos">
589                    <span class="time">03:00 - 04:00</span>
590            </div>
591        </div>
592        <div class="play-icon">
593            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
594                <circle fill="#fff" cx="25" cy="25" r="25" />
595                <path d="m20.3,30.6v-11.2c0-.9,1-1.5,1.8-1l9.1,5.6c.7.5.7,1.5,0,2l-9.2,5.6c-.7.5-1.7-.1-1.7-1Z" />
596            </svg>
597        </div>
598    </a>
599
600
601
602
603
604    <a href="/athens-deejay-952/listenlive/" target="atticaRadiosPlayerWindow" class="item deejay horizontal listen-live-player">
605
606        <div class="item-image">
607            <img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/9d/9d212880d56d43a7bc49cb7e531ecb4c.svg?quality=85&amp;404=default&amp;v=4" alt="">
608        </div>
609        <div class="item-content">
610            <span class="station-name">Athens DeeJay 952 - Live Now</span>
611            <h4></h4>
612            <div class="item-infos">
613            </div>
614        </div>
615        <div class="play-icon">
616            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
617                <circle fill="#fff" cx="25" cy="25" r="25" />
618                <path d="m20.3,30.6v-11.2c0-.9,1-1.5,1.8-1l9.1,5.6c.7.5.7,1.5,0,2l-9.2,5.6c-.7.5-1.7-.1-1.7-1Z" />
619            </svg>
620        </div>
621    </a>
622
623
624
625
626
627    <a href="/lampsi923/listenlive/" target="atticaRadiosPlayerWindow" class="item lampsi horizontal listen-live-player">
628
629        <div class="item-image">
630            <img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/4f/4fad192c1e40443e9cc9d09532425b69.svg?quality=85&amp;404=default&amp;v=4" alt="">
631        </div>
632        <div class="item-content">
633            <span class="station-name">Λάμψη 923 - Live Now</span>
634            <h4></h4>
635            <div class="item-infos">
636            </div>
637        </div>
638        <div class="play-icon">
639            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
640                <circle fill="#fff" cx="25" cy="25" r="25" />
641                <path d="m20.3,30.6v-11.2c0-.9,1-1.5,1.8-1l9.1,5.6c.7.5.7,1.5,0,2l-9.2,5.6c-.7.5-1.7-.1-1.7-1Z" />
642            </svg>
643        </div>
644    </a>
645
646
647    </div>
648
649</div>
650
651
652
653
654
655
656
657    </div>
658
659
660    <!-- Header -->
661    <header>
662
663        <div class="header-inner">
664
665            <a href="/" class="main-logo">
666                <svg class="icon attica">
667                    <use href="/Content/images/logo/logo.svg#attica" xlink:href="/Content/images/logo/logo.svg#attica" />
668                </svg>
669                <svg class="icon radios">
670                    <use href="/Content/images/logo/logo.svg#radios" xlink:href="/Content/images/logo/logo.svg#radios" />
671                </svg>
672            </a>
673
674            <div class="navigation">
675
676                <div class="navigation-controls">
677
678                    <a href="/rockfm969/listenlive" class="listen-live listen-live-player">
679                        <!-- Το className trigger-stations-marquee το αφαιρούμε σε κάποιες σελίδες -->
680                        <span class="text">Listen Live</span>
681                        <span class="play-icon">
682                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
683                                <circle fill="#fff" cx="25" cy="25" r="25" />
684                                <path d="m20.3,30.6v-11.2c0-.9,1-1.5,1.8-1l9.1,5.6c.7.5.7,1.5,0,2l-9.2,5.6c-.7.5-1.7-.1-1.7-1Z" />
685                            </svg>
686                        </span>
687                    </a>
688
689                    <button class="trigger-nav">
690                        <div class="icon">
691                            <span class="line"></span>
692                            <span class="line"></span>
693                        </div>
694                    </button>
695
696                    <nav class="dropdown">
697
698<ul class="primary unstyled">
699        <li><a href="/">Home</a></li>
700        <li><a href="/rockfm969/">RockFm 969</a></li>
701        <li><a href="/athens-deejay-952/">Athens DeeJay 952</a></li>
702        <li><a href="/lampsi923/">Λάμψη 923</a></li>
703        <li><a href="/best926/">Best 926</a></li>
704        <li><a href="/producers">Producers</a></li>
705        <li><a href="/diagonismoi">Διαγωνισμοί</a></li>
706</ul>
707
708
709                        
710
711
712
713
714                    </nav>
715
716                </div>
717
718                <nav class="stations">
719                    
720
721
722<ul class="unstyled">
723    <li class="homepage"><a href="/"><img src="/Content/images/stations-logos/homepage.svg" alt=""></a></li>
724        <li class="selected"><a href="/rockfm969/"><img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/b6/b6fc2ce81c4a49fa8e1229a31b4f5cd7.svg?quality=85&amp;404=default&amp;v=4" alt="RockFm 969"></a></li>
725        <li class=""><a href="/best926/"><img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/be/beacb687958a453286a9bc7d07333915.svg?quality=85&amp;404=default&amp;v=4" alt="Best 926"></a></li>
726        <li class=""><a href="/athens-deejay-952/"><img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/9d/9d212880d56d43a7bc49cb7e531ecb4c.svg?quality=85&amp;404=default&amp;v=4" alt="Athens DeeJay 952"></a></li>
727        <li class=""><a href="/lampsi923/"><img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/4f/4fad192c1e40443e9cc9d09532425b69.svg?quality=85&amp;404=default&amp;v=4" alt="Λάμψη 923"></a></li>
728</ul>
729
730
731
732
733                </nav>
734
735
736
737
738            </div>
739
740        </div>
741
742    </header>
743
744
745
746    <!-- Main Content -->
747    <main id="main">
748
749        
750
751
752        
753
754
755
756
757
758<!-- Station Hero -->
759<section>
760
761
762
763    
764
765
766    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/openplayerjs@latest/dist/openplayer.min.css" />
767    
767<script src="https://cdn.jsdelivr.net/npm/openplayerjs@latest/dist/openplayer.min.js"></script>
767
768    <style>
769
770        header {
771            display: none !important;
772        }
773
774        .navigation-controls {
775            display: none !important;
776        }
777
778        video {
779            border-radius: 20px;
780            overflow: hidden;
781        }
782
783        .op-player__play {
784        }
785
786        .pulse {
787            border-radius: 50%;
788            animation: pulse-white 2s infinite;
789        }
790
791        @keyframes pulse-white {
792            0% {
793                transform: scale(0.95);
794                box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.7);
795            }
796
797            70% {
798                transform: scale(1);
799                box-shadow: 0 0 0 10px rgba(255, 255, 255, 0);
800            }
801
802            100% {
803                transform: scale(0.95);
804                box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
805            }
806        }
807    </style>
808    <div class="template-sc">
809
810
811        <div class="left">
812            <div class="station-player-rock">
813                <!-- ClassNames ανα σταθμό => station-hero-best | station-hero-rock | station-hero-deejay | station-hero-lampsi -->
814
815                <div class="item-image">
816                    <img id="stationImage" src="/content/images/covers/rock-player.jpg" alt="">
817                </div>
818
819                <div class="item-content">
820
821                        <a href="/rockfm969/listenlive/" class="station-producer-image listen-live-player">
822                            <img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/b6/b6fc2ce81c4a49fa8e1229a31b4f5cd7.svg?quality=85&amp;404=default&amp;v=4" alt="">
823                        </a>
824                        <div class="station-producer-infos">
825                            <span>ON AIR</span>
826                            <h3>
827                                <a >969 ROCKFM OVERNIGHT</a>
828                            </h3>
829                            <p>00:00 - 06:00</p>
830                            <p> </p>
831                            <div class="now-playing-widget" id="now-playing-widget">
832                                <div class="now-title">Playing now</div>
833                                <div class="track-info">
834                                    <img class="album-cover" id="albumCover" src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/b6/b6fc2ce81c4a49fa8e1229a31b4f5cd7.svg?quality=85&amp;404=default&amp;v=4" alt="Album Cover">
835                                    <div class="track-details">
836                                        <div class="track-artist" id="track-artist">Black</div>
837                                        <div class="track-title" id="track-title">Wonderful Life</div>
838                                    </div>
839                                </div>
840                            </div>
841                        </div>
842
843                    <div class="station-footer">
844                        <video class="op-player__media" poster="/content/images/covers/rock-player.gif?v=1" id="player" controls playsinline style="width:100%">
845                        </video>
846                        
847
848                        <a href="/rockfm969/listenlive/" class="listen-live" id="playButton" style="display:none;">
849                            <span class="text" id="playerText">Listen Live</span>
850                            <span class="play-icon ">
851                                <svg class="pulse" id="playIcon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z" /> <path d="M6.271 5.055a.5.5 0 0 1 .52.038l3.5 2.5a.5.5 0 0 1 0 .814l-3.5 2.5A.5.5 0 0 1 6 10.5v-5a.5.5 0 0 1 .271-.445z" /> </svg>
852                                <svg id="pauseIcon" style="display:none" xmlns="http://www.w3.org/2000/svg" width="46" height="46" fill="currentColor" viewBox="0 0 16 16" id="IconChangeColor"> <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z" id="mainIconPathAttribute" fill="#ffffff"></path> <path d="M5 6.25a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0v-3.5zm3.5 0a1.25 1.25 0 1 1 2.5 0v3.5a1.25 1.25 0 1 1-2.5 0v-3.5z" id="mainIconPathAttribute" fill="#ffffff"></path> </svg>
853                            </span>
854                        </a>
855
856                        
857                    </div>
858                    <div class="volume" style="display:none">
859
860                        <form action="">
861                            <fieldset>
862                                <button class="volume-controller">
863
864                                    <span class="volume-on active">
865                                        <svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="500" height="500" viewBox="0 0 75 75">
866                                            <path d="M39.389,13.769 L22.235,28.606 L6,28.606 L6,47.699 L21.989,47.699 L39.389,62.75 L39.389,13.769z" style="stroke:#FFF;stroke-width:5;stroke-linejoin:round;fill:#FFF;" />
867                                            <path d="M48,27.6a19.5,19.5 0 0 1 0,21.4M55.1,20.5a30,30 0 0 1 0,35.6M61.6,14a38.8,38.8 0 0 1 0,48.6" style="fill:none;stroke:#FFF;stroke-width:5;stroke-linecap:round" />
868                                        </svg>
869                                    </span>
870
871                                    <span class="volume-off">
872                                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 455.19 359.87">
873                                            <path style="stroke:#FFF;stroke-width:5;stroke-linejoin:round;fill:#FFF;" d="m239.26,16.67l-114.36,98.91H16.67v127.29h106.59l116,100.34V16.67Z" />
874                                            <line style="fill:none;stroke:#FFF;stroke-width:33.33;stroke-linecap:round" x1="438.53" y1="113.09" x2="314.95" y2="236.66" />
875                                            <line style="fill:none;stroke:#FFF;stroke-width:33.33;stroke-linecap:round" x1="438.53" y1="236.66" x2="314.95" y2="113.09" />
876                                        </svg>
877                                    </span>
878
879                                </button>
880
881                                <div class="range-item">
882                                    <input type="range" min="0" max="100" value="50" id="volume-slider">
883                                </div>
884
885                            </fieldset>
886                        </form>
887
888
889                    </div>
890
891                </div>
892
893            </div>
894
895
896
897        </div>
898        <div class="right">
899
900            <div class="banner-right">
901
902                <div class="sticky-element">
903
904                    <div class="adv-banner" style="overflow-x:hidden;">
905                        <div id='adv3894f67012274c00bea554108700a84e' class="advert">
906   
906<script>
907			googletag.cmd.push(function() {
908    			googletag.defineSlot('/3346429/Attica_Radios_300x250_A', [[320, 100], [300, 50], [320, 50], [320, 80], [300, 100], [300, 80], [300, 250], [300, 600]],'adv3894f67012274c00bea554108700a84e')
909    			.addService(googletag.pubads())
910    			.setCollapseEmptyDiv(true);
911    			
912    			googletag.enableServices();
913    			googletag.display('adv3894f67012274c00bea554108700a84e');
914			});
915   </script>
915
916 </div>
917                    </div>
918
919                </div>
920
921            </div>
922
923        </div>
924
925    </div>
926
927<style>
928    .social {
929        padding: 5.5px 38px;
930        border-radius: 24px;
931        font-size: 17px;
932        background-color: #101010;
933    }
934
935        .social a {
936            display: inline-block !important;
937            height: 27px;
938            margin-top: 5px;
939            padding: 0 5px;
940        }
941
942    .station-contact.empty {
943        display: none;
944    }
945
946    .station-contact.extra {
947        background-color: rgb(16 16 16 / 0%);
948        max-width: 100%;
949        flex-wrap: wrap;
950    }
951</style>
952
953
954    <div class="station-contact extra">
955        <a href="https://www.atticaradios.gr/Content/relatedfiles/oroi_viber_Rock_18092025.pdf" target="_blank" class="terms-btn"><span class="text">ΟΡΟΙ ΔΙΑΓΩΝΙΣΜΟΥ VIBER</span></a>      
956    </div>
957
958<div class="station-contact">
959
960        <a href="tel:2106821968" class="telephone-btn">
961            <span class="icon">
962                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
963                    <path d="m3.6,7.8c1.4,2.8,3.8,5.1,6.6,6.6l2.2-2.2c.3-.3.7-.4,1-.2,1.1.4,2.3.6,3.6.6.6,0,1,.4,1,1v3.4c0,.6-.4,1-1,1C7.6,18,0,10.4,0,1,0,.4.4,0,1,0h3.5c.6,0,1,.4,1,1,0,1.2.2,2.4.6,3.6.1.3,0,.7-.2,1l-2.3,2.2h0Z" />
964                </svg>
965            </span>
966            <span class="text">2106821968</span>
967        </a>
968
969        <div class="social">
970
971                <a href="viber://chat?number=6938969969" target="_blank">
972                    <img src="/content/images/icons/viber.png" style="width:27px" />
973                </a>
974
975                <a href="https://www.instagram.com/969rockfm/" target="_blank">
976                    <img src="/content/images/icons/instagram_logo.png" style="width:27px" />
977                </a>
978
979
980
981
982                <a href="https://www.facebook.com/969rockfm" target="_blank">
983                    <img src="/content/images/icons/facebook_logo.png" style="width:27px" />
984                </a>
985                            <a href="https://twitter.com/969rockfm" target="_blank">
986                    <img src="/content/images/icons/twitter_logo.png" style="width:25px" />
987                </a>
988                    </div>
989
990
991        <a href="mailto:[email protected]" class="contact-btn" target="_blank">
992            <span class="icon">
993                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.6 14">
994                    <path d="m12.2,7.7l6.9,5.9c-.2.3-.6.4-1,.4H1.4c-.4,0-.7-.1-1-.4l7-5.9,2.4,2.1s2.4-2.1,2.4-2.1Zm-2.4.7L.4.4c.3-.3.7-.4,1-.4h16.8c.4,0,.7.1,1,.4l-9.4,8Zm9.8,4.5l-6.8-5.8,6.8-5.9v11.7Zm-19.6,0V1.2l6.8,5.9S0,12.9,0,12.9Z" />
995                </svg>
996            </span>
997            <span class="text">contact us</span>
998        </a>
999
1000
1001
1002
1003<link rel="stylesheet" href="/Content/css/cosmote-button.css?v=3" />
1004
1005<button class="button-default soundtrack-brand-cta" type="button" data-target="on-demand-trigger" aria-describedby="soundtrack-brand-credit">
1006    <span class="soundtrack-brand-cta__title">το soundtrack της ζωής σου</span>
1007    <span class="soundtrack-brand-cta__credit" id="soundtrack-brand-credit">
1008        <span>powered by</span>
1009        <img class="soundtrack-brand-cta__logo" src="/Content/Images/logos/T_logo_carrier_surface_rgb_p.png" width="40" height="40" alt="T">
1010    </span>
1011</button>
1012
1013
1014<dialog data-content="on-demand-modal">
1015
1016    <button class="close">
1017        <span class="text">Close</span>
1018        <span class="icon"></span>
1019    </button>
1020
1021    
1022        <div class="soundtrack-modal-sponsor">
1023            <div class="soundtrack-modal-sponsor__surface">
1024                <span class="soundtrack-modal-sponsor__by">powered by</span>
1025                <img src="/Content/Images/logos/T_logo_carrier_surface_rgb_p.png" width="40" height="40" alt="T">
1026            </div>
1027        </div>
1028    
1029
1030    <h2>
1031        <p>Ποιο τραγούδι είναι το soundtrack της ζωής σου;</p>
1032        Ένα τραγούδι που σου θυμίζει κάτι δυνατό… έναν άνθρωπο, μια εποχή, μια στιγμή που δεν ξεχνάς.<br />
1033        Το Σαββατοκύριακο 3 & 4 Οκτωβρίου, θα παίξουμε τη δική σου ιστορία, μέσα από τα τραγούδια που μας σημάδεψαν.        
1034    </h2>
1035    <form class="form" method="post" id="onDemandForm">
1036        <input name="__RequestVerificationToken" type="hidden" value="8MQkg6k31jDf9Dlj1coFMYXeXUn98QRvG7GuP7aLkD25T_QJ6nMKfL_O8L21k32D-WEwg7xdVSoE_vLzV-k4hyISXlY1" />
1037        <fieldset class="modal-form" id="onDemandData">
1038            <div class="flex-group">
1039                <div class="form-item">
1040                    <input type="hidden" value="rockfm969" placeholder="rockfm969" id="Station" name="Station" />
1041                    <label>Το όνομα σου</label>
1042                    <input autofocus="autofocus" data-val="true" data-val-required="The Name field is required." id="Name" name="Name" pattern="^.{3,500}$" placeholder="First name only" required="required" type="text" value="" />
1043                </div>
1044                <div class="form-item">
1045                    <label>Το e-mail σου</label>
1046                    <input data-val="true" data-val-required="The Email field is required." id="email" name="Email" pattern="^.{3,500}$" placeholder="[email protected]" required="required" type="text" value="" />
1047                    
1048                </div>
1049            </div>
1050
1051            <div class="form-item">
1052                <label>Συμπλήρωσε το τραγούδι που επιθυμείς και ποιος ήταν ο λόγος</label>
1053                <textarea autofocus="autofocus" cols="20" data-val="true" data-val-required="The Song field is required." id="Song" name="Song" pattern="^.{3,700}$" placeholder="Song Name" required="required" rows="2" type="text">
1054</textarea>
1055            </div>
1056
1057            <!--<div class="form-item">
1058            <label>Σχόλια/Σημειώσεις</label>-->
1059            
1060            
1061            <!--</div>-->
1062            <div class="form-item">
1063                <input type="hidden" id="AcceptTerms" name="AcceptTerms" value="false" />
1064                <label> <input type="checkbox" id="chkAcceptTerms" name="chkAcceptTerms" required style="margin: 4px;" /> Συμφωνώ να λαμβάνω ενημερωτικά email από τον 969 Rock FM για διαγωνισμούς, δώρα και προωθητικές ενέργειες.</label>
1065                
1066            </div>
1067            <div id="onDemandMessageError" class="form-item" style="display:none;">
1068                <label style="color: #ffce00; text-align: center; margin-bottom: 0px; line-height: 1.5em; ">Ουπς! κάτι δεν πήγε καλά! <br /> Ξαναπροσπάθησε ή επικοινώνησε με το [email protected]</label>
1069            </div>
1070
1071
1072            <button class="button-default" type="submit">Καταχώρηση τραγουδιού</button>
1073        </fieldset>
1074
1075        <fieldset class="modal-message" style="display:none" id="responseModal">
1076            <legend>Ευχαριστούμε</legend>
1077            <p>η επιλογή σου καταχωρηθηκε</p>
1078            <div class="flex-group">
1079                <div class="form-item" style="text-align:right">
1080                    <button class="button-default" type="reset">Διαλεξε και αλλο τραγουδι</button>
1081                </div>
1082                <div class="form-item" style="text-align:left">
1083                    <button class="button-default close" type="button">Κλεισιμο παραθυρου</button>
1084                </div>
1085            </div>
1086        </fieldset>
1087        <input data-val="true" data-val-required="The RecaptchaToken field is required." id="RecaptchaToken" name="RecaptchaToken" type="hidden" value="" />
1088    </form>
1089</dialog>
vendor: 64 bytes, lines 1089-1091
1089
1090
1091<script src="https://www.google.com/recaptcha/api.js?render=
10916LdAhGYrAAAAAHRch3h3T44HJXzoDZesSUvSZSVa
vendor: 13 bytes, line 1091
1091"></script>
1092<script>
1093    grecaptcha.ready(function () {
1094        grecaptcha.execute('6LdAhGYrAAAAAHRch3h3T44HJXzoDZesSUvSZSVa', { action: 'ondemand' }).then(function (token) {
1095            document.getElementById('RecaptchaToken').value = token;
1096        });
1097    });
1098</script>
1098
1099
1100<script>
1101    document.addEventListener("DOMContentLoaded", function () {
1102
1103
1104        const contactForm = document.getElementById("onDemandForm");
1105        const onDemandModal = document.querySelector('[data-content="on-demand-modal"]')
1106        const openOnDemandModal = document.querySelector('[data-target="on-demand-trigger"]')
1107        const closeOnDemandModal = document.querySelectorAll('[data-content="on-demand-modal"] .close')
1108        var checkbox = document.getElementById('chkAcceptTerms');
1109        var hiddenField = document.getElementById('AcceptTerms');
1110
1111
1112        function RefreshOnDemand() {
1113            Array.from(contactForm.elements).forEach((field) => {
1114                if (field.type !== "button" && field.type !== "submit" && field.type !== "hidden") {
1115                    field.value = ""; // Clear the value
1116                }
1117            });
1118            hiddenField.value = "false";
1119            checkbox.checked = false;
1120            document.getElementById("onDemandData").style.display = "flex";
1121            document.getElementById("onDemandMessageError").style.display = "none";
1122            document.getElementById("responseModal").style.display = "none";
1123        }
1124
1125
1126        checkbox.addEventListener('change', function () {
1127            if (checkbox.checked) {
1128                hiddenField.value = 'true';
1129            }
1130        });
1131
1132
1133
1134        openOnDemandModal.onclick = () => {
1135            RefreshOnDemand();
1136            onDemandModal.showModal()
1137        };
1138        closeOnDemandModal.forEach(btn => btn.onclick = () => {
1139            RefreshOnDemand();
1140            onDemandModal.close()
1141        })
1142
1143        contactForm.addEventListener("reset", function (e) {
1144            RefreshOnDemand();
1145        });
1146
1147        contactForm.addEventListener("submit", function (e) {
1148            e.preventDefault(); // Prevent default form submission
1149            const formData = new FormData(contactForm);
1150            fetch('/contact/sendondemandemail/' + "?v=1", {
1151            method: 'POST',
1152            headers: {
1153            'Content-Type': 'application/x-www-form-urlencoded', // Properly set the content type
1154            'X-Requested-With': 'XMLHttpRequest' // Identify as AJAX
1155            },
1156            body: new URLSearchParams(formData).toString()
1157            })
1158            .then(response => {
1159            if (!response.ok) {
1160            console.error('Error:', response.status);
1161            document.getElementById("onDemandMessageError").style.display = "block";
1162            throw new Error(`HTTP error! status: ${response.status}`);
1163            }
1164            return response.json(); // Parse the JSON response
1165            })
1166            .then(data => {
1167            document.getElementById("onDemandData").style.display = "none";
1168            document.getElementById("responseModal").style.display = "block";
1169            document.getElementById("onDemandMessageError").style.display = "none";
1170            })
1171            .catch(error => {
1172            // Handle errors
1173            console.error('Error:', error.message);
1174            document.getElementById("onDemandMessageError").style.display = "block";
1175            });
1176
1177
1178            });
1179
1180            console.clear();
1181
1182
1183
1184
1185            });
1186
1187            function checkTCFConsent(callback) {
1188            if (typeof window.__tcfapi !== "undefined") {
1189            window.__tcfapi('getTCData', 2, function (tcData, success) {
1190            if (success) {
1191            if (tcData.eventStatus === "useractioncomplete" || tcData.eventStatus === "tcloaded") {
1192            console.log("User has already given consent.");
1193            callback(); // Trigger action
1194            } else {
1195            console.log("Waiting for user to interact...");
1196            waitForConsent(callback); // Watch for new consent action
1197            }
1198            }
1199            });
1200            } else {
1201            console.warn("TCF API not available yet. Retrying...");
1202            setTimeout(() => checkTCFConsent(callback), 1000);
1203            }
1204            }
1205
1206            // Listen for user interaction with the consent banner
1207            function waitForConsent(callback) {
1208            window.__tcfapi('addEventListener', 2, function (tcData, success) {
1209            if (success && tcData.eventStatus === "useractioncomplete") {
1210            console.log("User has now given consent.");
1211            callback();
1212            }
1213            });
1214            }
1215
1216            // Function to execute after consent
1217            function afterConsentAction() {
1218            const urlParams = new URLSearchParams(window.location.search);
1219            //OPEN ON DEMAND ME QUERYSTRING
1220            if (urlParams.get('openondemand') === '1') {
1221            document.querySelector('[data-target="on-demand-trigger"]').click();
1222            }
1223            }
1224
1225            // Run check when page loads
1226            document.addEventListener("DOMContentLoaded", function () {
1227            checkTCFConsent(afterConsentAction);
1228            });
1229
1230</script>
1230
1231
1232
1233
1234
1235</div>
1236
1237    <!-- Player -->
1238    <aside class="player" style="left:0px; display:none;">
1239
1240        <div class="player-inner">
1241
1242            <button class="player-controller">
1243
1244                <span class="play-icon active">
1245                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
1246                        <circle fill="#fff" cx="25" cy="25" r="25" />
1247                        <path d="m20.3,30.6v-11.2c0-.9,1-1.5,1.8-1l9.1,5.6c.7.5.7,1.5,0,2l-9.2,5.6c-.7.5-1.7-.1-1.7-1Z" />
1248                    </svg>
1249                </span>
1250
1251                <span class="stop-icon">
1252                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
1253                        <circle fill="#fff" cx="25" cy="25" r="25" />
1254                        <rect x="18.42" y="18.42" width="13.16" height="13.16" rx="1.51" ry="1.51" />
1255                    </svg>
1256                </span>
1257
1258            </button>
1259
1260            <div class="producer">
1261                <div class="producer-image">
1262                    <img src="https://www.atticaradios.gr/Content/ImagesDatabase/p/crop/both/b6/b6fc2ce81c4a49fa8e1229a31b4f5cd7.svg?quality=85&amp;404=default&amp;v=4" alt="">
1263                </div>
1264
1265                <div class="producer-infos">
1266                    <h3> <a >969 ROCKFM OVERNIGHT</a></h3>
1267                    <p>00:00 - 06:00 </p>
1268
1269                </div>
1270            </div>
1271
1272        </div>
1273
1274
1275    </aside>
1276    
1276<script>
1277
1278    function initConsentVast() {
1279        if (typeof window.__tcfapi !== 'function') {
1280            // __tcfapi not ready yet, check again in 100ms
1281            setTimeout(initConsentVast, 100);
1282        } else {
1283            // Now that __tcfapi is available, make your call
1284            window.__tcfapi('getTCData', 2, function (tcData, success) {
1285                if (success) {
1286                    var consentString = tcData.tcString;
1287                    const id = 'player';
1288                    const player = new OpenPlayerJS(id);
1289                    var referrerUrl = encodeURIComponent(window.location.href)
1290                    var vastUrl = "https://x.grxchange.gr/videoad/9741?vast=4.2&cmpavail=1&cmpconsent=" + consentString + "&pageurl=" + referrerUrl;
1291                    initPlayer(vastUrl);
1292
1293                } else {
1294                    initPlayer("");
1295                }
1296            });
1297        }
1298    }
1299
1300    initConsentVast();
1301
1302    function initPlayer(vastUrl = "") {
1303        const id = 'player';
1304        const player = new OpenPlayerJS(id);
1305
1306        player.init().then(() => {
1307        player.src = 'https://stream.rcs.revma.com/sm9b1svehkcwv';
1308            player.load();
1309        if (vastUrl != "") {
1310            player.loadAd(vastUrl);
1311        }
1312
1313        });
1314
1315    }
1316
1317
1318    </script>
1318
1319    
1319<script>
1320    var jazzlerApiName = "rockfm";
1321    </script>
1321
1322
1323
1324<script>
1325    document.addEventListener("DOMContentLoaded", function () {
1326        document.querySelectorAll("div.station-contact").forEach(div => {
1327            if (!div.textContent.trim()) {
1328                div.classList.add("empty");
1329            }
1330        });
1331    });
1332</script>
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345</section>
1346
1347
1348
1349
1350
1351
1352    </main>
1353
1354
1355
1356    <!-- Footer -->
1357    <footer>
1358
1359
1360        <div class="footer-header">
1361
1362            <a href="/" class="footer-logo">
1363                <svg class="icon attica">
1364                    <use href="/Content/images/logo/logo.svg#attica" xlink:href="/Content/images/logo/logo.svg#attica" />
1365                </svg>
1366                <svg class="icon radios">
1367                    <use href="/Content/images/logo/logo.svg#radios" xlink:href="/Content/images/logo/logo.svg#radios" />
1368                </svg>
1369            </a>
1370
1371
1372
1373        </div>
1374
1375        <div class="attica-promos">
1376
1377
1378    <ul class="unstyled">
1379            <li>
1380                <a href="https://www.capital.gr" target="_blank">
1381                    <span>Capital</span>
1382                </a>
1383            </li>
1384            <li>
1385                <a href="https://www.thetoc.gr" target="_blank">
1386                    <span>TheTOC</span>
1387                </a>
1388            </li>
1389            <li>
1390                <a href="https://www.harpersbazaar.gr" target="_blank">
1391                    <span>Harper&#39;s BAZAAR</span>
1392                </a>
1393            </li>
1394            <li>
1395                <a href="https://www.madamefigaro.gr" target="_blank">
1396                    <span>Madame Figaro</span>
1397                </a>
1398            </li>
1399            <li>
1400                <a href="https://www.shape.gr" target="_blank">
1401                    <span>Shape</span>
1402                </a>
1403            </li>
1404            <li>
1405                <a href="http://www.yupiii.gr" target="_blank">
1406                    <span>Yupiii</span>
1407                </a>
1408            </li>
1409            <li>
1410                <a href="https://esquire.com.gr" target="_blank">
1411                    <span>Esquire</span>
1412                </a>
1413            </li>
1414            <li>
1415                <a href="https://www.missbloom.gr" target="_blank">
1416                    <span>Missbloom</span>
1417                </a>
1418            </li>
1419            <li>
1420                <a href="https://www.tasty-guide.gr" target="_blank">
1421                    <span>Tasty Guide</span>
1422                </a>
1423            </li>
1424
1425    </ul>
1426
1427
1428
1429        </div>
1430
1431        <div class="footer-copyright">
1432            <p class="copyright footer-text">© 2026 Attica Media Online Network</p>
1433            <nav>
1434
1435        <a href="javascript:window.open(&quot;http://www.atticamediagroup.gr/pres/&quot;)" target="_blank">Attica Media Online Network</a>
1436        <a href="/about-us" target="_blank">Σχετικά με εμάς</a>
1437        <a href="/contact" target="_blank">Επικοινωνήστε μαζί μας</a>
1438        <a href="javascript:window.open(&quot;http://www.atticamediagroup.gr/pres/&quot;)" target="_blank">Διαφημιστείτε</a>
1439        <a href="/terms-of-use" target="_blank">Όροι χρήσης</a>
1440
1441            </nav>
1442        </div>
1443
1444
1445
1446    </footer>
1447    
1448
1449
1450
1451    
1452    
1452<script src="/content/atticaradiojs?v=irhKQl_rtkEOiVkdlw170-2KMt_uXUvpaoG46YcItxE1"></script>
1452
1453
1454    <!-- Index -->
1455    
1455<script type="module" src="/Content/js/modules/index.js"></script>
1455
1456
1457    
1458    
1459<!-- Meta Pixel Code -->
1460<script>
1461!function(f,b,e,v,n,t,s)
1462{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
1463n.callMethod.apply(n,arguments):n.queue.push(arguments)};
1464if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
1465n.queue=[];t=b.createElement(e);t.async=!0;
1466t.src=v;s=b.getElementsByTagName(e)[0];
1467s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://www.google.com/url?q=https://connect.facebook.net/en_US/fbevents.js'&source=gmail-imap&ust=1737977560000000&usg=AOvVaw0Bw-zeu7bUqJXisF9mfq1t);
1468fbq('init', '592433490201333');
1469fbq('track', 'PageView');
1470</script>
1470
1471<noscript><img height="1" width="1" style="display:none"
1472src="https://www.google.com/url?q=https://www.facebook.com/tr?id%3D592433490201333%26ev%3DPageView%26noscript%3D1&source=gmail-imap&ust=1737977560000000&usg=AOvVaw3JQ7guTC7YDpds1iemfhae"
1473/></noscript>
1474<!-- End Meta Pixel Code -->
1475
1476<!--
1476<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
1476-->
1477<!--
1477<script>
1478    setTimeout(function(){
1479        var adSenseCode = document.createElement('script');
1480        adSenseCode.type = 'text/javascript';
1481        adSenseCode.async = false;
1482        adSenseCode.defer = true;
1483        adSenseCode.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
1484        var ppNd = document.getElementsByTagName('script')[0];
1485        ppNd.parentNode.insertBefore(adSenseCode, ppNd);    
1486    }, 3100);
1487</script>
vendor: 2 bytes, line 1487
1487
1488<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9354358989096193"
1489     crossorigin="anonymous"></script>
vendor: 2 bytes, line 1489
1489
1490<script defer src="https://static.adman.gr/adman.js"></script>
vendor: 2 bytes, line 1490
1490
1491<script>window.AdmanQueue=window.AdmanQueue||[];AdmanQueue.push(function(){Adman.adunit({id:324,h:'https://x.grxchange.gr',inline:true})});</script>
1491-->
1492
1493    
1494
1495
1496    
1496<script defer src="/content/js/lazysizes.min.js"></script>
1496
1497
1498    
1498<script>
1499        document.addEventListener('lazybeforeunveil', function (e) {
1500            if (e.target && e.target.classList && e.target.classList.contains("infinitelist")) {
1501                var parent = e.target.parentNode;
1502                var itemToReveal = parseInt(e.target.getAttribute('data-itemsettoreveal')) + 1;
1503                dataLayer.push({
1504                    'event': 'GalleryPageView'
1505                });
1506                setTimeout(function () {
1507                    var loadmore = document.getElementsByClassName('loadmore' + (itemToReveal - 1));
1508
1509                    loadmore[0].style.display = "none";
1510
1511                    var itemsset = document.getElementsByClassName('itemsset' + itemToReveal);
1512                    while (itemsset.length > 0) {
1513                        if (itemsset[0] && itemsset[0].classList) {
1514                            itemsset[0].classList.remove('itemsset' + itemToReveal);
1515                        }
1516                    }
1517                    var banner = document.getElementsByClassName('banner' + itemToReveal);
1518                    //Εμφανίζω την Διαφ. μέσα στη λίστα
1519                    showBannerInGallery(itemToReveal);
1520
1521                    if (banner[0] && banner[0].classList) {
1522                        banner[0].classList.remove('banner' + itemToReveal);
1523                    }
1524
1525                }, 1500);
1526            }
1527
1528            if (e.target.classList.contains("bannerlazy")) {
1529                //LazyAd Loading
1530                var fnToRun = e.target.getAttribute("data-callbackfunction");
1531                console.log("LazyAd Loadin", fnToRun);
1532                window[fnToRun]();
1533            }
1534        });
1535
1536        function showBannerInGallery(itemToReveal) {
1537            var bannerLazyInitiatorSelector = "";
1538            bannerLazyInitiatorSelector = bannerLazyInitiatorSelector.concat(".banner", itemToReveal, " .bannerlazy");
1539            var bannerLazyInitiator = document.querySelector(bannerLazyInitiatorSelector);
1540            var fnToRun = bannerLazyInitiator.getAttribute("data-callbackfunction");
1541            bannerLazyInitiator.parentNode.removeChild(bannerLazyInitiator);
1542            window[fnToRun]();
1543        }
1544
1545
1546
1547
1548    </script>
1548
1549
1550    <div style="position: fixed;  bottom: 0px;  margin-right: auto; margin-left: auto;  left: 50%;  transform: translate(-50%, 0);z-index:999" class="bannerparent banner-300x50-mobile">
1551        <div id='bnre671d9ccf198436ea094227abf10ecbb' class="advert banner-300x50-mobile">
1552	
1552<script>
1553	if(window.innerWidth < 600){
1554    	googletag.cmd.push(function() {
1555    	googletag.defineSlot('/3346429/Attica_Radios_Mobile_320x50', [[300, 50], 'fluid', [320, 50], [1, 1]],'bnre671d9ccf198436ea094227abf10ecbb')
1556    			.addService(googletag.pubads())
1557		googletag.pubads().setTargeting('page', ['rockfm969']);
1558    	googletag.enableServices();
1559    	googletag.display('bnre671d9ccf198436ea094227abf10ecbb');
1560    	});
1561	}else{
1562	    document.getElementById("bnre671d9ccf198436ea094227abf10ecbb").style.display="none";
1563	}
1564	</script>
1564
1565</div>
1566    </div>
1567    
1567<script>
1568        document.querySelectorAll(".listen-live-player").forEach((function (e) {
1569            return e.addEventListener("click", (function (t) {
1570                t.preventDefault();
1571                window.open(e.getAttribute("href"), "atticaRadiosPlayerWindow", "popup=true,toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=1210,height=700,left=50,top=50")
1572            }))
1573        }))
1574
1575    </script>
1575
1576
1577    
1577<script>
1578        function fetchNowPlaying() {
1579            fetch('https://playingnow.atticaradios.gr/nowplaying/' + jazzlerApiName)
1580                .then(response => {
1581                    if (!response.ok) {
1582                        throw new Error(`HTTP error! Status: ${response.status}`);
1583                    }
1584                    return response.json();
1585                })
1586                .then(data => {
1587                    console.log(`Station: ${data.radioStation}`);
1588                    if (data.artist == '-') {
1589
1590                        document.getElementById("track-artist").innerHTML = "";
1591                        document.getElementById("track-title").innerHTML = "";
1592                        document.getElementById("now-playing-widget").style.opacity = 0.3
1593                        document.getElementById("now-playing-widget").style.filter = "grayscale(1)"
1594                    }
1595                    else {
1596
1597                        document.getElementById("track-artist").innerHTML = data.artist;
1598                        document.getElementById("track-title").innerHTML = data.song;
1599                        document.getElementById("now-playing-widget").style.opacity = 1
1600                        document.getElementById("now-playing-widget").style.filter = "grayscale(0)"
1601
1602                    }
1603                    if (data.artistImage == '-') {
1604                        document.getElementById("albumCover").src = document.getElementById("stationImage").src;
1605                    } else {
1606                        document.getElementById("albumCover").src = data.artistImage;
1607                    }
1608
1609                })
1610                .catch(error => {
1611                    console.error('Error fetching now playing:', error);
1612                });
1613        }
1614
1615        if (document.getElementById("now-playing-widget") !== null) {
1616            // Αρχικό κάλεσμα
1617            fetchNowPlaying();
1618            // Κάλεσμα κάθε 20 δευτερόλεπτα
1619            setInterval(fetchNowPlaying, 20000);
1620        }
1621    </script>
1621
1622
1623
1624    
1624<script async src="https://static.adman.gr/adman.js"></script>
1624
1625    
1625<script>window.AdmanQueue = window.AdmanQueue || []; AdmanQueue.push(function () { Adman.adunit({ id: 5836, h: 'https://x.grxchange.gr', inline: true }) });</script>
1625.
1626
1627
1628</body>
1629</html>

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.