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> </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 & 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.