PageSourceSearch

https://www.ecr.co.za/listen-live/

html ecr.co.za collected 2026-10-01 10:32:30 UTC 26,957 bytes, 849 lines download raw bytes

1
2
3
4
5
6
7<!DOCTYPE html>
8<!--[if IE 8]>
9<html class="no-js lt-ie9"> <![endif]-->
10<!--[if gt IE 8]><!-->
11<html class="no-js"> <!--<![endif]-->
12<head itemscope itemtype="http://schema.org/WebSite">
13  
13<script>
14
15    !function (f, b, e, v, n, t, s) {
16      if (f.fbq) return;
17      n = f.fbq = function () {
18        n.callMethod ?
19          n.callMethod.apply(n, arguments) : n.queue.push(arguments)
20      };
21      if (!f._fbq) f._fbq = n;
22      n.push = n;
23      n.loaded = !0;
24      n.version = '2.0';
25      n.queue = [];
26      t = b.createElement(e);
27      t.async = !0;
28      t.src = v;
29      s = b.getElementsByTagName(e)[0];
30      s.parentNode.insertBefore(t, s)
31    }(window, document, 'script',
32      'https://connect.facebook.net/en_US/fbevents.js');
33
34  let key = '1239771019520398';
35  fbq('init', key);
36  fbq('track', 'PageView');
37</script>
37
38<noscript><img height="1" width="1" style="display:none"
39               src="https://www.facebook.com/tr?id=1239771019520398&ev=PageView&noscript=1"
40/></noscript>
41
42  <meta charset="utf-8"/>
43  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
44  <title itemprop='name'>
45    We’ve got you covered 24/7 | Listen Live | East Coast Radio
46    </title>
47  
48
49  <link rel="canonical" href="https://www.ecr.co.za/listen-live/" itemprop="url">
50
51
52  <meta name="keywords" content="
53
54
55    ">
56  <meta name="description" content="
57
58
59    Got FOMO because you’re not in KZN? We’ve got you covered 24/7. Listen to our awesome music and amazing shows from wherever."/>
60
61  <meta name="viewport" content="width=device-width, initial-scale=1"/>
62
63  
64
65  <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 65-66
65
66<script async src="https://www.googletagmanager.com/gtag/js?id=
66G-M4391TSB60
vendor: 12 bytes, line 66
66"></script>
67<script>
68  
vendor: 144 bytes, lines 68-75
68window.dataLayer = window.dataLayer || [];
69
70  function gtag() {
71    dataLayer.push(arguments);
72  }
73
74  gtag('js', new Date());
75  gtag('config', '
75G-M4391TSB60
vendor: 4 bytes, line 75
75');
76</script>
76
77
78
79
80<!-- Google Tag Manager -->
81<script>
vendor: 327 bytes, lines 81-85
81(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
82new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
83j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
84'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
85})(window,document,'script','dataLayer','
85GTM-PBN8S6P
vendor: 3 bytes, line 85
85');
85</script>
85
86<!-- End Google Tag Manager -->
87
88
89  
89<script>
90    var googletag = googletag || {};
91    googletag.cmd = googletag.cmd || [];
92  </script>
92
93
94  
94<script async="async" src="https://www.googletagservices.com/tag/js/gpt.js"></script>
94
95
96  
97  
97<script type="application/ld+json">
98  {
99    "@context": "http://schema.org",
100    "@type": "Organization",
101    "url": "https://www.ecr.co.za/",
102    "logo": "https://turntable.kagiso.io/core/images/ecr/logo_md_2017.svg",
103    "sameAs": [
104      "https://www.facebook.com/eastcoastradio",
105      "https://www.instagram.com/eastcoastradio/",
106      "https://twitter.com/Ecr9495",
107      "https://www.youtube.com/user/ecronair"
108    ],
109    "contactPoint": [{
110      "@type": "ContactPoint",
111      "telephone": "+27 31 570 9495",
112      "contactType": "customer service"
113    }]
114  }
115</script>
115
116
117
118
119  
120
121
122<meta property="og:locale" content="en_GB"/>
123<meta property="og:type" content="website"/>
124<meta property="og:title" content="We’ve got you covered 24/7 | Listen Live | East Coast Radio"/>
125<meta property="og:description" content="Got FOMO because you’re not in KZN? We’ve got you covered 24/7. Listen to our awesome music and amazing shows from wherever."/>
126<meta property="og:url" content="https://m.ecr.co.za/listen-live/"/>
127<meta property="og:site_name" content="ECR"/>
128
129    
130  <meta property="og:image" content=""/>
131
132
133
134
135  <meta property="fb:app_id" content="669961536436763" />
136
137
138  
139    
139<script>!function (s, e, t, r) {
140      var a = e.createElement("script");
141      a.async = !0;
142      a.src = "https://app.masslytics.io/masslytics.js";
143      var c = e.getElementsByTagName("script")[0];
144      c.parentNode.insertBefore(a, c);
145      s.masslyticsApiSubdomain = "app";
146      s.masslyticsBrandId = "ML-231622";
147    }(window, document);</script>
147
148  
149
150  
151    <link rel="stylesheet" type="text/css" href="https://turntable.kagiso.io/core/css/main-ecr.css">
152  
153
154  
155  
156
157
158  
159    <link rel="apple-touch-icon" sizes="152x152" href="https://turntable.kagiso.io/core/images/ecr/apple-touch-icon.png">
160  
161  
162    <link rel="shortcut icon" href="https://turntable.kagiso.io/core/images/ecr/favicon.ico">
163  
164
165  <link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,700" type="text/css">
166  <link rel="stylesheet" href="https://turntable.kagiso.io/core/vendor/owlCarousel/dist/assets/owl.carousel.min.css" type="text/css">
167
168  
168<script>
vendor: 115 bytes, lines 168-171
168
169  (function(h,o,t,j,a,r){
170    h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
171    h._hjSettings={hjid:
171329868
vendor: 239 bytes, lines 171-177
171,hjsv:5
172    };
173    a=o.getElementsByTagName('head')[0];
174    r=o.createElement('script');r.async=1;
175    r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
176    a.appendChild(r);
177  })(window,document,'//static.hotjar.com/c/hotjar-','.js?sv=');
178</script>
178
179
180  
180<script async="async" src="https://www.googletagservices.com/tag/js/gpt.js"></script>
180
181
182  
183  
184
185</head>
186
187<body class="template-listen-live">
188
189
190  <!-- Google Tag Manager (noscript) -->
vendor: 75 bytes, lines 190-192
190
191  <noscript>
192    <iframe src="https://www.googletagmanager.com/ns.html?id=
192GTM-PBN8S6P
vendor: 100 bytes, lines 192-195
192"
193            height="0" width="0" style="display:none;visibility:hidden"></iframe>
194  </noscript>
195  
195<!-- End Google Tag Manager (noscript) -->
196
197
198
199
200<div class="spinner-container">
201  <div class="lds-ripple">
202    <div></div>
203    <div></div>
204  </div>
205</div>
206
207
208
209
210<main class="main" role="main">
211  
212
213  
214  
215    <div class="listen-live-header">
216      <a href="/" class="header--logo"></a>
217    </div>
218  
219  <section class="timeline-section-secondary">
220    
221      
222        
223
224<div class="timeline">
225  <div class="timeline-current">
226    <article class="timeline-card type-song size-lg ">
227      <div class="timeline-card--corner"></div>
228      <div class="timeline-card--icon">
229        <span class="icon-"></span>
230      </div>
231      <figure class="timeline-card--figure">
232        <div class="timeline-card--overlay">
233          <div class="cta-container">
234            <h4 class="call-to-action">Click here to play</h4>
235            <div class="play-icon"><img src="https://turntable.kagiso.io/core/images/icons/icon_timeline_overlay_playbtn.svg" alt="">
236          </div>
237          </div>
238        </div>
239        <div class="timeline-card--figure--img"></div>
240        <ul class="timeline-card--actions">
241          <li>
242            <button href="#" class="timeline-card--action-like is-active"><span class="icon-like"></span></button>
243          </li>
244          <li>
245            <button href="#" class="timeline-card--action-dislike is-active"><span class="icon-dislike"></span></button>
246          </li>
247          <li>&nbsp;</li>
248          <li style="position: absolute; right: 0">
249            <button class="is-active timeline-card--action-audio_quality dropdown-toggle" type="button" data-toggle="dropdown"><span>
250              <svg viewBox="0 0 39 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd"
251                                                                                            clip-rule="evenodd"
252                                                                                            d="M34.318 21.96c.08-.64.14-1.28.14-1.96 0-.68-.06-1.32-.14-1.96l4.22-3.3c.38-.3.48-.84.24-1.28l-4-6.92c-.24-.44-.78-.6-1.22-.44l-4.98 2c-1.04-.8-2.16-1.46-3.38-1.96l-.76-5.3a.975.975 0 0 0-.98-.84h-8c-.5 0-.92.36-.98.84l-.76 5.3c-1.22.5-2.34 1.18-3.38 1.96l-4.98-2c-.46-.18-.98 0-1.22.44l-4 6.92c-.26.44-.14.98.24 1.28l4.22 3.3c-.08.64-.14 1.3-.14 1.96 0 .66.06 1.32.14 1.96l-4.22 3.3c-.38.3-.48.84-.24 1.28l4 6.92c.24.44.78.6 1.22.44l4.98-2c1.04.8 2.16 1.46 3.38 1.96l.76 5.3c.06.48.48.84.98.84h8c.5 0 .92-.36.98-.84l.76-5.3c1.22-.5 2.34-1.18 3.38-1.96l4.98 2c.46.18.98 0 1.22-.44l4-6.92c.24-.44.14-.98-.24-1.28l-4.22-3.3zM19.458 27c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7z"
253                                                                                            fill="currentColor"></path></svg>
254            </span></button>
255            <ul class="dropdown-menu stream-quality-control">
256              <li><small><b>Stream Quality</b></small></li>
257              <li class="stream-level-button low"><small><a href="#" onClick="window.playerInstance.setQualityLevel('low')">low</a></small></li>
258              <li class="stream-level-button high"><small><a href="#" onClick="window.playerInstance.setQualityLevel('high')">high</a></small></li>
259            </ul>
260          </li>
261        </ul>
262      </figure>
263      <div class="timeline-card--text">
264        <h5 class="timeline-card--subtitle"></h5>
265        <h4 class="timeline-card--title"></h4>
266        <div class="timeline-card--equalizer">
267          <svg xmlns="http://www.w3.org/2000/svg" class="equalizer--svg" viewBox="0 0 220 20">
268            <g>
269              <!-- <title>Audio Equilizer</title> -->
270              <rect class="bar" x="0" y="0"></rect>
271              <rect class="bar" x="12" y="0"></rect>
272              <rect class="bar" x="24" y="0"></rect>
273              <rect class="bar" x="36" y="0"></rect>
274              <rect class="bar" x="48" y="0"></rect>
275              <rect class="bar" x="60" y="0"></rect>
276              <rect class="bar" x="72" y="0"></rect>
277              <rect class="bar" x="84" y="0"></rect>
278              <rect class="bar" x="96" y="0"></rect>
279              <rect class="bar" x="108" y="0"></rect>
280              <rect class="bar" x="120" y="0"></rect>
281              <rect class="bar" x="132" y="0"></rect>
282              <rect class="bar" x="144" y="0"></rect>
283              <rect class="bar" x="156" y="0"></rect>
284              <rect class="bar" x="168" y="0"></rect>
285              <rect class="bar" x="180" y="0"></rect>
286              <rect class="bar" x="192" y="0"></rect>
287              <rect class="bar" x="204" y="0"></rect>
288              <rect class="bar" x="216" y="0"></rect>
289            </g>
290          </svg>
291        </div>
292      </div>
293      <div class="timeline-player-container">
294        <div class="timeline-player-inner row">
295          <div class="col-md-5 col-sm-6 col-xs-6 player-buttons ">
296            <button id="toggle-play" class="timeline-player-button"
297                    type="button">
298
299
300<?xml version="1.0" encoding="iso-8859-1"?>
301<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
302
303  <span class="timeline-player-icons play-icon">
304    <svg
305      xmlns="http://www.w3.org/2000/svg"
306      xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px"
307      y="0px" width="22px" height="22px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;"
308      xml:space="preserve">
309<g>
310	<g id="play-circle-outline">
311		<path class="svg-path"
312          d="M204,369.75L357,255L204,140.25V369.75z M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255    S395.25,0,255,0z M255,459c-112.2,0-204-91.8-204-204S142.8,51,255,51s204,91.8,204,204S367.2,459,255,459z"
313          fill="#FFFFFF"/>
314	</g>
315</g>
316    <g>
317</g>
318    <g>
319</g>
320    <g>
321</g>
322    <g>
323</g>
324    <g>
325</g>
326    <g>
327</g>
328    <g>
329</g>
330    <g>
331</g>
332    <g>
333</g>
334    <g>
335</g>
336    <g>
337</g>
338    <g>
339</g>
340    <g>
341</g>
342    <g>
343</g>
344    <g>
345</g>
346</svg>
347  </span>
348
349  <span class="timeline-player-icons pause-icon hidden">
350    <svg version="1.1" id="Capa_1"
351         xmlns="http://www.w3.org/2000/svg"
352         xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
353         y="0px"
354         width="22px" height="22px" viewBox="0 0 510 510" style="enable-background:new 0 0 510 510;"
355         xml:space="preserve">
356<g>
357	<g id="pause-circle-outline">
358		<path class="svg-path" d="M178.5,357h51V153h-51V357z M255,0C114.75,0,0,114.75,0,255s114.75,255,255,255s255-114.75,255-255S395.25,0,255,0z
359			 M255,459c-112.2,0-204-91.8-204-204S142.8,51,255,51s204,91.8,204,204S367.2,459,255,459z M280.5,357h51V153h-51V357z"/>
360	</g>
361</g>
362    <g>
363</g>
364    <g>
365</g>
366    <g>
367</g>
368    <g>
369</g>
370    <g>
371</g>
372    <g>
373</g>
374    <g>
375</g>
376    <g>
377</g>
378    <g>
379</g>
380    <g>
381</g>
382    <g>
383</g>
384    <g>
385</g>
386    <g>
387</g>
388    <g>
389</g>
390    <g>
391</g>
392</svg>
393  </span>
394
395
396
397
398</button>
399            <button id="toggle-mute" class="timeline-player-button"
400                    type="button">
401
402
403
404
405  <span class="timeline-player-icons volume-icon">
406    <svg version="1.1" id="Capa_1"
407         xmlns="http://www.w3.org/2000/svg"
408         xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
409         y="0px"
410         width="22px" height="22px" viewBox="0 0 459 459" style="enable-background:new 0 0 459 459;"
411         xml:space="preserve">
412<g>
413	<g id="volume-up">
414		<path class="svg-path" d="M0,153v153h102l127.5,127.5v-408L102,153H0z M344.25,229.5c0-45.9-25.5-84.15-63.75-102v204
415			C318.75,313.65,344.25,275.4,344.25,229.5z M280.5,5.1v53.55C354.45,81.6,408,147.899,408,229.5S354.45,377.4,280.5,400.35V453.9
416			C382.5,430.949,459,339.15,459,229.5C459,119.85,382.5,28.049,280.5,5.1z"/>
417	</g>
418</g>
419    <g>
420</g>
421    <g>
422</g>
423    <g>
424</g>
425    <g>
426</g>
427    <g>
428</g>
429    <g>
430</g>
431    <g>
432</g>
433    <g>
434</g>
435    <g>
436</g>
437    <g>
438</g>
439    <g>
440</g>
441    <g>
442</g>
443    <g>
444</g>
445    <g>
446</g>
447    <g>
448</g>
449</svg>
450  </span>
451
452  <span class="timeline-player-icons mute-icon hidden">
453  <svg version="1.1" id="Capa_1"
454       xmlns="http://www.w3.org/2000/svg"
455       xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
456       y="0px"
457       width="22px" height="22px" viewBox="0 0 461.55 461.55" style="enable-background:new 0 0 461.55 461.55;"
458       xml:space="preserve">
459<g>
460	<g id="volume-off">
461		<path class="svg-path" d="M345.525,229.5c0-45.9-25.5-84.15-63.75-102v56.1l63.75,63.75C345.525,239.7,345.525,234.6,345.525,229.5z M409.275,229.5
462			c0,22.95-5.1,45.9-12.75,66.3l38.25,38.25c17.85-30.6,25.5-68.85,25.5-107.1c0-109.65-76.5-201.45-178.5-224.4V56.1
463			C355.725,81.6,409.275,147.9,409.275,229.5z M34.425,0L1.275,33.15L121.125,153H1.275v153h102l127.5,127.5V262.65L340.425,372.3
464			c-17.851,12.75-35.7,22.95-58.65,30.601v53.55c35.7-7.65,66.3-22.95,94.35-45.9l51,51l33.15-33.149l-229.5-229.5L34.425,0z
465			 M230.775,25.5l-53.55,53.55l53.55,53.55V25.5z"/>
466	</g>
467</g>
468    <g>
469</g>
470    <g>
471</g>
472    <g>
473</g>
474    <g>
475</g>
476    <g>
477</g>
478    <g>
479</g>
480    <g>
481</g>
482    <g>
483</g>
484    <g>
485</g>
486    <g>
487</g>
488    <g>
489</g>
490    <g>
491</g>
492    <g>
493</g>
494    <g>
495</g>
496    <g>
497</g>
498</svg>
499</span>
500
501
502</button>
503            <div class="slidecontainer ">
504              <input type="range" min="0" max="1" step="0.01" value="
5040.1" class="slider" id="toggle-volume">
505            </div>
506          </div>
507          <span class="col-md-7 col-sm-6 col-xs-6 player-status "
508                id="player-status"></span>
509        </div>
510      </div>
511    </article>
512  </div>
513
514  <div class="timeline-right">
515    <div class="timeline-cards--fadeout"></div>
516
517    <div class="timeline-show" style="" >
518
519        
520          <div class="timeline-show--current">
521            <figure class="timeline-show--current--figure">
522              <div class="timeline-show--current--icon-live">
523                <img src="https://turntable.kagiso.io/core/images/icon_live_inner.svg" alt="current show icon"
524                     class="icon-live--inner">
525                <img src="https://turntable.kagiso.io/core/images/icon_live_outer.svg" alt="current show icon"
526                     class="icon-live--outer">
527              </div>
528              <a href="/shows/danny-tee/" class="timeline-show--now--image">
529                  <img alt="July2024_Danny_ShowImage914x627-min.png" height="50" src="https://turntable.kagiso.io/images/July2024_Danny_ShowImage914x627-min.2e16d0ba.fill-50x50.png" width="50">
530              </a>
531            </figure>
532            <a href="/shows/danny-tee/">
533              <h5 class="timeline-show--current--title">Danny Guselli</h5>
534            </a>
535            <span>Now</span> <span class="timeline-show--current--time"></span>
536          </div>
537        
538
539        
540          <div class="timeline-show--right">
541            <div class="timeline-show--countdown">
542              <!-- Todo: Populate countdown -->
543              <!--<strong>27</strong>m <strong>05</strong>s<br>-->
544              NEXT SHOW:
545            </div>
546
547            <div class="timeline-show--next ">
548              <figure class="timeline-show--next--figure">
549                <a href="/shows/stacey-jsbu/" class="timeline-show--next--image">
550                    <img alt="July2024_Drive_ShowImage914x627-min.png" height="60" src="https://turntable.kagiso.io/images/July2024_Drive_ShowImage914x627-min.2e16d0ba.fill-72x60.png" width="72">
551                </a>
552              </figure>
553              <a href="/shows/stacey-jsbu/">
554                <h6 class="timeline-show--next--title">Stacey &amp; J Sbu</h6>
555              </a>
556              <span class="icon-clock" style="color:  #000 "></span>
557              <span class="timeline-show--next--time">
558            </span>
559            </div>
560          </div>
561          <br>
562        
563
564    </div>
565    <div class="timeline-cards ">
566      <div class="timeline-cards--inner">
567        <div class="timeline-ad-slot"></div>
568      </div>
569    </div>
570  </div>
571</div>
572
573
574      
575      </div>
576    
577    <div class="timeline-bottom-adunit-container" align="center">
578      <div class="DisplayZone-970x250">
579        
580      </div>
581      <div class="DisplayZone"></div>
582      <div class="DisplayZone-250x100"></div>
583    </div>
584  </section>
585
586  
587
588
589    <!-- Todo: remove this once PR is merged in django_auth -->
590</main>
591
592 
593 
594
595
596
597<!-- Todo: Insert correct crouton per site -->
598
599
600<script type="text/javascript">
601  window.swfPath = "https://turntable.kagiso.io/core/swf/";
602  window.streamURL = "https://live.ecr.co.za/ecrhigh.mp3";
603  window.siteName = "ecr";
604  window.parentRef = this;
605  window.page_id = "15333";
606</script>
606
607
608
609<script charset="utf-8" src="https://cdn.pinpoll.com/global.js" async></script>
vendor: 1 bytes, line 609
609
610<script src="https://cdn.pinpoll.com/sdk.js" async></script>
vendor: 66 bytes, lines 610-612
610
611<script src="https://www.google.com/recaptcha/api.js"></script>
612
613<script charset="utf-8" src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
vendor: 1 bytes, line 613
613
614<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
vendor: 1 bytes, line 614
614
615<script charset="utf-8" src="https://hammerjs.github.io/dist/hammer.js"></script>
615
616
617<script>window.jQuery || document.write('
617<script charset="utf-8" src="https://turntable.kagiso.io/core/vendor/jquery/jquery-2.2.0.min.js"><\/script>')</script>
vendor: 1 bytes, line 617
617
618<script charset="utf-8" src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
vendor: 1 bytes, line 618
618
619<script charset="utf-8" src="//unpkg.com/[email protected]/dist/in-view.min.js"></script>
619
620
621<!-- AdsWizz scripts -->
622<script charset="utf-8" src="//synchrobox.adswizz.com/register2.php"></script>
vendor: 1 bytes, line 622
622
623<script charset="utf-8" src="//cdn.adswizz.com/adswizz/js/SynchroClient2.js"></script>
623
624
625<!-- IONOfm scripts -->
626<script defer charset="utf-8" src="//p2.iono.fm/bundle/0.13.1/player.js"></script>
626
627
628
629  <!-- Facebook Pixel Code -->
630  
630<script>
vendor: 420 bytes, lines 630-637
630
631    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
632    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
633    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
634    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
635    document,'script','https://connect.facebook.net/en_US/fbevents.js');
636
637    fbq('init', '
6371590266744622825
vendor: 36 bytes, lines 637-639
637');
638    fbq('track', "PageView");
639  
639</script>
639
640  <noscript>
641    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1590266744622825&ev=PageView&noscript=1"
642  />
643  </noscript>
644  <!-- End Facebook Pixel Code -->
645
646
647
648
649  
649<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.2/socket.io.min.js"></script>
649
650
651
652<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/isotope/isotope.pkgd.min.js"></script>
vendor: 1 bytes, line 652
652
653<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/isotope/isotope.horiz.js"></script>
vendor: 1 bytes, line 653
653
654<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/isotope/imagesloaded.pkgd.min.js"></script>
vendor: 1 bytes, line 654
654
655<script type="text/javascript" src="https://turntable.kagiso.io/core/js/iframeResizer.min.js"></script>
vendor: 1 bytes, line 655
655
656<script src="https://turntable.kagiso.io/core/vendor/smartbanner/jquery.smartbanner.js"></script>
vendor: 1 bytes, line 656
656
657<script type="text/javascript" src="https://turntable.kagiso.io/core/js/dfp.js"></script>
vendor: 1 bytes, line 657
657
658<script type="text/javascript" src="https://turntable.kagiso.io/core/vendor/jwplayer/jwplayer.js"></script>
vendor: 1 bytes, line 658
658
659<script type="text/javascript" src="https://turntable.kagiso.io/core/js/main.js"></script>
vendor: 1 bytes, line 659
659
660<script type="text/javascript" src="https://turntable.kagiso.io/core/js/shop_results.js"></script>
vendor: 1 bytes, line 660
660
661<script type="text/javascript" src="https://turntable.kagiso.io/core/js/takeover_popup.js"></script>
vendor: 1 bytes, line 661
661
662<script type="text/javascript" src="https://turntable.kagiso.io/core/js/sportslocker.js"></script>
662
663
664
665<!-- 
665<script type="text/javascript" src="https://turntable.kagiso.io/core/js/main.es5.js"></script>
665     -->
666
667  
667<script>
668    window.listen_live_popup = true;
669    
670  </script>
670
671  
671<script type="text/javascript" src="https://turntable.kagiso.io/core/js/timeline_iono.js"></script>
671
672
673
674<script>
675  window.isFacebookLogin = false;
676
677  window.fbAsyncInit = function () {
678    FB.init({
679      appId: 669961536436763,
680      xfbml: true,
681      version: 'v3.2'
682    });
683    FB.AppEvents.logPageView();
684
685    FB.getLoginStatus(function (response) {
686      if (response.status === 'connected') {
687        window.isFacebookLogin = true;
688        $('#leaderboard-fb-logout').css('display', 'block');
689      } else {
690        const isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&
691          navigator.userAgent &&
692          navigator.userAgent.indexOf('CriOS') === -1 &&
693          navigator.userAgent.indexOf('FxiOS') === -1;
694
695        
696      }
697    });
698  };
699
700  (function (d, s, id) {
701    var js, fjs = d.getElementsByTagName(s)[0];
702    if (d.getElementById(id)) {
703      return;
704    }
705    js = d.createElement(s);
706    js.id = id;
707    js.src = "https://connect.facebook.net/en_US/sdk.js";
708    fjs.parentNode.insertBefore(js, fjs);
709  }(document, 'script', 'facebook-jssdk'));
710</script>
710
711
712<script>
713  /**
714   * Fetch the latest daily weather icon from rainboo and append it to weather menu item.
715   */
716  $(document).ready(function () {
717
718    let weatherIconTemplate = "<img src='{icon_url}' alt='weather_icon.png' class='weather_icon'/>"
719    let weather_icon_url = '';
720    let el = $('.weather_page_menu_item');
721    let stations = {
722      'jacaranda': 'https://api.rainboo.co.za/api/weather/forecast/ke7fy/8',
723      'ecr': 'https://api.rainboo.co.za/api/weather/forecast/kdwn4/8'
724    };
725
726    $.get(stations[window.siteName], function (data) {
727
728      let item = data.weatherResults[0];
729
730      var nightcode = item.isdaylight ? "" : "N";
731
732      weather_icon_url = 'https://www.rainboo.co.za/images/icons/weather/' + item.pictocode + nightcode + '.png';
733
734      weatherIconTemplate = weatherIconTemplate.replace('{icon_url}', weather_icon_url);
735
736      sessionStorage.setItem('weather_icon', weather_icon_url);
737      // Only show on desktop
738      if (window.innerWidth > 1024) { // Adjust breakpoint as needed
739        el.addClass('weather_button');
740        el.prepend(weatherIconTemplate);
741      }
742    })
743
744  })
745</script>
745
746
747<script>
748  $(document).ready(function () {
749    $('input[name=query]').on('input', function () {
750      $('input[name=query]').prop('value', this.value)
751    });
752  });
753</script>
753
754
755<script src="https://cdn.pinpoll.com/sdk.js" async></script>
vendor: 1 bytes, line 755
755
756<script>
757      $('.pinpoll-frame iframe').ready(() => {
758          $('.close-pinpoll-button, .pinpoll-frame').css('display', 'block');
759      });
760
761     window.addEventListener('load', async function() {
762      const searchParamHid = 'hid';
763      const searchParamReferer = 'referer';
764      const searchReferer = 'colony';
765
766      // polyfill for URLSearchParams (needed for IE 11)
767      window.URLSearchParams = window.URLSearchParams || function(searchString) {
768        var self = this;
769        self.searchString = searchString;
770        self.get = function(name) {
771          var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(self.searchString);
772          if (results == null) {
773            return null;
774          } else {
775            return decodeURI(results[1]) || 0;
776          }
777        };
778      }
779      const urlParams = new URLSearchParams(window.location.search);
780      const hashedUserId = urlParams.get(searchParamHid);
781      const referer = urlParams.get(searchParamReferer);
782      const sdk = new PinpollSdk();
783
784      if (hashedUserId && referer === searchReferer) {
785        const attributes = {
786          userId: hashedUserId,
787        };
788        sdk.setAttributes(attributes);
789        const sleep = (milliseconds) => new Promise(resolve => setTimeout(resolve, milliseconds))
790        let visitorFound = false;
791        let tryCount = 0;
792        const maxTries = 5;
793        const sleepTime = 200; // ms
794
795        // check if visitor cookie is present
796            do {
797          tryCount = tryCount + 1;
798          const response = await sdk.getAudiences();
799          // In case response object is not empty, we found a visitor
800          if (! (Object.keys(response).length === 0)) {
801            visitorFound = true;
802          }
803            // otherwise sleep for 200 ms and try it again for 5 times
804          await sleep(sleepTime);
805        } while (!visitorFound && tryCount < 5)
806
807        // send data only in case visitor was found
808        if (visitorFound) {
809            sdk.sendData();
810        }
811      }
812    });
813</script>
813
814
815<script>
816  /**
817   * Terminate answered polls on visited pages.
818   */
819  (($)=>{
820    $(document).ready(() => {
821      const pinpollData = JSON.parse(localStorage.getItem('my_allVisitorVotes'));
822      if (pinpollData !== null && typeof pinpollData === 'object') {
823        pinpollData.map((item) => item.poll_id).forEach((id) => {
824        $(`#${id}`).remove();
825        console.info(`#pinpoll-id-${id} answered and removed from DOM`);
826      });
827      }
828    })
829  })(jQuery);
830
831  function hideFrame(frameId, self){
832    var frame = document.getElementById(frameId);
833    frame.classList.toggle('hidden');
834    $(self).toggleClass('closed');
835    $('.pinpoll-frame').toggleClass('close-parent');
836
837    let pollData = JSON.parse(localStorage.getItem('my_allVisitorVotes'));
838    if(pollData !== null){
839      pollData.push(JSON.stringify({"poll_id": frameId, "answer_id":0,"question_id":0}));
840    } else {
841      pollData = JSON.stringify([{"poll_id": frameId, "answer_id":0,"question_id":0}]);
842    }
843    localStorage.setItem('my_allVisitorVotes', pollData)
844  }
845</script>
845
846
847<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"42b913acc8304d2f9204361bdaf99ce5","r":1,"spa":2}' crossorigin="anonymous"></script>
847
848</body>
849</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.