CINXE.COM

‘My Friend An Delie’: Tokyo Review | Reviews | Screen

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="preload" as="style" href="/Magazine/core.css?p=7513768137537033"> <link rel="preload" as="script" href="/Magazine/core.js?p=7513768137537033"> <link rel="preload" as="image" href="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/4/9/1/1435491_myfriendandelie_172240.jpg" imagesrcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/4/9/1/1435491_myfriendandelie_172240.jpg 480w,https://d1nslcd7m2225b.cloudfront.net/Pictures/600xany/4/9/1/1435491_myfriendandelie_172240.jpg 600w,https://d1nslcd7m2225b.cloudfront.net/Pictures/780xany/4/9/1/1435491_myfriendandelie_172240.jpg 780w" imagesizes="(max-width: 1023px) 100vw, 780px" /> <!-- OneTrust Cookies Consent Notice start for Screen Daily | Film News, Film Reviews, Film Festivals and Awards --> <script src="https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="9135b9e3-8796-4495-a4a1-5fd2085b2b56" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- OneTrust Cookies Consent Notice end for Screen Daily | Film News, Film Reviews, Film Festivals and Awards --> <title>‘My Friend An Delie’: Tokyo Review | Reviews | Screen</title> <meta name="description" content="Chinese actor Dong Zijian makes his directorial debut with this significant drama" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2024-11-27 18:57:27.495"/> <meta name="momentlocale" content="en-gb"/> <meta name="momentlocaleformat" content="D MMMM YYYY"/> <meta name="momentrelative" content="false"/> <meta name="momentrelativeformat" content="YYYY,MM,DD"/> <meta name="momentrelativemorethan" content="10"/> <meta name="pubdate" content="Tue, 29 Oct 2024 16:19 GMT" /> <link rel="canonical" href="https://www.screendaily.com/reviews/my-friend-an-delie-tokyo-review/5198629.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="27" /> <meta name="primarynavigation" content="Reviews" /> <meta property="og:title" content="‘My Friend An Delie’: Tokyo Review" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.screendaily.com/reviews/my-friend-an-delie-tokyo-review/5198629.article" /> <meta property="og:site_name" content="Screen" /> <meta property="og:description" content="Chinese actor Dong Zijian makes his directorial debut with this significant drama" /> <meta property="og:image:width" content="1024" /> <meta property="og:image:height" content="536" /> <meta property="og:image" content="https://d1nslcd7m2225b.cloudfront.net/Pictures/1024x536/4/9/1/1435491_myfriendandelie_172240.jpg" /> <meta property="og:image:alt" content="My Friend An Delie" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="‘My Friend An Delie’: Tokyo Review" /> <meta property="twitter:description" content="Chinese actor Dong Zijian makes his directorial debut with this significant drama" /> <meta property="twitter:image:src" content="https://d1nslcd7m2225b.cloudfront.net/Pictures/1120xAny/4/9/1/1435491_myfriendandelie_172240.jpg" /> <meta property="twitter:image:alt" content="My Friend An Delie" /> <link rel="icon" href="/magazine/dest/graphics/favicons/favicon-32x32.png" /> <!--[if IE]><link rel="shortcut icon" href="/magazine/dest/graphics/favicons/favicon.ico" /><![endif]--> <link rel="apple-touch-icon-precomposed" href="/magazine/dest/graphics/favicons/apple-touch-icon-precomposed.png" /> <meta name="msapplication-TileImage" content="/magazine/dest/graphics/favicons/mstile-144x144.png" /> <meta name="msapplication-TileColor" content="#ffffff" /> <link href="/Magazine/core.css?p=7513768137537033" rel="stylesheet" type="text/css"> <link href="/Magazine/print.css?p=7513768137537033" rel="stylesheet" type="text/css" media="print"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script>var newLang={"more":{"default":"Show more","searchtype":"Show more","searchdates":"Show more"},"less":{"default":"Show fewer","searchtype":"Show fewer","searchdates":"Show fewer"},"show":{"default":"show"},"hide":{"default":"hide"},"caption":{"show":"show caption","hide":"hide caption"},"carousel":{"play":"play slideshow","pause":"pause slideshow"}};</script> <script type="text/javascript"> var IPState = { useripstate: false, useripname: '' }; </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'StoryID':'5198629'}); window.dataLayer.push({'StoryFormatProperty':'N'}); window.dataLayer.push({'StoryCategories':'|Festivals|Asia|China|Reviews|Reviews|Tokyo|Reviews homepage|'}); window.dataLayer.push({'StoryLayout':'Standard'}); window.dataLayer.push({'StoryWidth':'standard width'}); window.dataLayer.push({'StoryLayoutCode':'1'}); window.dataLayer.push({'StoryFormatCode':'1101'}); window.dataLayer.push({'StoryTypeCode':'2'}); window.dataLayer.push({'StoryCategoriesCodes':'|9|34|53|11068|11895|11908|12632|'}); window.dataLayer.push({'StoryFullNavPath':'|1|27|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'27'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'5198'}); window.dataLayer.push({'NavigationAreaNavCode':'27'}); </script> <script type="text/javascript"> window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); window.dataLayer.push({'AccessProductCode':'SDMA'}); window.dataLayer.push({'AccessProductName':'Screen Daily Metered access'}); window.dataLayer.push({'AccessCount':'1'}); </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'LoggedIn':'False'}); window.dataLayer.push({'AuthorName':'|Wendy Ide|'}); window.dataLayer.push({'ContentAccessStatus':'Granted'}); window.dataLayer.push({'StoryType':'Reviews'}); window.dataLayer.push({'UserStateLoggedIn':'False'}); window.dataLayer.push({'FullNavPath':'|1|27|'}); </script> <link href="https://fonts.googleapis.com/css?family=Fira+Sans:700|Open+Sans:400,700,800" rel="stylesheet"> <style type="text/css"> .leaderboard .ad { padding: 24px 0; text-align:center; } #wrapper_sleeve { background-color:#ffffff; } .wallpaper-applied header#masthead + .ad { padding:24px 0; text-align:center; } @media only screen and (max-width: 768px) { .mob-ad-75 { min-height:75px; } .wallpaper-applied header#masthead + .ad { width:360px !important; padding:24px 0; text-align:center; } } /* .billboard { position: relative; width:100%; margin:auto; } @media only screen and (min-width: 768px) { .billboard { width:100%; margin:auto; } } .billboard .sleeve { margin: auto; padding: 24px; text-align: center } .billboard.no-styles { background-color: transparent; border: 0 } .billboard.no-styles .sleeve>div { padding: 0 } .billboard .notice { display: none; margin-bottom: -10px; padding-top: 12px } */ @media screen and (max-width: 767px){ .mob-ad-75 { min-height: 75px; } } /* CLS with wallpaper - fix site width */ #wrapper_sleeve { position: relative; max-width: 1024px; margin: 0 auto; background-color: #fff; } body#story.story-style-2 #wrapper_sleeve, body#story.story-style-4 #wrapper_sleeve, body#story.story-style-5 #wrapper_sleeve, body#story.story-style-6 #wrapper_sleeve, body#story.story-style-7 #wrapper_sleeve{ max-width:unset; } .footer { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:auto; margin: 0 auto; } .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:auto; margin: 0 auto; } .footer .container .inner-sleeve { max-width: 1220px; } #wrapper_sleeve>:first-child { padding-top: 31px; background-color: #fff; } .accessContainer>.container:first-child .inner-sleeve { padding-top: 60px; } @media only screen and (max-width: 768px) { .accessContainer .storyPreview .access-denied-index-img.picture img{ width:100px; } } @media screen and (min-width: 1024px){ /*.hero-spin{ width:100%; margin-left: -50%; margin-right: -50%; } .grid .hero-carousel .swiper-box, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.site-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.site-width-background{ width:100%; margin-left: calc(-50% + 50%); } */ body#story.story-style-1 .contentWrapper{ width: auto; padding-right: 7%; } body#story.story-style-2 .contentWrapper, body#story.story-style-4 .contentWrapper, body#story.story-style-5 .contentWrapper, body#story.story-style-6 .contentWrapper, body#story.story-style-7 .contentWrapper { width: 107%; padding-right: 7%; } } @media screen and (min-width: 1180px){ /*.grid .hero-carousel .swiper-box{ width:100%; margin-left: -50%; margin-right: -50%; } } */ .wallpaper-applied.site-width-1024 #mainnav > .inner-sleeve { max-width: 1220px; } .wallpaper-applied.site-width-1024 .mast > .inner-sleeve { max-width: 1220px; } .wallpaper-applied.site-width-1024 .footer .inner-sleeve { max-width: 1220px; } .wallpaper-applied.site-width-1024 .ad-style1, .wallpaper-applied.site-width-1024 .container .inner-sleeve { max-width: 1220px; } /* end - CLS with wallpaper - fix site width */ .wallpaper-applied #wrapper_sleeve > :first-child { padding-top:0px !important; } .wallpaper-applied #wrapper_sleeve > .container:first-child > .inner-sleeve, .wallpaper-applied #wrapper_sleeve > div:empty + div .inner-sleeve { padding-top: 10px !important; } .sponsored-link-text { font-size: .889rem !important } .sponsored-link-text a:hover { color:#a81c22; text-decoration:underline } </style> <!-- Start Temp Fix MBICS-652 --> <style> .contactList ul li { border-bottom: 0 solid #bebebe; / } </style> <!-- End Temp Fix MBICS-652 --> <style> /* TEMP FIX PWVD-819*/ @media screen and (max-width:1023px) { .enhanced-advertising #rightcolumn_sleeve { display:block; } #story.enhanced-advertising #rightcolumn_sleeve { display: none; } } </style> <style> .ad-text{ background: #f0f2f2; font-size: 0.675rem; padding: 2px; color: #444; text-transform: uppercase; border-top: 4px solid #DCDCDC; } </style> <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script> <!--<script sync src="//www.googletagservices.com/tag/js/gpt.js"></script>--> <script type='text/javascript'> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; var node = document.getElementsByTagName('script')[0]; node.parentNode.insertBefore(gads, node); })(); </script> <script type='text/javascript'> function getDataLayerVal(keyVal) { for (var i = 0; i < window.dataLayer.length; i++) { if (dataLayer[i][keyVal] !== undefined) { return dataLayer[i][keyVal]; } } } //Testing for ad targetting - Story Tagging var storyCategories = getDataLayerVal('StoryCategories'); if (storyCategories != null) { //option 1, is to extract values from pipe delimited list var categories1 = storyCategories.substring(1, storyCategories.length - 1); //remove | from start and end categories1 = categories1.split('|'); //split at | if (categories1.length > 0) { console.log(categories1[0]); //access item in array } //option 2 is replace pipes with commas var categories2 = storyCategories.substring(1, storyCategories.length - 1); //remove | from start and end categories2 = categories2.replace(/\|/g, ','); //replace pipes with commas if (categories2.length > 0) { console.log(categories2); } } //end testing for ad targetting //Testing for ad targetting - user reg level var visitorType2 = getDataLayerVal('RegLevel'); if (visitorType2 != null) { //option 1, is to extract values from pipe delimited list var visitor1 = visitorType2.substring(1, visitorType2.length - 1); //remove | from start and end visitor1 = visitor1.split('|'); //split at | if (visitor1.length > 0) { console.log(visitor1[0]); //access item in array } //option 2 is replace pipes with commas var visitor2 = visitorType2.substring(1, visitorType2.length - 1); //remove | from start and end visitor2 = visitor2.replace(/\|/g, ','); //replace pipes with commas if (visitor2.length > 0) { console.log(visitor2); } } //end testing for ad targetting // Function to get URL parameter by name function getUrlParameter(name) { name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); var results = regex.exec(location.search); return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); } // Extract UTM parameters from URL var utmSource = getUrlParameter('utm_source'); var utmMedium = getUrlParameter('utm_medium'); var utmCampaign = getUrlParameter('utm_campaign'); var showwallpaper; if(document.querySelector('meta[name="showwallpaper"]')) { showwallpaper = document.querySelector('meta[name="showwallpaper"]').content; } googletag.cmd.push(function() { // Define a size mapping object. The first parameter to addSize is // a viewport size, while the second is a list of allowed ad sizes. var mapping = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [[300, 50],[300,75],[320,50], [300, 50]]). // 480, 0 addSize([480, 0], [300, 75]). // 768, 0 addSize([768, 0], [300, 250]). // 1024, 0 addSize([1024, 0], [300, 350]).build(); var mapMPUA = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300,250]). // 768, 0 addSize([768, 0], [300, 250]). // 1024, 0 addSize([1024, 0], [[300, 250]]).build(); //addSize([1024, 0], [[300, 250],[300,50]]).build(); var mapMPU = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [[300, 600], [300,250]]). // 768, 0 addSize([768, 0], [[300, 600], [300, 250]]). // 1024, 0 addSize([1024, 0], [[300, 250],[300,600]]).build(); //addSize([1024, 0], [[300, 250],[300,50]]).build(); var mapMPUSmall = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300,250]). // 768, 0 addSize([768, 0], [300, 250]). // 1024, 0 addSize([1024, 0], [300, 250]).build(); //addSize([1024, 0], [[300, 250],[300,50]]).build(); var mapLB = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300,50]). //// 601, 0 addSize([601, 0], [[468,60]]). // 768, 0 addSize([768, 0], [[468,60],[728,90]]). // 1024, 0 addSize([1024, 0], [[468, 60],[728,90]]).build(); var mapSectionDivide = googletag.sizeMapping(). // 320, 0 addSize([320, 0], [300, 75]). //// 601, 0 addSize([601, 0], [300, 75]). // 768, 0 addSize([768, 0], [[728, 90],[970, 250],[970, 90]]). // 1024, 0 addSize([1024, 0], [[728, 90],[970, 250],[970, 90]]).build(); var mapLBUnderNav = googletag.sizeMapping(). addSize([0, 0], []). // 320, 0 addSize([320, 0], [[300,75],[320,50],[320,100]]). // 1024, 0 addSize([1050, 0], [[1024, 250], [970,250], [728, 90]]).build(); var mapWallpaper = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [1,1]).build(); var mapSkinLeft = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [500,1000]).build(); googletag.defineSlot('/21612928716/Screen/AdvertA', [300, 250], 'div-gpt-AdvertA').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertB', [300, 250], 'div-gpt-AdvertB').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertC', [300, 250], 'div-gpt-AdvertC').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertD', [300, 250], 'div-gpt-AdvertD').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertE', [300, 250], 'div-gpt-AdvertE').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertF', [300, 250], 'div-gpt-AdvertF').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/mpu-extra', [300, 250], 'div-gpt-ad-mpu-extra').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/mpu-extra-two', [300, 250], 'div-gpt-ad-mpu-extra-two').defineSizeMapping(mapMPU).addService(googletag.pubads()); // googletag.defineSlot('/21612928716/Screen/AdvertMastLB', [[728, 90], [300, 75]], 'div-gpt-AdvertMastLB').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/AdvertAttach', [300, 250], 'div-gpt-AdvertAttach').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/SmallMPU', [300, 250], 'div-gpt-SmallMPU').defineSizeMapping(mapMPUSmall).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/LargeMPU', [[300, 600],[300, 250]], 'div-gpt-LargeMPU').defineSizeMapping(mapMPU).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/billboard', [[1024, 250],[970, 250],[728, 90],[300, 75]], 'div-gpt-billboard').setTargeting('allow_expandable', 'true').defineSizeMapping(mapLBUnderNav).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/SectionDivide', [[970, 250],[970, 90]], 'div-gpt-sectiondivide-one').defineSizeMapping(mapSectionDivide).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/SectionDivide', [[970, 250],[970, 90]], 'div-gpt-sectiondivide-two').defineSizeMapping(mapSectionDivide).addService(googletag.pubads()); googletag.defineSlot('/21612928716/Screen/btm-bb', [970, 250], 'div-gpt-ad-bottom-billboard').defineSizeMapping(mapLBUnderNav).addService(googletag.pubads()); // googletag.defineSlot('/21612928716/Screen/skin-left', [[970, 250],[970, 90]], 'div-gpt-ad-skin-left').defineSizeMapping(mapSkinLeft).addService(googletag.pubads()); googletag.defineOutOfPageSlot('/21612928716/Screen/Overlay', 'div-gpt-overlay').addService(googletag.pubads()); var wallpaperSlot = googletag.defineOutOfPageSlot('/21612928716/Screen/Wallpaper', 'div-gpt-wallpaper') .addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener("slotRenderEnded", function(a){ a.slot.getSlotElementId()!=wallpaperSlot.getSlotElementId()||a.isEmpty||(document.querySelector(".wallpaper-ad[data-site-width-1024]")&&(document.body.className+=" site-width-1024"),"true"===showwallpaper&&(document.body.className+=" wallpaper-applied")); $(window).trigger('wallpaper:advert') }); googletag.pubads().collapseEmptyDivs(true); /* googletag.pubads().enableLazyLoad({ fetchMarginPercent: 5, renderMarginPercent: 5, mobileScaling: 0.0 }); */ googletag.pubads().setTargeting('loggedin', getDataLayerVal('LoggedIn')); googletag.pubads().setTargeting('visitortype', getDataLayerVal('RegLevel')); googletag.pubads().setTargeting('navcode', getDataLayerVal('NavCode')); googletag.pubads().setTargeting('storycode', getDataLayerVal('StoryID')); googletag.pubads().setTargeting('storylayout', getDataLayerVal('StoryLayout')); googletag.pubads().setTargeting('storycat', getDataLayerVal('StoryCategories')); googletag.pubads().setTargeting('categories2', categories2); googletag.pubads().setTargeting('visitor2', visitor2); googletag.pubads().setTargeting('utm_source', utmSource); googletag.pubads().setTargeting('utm_medium', utmMedium); googletag.pubads().setTargeting('utm_campaign', utmCampaign); googletag.enableServices(); }); window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-fireplace') document.body.className+=" wallpaper-fireplace"; if(document.body.className.match('wallpaper-fireplace')) { var mastHeight = document.querySelector('#masthead').offsetHeight,wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = mastHeight + 'px' } } $(document).on('click','#cookiePolicy .continue',function(){ var timer = setTimeout(function(){ if(document.body.className.match('wallpaper-fireplace')){ var mastHeight = document.querySelector('#masthead').offsetHeight,cookiePolicy=((document.querySelector('#cookiePolicy')&&document.querySelector('#cookiePolicy').offsetHeight)||0), wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = (mastHeight+cookiePolicy-10)+'px'; } clearTimeout(timer); },250); }); </script> <!-- Meta Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1787080818148630'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" style="display:none" src=https://www.facebook.com/tr?id=1787080818148630&ev=PageView&noscript=1 /></noscript> <!-- End Meta Pixel Code --> <!-- The Film Agency --> <!-- Meta Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '400707963055585'); fbq('track', 'PageView'); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=400707963055585&ev=PageView&noscript=1" /></noscript> <!-- End Meta Pixel Code --> <!-- Twitter conversion tracking base code --> <script> !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js', a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); twq('config','odu1r'); </script> <!-- End Twitter conversion tracking base code --> <script> var EnhancedAdvertisingConfig = {}; </script> <!--Global Enhanced Adverts JSON definition from PAGETEXT--> <script> EnhancedAdvertisingConfig = { "Refresh":false, "RefreshDelaySecondsDefaultDesktop":30, "RefreshDelaySecondsDefaultMobile":30, "StoryDynamicSlotsAddGroupsAll":"Ads,Widgets", "StoryDynamicSlotsAddGroupsInline":"", "StoryDynamicSlotsAddGroupsRHC":"", "StoryDynamicSlotsRemoveGroupsAll":"", "StoryDynamicSlotsRemoveGroupsInline":"", "StoryDynamicSlotsRemoveGroupsRHC":"", "StoryDynamicSlotsRepeat":true, "StoryDynamicSlotsDesktopMaxInlineSlots":0, "StoryDynamicSlotsMobileMaxInlineSlots":20, "StoryDynamicSlotsDesktopMaxRHCSlots":20, "StoryDynamicSlotsDesktopElementSpacingFirst":3, "StoryDynamicSlotsMobileElementSpacingFirst":3, "StoryDynamicSlotsDesktopElementSpacing":3, "StoryDynamicSlotsMobileElementSpacing":5, "GAMAdUnitSizesInlineMobileDefault":[[300,250]], "GAMAdUnitSizesInlineDesktopDefault":[[300,250]], "GAMAdUnitSizesRHCDefault":[[300,250],[300,600]], "RHCMinHeightForSlotInsert":270, "RHCMinHeightForStickyAd":550, "CollapseEmptyDivs":true, "Slots":[ { "Type":"GAMAdvert", //"Position":"PreferRight", "Position":"PreferRight", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertA", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":false, "Refresh":false, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], "NoBackfill":true, //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" }, { "Type":"CustomContent", "Position":"Right", "Sticky":false, "Group":"Widgets", "Repeat":false, "InsertIfNoRHCSpace":true, "HTML":"<div class=\"tab-widget-7\" data-ajax-load-content=\"\" data-cache-bust=\"true\" data-url=\"/ajax/most?wid=2&cachetoken=1\"></div>", "CustomEventName":"MostPopularWidgetInit", "Javascript":function(elem,container,slotconfig,adcounter,counter,repeat){ $(window).trigger('abacus:readjusrhcheight',[event, elem]); }, "CSSClass":"wvc-custom-widget-mostpopular", "MinHeight":650 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertB", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":false, "Refresh":false, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertB", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":false, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" }, { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/21612928716/Screen/AdvertB", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":true, //"Refresh":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], //"CSSClass":"wvc-custom-ad", "ExtraHTML":"<div class=\"ad-text\">Advert</div>" } ], "Overrides":[ { //If Type - Promotion "Conditions":"StoryType-11007", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Slots (all) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsAll":"Ads,Widgets" } }, { //If Category="Slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsRHC":"Ads,Widgets" } }, { //If Category="Slots (inline) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsInline":"Ads,Widgets" } }, { //If Category="Advert slots (all) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Advert slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsRHC":"Ads" } }, { //If Category="Advert slots (inline) - Off" "Conditions":"StoryCategoriesCodes-999999", "Operator":"And", "Settings":{ "RemoveGroupsInline":"Ads" } } ] };</script> <script> $(window).trigger("wvcfe:globalenhancedadvertsinit", [event, EnhancedAdvertisingConfig]); (function(w, d) { if(window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; } d.addEventListener('DOMContentLoaded', function(event) { if(EnhancedAdvertisingConfig.Slots) { var enhAdDebug = false; if( localStorage.getItem('enh-ads-debug') == 'true' ) enhAdDebug = true; var sp = 'story-inlinecontent-placeholder'; var supportedTypes = ['gamadvert', 'customcontent']; var supportedPositions = ['inline', 'preferright', 'right']; var isDesktopResolution = w.matchMedia("screen and (min-width: 1023px)").matches; var isStoryFullLayout = d.body.classList.contains('story-full-layout'); var inlineCounter = 1; var rhcCounter = 1; var inlineAdCounter = 1; var rhcAdCounter = 1; var ticking = false; $('#story.enhanced-advertising .storytext > div.webonly').each( function(){ var t = $(this); t.replaceWith( t.html() ); }); var storyCustomContentPlaceholders = d.querySelectorAll('#story.enhanced-advertising .storytext > *'); var maxRHCSlotsToFitIn = 0; var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; var getClosestParent = function(elem, selector) { for(; elem && elem !== d; elem = elem.parentNode) { if(matches(elem, selector)) { return elem; } } return null; }; var storyType = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryTypeCode && el.StoryTypeCode != 'null'; }).map(function(el) { return 'StoryType-' + el.StoryTypeCode; }).join('') : ''; var storyFormat = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFormatCode && el.StoryFormatCode != 'null'; }).map(function(el) { return 'StoryFormat-' + el.StoryFormatCode; }).join('') : ''; var storyLayout = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryLayoutCode && el.StoryLayoutCode != 'null'; }).map(function(el) { return 'StoryLayout-' + el.StoryLayoutCode; }).join('') : ''; //PWVD-780 var storyWidth = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryWidth && el.StoryWidth != 'null'; }).map(function(el) { return 'StoryWidth-' + el.StoryWidth; }).join('') : ''; var storyFullNavPath = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFullNavPath && el.StoryFullNavPath != 'null'; }).map(function(el) { return el.StoryFullNavPath; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).join('-') : ''; var storyCategoriesCodes = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryCategoriesCodes && el.StoryCategoriesCodes != 'null'; }).map(function(el) { return el.StoryCategoriesCodes; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).map(function(el) { return 'StoryCategoriesCodes-' + el; }) : []; var storyID = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryID && el.StoryID != 'null'; }).map(function(el) { return 'StoryID-' + el.StoryID; }).filter(function(el) { return el && el != 'null' && el != 'StoryID-'; }).join('') : ''; storyFullNavPath = (storyFullNavPath ? 'StoryFullNavPath-' + storyFullNavPath : ''); var allDataLayerFilters = storyCategoriesCodes.concat([storyType, storyFormat, storyLayout, storyWidth, storyFullNavPath, storyID]).map(function(m) { return m.toLowerCase(); }); EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = (EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert || 800); EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = (EnhancedAdvertisingConfig.RHCMinHeightForStickyAd || 250); if('Overrides' in EnhancedAdvertisingConfig) { if(EnhancedAdvertisingConfig.Overrides) { var overrides = EnhancedAdvertisingConfig.Overrides; var andOperator = function() { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).every(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; var orOperator = function(el) { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).some(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; for(var i = 0, iL = overrides.length; i < iL; i++) { var override = overrides[i]; var operatorFilter; if(override.Operator && override.Operator.toLowerCase() == 'and') { operatorFilter = andOperator; } else { operatorFilter = orOperator; } if(operatorFilter()) { if('Settings' in override) { if(override.Settings) { var settings = override.Settings; if('AddGroupsAll' in settings && settings.AddGroupsAll && isString(settings.AddGroupsAll)) { if(settings.AddGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll += ',' + settings.AddGroupsAll.toLowerCase(); } } if('AddGroupsInline' in settings && settings.AddGroupsInline && isString(settings.AddGroupsInline)) { if(settings.AddGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline += ',' + settings.AddGroupsInline.toLowerCase(); } } if('AddGroupsRHC' in settings && settings.AddGroupsRHC && isString(settings.AddGroupsRHC)) { if(settings.AddGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC += ',' + settings.AddGroupsRHC.toLowerCase(); } } if('RemoveGroupsAll' in settings && settings.RemoveGroupsAll && isString(settings.RemoveGroupsAll)) { if(settings.RemoveGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll += ',' + settings.RemoveGroupsAll.toLowerCase(); } } if('RemoveGroupsInline' in settings && settings.RemoveGroupsInline && isString(settings.RemoveGroupsInline)) { if(settings.RemoveGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline += ',' + settings.RemoveGroupsInline.toLowerCase(); } } if('RemoveGroupsRHC' in settings && settings.RemoveGroupsRHC && isString(settings.RemoveGroupsRHC)) { if(settings.RemoveGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC += ',' + settings.RemoveGroupsRHC.toLowerCase(); } } if('Repeat' in settings && isBoolean(settings.Repeat)) { EnhancedAdvertisingConfig.StoryDynamicSlotsRepeat = settings.Repeat; } if('DesktopMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots = settings.DesktopMaxInlineSlots; } if('MobileMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots = settings.MobileMaxInlineSlots; } if('DesktopMinRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots = settings.DesktopMinRHCSlots; } if('MobileMinRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots = settings.MobileMinRHCSlots; } if('DesktopMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots = settings.DesktopMaxRHCSlots; } if('MobileMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots = settings.MobileMaxRHCSlots; } if('DesktopElementSpacingFirst' in settings && settings.DesktopElementSpacingFirst && isNumberPositive(settings.DesktopElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst = settings.DesktopElementSpacingFirst; } if('MobileElementSpacingFirst' in settings && settings.MobileElementSpacingFirst && isNumberPositive(settings.MobileElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst = settings.MobileElementSpacingFirst; } if('DesktopElementSpacing' in settings && settings.DesktopElementSpacing && isNumberPositive(settings.DesktopElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing = settings.DesktopElementSpacing; } if('MobileElementSpacing' in settings && settings.MobileElementSpacing && isNumberPositive(settings.MobileElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing = settings.MobileElementSpacing; } if('RHCMinHeightForSlotInsert' in settings && settings.RHCMinHeightForSlotInsert && isNumberPositive(settings.RHCMinHeightForSlotInsert)) { EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = settings.RHCMinHeightForSlotInsert; } if('RHCMinHeightForStickyAd' in settings && settings.RHCMinHeightForStickyAd && isNumberPositive(settings.RHCMinHeightForStickyAd)) { EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = settings.RHCMinHeightForStickyAd; } if('CollapseEmptyDivs' in settings && isBoolean(settings.CollapseEmptyDivs)) { EnhancedAdvertisingConfig.CollapseEmptyDivs = settings.CollapseEmptyDivs; } } } } } } } var paragraphThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing; var paragraphFirstThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst; var maxInlineSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots; var minRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots; var maxRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots; var allAddGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddInlineGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddRHCGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveInlineGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveRHCGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); EnhancedAdvertisingConfig.Slots = EnhancedAdvertisingConfig.Slots.map(function(x, i) { x.Used = false; x.Index = i; if('Type' in x) { if(supportedTypes.indexOf(x.Type.toString().toLowerCase()) != -1) { x.Type = x.Type.toString().toLowerCase(); } else { x.Type = 'customcontent'; } } else { x.Type = 'customcontent'; } if('Position' in x) { if(supportedPositions.indexOf(x.Position.toString().toLowerCase()) != -1) { x.Position = x.Position.toString().toLowerCase(); } else { x.Position = 'inline'; } } else { x.Position = 'inline'; } if('CSSClass' in x) { x.CSSClass = x.CSSClass.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(' '); } else { x.CSSClass = ''; } if('Group' in x) { x.Group = x.Group.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(','); } else { x.Group = ''; } if('Sticky' in x) { if(x.Sticky.toString().toLowerCase() == 'true') { x.Sticky = true; } else { x.Sticky = false; } } else { x.Sticky = false; } if('InsertIfNoRHCSpace' in x) { if(x.InsertIfNoRHCSpace.toString().toLowerCase() == 'true') { x.InsertIfNoRHCSpace = true; } else { x.InsertIfNoRHCSpace = false; } } else { x.InsertIfNoRHCSpace = false; } if('MinHeight' in x) { x.MinHeight = parseInt(x.MinHeight.toString()); } else { x.MinHeight = 0; } if('NoBackfill' in x) { if(x.NoBackfill.toString().toLowerCase() == 'true') { x.NoBackfill = true; } else { x.NoBackfill = false; } } else { x.NoBackfill = false; } if('Refresh' in x) { if(x.Refresh.toString().toLowerCase() == 'true') { x.Refresh = true; } else { x.Refresh = false; } } else { x.Refresh = false; } if('ExtraHTML' in x) { if(x.ExtraHTML.toString()) { x.ExtraHTML = x.ExtraHTML.toString(); } else { x.ExtraHTML = ''; } } else { x.ExtraHTML = ''; } if('CustomEventName' in x) { if(x.CustomEventName.toString()) { x.CustomEventName = x.CustomEventName.toString(); } else { x.CustomEventName = ''; } } else { x.CustomEventName = ''; } if('Javascript' in x) { if(x.Javascript) { if(typeof x.Javascript === 'function') { x.Javascript = x.Javascript; } } else { x.Javascript = ''; } } else { x.Javascript = ''; } if('AdUnit' in x) { if(x.AdUnit.toString()) { x.AdUnit = x.AdUnit.toString(); } else { x.AdUnit = ''; } } else { x.AdUnit = ''; } if('AdUnitSizesInlineMobile' in x) { x.AdUnitSizesInlineMobile = x.AdUnitSizesInlineMobile; } else if('GAMAdUnitSizesInlineMobileDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineMobile = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineMobileDefault } if('AdUnitSizesInlineDesktop' in x) { x.AdUnitSizesInlineDesktop = x.AdUnitSizesInlineDesktop; } else if('GAMAdUnitSizesInlineDesktopDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineDesktop = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineDesktopDefault; } if('AdUnitSizesRHC' in x) { x.AdUnitSizesRHC = x.AdUnitSizesRHC; } else if('GAMAdUnitSizesRHCDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesRHC = EnhancedAdvertisingConfig.GAMAdUnitSizesRHCDefault; } if('RefreshDelaySeconds' in x) { x.RefreshDelaySeconds = parseInt(x.RefreshDelaySeconds.toString(), 10); } else { x.RefreshDelaySeconds = 30; } return x; }); var storyInlineContent = EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "inline" || ((!isDesktopResolution || isStoryFullLayout) && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddInlineGroups.indexOf(subel) != -1 || allAddInlineGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveInlineGroups.indexOf(subel) != -1 || allRemoveInlineGroups.indexOf('[all]') != -1; }); }); var storyRHCContent = isDesktopResolution ? EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "right" || (isDesktopResolution && !isStoryFullLayout && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddRHCGroups.indexOf(subel) != -1 || allAddRHCGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveRHCGroups.indexOf(subel) != -1 || allRemoveRHCGroups.indexOf('[all]') != -1; }); }) : []; storyInlineContent.forEach( (c, ix) => c.inlineIndex = ix ); storyRHCContent.forEach( (c, ix) => c.rhcIndex = ix ); var googletag = w.googletag || {}; googletag.cmd = googletag.cmd || []; if( isNumberPositive(maxInlineSlots) ){ //PWVD-781 for(var tmpCounter = 0, i = 0, eL = storyCustomContentPlaceholders.length, adThresholdCounter = 1; i < eL; i++) { var currentIsPara = matches(storyCustomContentPlaceholders[i], 'p:not([class])'); var nextIsPara = (i + 1 < eL) && matches(storyCustomContentPlaceholders[i + 1], 'p:not([class])'); if( currentIsPara && !nextIsPara ){ //PWVD-897 - count paragraphs followed by any other element if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } } else if( currentIsPara && nextIsPara ) { if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } tmpCounter++; adThresholdCounter = 1; storyCustomContentPlaceholders[i].outerHTML = storyCustomContentPlaceholders[i].outerHTML + "<div class=\"story-inlinecontent-placeholder story-inlinecontent-placeholder-init item-notin-viewport\" data-storyinlinecontainer=\"" + tmpCounter + "\"><div class=\"story-inlinecontent-placeholder-inner\" data-id=\"story-inline-item-" + tmpCounter + "\" data-storyinlineitem=\"" + tmpCounter + "\"></div></div>"; if(tmpCounter >= maxInlineSlots && maxInlineSlots) break; } } } if(d.querySelector('#story.enhanced-advertising:not(.story-full-layout) #rightcolumn_sleeve')) { if(!(d.body.id == "story" || d.body.id == "story_custom") && !d.querySelector('.storytext div.table-full:not(.initialized)')) { w.addEventListener("abacus:storytexttablefull:finished", function(e) { adjustRHCHeightAndInitialAds(); }, true); } else { adjustRHCHeightAndInitialAds(); } } if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').forEach(function(el) { if(el) { var inlineAdsObserver = new IntersectionObserver(function(entries) { return inlineAdsObserverCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); inlineAdsObserver.observe(el); } }); var inlineAdsObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); }; d.querySelectorAll('.storytext-end, #rhcreflow-extra-end').forEach(function(el) { if(el) { var adsInViewportObserver = new IntersectionObserver(function(entries) { return adsInViewportObserverCallback(entries); }, { root: null, rootMargin: "0px 0px 200px 0px", threshold: [1] }); adsInViewportObserver.observe(el); } }); var adsInViewportObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { if(entry.target.classList.contains('storytext-end') && d.body.classList.contains('enhanced-advertising-inline-init')) { d.body.classList.add('enhanced-advertising-storytext-endreached'); } // RHC is empty at load time so it always fires as in viewport, need to check whether rhc ads slots already init if(entry.target.classList.contains('rhcreflow-extra-end') && d.body.classList.contains('enhanced-advertising-rhc-init')) { d.body.classList.add('enhanced-advertising-rhc-endreached'); } /* if(entry.target.id === 'rhcreflow-extra'){ //Fix for issue when RHC is not in initial viewport if( location.host.indexOf('abasoftaws.co.uk') > 0 ) console.log('New observer callback'); readjusRHCHeight(); } */ } }); }; } var inlineEl = d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-completed):not(.story-inlinecontent-placeholder-processing)'); if(inlineEl) { googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { d.body.classList.add('enhanced-advertising-inline-init'); insertInlineSlot(inlineEl); console.log('Init inline ad slot load'); }); } function slotRender(event){ var el, slot = event.slot, slotId = slot.getSlotElementId(); if(enhAdDebug) console.log('Slot render: ' + slotId); if(slotId == 'custom-inline'){ el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.dataId}"]`); //Get inline slot (does not have ID) //if(!el) // el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.inlineIndex+1}"]`); } else el = d.getElementById(slotId); if(el) { var minHeight = 0; var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { var classList = el.classList; if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad'); var index = parseInt(parentInlineNode.hasAttribute('data-index') ? parentInlineNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad'); classList.add('mob-ad-50'); classList.add('ad-story-inline'); classList.add('ad-story-inline-notempty'); parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-size-' + event.size.join('x')); parentInlineNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; if(currentInlineSlot[0].Repeat == false) { currentInlineSlot[0].Used = true; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentInlineNode.classList.add('story-inlinecontent-placeholder-finished'); insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } else { classList.add('ad-story-inline-isempty'); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; currentInlineSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentInlineNode && parentInlineNode.hasAttribute('data-nobackfill')) { if(parentInlineNode.getAttribute('data-nobackfill') == '1') { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); if(!storyInlineContent.some(function(el) { return el.Used == false; })) { finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } else { insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } initRHCHeightCalc(); return; } } // Move to next from the list if( storyInlineContent.some( function(e){ return e.Used == false; } ) ) { if(enhAdDebug) console.log('slotRender: parentInlineNode: Move to next from the list') var adRetryCssClass = 'ad-story-inline-retry'; var nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Index > index && e.Used == false; }); if(!nextInlineSlotList.length) { // select repeatable ads nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextInlineSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextInlineSlotList.length) { // no more ads to add d.body.classList.add('enhanced-advertising-inline-runoutofslots'); finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); initRHCHeightCalc(); return; } } } var mapInlineAdItem = nextInlineSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } if(mapInlineAdItem.Repeat) { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-false'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-true'); } else { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-true'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-false'); } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } googletag.display(slotId); el.classList.add(adRetryCssClass); parentInlineNode.setAttribute('data-index', mapInlineAdItem.Index); if(mapInlineAdItem.ExtraHTML) { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapInlineAdItem.ExtraHTML; } } else { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } } } else if(parentRHCNode) { parentRHCNode.classList.add('story-rhccontent-placeholder-ad'); var index = parseInt(parentRHCNode.hasAttribute('data-index') ? parentRHCNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad-rhc'); classList.add('ad-story-rhc'); classList.add('ad-story-rhc-notempty'); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-size-' + event.size.join('x')); parentRHCNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { minHeight = currentRHCSlot[0].MinHeight; if(currentRHCSlot[0].Repeat == false) { currentRHCSlot[0].Used = true; } if(currentRHCSlot[0].InsertIfNoRHCSpace) { currentRHCSlot[0].InsertIfNoRHCSpace = false; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentRHCNode.classList.remove('story-rhccontent-placeholder-isempty'); parentRHCNode.classList.remove('story-rhccontent-placeholder-notempty'); parentRHCNode.classList.add((event.isEmpty ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-completed'); parentRHCNode.classList.add('story-rhccontent-placeholder-finished'); var canAddRHC = isStoryTextTallerThanRHC(); if( ( index > 0 && !d.body.classList.contains('enhanced-advertising-inline-completed') && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') ) || ( canAddRHC.canAdd && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') && canAddRHC.delta > EnhancedAdvertisingConfig.RHCMinHeightForStickyAd ) ){ parentRHCNode.classList.remove('story-rhccontent-placeholder-canbesticky'); parentRHCNode.classList.add('story-rhccontent-placeholder-sticky'); } } else { classList.add('ad-story-rhc-isempty'); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { currentRHCSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentRHCNode && parentRHCNode.hasAttribute('data-nobackfill')) { if(parentRHCNode.getAttribute('data-nobackfill') == '1') { updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); if(!storyRHCContent.some(function(el) { return el.Used == false; })) { d.body.classList.add('enhanced-advertising-rhc-runoutofslots'); finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, true); } initRHCHeightCalc(); return; } } // Move to next from the list if(enhAdDebug){ console.log('slotRender: parentRHCNode: storyRHCContent: index: ' + index); console.log(storyRHCContent); } if(storyRHCContent.some(function(e) { return e.Used == false; })) { var adRetryCssClass = 'ad-story-rhc-retry'; var nextRHCSlotList = storyRHCContent.filter(function(e) { if(enhAdDebug) console.log('%c Current index: ' + e.Index + ', slot data index: ' + index, 'color: #0C6') return e.Index > index && e.Used == false; }); if(enhAdDebug){ console.log('%c slotRender: parentRHCNode: Moved to next from the list', 'color: #06C'); console.log(nextRHCSlotList); } if(!nextRHCSlotList.length) { // select repeatable ads nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextRHCSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextRHCSlotList.length) { // no more ads to add finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); initRHCHeightCalc(); return; } } } var mapRHCAdItem = nextRHCSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } if(mapRHCAdItem.Repeat) { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-false'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-true'); } else { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-true'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-false'); } if(mapRHCAdItem.Type == 'customcontent'){ //Custom content (RSCCS-540) if(enhAdDebug) console.log('Next RHC config item is custom content'); adjustRHCHeightAndInitialAds(); } else if(mapRHCAdItem.AdUnit){ //Google ad var mapInlineAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping( googletag.sizeMapping().build() ).setTargeting( 'refresh', (refresh ? 'true' : 'false') ).setTargeting( 'refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile) ).setCollapseEmptyDiv( EnhancedAdvertisingConfig.CollapseEmptyDivs, false ).addService( googletag.pubads() ); } else { console.warn('SlotRender: Something wrong with RHC ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } googletag.display(slotId); } el.classList.add(adRetryCssClass); parentRHCNode.setAttribute('data-index', mapRHCAdItem.Index); if(mapRHCAdItem.ExtraHTML) { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapRHCAdItem.ExtraHTML; } } else { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); } } } if(parentInlineNode) { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); } else { //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); } } } initRHCHeightCalc(); } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRequested', function(event) { var slot = event.slot; var el = d.getElementById(slot.getSlotElementId()); if(el) { var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-init'); } else { parentRHCNode.classList.add('story-rhccontent-placeholder-ad-init'); } } } }); googletag.pubads().addEventListener('slotRenderEnded', function(event) { var sId = event.slot.getSlotElementId(); if( enhAdDebug && sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot RENDER END (${sId})`, 'color: #FE2ACA'); console.log(event); //loadOrRender(sId, 'render', event); } slotRender(event); }); if(enhAdDebug){ //Track slot load events googletag.pubads().addEventListener('slotOnload', (evLoad) => { var sId = evLoad.slot.getSlotElementId(); if( sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot LOAD (${ evLoad.slot.getSlotElementId() })`, 'color: #C00;'); console.log(event); //loadOrRender(sId, 'load'); } }); } googletag.pubads().addEventListener('slotVisibilityChanged', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1 && event.inViewPercentage > 0) { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode || parentStoryRHCNode) { if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = inlineEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-inline-refreshed'); inlineEl.setAttribute('data-shouldrefresh', '0'); } } } } else { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = rhcEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-rhc-refreshed'); rhcEl.setAttribute('data-shouldrefresh', '0'); } } } } } } }); googletag.pubads().addEventListener('impressionViewable', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1) { var refreshdelayseconds = slot.getTargeting('refreshdelayseconds').length ? parseInt(slot.getTargeting('refreshdelayseconds')[0], 10) : 0; if(refreshdelayseconds) { setTimeout(function() { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); inlineEl.setAttribute('data-shouldrefresh', '0'); } else { inlineEl.setAttribute('data-shouldrefresh', '1'); } } } else if(parentStoryRHCNode) { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); rhcEl.setAttribute('data-shouldrefresh', '0'); } else { rhcEl.setAttribute('data-shouldrefresh', '1'); } } } }, refreshdelayseconds * 1000); } else { console.log('Ad refresh delay in seconds is incorrect (slot: ' + slot.getSlotElementId() + '): ', refreshdelayseconds); } } }); }); function isBoolean(n) { return !!n === n; } function isNumber(n) { return +n === n; } function isString(n) { return '' + n === n; } function isNumberPositive(n) { return +n === n && n > 0; } function isNumberPositiveOrZero(n) { return +n === n && n >= 0; } function isArrayOfArrays(a) { return a.every(function(x) { return Array.isArray(x); }); } function getAbsoluteHeight(element) { if(!element) return 0; var styles = w.getComputedStyle(element); var margin = parseFloat(styles['margin-top']) + parseFloat(styles['margin-bottom']); var minHeight = element.clientHeight; return Math.ceil(minHeight ? minHeight + margin : element.offsetHeight + margin); } function updateRHCContainerState() { var classList = d.body.classList; if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed').length) { d.body.classList.add('enhanced-advertising-rhc-empty'); } else { d.body.classList.remove('enhanced-advertising-rhc-empty'); } } function insertRHCSlot(el) { if(el) { el.classList.add('story-rhccontent-placeholder-processing'); } if(el && storyRHCContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredRHCAds = storyRHCContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredRHCAds = storyRHCContent.filter(function(e) { return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { finalizeRemainingEmptyRHCSlotContainers(classList, false); return; } var mapRHCAdItem = tempFilteredRHCAds[0]; classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); if(mapRHCAdItem.CSSClass) { mapRHCAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapRHCAdItem.Type == 'gamadvert') { if(placeholder) { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); if(mapRHCAdItem.Sticky) { classList.add('story-rhccontent-placeholder-canbesticky'); placeholder.classList.add('sticky'); } if(mapRHCAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } var mapRHCAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, mapRHCAdItem.AdUnitSizesRHC, 'story-rhcad-' + rhcAdCounter); if(mapRHCAdItemSlot) { mapRHCAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with rhc ad slot \'' + 'story-rhcad-' + rhcAdCounter + '\', size(s) \'' + mapRHCAdItem.AdUnitSizesRHC.join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-rhccontent-placeholder-refresh-true'); } else { classList.add('story-rhccontent-placeholder-refresh-false'); } classList.add('story-rhccontent-placeholder-ad'); placeholder.id = 'story-rhcad-' + rhcAdCounter; placeholder.outerHTML = '<div class="story-rhccontent-placeholder-ad-extrahtml">' + mapRHCAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapRHCAdItem.AdUnit); googletag.display('story-rhcad-' + rhcAdCounter); $(w).trigger("wvcfe:storyrhcaditeminit", [$(el), $(placeholder), mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } rhcAdCounter++; } } else if(mapRHCAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); classList.add('story-rhccontent-placeholder-customcontent'); if(placeholder) { placeholder.innerHTML = mapRHCAdItem.HTML; classList.add('story-rhccontent-placeholder-notempty'); $(w).trigger("wvcfe:storyrhcitemajaxinit", [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } el.classList.add('story-rhccontent-placeholder-finished'); } } el.setAttribute('data-index', mapRHCAdItem.Index); rhcCounter++; } else { console.log('Missing placeholder: [data-id="story-rhc-item-' + rhcCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyRHCSlotContainers(classList, false); } else { console.log('Missing RHC element'); } } function insertInlineSlot(el) { if(el) { el.classList.add('story-inlinecontent-placeholder-processing'); } if(el && storyInlineContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredInlineAds = storyInlineContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredInlineAds = storyInlineContent.filter(function(e){ return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredInlineAds.length) { tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { // start from the first repeatable ad index tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { finalizeRemainingEmptyInlineSlotContainers(classList, true); return; } } } var mapInlineAdItem = tempFilteredInlineAds[0]; classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); if(mapInlineAdItem.CSSClass) { mapInlineAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapInlineAdItem.Type == 'gamadvert') { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); el.classList.add('story-inlinecontent-placeholder-ad'); if(mapInlineAdItem.Sticky) { classList.add('story-inlinecontent-placeholder-sticky'); placeholder.classList.add('sticky'); } if(mapInlineAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapInlineAdItem.Repeat) { classList.add('story-inlinecontent-placeholder-repeat-true'); } else { classList.add('story-inlinecontent-placeholder-repeat-false'); } if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, 'story-inlinead-' + inlineAdCounter); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + 'story-inlinead-' + inlineAdCounter + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-inlinecontent-placeholder-refresh-true'); } else { classList.add('story-inlinecontent-placeholder-refresh-false'); } placeholder.id = 'story-inlinead-' + inlineAdCounter; placeholder.outerHTML = '<div class="story-inlinecontent-placeholder-ad-extrahtml">' + mapInlineAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapInlineAdItem.AdUnit); googletag.display('story-inlinead-' + inlineAdCounter); $(w).trigger("wvcfe:storyinlineaditeminit", [$(el), $(placeholder), mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type); } } inlineAdCounter++; } else if(mapInlineAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); el.classList.add('story-inlinecontent-placeholder-customcontent'); placeholder.innerHTML = mapInlineAdItem.HTML; $(w).trigger("wvcfe:storyinlineitemajaxinit", [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type.toLowerCase()); } } el.classList.add('story-inlinecontent-placeholder-finished'); var inlineCustomEvent = { dataId: (mapInlineAdItem.Index+1), slot: { getSlotElementId: function(){ return 'custom-inline'; }, getAdUnitPath: function(){return 'custom-inline'} }, isEmpty: false, size:[0,0] }; el.setAttribute('data-index', mapInlineAdItem.Index); slotRender(inlineCustomEvent); //$(w).trigger('abacus:inlinecontentrender', inlineCustomEvent); } el.setAttribute('data-index', mapInlineAdItem.Index); //el.setAttribute('data-index', inlineCounter); inlineCounter++; } else { console.log('Missing placeholder: [data-id="story-inline-item-' + inlineCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyInlineSlotContainers(classList, true); } else { console.log('Missing inline element'); } } function finalizeRemainingEmptyRHCSlotContainers(classList, processremaining) { classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); classList.add('story-rhccontent-placeholder-isempty'); classList.add('story-rhccontent-placeholder-runoutofslots'); classList.add('story-rhccontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-rhccontent-placeholder-init'); c.add('story-rhccontent-placeholder-completed'); c.add('story-rhccontent-placeholder-isempty'); c.add('story-rhccontent-placeholder-runoutofslots'); c.add('story-rhccontent-placeholder-finished'); } } } } function finalizeRemainingEmptyInlineSlotContainers(classList, processremaining) { classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); classList.add('story-inlinecontent-placeholder-isempty'); classList.add('story-inlinecontent-placeholder-runoutofslots'); classList.add('story-inlinecontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-inlinecontent-placeholder-init'); c.add('story-inlinecontent-placeholder-completed'); c.add('story-inlinecontent-placeholder-isempty'); c.add('story-inlinecontent-placeholder-runoutofslots'); c.add('story-inlinecontent-placeholder-finished'); } } } } function updateInlinePlaceholderClasses(node, status, minHeight) { node.classList.remove('story-inlinecontent-placeholder-isempty'); node.classList.remove('story-inlinecontent-placeholder-notempty'); node.classList.add((status ? 'story-inlinecontent-placeholder-isempty' : 'story-inlinecontent-placeholder-notempty')); node.classList.add('story-inlinecontent-placeholder-ad-completed'); if(!status) { var computedMinHeightValue = w.getComputedStyle(node).minHeight || 0; var computedMinHeight = parseInt(computedMinHeightValue, 10); if(minHeight > computedMinHeight) { node.style.minHeight = minHeight + 'px'; } } } function updateRHCPlaceholderClasses(node, status) { node.classList.remove('story-rhccontent-placeholder-ad-init'); node.classList.remove('story-rhccontent-placeholder-isempty'); node.classList.remove('story-rhccontent-placeholder-notempty'); node.classList.add((status ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); node.classList.add('story-rhccontent-placeholder-ad-completed'); } function initRHCHeightCalc() { updateRHCFirstandLastItemStyles(); // readjust height if no in progress/loading ads as the height might change on storytext or RHC if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed.story-rhccontent-placeholder-ad-init').length) { readjusRHCHeight(); } else { setTimeout(function() { initRHCHeightCalc(); }, 0); } } function isInViewport(element) { var rect = element.getBoundingClientRect(); var height = w.innerHeight || d.documentElement.clientHeight; var width = w.innerWidth || d.documentElement.clientWidth; return ( rect.right >= 0 && rect.bottom >= 0 && rect.left <= width && rect.top <= height ); } function processElementsInViewport() { var adsInlinePlaceholders = d.querySelectorAll('.storytext .story-inlinecontent-placeholder'); //PWVD-893 : change from rhccontent var adsRHCPlaceholders = d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder'); if(adsInlinePlaceholders || adsRHCPlaceholders) { if(adsInlinePlaceholders) { adsInlinePlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-inlinecontent-placeholder-isinviewport'); classList.add('story-inlinecontent-placeholder-isnotinviewport'); } else { classList.remove('story-inlinecontent-placeholder-isnotinviewport'); classList.add('story-inlinecontent-placeholder-isinviewport'); } }); } else { adsRHCPlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-rhccontent-placeholder-isinviewport'); classList.add('story-rhccontent-placeholder-isnotinviewport'); } else { classList.remove('story-rhccontent-placeholder-isnotinviewport'); classList.add('story-rhccontent-placeholder-isinviewport'); } }); } } } function adjustRHCHeightAndInitialAds() { var output = []; var googletag = w.googletag || {}; var rhcreflowExtra = d.querySelector('#rhcreflow-extra'); if(rhcreflowExtra) { rhcreflowExtra.innerHTML = ''; minRHCSlotsToFitIn = (minRHCSlots > 0 ? minRHCSlots : 2); maxRHCSlotsToFitIn = (maxRHCSlots > 0 ? maxRHCSlots : 0); for(var i = 0, iL = Math.max(storyRHCContent.length, maxRHCSlotsToFitIn); i < iL; i++) { rhcCounter = i + 1; output.push("<div class=\"story-rhccontent-placeholder story-rhccontent-placeholder-init item-notin-viewport\" data-storyrhccontainer=\"" + rhcCounter + "\"><div class=\"story-rhccontent-placeholder-inner\" data-id=\"story-rhc-item-" + rhcCounter + "\" data-storyrhcitem=\"" + rhcCounter + "\"></div></div>"); if(rhcCounter >= maxRHCSlotsToFitIn) break; } d.querySelector('#rhcreflow-extra').innerHTML = output.join(''); if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init').forEach(function(el) { if(el) { observer = new IntersectionObserver(function(entries) { return observerCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); observer.observe(el); } }); var observerCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); } } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var hasAnyRHCLoadedBefore = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); if(rhcEl && !hasAnyRHCLoadedBefore.length) { insertRHCSlot(rhcEl); d.body.classList.add('enhanced-advertising-rhc-init'); } }); updateRHCContainerState(); } } function isStoryTextTallerThanRHC() { var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, colmain = d.getElementById('colmain').clientHeight; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); return { "canAdd": colmain > calcHeight, "delta": colmain - calcHeight }; } else { return { "canAdd": false, "delta": 0 }; } } function canAddRHCItem() { // check whether inline and RHC ads finished loading, otherwise ignore var storyRHCSlotHeight = EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert; var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, innerChild = 0; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { //innerChild = (item || item.querySelector('.story-rhccontent-placeholder-inner') || item.firstChild); //h = getAbsoluteHeight(innerChild); //if (h == 0) { // h = getAbsoluteHeight(item); //} h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); var result = { "canAddRHCItem": d.getElementById('colmain').clientHeight > calcHeight + storyRHCSlotHeight, "colmainTaller": d.getElementById('colmain').clientHeight > calcHeight }; return result; } else { return { "canAddRHCItem": false, "colmainTaller": false }; } } function readjusRHCHeight() { if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { d.getElementById('rightcolumn_sleeve').style.minHeight = d.getElementById('colmain').clientHeight + 'px'; } var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var canAdd = canAddRHCItem(); var hasInsertIfNoRHCSpace = storyRHCContent.some(function(e) { return e.InsertIfNoRHCSpace == true && e.Used == false && e.Index > slotIndex; }); if(!rhcEl || (!canAdd.canAddRHCItem && !hasInsertIfNoRHCSpace && !d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)').length)) { d.body.classList.add('enhanced-advertising-rhc-completed'); } else { d.body.classList.remove('enhanced-advertising-rhc-completed'); } //var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished)'); var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished):not(.story-rhccontent-placeholder-isempty)'); //var rhcElemInit = $('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); //PWVD-749 //var classesToExclude = ['init', 'processing', 'finished'].map( cls => '.story-rhccontent-placeholder-' + cls); //, 'isempty' //rhcElemInit = rhcElemInit.find( classesToExclude.join(',') ).remove(); if(rhcEl && (canAdd.canAddRHCItem || hasInsertIfNoRHCSpace) && rhcElementsInitialised.length == 0) { googletag.cmd.push(function() { insertRHCSlot(rhcEl); }); } } function updateRHCFirstandLastItemStyles() { d.querySelectorAll('#rhcreflow-extra > *:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-isempty)').forEach(function(item, index, data) { item.classList.remove('story-rhccontent-placeholder-first'); item.classList.remove('story-rhccontent-placeholder-last'); if(index == 0) { item.classList.add('story-rhccontent-placeholder-first'); } if(index == data.length - 1) { item.classList.add('story-rhccontent-placeholder-last'); } }); if((d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed').length == d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-finished').length) && !d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').length) { d.body.classList.add('enhanced-advertising-inline-completed'); } else { d.body.classList.remove('enhanced-advertising-inline-completed'); } } w.addEventListener('scroll', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener('resize', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener("abacus:loadcontent:complete", function(evt, context) { readjusRHCHeight(); }, true); if(d.querySelector('#story .storytext img.lazyload')) { d.addEventListener('lazyloaded', function(e) { if(w.googletag && googletag.apiReady) { if(getClosestParent(e.target, '.storytext')) { readjusRHCHeight(); } } }); } w.addEventListener("abacus:advertb:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:gamadvert:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:readjusrhcheight", function(evt, context) { readjusRHCHeight(); }, true); //w.addEventListener('abacus:inlinecontentrender', function(customEvent) { // slotRender(customEvent); //}, true); } }); })(window, document); </script> <!-- ABACUS Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NZF83CW');</script> <!-- End Google Tag Manager --> <!-- Screen Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-T6JMCT');</script> <!-- End Screen Google Tag Manager --> </head> <body id="story" class="M1-master js-disabled story-style-1 story-format-2 story-type-1101 enhanced-advertising enhanced-advertising-rhc-empty"> <!-- ABACUS Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NZF83CW" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!-- Screen Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T6JMCT" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Screen Google Tag Manager (noscript) --> <!--[if lte IE 10]> <link rel="stylesheet" href="/CSS/dest/notsupported.css"> <div class="notSupported"> <div class="sleeve"> <span id="logo" class="vector-icon i-brand-logo i-brand-logo-dims"></span> <h2> Your browser is not supported </h2> <p> Sorry but it looks as if your browser is out of date. To get the best experience using our site we recommend that you upgrade or switch browsers. </p> <p class="buttonContainer"> <a class="button" href="https://www.google.co.uk/webhp?ion=1&espv=2&ie=UTF-8#q=update+my+browser" target="_blank">Find a solution</a> </p> </div> </div> <![endif]--> <script type="text/javascript">document.body.className = document.body.className.replace('js-disabled', ''); document.cookie = "_js=1; path=/";</script> <div id="wrapper"> <ul id="skiplinks"><li><a href="#wrapper_sleeve">Skip to main content</a></li><li><a href="#mainnav">Skip to navigation</a></li></ul> <header id="masthead" class="masthead"> <div class="htmlContent"> <!-- /21612928716/Screen/wallpaper --> <div id='div-gpt-wallpaper' class="wallpaper-ad adslot" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-wallpaper'); }); </script> </div> <!-- /21612928716/Screen/Overlay --> <div id='div-gpt-overlay' style="height:0"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-overlay'); }); </script> </div> <!-- /21612928716/Screen/skin-left --> <!--<div id='div-gpt-ad-skin-left' style='position:absolute; width: 1000px; margin-top: 48px; height: calc(100% - 48px);'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-skin-left'); }); </script> </div>--> </div> <!--<div class="knock-leaderboard"> <div class="ad">--> <!-- /21612928716/Screen/AdvertMastLB --> <!--<div id='div-gpt-AdvertMastLB'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-AdvertMastLB'); }); </script> </div> </div> </div>--> <div class="mast container full" role="banner" data-multi-toggle-menu> <div class="inner-sleeve" data-menu-open-pushed> <div class="mastheadLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Screen Daily</span> </span> </a> </div> <div id="print_logo"> <img src="/magazine/dest/graphics/logo/print_logo.png" alt="" /> </div> <div class="mastheadMobileLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Core Test</span> </span> </a> </div> <div class="mastControls"> <nav data-multi-toggle-item="" class="mastNav loggedout hide"><span class="toggleIcon"><a href="#mastnav" data-toggle-button=""><span class="assistive">Mast navigation</span></a></span><ul id="mastnav" data-toggle-element=""><li><a href="https://account.screendaily.com/Register" class="newWindow">Register</a></li><li><a href="https://www.screendaily.com/subscribe">Subscribe</a></li><li><a class="popup signIn" href="https://www.screendaily.com/sign-in">Sign in</a></li></ul></nav> <div class="mastheadSearch hide" data-multi-toggle-item=""> <span class="toggleIcon"> <a href="#search" data-toggle-button=""> <span class="assistive">Search our site</span> </a> </span> <form action="https://www.screendaily.com/searchresults" method="get" id="mastsearch" data-toggle-element=""> <fieldset> <div> <label for="search">Search our site</label> <input type="text" id="search" value="" name="qkeyword" class="text" placeholder="Search our site" /> <button class="mastSearch" type="submit">Search</button> </div> </fieldset> </form> </div> <div class="menuToggle"> <span class="toggleIcon"><a href="#mobilemenu" data-menu-toggle-button=""><span class="assistive">Menu</span></a></span> </div> </div> </div> </div> <div class="menuContainer"> <div class="mobileMenu" id="mobilemenu"> <div class="sleeve"> <a class="menuClose" href="#wrapper"> <span>Close<span class="assistive"> menu</span></span> </a> <ul class="main"> <li class="hasChildren home-icon"> <a href="https://www.screendaily.com/" aria-expanded="false"> <span>Home</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav home-icon"> <a href="https://www.screendaily.com/"> <span>Home</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/contact-us"> <span>Contact Us</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/digital-editions/11578.subject"> <span>Digital Editions</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/home/screen-network"> <span>Screen Network</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/podcast/12264.subject"> <span>The Screen Podcast</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/home/stars-of-tomorrow"> <span>Stars Of Tomorrow</span> </a> </li> <li class=""> <a href="https://www.bigscreenawards.com/"> <span>The Big Screen Awards</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/fyc-screenings"> <span>FYC screenings</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/world-of-locations-may-october-2023-digital-edition/5181675.article"> <span>World of Locations</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/uk-in-focus"> <span>UK in focus</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/job-vacancies"> <span>Job vacancies</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/cannes-close-up/12877.subject"> <span>Cannes Close-Up</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/news" aria-expanded="false"> <span>News</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/news"> <span>News</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/production"> <span>Production</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/distribution"> <span>Distribution</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/funding"> <span>Funding</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/streaming"> <span>Streaming</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/exhibition"> <span>Exhibition</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/sales"> <span>Sales</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/11901.subject"> <span>Staff moves</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/tv"> <span>TV</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/artificial-intelligence/12899.subject"> <span>Artificial intelligence</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/news/box-office"> <span>Box office</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Territories</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Territories</span> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/uk-and-ireland"> <span>UK & Ireland</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/north-america"> <span>North America</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/europe"> <span>Europe</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/asia-pacific"> <span>Asia Pacific</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/news/territories/middle-east-and-africa"> <span>Middle East & Africa</span> </a> </li> </ul> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/reviews" aria-expanded="false"> <span>Reviews</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/reviews"> <span>Reviews</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Territories</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Territories</span> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/uk-and-ireland"> <span>UK & Ireland</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/north-america"> <span>North America</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/europe"> <span>Europe </span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/territories/asia-pacific"> <span>Asia Pacific</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/reviews/territories/middle-east-and-africa"> <span>Middle East & Africa</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>Festivals</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Festivals</span> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/cannes"> <span>Cannes</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/berlin"> <span>Berlin</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/sundance"> <span>Sundance</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/toronto"> <span>Toronto</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/venice"> <span>Venice</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/reviews/festivals/more"> <span>More</span> </a> </li> </ul> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/features" aria-expanded="false"> <span>Features</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/features"> <span>Features</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/features/interviews"> <span>Interviews</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/features/comment"> <span>Comment</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/features/future-leaders-2019-programmers-and-curators-to-watch/5139440.article"> <span>Future Leaders</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/45926.more"> <span>TV</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/my-screen-life/12258.subject"> <span>My Screen Life</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/festivals" aria-expanded="false"> <span>Festivals</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/festivals"> <span>Festivals</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Europe</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Europe</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/cannes"> <span>Cannes</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/berlin"> <span>Berlin</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/venice"> <span>Venice</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/rotterdam"> <span>Rotterdam</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/karlovy-vary"> <span>Karlovy Vary</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/locarno"> <span>Locarno</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/cphdox"> <span>CPH:DOX</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/sarajevo"> <span>Sarajevo</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/europe/san-sebastian"> <span>San Sebastian</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/festivals/europe/tallinn"> <span>Tallinn</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>North America</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>North America</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/toronto"> <span>Toronto</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/afm"> <span>AFM</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/sundance"> <span>Sundance</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/sxsw"> <span>SXSW</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/north-america/tribeca"> <span>Tribeca</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>UK</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>UK</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/uk/london"> <span>London</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/uk/glasgow"> <span>Glasgow</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/uk/edinburgh"> <span>Edinburgh</span> </a> </li> <li class="break"> <a href="https://www.screendaily.com/festivals/uk/sheffield-doc/fest"> <span>Sheffield Doc/Fest</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>Asia Pacific</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Asia Pacific</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/asia-pacific/busan"> <span>Busan</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/asia-pacific/tokyo"> <span>Tokyo</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/asia-pacific/filmart"> <span>Filmart</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="#"> <span>MENA</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>MENA</span> </li> <li class=""> <a href="https://www.screendaily.com/festivals/mena/cairo"> <span>Cairo</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/festivals/mena/red-sea"> <span>Red Sea</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/marrakech/12836.subject"> <span>Marrakech</span> </a> </li> </ul> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/box-office" aria-expanded="false"> <span>Box Office</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/box-office"> <span>Box Office</span> </a> </li> <li class="hasChildren "> <a href="#"> <span>Box Office Reports</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <span>Box Office Reports</span> </li> <li class=""> <a href="https://www.screendaily.com/box-office/box-office-reports/international"> <span>International</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/box-office/box-office-reports/uk"> <span>UK</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/box-office/box-office-reports/us"> <span>US</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.screendaily.com/box-office/analysis"> <span>Analysis</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.screendaily.com/awards" aria-expanded="false"> <span>Awards</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.screendaily.com/awards"> <span>Awards</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/oscars"> <span>Oscars</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/baftas"> <span>Baftas</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/golden-globes"> <span>Golden Globes</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/emmys"> <span>Emmys</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/awards/bifas"> <span>Bifas</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/european-film-awards/12593.subject"> <span>European Film Awards</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.screendaily.com/home/stars-of-tomorrow"> <span>Stars of Tomorrow</span> </a> </li> <li class=""> <a href="https://www.screendaily.com/subscribe" class="newWindow"> <span>Subscribe</span> </a> </li> </ul> </div> </div> <div class="mobileMenuClose"></div> <div id="mainnav" class="desktopNavigation container" data-menu-open-pushed=""><div class="dropdown vanityPanel"><div class="inner-sleeve"></div></div><div class="inner-sleeve"><ul class="main preJS"><li data-navcode="5233" data-rootnavcode="5233" class="home-icon hasChildren oneSubNav"><a href="https://www.screendaily.com/"><span>Home</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5900" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/contact-us"><span>Contact Us</span></a></li><li data-navcode="5302" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/digital-editions/11578.subject"><span>Digital Editions</span></a></li><li data-navcode="6065" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/home/screen-network"><span>Screen Network</span></a></li><li data-navcode="6075" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/podcast/12264.subject"><span>The Screen Podcast</span></a></li><li data-navcode="5587" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/home/stars-of-tomorrow"><span>Stars Of Tomorrow</span></a></li><li data-navcode="5639" data-rootnavcode="5233" class=""><a href="https://www.bigscreenawards.com/"><span>The Big Screen Awards</span></a></li><li data-navcode="6328" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/fyc-screenings"><span>FYC screenings</span></a></li><li data-navcode="5474" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/news/world-of-locations-may-october-2023-digital-edition/5181675.article"><span>World of Locations</span></a></li><li data-navcode="6358" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/uk-in-focus"><span>UK in focus</span></a></li><li data-navcode="6378" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/job-vacancies"><span>Job vacancies</span></a></li><li data-navcode="6385" data-rootnavcode="5233" class=""><a href="https://www.screendaily.com/cannes-close-up/12877.subject"><span>Cannes Close-Up</span></a></li></ul></li><li class="promotedStory"><a href="/news/screen-digital-edition-november-22/5199359.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/1/8/3/1437183_nov223x2_616632.jpg" loading="lazy" class="lazyloaded" alt="nov 22 3x2"></div><div class="captionBlock"><span class="title">Screen digital edition: November 22</span></div></a></li><li class="promotedStory"><a href="/news/afm-2024-screens-dailies/5198864.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/2/1/6/1436216_afmday33x2_913127.jpg" loading="lazy" class="lazyloaded" alt="AFM day 3 3x2"></div><div class="captionBlock"><span class="title">AFM 2024: Screen’s dailies</span></div></a></li><li class="promotedStory"><a href="/news/afm-2024-market-product-guide/5198862.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/9/4/6/1435946_afmbumper20243x2_144932.jpg" loading="lazy" class="lazyloaded" alt="afm bumper 2024 3x2"></div><div class="captionBlock"><span class="title">AFM 2024: Market Product Guide</span></div></a></li></ul></div></div></li><li data-navcode="24" data-rootnavcode="24" class="hasChildren twoSubNav"><a href="https://www.screendaily.com/news"><span>News</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5231" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/production"><span>Production</span></a></li><li data-navcode="5230" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/distribution"><span>Distribution</span></a></li><li data-navcode="35" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/funding"><span>Funding</span></a></li><li data-navcode="40" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/streaming"><span>Streaming</span></a></li><li data-navcode="5766" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/exhibition"><span>Exhibition</span></a></li><li data-navcode="5767" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/sales"><span>Sales</span></a></li><li data-navcode="5772" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/11901.subject"><span>Staff moves</span></a></li><li data-navcode="5961" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/tv"><span>TV</span></a></li><li data-navcode="6399" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/artificial-intelligence/12899.subject"><span>Artificial intelligence</span></a></li><li data-navcode="5276" data-rootnavcode="24" class="break"><a href="https://www.screendaily.com/news/box-office"><span>Box office</span></a></li></ul></li><li class="subnav"><ul><li data-navcode="5806" data-rootnavcode="24" class=""><span>Territories</span><ul><li data-navcode="5768" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/uk-and-ireland"><span>UK & Ireland</span></a></li><li data-navcode="5769" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/north-america"><span>North America</span></a></li><li data-navcode="5771" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/europe"><span>Europe</span></a></li><li data-navcode="5770" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/asia-pacific"><span>Asia Pacific</span></a></li><li data-navcode="5807" data-rootnavcode="24" class=""><a href="https://www.screendaily.com/news/territories/middle-east-and-africa"><span>Middle East & Africa</span></a></li></ul></li></ul></li><li class="promotedStory"><a href="/news/berlinale-to-create-new-festival-hub-and-screening-venue-for-2025-edition/5199491.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/2/6/1437426_150224_sw_0053_393316_crop.jpg" loading="lazy" class="lazyloaded" alt="Berlinale Palast"></div><div class="captionBlock"><span class="title">Berlinale to create new festival hub and screening venue for 2025 edition</span></div></a></li><li class="promotedStory"><a href="/news/wicked-rules-north-american-box-office-on-113m-launch-gladiator-ii-arrives-on-55m/5199420.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/2/8/4/1437284_screenshot20241124at12.11.24pm_409654_crop.jpg" loading="lazy" class="lazyloaded" alt="Wicked, Gladiator II"></div><div class="captionBlock"><span class="title">‘Wicked’ rules North American box office on $113m launch; ‘Gladiator II’ arrives on $55m</span></div></a></li></ul></div></div></li><li data-navcode="27" data-rootnavcode="27" class="current hasChildren twoSubNav"><a href="https://www.screendaily.com/reviews"><span>Reviews</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5774" data-rootnavcode="27" class=""><span>Territories</span><ul><li data-navcode="46" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/uk-and-ireland"><span>UK & Ireland</span></a></li><li data-navcode="5775" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/north-america"><span>North America</span></a></li><li data-navcode="284" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/europe"><span>Europe </span></a></li><li data-navcode="48" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/territories/asia-pacific"><span>Asia Pacific</span></a></li><li data-navcode="47" data-rootnavcode="27" class="break"><a href="https://www.screendaily.com/reviews/territories/middle-east-and-africa"><span>Middle East & Africa</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="5777" data-rootnavcode="27" class=""><span>Festivals</span><ul><li data-navcode="5778" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/cannes"><span>Cannes</span></a></li><li data-navcode="5779" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/berlin"><span>Berlin</span></a></li><li data-navcode="5780" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/sundance"><span>Sundance</span></a></li><li data-navcode="5781" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/toronto"><span>Toronto</span></a></li><li data-navcode="5782" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/venice"><span>Venice</span></a></li><li data-navcode="5817" data-rootnavcode="27" class=""><a href="https://www.screendaily.com/reviews/festivals/more"><span>More</span></a></li></ul></li></ul></li><li class="promotedStory"><a href="/reviews/moana-2-review/5199480.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/9/5/1437395_moana2b_545965.jpg" loading="lazy" class="lazyloaded" alt="Moana 2"></div><div class="captionBlock"><span class="title">‘Moana 2’: Review</span></div></a></li><li class="promotedStory"><a href="/reviews/postmarks-cairo-review/5199487.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/4/1/2/1437412_postmarks_494795.jpg" loading="lazy" class="lazyloaded" alt="Postmarks"></div><div class="captionBlock"><span class="title">‘Postmarks’: Cairo Review</span></div></a></li></ul></div></div></li><li data-navcode="5275" data-rootnavcode="5275" class="hasChildren oneSubNav"><a href="https://www.screendaily.com/features"><span>Features</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="703" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/features/interviews"><span>Interviews</span></a></li><li data-navcode="5274" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/features/comment"><span>Comment</span></a></li><li data-navcode="5950" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/features/future-leaders-2019-programmers-and-curators-to-watch/5139440.article"><span>Future Leaders</span></a></li><li data-navcode="5962" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/45926.more"><span>TV</span></a></li><li data-navcode="6027" data-rootnavcode="5275" class=""><a href="https://www.screendaily.com/my-screen-life/12258.subject"><span>My Screen Life</span></a></li></ul></li><li class="promotedStory"><a href="/features/russian-director-on-deaf-lovers-p%C3%B6ff-controversy-censorship-is-the-biggest-threat-to-art-in-our-world/5199451.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/3/7/1437337_f_5_deaf_lovers_c6121ec27d_big_16_9_522396_crop.jpeg" loading="lazy" class="lazyloaded" alt="F_5_Deaf_Lovers_c6121ec27d_big_16_9"></div><div class="captionBlock"><span class="title">Russian director on ‘Deaf Lovers’ PÖFF controversy: “Censorship is the biggest threat to art in our world”</span></div></a></li><li class="promotedStory"><a href="/features/how-idfas-doclab-is-pushing-the-boundaries-of-documentary-and-reality/5199219.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/7/9/5/1436795_casparsonnen_8076.jpg" loading="lazy" class="lazyloaded" alt="Caspar Sonnen"></div><div class="captionBlock"><span class="title">How IDFA’s DocLab is pushing the boundaries of documentary and reality</span></div></a></li><li class="promotedStory"><a href="/features/50-films-to-watch-this-awards-season/5198655.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/5/9/1/1435591_50films2024_854939.jpg" loading="lazy" class="lazyloaded" alt="50 films 2024"></div><div class="captionBlock"><span class="title">50 films to watch this awards season</span></div></a></li></ul></div></div></li><li data-navcode="29" data-rootnavcode="29" class="hasChildren threeSubNav"><a href="https://www.screendaily.com/festivals"><span>Festivals</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5800" data-rootnavcode="29" class=""><span>Europe</span><ul><li data-navcode="5238" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/cannes"><span>Cannes</span></a></li><li data-navcode="5623" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/berlin"><span>Berlin</span></a></li><li data-navcode="5265" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/venice"><span>Venice</span></a></li><li data-navcode="5310" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/rotterdam"><span>Rotterdam</span></a></li><li data-navcode="5091" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/karlovy-vary"><span>Karlovy Vary</span></a></li><li data-navcode="358" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/locarno"><span>Locarno</span></a></li><li data-navcode="5974" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/cphdox"><span>CPH:DOX</span></a></li><li data-navcode="5260" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/sarajevo"><span>Sarajevo</span></a></li><li data-navcode="356" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/europe/san-sebastian"><span>San Sebastian</span></a></li><li data-navcode="5665" data-rootnavcode="29" class="break"><a href="https://www.screendaily.com/festivals/europe/tallinn"><span>Tallinn</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="5802" data-rootnavcode="29" class=""><span>North America</span><ul><li data-navcode="5272" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/toronto"><span>Toronto</span></a></li><li data-navcode="5282" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/afm"><span>AFM</span></a></li><li data-navcode="102" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/sundance"><span>Sundance</span></a></li><li data-navcode="931" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/sxsw"><span>SXSW</span></a></li><li data-navcode="152" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/north-america/tribeca"><span>Tribeca</span></a></li></ul></li><li data-navcode="5801" data-rootnavcode="29" class=""><span>UK</span><ul><li data-navcode="5458" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/uk/london"><span>London</span></a></li><li data-navcode="5905" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/uk/glasgow"><span>Glasgow</span></a></li><li data-navcode="361" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/uk/edinburgh"><span>Edinburgh</span></a></li><li data-navcode="5678" data-rootnavcode="29" class="break"><a href="https://www.screendaily.com/festivals/uk/sheffield-doc/fest"><span>Sheffield Doc/Fest</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="5803" data-rootnavcode="29" class=""><span>Asia Pacific</span><ul><li data-navcode="5457" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/asia-pacific/busan"><span>Busan</span></a></li><li data-navcode="5653" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/asia-pacific/tokyo"><span>Tokyo</span></a></li><li data-navcode="5318" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/asia-pacific/filmart"><span>Filmart</span></a></li></ul></li><li data-navcode="5804" data-rootnavcode="29" class=""><span>MENA</span><ul><li data-navcode="6286" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/mena/cairo"><span>Cairo</span></a></li><li data-navcode="6284" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/festivals/mena/red-sea"><span>Red Sea</span></a></li><li data-navcode="6408" data-rootnavcode="29" class=""><a href="https://www.screendaily.com/marrakech/12836.subject"><span>Marrakech</span></a></li></ul></li></ul></li><li class="promotedStory"><a href="/news/2024-film-festivals-and-markets-calendar-latest-dates/5188083.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/1/1/6/1411116_filmfests2024_697048.jpg" loading="lazy" class="lazyloaded" alt="film fests 2024"></div><div class="captionBlock"><span class="title">2024 film festivals and markets calendar: latest dates</span></div></a></li></ul></div></div></li><li data-navcode="5223" data-rootnavcode="5223" class="hasChildren oneSubNav"><a href="https://www.screendaily.com/box-office"><span>Box Office</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5818" data-rootnavcode="5223" class=""><span>Box Office Reports</span><ul><li data-navcode="5224" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/box-office-reports/international"><span>International</span></a></li><li data-navcode="5229" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/box-office-reports/uk"><span>UK</span></a></li><li data-navcode="5228" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/box-office-reports/us"><span>US</span></a></li></ul></li><li data-navcode="5805" data-rootnavcode="5223" class=""><a href="https://www.screendaily.com/box-office/analysis"><span>Analysis</span></a></li></ul></li><li class="promotedStory"><a href="/news/wicked-shines-with-biggest-opening-weekend-of-2024-at-uk-ireland-box-office/5199447.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/3/9/1437339_wickeduniversalpictures_82261.jpg" loading="lazy" class="lazyloaded" alt="Wicked Universal Pictures"></div><div class="captionBlock"><span class="title">‘Wicked’ shines with biggest opening weekend of 2024 at UK-Ireland box office</span></div></a></li><li class="promotedStory"><a href="/news/wicked-conjures-up-163m-at-global-box-office-gladiator-ii-battles-hard-with-106m/5199436.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/3/1/1/1437311_wickedgladiator_698829.jpg" loading="lazy" class="lazyloaded" alt="wicked gladiator"></div><div class="captionBlock"><span class="title">‘Wicked’ conjures up $163m at global box office; ‘Gladiator II’ battles hard with $106m</span></div></a></li><li class="promotedStory"><a href="/news/uk-ireland-box-office-preview-wicked-aims-to-cast-its-spell-in-698-sites/5199404.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/2/4/6/1437246_wickeduniversalpictures_82261_crop.jpg" loading="lazy" class="lazyloaded" alt="Wicked Universal Pictures"></div><div class="captionBlock"><span class="title">UK-Ireland box office preview: ‘Wicked’ aims to cast its spell in 698 sites</span></div></a></li></ul></div></div></li><li data-navcode="5299" data-rootnavcode="5299" class="hasChildren oneSubNav"><a href="https://www.screendaily.com/awards"><span>Awards</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="5303" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/oscars"><span>Oscars</span></a></li><li data-navcode="5304" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/baftas"><span>Baftas</span></a></li><li data-navcode="5306" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/golden-globes"><span>Golden Globes</span></a></li><li data-navcode="5808" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/emmys"><span>Emmys</span></a></li><li data-navcode="5809" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/awards/bifas"><span>Bifas</span></a></li><li data-navcode="6222" data-rootnavcode="5299" class=""><a href="https://www.screendaily.com/european-film-awards/12593.subject"><span>European Film Awards</span></a></li></ul></li><li class="promotedStory"><a href="/features/coralie-fargeat-on-making-the-substance-her-own-way-everything-had-to-be-in-excess/5199519.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/6/1/5/1437615_thesubstance_bts_2562_d026_00061_crop_881848.jpg" loading="lazy" class="lazyloaded" alt="Coralie Fargeat and Demi Moore on the set of 'The Substance'"></div><div class="captionBlock"><span class="title">Coralie Fargeat on making ‘The Substance’ her own way: “Everything had to be in excess”</span></div></a></li><li class="promotedStory"><a href="/features/emilia-perez-director-jacques-audiard-talks-musical-numbers-feeling-cramped-by-french-cinephilia/5199431.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/5/5/6/1437556_emilaperez_bts_7y7a6049_r_586467.jpg" loading="lazy" class="lazyloaded" alt="Karla Sofia Gascon with director Jacques Audiard on the set of 'Emilia Perez'"></div><div class="captionBlock"><span class="title">‘Emilia Pérez’ director Jacques Audiard talks musical numbers, feeling “cramped” by French cinephilia</span></div></a></li><li class="promotedStory"><a href="/news/silent-city-driver-leads-tallinn-2024-winners-palestinian-israeli-films-take-prizes/5199418.article" class="image"><div class="image"><img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/274x183/2/8/1/1437281_54160080071_e16e8b8239_k_897656.jpg" loading="lazy" class="lazyloaded" alt="54160080071_e16e8b8239_k"></div><div class="captionBlock"><span class="title">‘Silent City Driver’ leads Tallinn 2024 winners; Palestinian, Israeli films take prizes</span></div></a></li></ul></div></div></li><li data-navcode="6348" data-rootnavcode="6348"><a href="https://www.screendaily.com/home/stars-of-tomorrow"><span>Stars of Tomorrow</span></a></li><li data-navcode="5845" data-rootnavcode="5845" class="hasChildren"><a href="https://www.screendaily.com/subscribe" class="newWindow"><span>Subscribe</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="htmlBlock"><div><style type="text/css"> .desktopNavigation #subspromo {background:#fff; padding:20px;} .desktopNavigation #subspromo img {float:right; clear:right; display:block; margin-top:0px; width:450px;} .desktopNavigation #subspromo .subpromo {margin-bottom:20px; margin-left: 20px; padding-left: 0;} .desktopNavigation #subspromo .subpromo li { list-style:disc;} .desktopNavigation #subspromo p {margin-bottom:0} .desktopNavigation #subspromo .register {margin-top:22px;} @media only screen and (max-width: 1123px) { .desktopNavigation #subspromo img { max-width:200px; } } </style> <div id="subspromo" style="overflow:hidden;"> <img src="https://d1nslcd7m2225b.cloudfront.net/Pictures/450xAny/P/web/j/b/m/2021screenpackshot_967117.jpg" alt="screen packshot resized" /> <h3 id="">Subscribe to Screen International</h3> <ul class="subpromo"> <li>Monthly print editions</li> <li>Awards season weeklies</li> <li>Stars of Tomorrow and exclusive supplements</li> <li>Over 16 years of archived content</li> </ul> <a class="button" target="_blank" href="https://subs.screendaily.com/subscriptions">Subscribe Now</a> </div></div></li></ul></div></div></li><li class="more hide"><a href="#mobilemenu" data-menu-toggle-button="" aria-expanded="false"><span> More from<span class="assistive"> navigation items</span></span></a></li></ul></div></div><div class="desktopNavigationSpace"></div> </div> </header> <div class="ad leaderboard billboard showMenuPushed"> <!-- /21612928716/Screen/billboard --> <div class="mob-ad-75 tab-ad-250 dt-ad-250"> <div id='div-gpt-billboard'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-billboard'); }); </script> </div> </div> </div> <div id="wrapper_sleeve" data-menu-open-pushed> <div class="storyLayout standard"></div> <div class="headerWrapper"> <div class="container titleByline"> <div class="inner-sleeve"> <div class="storyPrimaryNav"><a href="https://www.screendaily.com/reviews">Reviews</a></div> <div class="story_title"> <h1>‘My Friend An Delie’: Tokyo Review</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.screendaily.com/wendy-ide/1100977.bio" rel="author">Wendy Ide</a></span><span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-10-29T16:19:00&quot;,&quot;format&quot;: &quot;D MMMM YYYY&quot;}">2024-10-29T16:19:00+00:00</span></p> </div> </div> </div> <div id="columns" class="container"> <div id="colwrapper" class="inner-sleeve"> <div id="colmain" role="main" class="restrictedcontent"> <div id="content"> <div id="content_sleeve"> <div class="contentWrapper"> <div class="storyContentWrapper"> <div class="pageOptions"> <ul> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.screendaily.com%2freviews%2fmy-friend-an-delie-tokyo-review%2f5198629.article&e=%e2%80%98My+Friend+An+Delie%e2%80%99%3a+Tokyo+Review" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=%e2%80%98My+Friend+An+Delie%e2%80%99%3a+Tokyo+Review&url=https%3a%2f%2fwww.screendaily.com%2freviews%2fmy-friend-an-delie-tokyo-review%2f5198629.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.screendaily.com%2freviews%2fmy-friend-an-delie-tokyo-review%2f5198629.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=%E2%80%98My Friend An Delie%E2%80%99: Tokyo Review&amp;body=https://www.screendaily.com/reviews/my-friend-an-delie-tokyo-review/5198629.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/5198629/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="standfirst"><p>Chinese actor Dong Zijian makes his directorial debut with this significant drama</p></div><div class="storytext"><div class="inline_image image_size_full" data-attachment="1435491" data-sequence="1"> <p class="picture"><img alt="My Friend An Delie" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/4/9/1/1435491_myfriendandelie_172240.jpg" sizes="(max-width: 1023px) 100vw, 780px" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/480xany/4/9/1/1435491_myfriendandelie_172240.jpg 480w,https://d1nslcd7m2225b.cloudfront.net/Pictures/600xany/4/9/1/1435491_myfriendandelie_172240.jpg 600w,https://d1nslcd7m2225b.cloudfront.net/Pictures/780xany/4/9/1/1435491_myfriendandelie_172240.jpg 780w" loading="eager" class="lazyloaded" width="1200" height="800"></p> <div class="inline_meta"><p class="inline_source"><cite>Source: Tokyo International Film Festival</cite></p><p class="inline_caption">‘My Friend An Delie’</p></div></div> <p><em>Dir: Dong Zijian. China. 2024. 111mins</em></p> <p>The death of a father opens a door to the past in this brooding drama from actor-turned-director Dong Zijian, who appeared in Jia Zhang-ke’s <em>Mountains May Depart</em> and <em>Ash Is Purest White</em>, and also takes the title role here.&nbsp;Travelling back to his hometown in northeastern China, Li Mo (Liu Haoran) spots a childhood friend, An Delie (Dong) – but An Delie claims not to recognise him. As the two men travel&nbsp;together through the snowbound wilderness, memories of their childhood friendship start to coalesce.&nbsp;Adapted from a novel by Shuang Xuetao, this is an accomplished first feature which, while it could handle tightening up in places, potently evokes the uncanny no man’s land of grief.</p> <blockquote> <p>&nbsp;A quality production across the board</p> </blockquote> <p><em>My Friend An Delie</em> shares a narrative device, if not the lightness of touch and humour, with Joanna Hogg’s <em>The Eternal Daughter</em>. But unlike Hogg’s single-location exploration of the painful processing of a death, Zijian’s picture relies heavily on flashbacks to the shared school days that link the two travellers. It’s a combination that feels a little unwieldy, with the school sequences a more conventional element that undermines the uneasy oddness of the present-day sequences, which unfold in an icily purgatorial backwater.</p> <p>Still, this is a quality production across the board – the handsome cinematography, by Pema Tseden collaborator Lu Songye, is a particular stand out. The film should be an eye-catching proposition going forward, both domestically and at further festivals.</p> <p>There’s a sense of disquiet to the film even before Li Mo embarks on his journey to reconnect with his past. A sinuous tracking shot shows him running in the evening, an eerie pink light in the night sky and the feeling of absolute stillness that comes before a storm. The score – another quality element – combines a few questioning woodwind notes with something inexorable, almost mechanical, providing a rhythm as Li Mo jogs. Very little happens in the scene, and yet there’s a clear skin-prickling sensation of something amiss.</p> <p>The darkness seeps into another key sequence, the night flight back to Shenyang. The cabin lights are dimmed and the faces of the two characters are framed in velvety shadows. Li Mo approaches An Delie, but not only does his former friend not recognise him, he starts to cry. They finally establish that they are travelling to the same funeral, that of Li Mo’s father. “I have a friend called Li Mo,” says An Delie, “But you are not him.” When a snowstorm closes their destination airport and they are diverted to an alternative, the two men decide to travel together in a beaten up rental vehicle into the soft, sad blue light of the winter.</p> <p>The flashbacks are a striking tonal contrast, with a look that feels almost nostalgic in tone. There’s a honeyed warmth to the colour palette and – as the friendship between the two schoolboys is forged over a shared love of football – a weakness for generic childhood idyll signifiers like shots of frolicking kids in fields of swishing grasses. There are, however, also hints of shared suffering that unites the two children. Li Mo’s browbeaten and disappointed mother leaves her husband and son to start a new life. And An Delie lives with a father he despises, and has a mottled accumulation of bruises to show for it.</p> <p>The more that we see of the past, the more we begin to understand how much Li Mo has blocked from his memory. And seeds of doubt about the present day scenes start to take root.&nbsp;</p> <p>A late night meal in deserted hotel restaurant is framed with shrine-like symmetry. For a brief moment, it seems that An Delie remembers his friend after all, as well as other details from their childhood. “You remember so much from back then. I’ve forgotten most of them,” says Li Mo over shots of spirits. “That’s good,” says An Delie, his face once again framed in darkness.”Forgetting is good. Forget everything.”</p> <div class="factfile"> <p>Production company: Huace Pictures, Nineteen Pictures</p> <p>International sales: Rediance&nbsp;<a id="LPlnk125543" href="mailto:info@rediancefilms.com" data-linkindex="0" data-ogsc="">info@rediancefilms.com</a></p> <p>Producer: Wan Juan</p> <p>Screenplay: Dong Zijian, Zhang Weizhong, from the novel by&nbsp;Shuang Xuetao</p> <p>Cinematography: Lu Songye</p> <p>Production design: Liu Qiang</p> <p>Editing: Chang Sukping</p> <p>Music: Hank Lee</p> <p>Main cast: Liu Haoran, Dong Zijian, Chi Xingkai, Han Haolin, Yin Tao, Dong Baoshi</p> </div></div><div id="storytext-end" class="storytext-end"></div> </div> </div> <div class="htmlContent"> </div> </div> <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/asia/34.subject">Asia</a></li><li><a href="/china/53.subject">China</a></li><li><a href="/festivals/9.subject">Festivals</a></li><li><a href="/reviews/11068.subject">Reviews</a></li><li><a href="/tokyo/11908.subject">Tokyo</a></li></ul></div></div> <div class="pageOptions"> <ul> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.screendaily.com%2freviews%2fmy-friend-an-delie-tokyo-review%2f5198629.article&e=%e2%80%98My+Friend+An+Delie%e2%80%99%3a+Tokyo+Review" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=%e2%80%98My+Friend+An+Delie%e2%80%99%3a+Tokyo+Review&url=https%3a%2f%2fwww.screendaily.com%2freviews%2fmy-friend-an-delie-tokyo-review%2f5198629.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.screendaily.com%2freviews%2fmy-friend-an-delie-tokyo-review%2f5198629.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=%E2%80%98My Friend An Delie%E2%80%99: Tokyo Review&amp;body=https://www.screendaily.com/reviews/my-friend-an-delie-tokyo-review/5198629.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/5198629/bookmark"> </li> </ul> </div> </div> </div> </div> </div> <div id="rightcolumn" class="fixedrightcolumn rightcolumn restrictedcontent"> <div id="rightcolumn_sleeve"> <!-- BELOW NOT SUPPORT Instructions for implementation depending on right or bottom. If this in the bottom position then we might need to wrap the code with ` <div class="container"> <div class="inner-sleeve"> // taxanomy-list to go here </div> </div> ` --> <div data-mpu1-reflow></div> <div id="rhcreflow-tabletlandscape"></div> <div id="rhcreflow-desktop" class="rhc-mostpopular-desktop"> </div> <div id="rhcreflow-extra"></div> <div id="rhcreflow-extra-end" class="rhcreflow-extra-end"></div> </div> </div> </div> </div> <div class="container bottomAdContainer restrictedcontent"> <div class="inner-sleeve"> <div class="bottomAd"> <div style="margin-left:auto; margin-right:auto; text-align:center;padding-bottom:20px"> <div class="sleeve"> <!-- /21612928716/Screen/billboard --> <div id='div-gpt-sectiondivide-one'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-sectiondivide-one'); }); </script> </div> </div> </div> </div> </div> </div> <div class="container relatedVideos restrictedcontent"> <div class="inner-sleeve"> <div id="videosreflow-tabletportrait"></div> <div id="videosreflow-mobile"></div> </div> </div> <div class="container relatedArticles" id="relatedArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>Related articles</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.screendaily.com/news/2024-film-festivals-and-markets-calendar-latest-dates/5188083.article" class="image"> <img alt="film fests 2024" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/1/1/6/1411116_filmfests2024_697048.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/1/1/6/1411116_filmfests2024_697048.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/1/1/6/1411116_filmfests2024_697048.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/1/1/6/1411116_filmfests2024_697048.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/1/1/6/1411116_filmfests2024_697048.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/news/1.type" class="storyType">News</a> <h3> <a href="https://www.screendaily.com/news/2024-film-festivals-and-markets-calendar-latest-dates/5188083.article">2024 film festivals and markets calendar: latest dates</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-27T12:05:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-27T12:05:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/ben-dalton/1101321.bio">Ben Dalton</a></span> </p> <p>Bookmark this page to keep track of all the latest festival dates.</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/moana-2-review/5199480.article" class="image"> <img alt="Moana 2" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/3/9/5/1437395_moana2b_545965.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/3/9/5/1437395_moana2b_545965.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/3/9/5/1437395_moana2b_545965.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/3/9/5/1437395_moana2b_545965.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/3/9/5/1437395_moana2b_545965.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/moana-2-review/5199480.article">‘Moana 2’: Review</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-26T17:00:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-26T17:00:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/tim-grierson-senior-us-critic/1100130.bio">Tim Grierson Senior US Critic</a></span> </p> <p>Auli‘i Cravalho and Dwayne Johnson return for Disney’s strained Pacific Islands sequel</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/news/michael-mann-eva-longoria-andrew-garfield-join-red-sea-speaker-programme/5199478.article" class="image"> <img alt="Andrew Garfield Eva Longoria Michael Mann" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/4/1/1437441_andrewgarfieldevalongoriamichaelmann_149926.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/4/1/1437441_andrewgarfieldevalongoriamichaelmann_149926.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/4/4/1/1437441_andrewgarfieldevalongoriamichaelmann_149926.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/4/4/1/1437441_andrewgarfieldevalongoriamichaelmann_149926.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/4/4/1/1437441_andrewgarfieldevalongoriamichaelmann_149926.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/news/1.type" class="storyType">News</a> <h3> <a href="https://www.screendaily.com/news/michael-mann-eva-longoria-andrew-garfield-join-red-sea-speaker-programme/5199478.article">Michael Mann, Eva Longoria, Andrew Garfield join Red Sea speaker programme</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-26T14:06:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-26T14:06:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/tim-dams/1103.bio">Tim Dams</a></span> </p> <p>Festival’s speaker line-up also includes stars from Egyptian, Turkish and Indian cinema.</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.screendaily.com/5198629/loadmore?code=ARTICLES" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <div class="ad"> <!-- /21612928716/Screen/AdvertC --> <div id='div-gpt-AdvertC'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-AdvertC'); }); </script> </div> </div> <div class="newsletterSignup" data-ajax-load-content="" data-ajax-async="true" data-cache-bust="true" data-url="/newslettersignup?wid=4&amp;navcode=5747"> <header><![CDATA[Newsletters for you]]></header> <intro><![CDATA[Click to add new email alerts]]></intro> <newsletter><![CDATA[UKEURODAILYFESTDAILIES]]></newsletter> <newsletter><![CDATA[USDAILY]]></newsletter> <newsletter><![CDATA[BREAKINGNEWS]]></newsletter> <newsletter><![CDATA[AWARDSCOUNTDOWN]]></newsletter> <newsletter><![CDATA[ASIAPACIFICWEEKLY]]></newsletter> <senttotext><![CDATA[Sent to:]]></senttotext> <editlinktext><![CDATA[Add now]]></editlinktext> </div> </div> </div> </div> </div> </div> <div class="container commentContainer restrictedcontent"> <div class="inner-sleeve"> <div class=" extras"> <div class="extrasStory"> <div class="contentWrapper"></div> </div></div> </div> </div> <div class="container relatedArticles" id="moreArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>More from Reviews</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.screendaily.com/reviews/postmarks-cairo-review/5199487.article" class="image"> <img alt="Postmarks" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/1/2/1437412_postmarks_494795.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/4/1/2/1437412_postmarks_494795.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/4/1/2/1437412_postmarks_494795.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/4/1/2/1437412_postmarks_494795.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/4/1/2/1437412_postmarks_494795.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/postmarks-cairo-review/5199487.article">‘Postmarks’: Cairo Review</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-26T12:59:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-26T12:59:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/allan-hunter/53.bio">Allan Hunter</a></span> </p> <p>Low-key charmer tracks an unlikely romance set in northeast Russia, ‘on the edge of the world’</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/silent-city-driver-tallinn-review/5199412.article" class="image"> <img alt="Silent City Driver" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/2/7/3/1437273_silentcitydriver_410472.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/2/7/3/1437273_silentcitydriver_410472.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/2/7/3/1437273_silentcitydriver_410472.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/2/7/3/1437273_silentcitydriver_410472.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/2/7/3/1437273_silentcitydriver_410472.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/silent-city-driver-tallinn-review/5199412.article">‘Silent City Driver’: Tallinn Review</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-25T08:50:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-25T08:50:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/wendy-ide/1100977.bio">Wendy Ide</a></span> </p> <p>Tallinn winner Sengedorj Janchivdor’s powerful drama paces the streets of Ulaanbataar at night</p> </div> </li> <li class=""> <a href="https://www.screendaily.com/reviews/trains-idfa-review/5199384.article" class="image"> <img alt="Trains" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/1/9/4/1437194_trains_447450_crop.jpg" srcset="https://d1nslcd7m2225b.cloudfront.net/Pictures/100x67/1/9/4/1437194_trains_447450_crop.jpg 100w,https://d1nslcd7m2225b.cloudfront.net/Pictures/172x115/1/9/4/1437194_trains_447450_crop.jpg 172w,https://d1nslcd7m2225b.cloudfront.net/Pictures/220x148/1/9/4/1437194_trains_447450_crop.jpg 220w,https://d1nslcd7m2225b.cloudfront.net/Pictures/280x188/1/9/4/1437194_trains_447450_crop.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.screendaily.com/reviews/2.type" class="storyType">Reviews</a> <h3> <a href="https://www.screendaily.com/reviews/trains-idfa-review/5199384.article">‘Trains’: IDFA Review</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{&quot;publishdate&quot;: &quot;2024-11-22T09:43:00Z&quot;,&quot;format&quot;: &quot;D MMMM YYYY HH:mm&quot;}">2024-11-22T09:43:00Z</span> <span class="author">By <a rel="author" href="https://www.screendaily.com/lee-marshall/244.bio">Lee Marshall</a></span> </p> <p>IDFA top prize-winner is a timeless train trip through black-and-white archive footage</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.screendaily.com/5198629/loadmore?code=MORE" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <div class="ad"> <!-- /21612928716/Screen/AdvertE --> <div id='div-gpt-AdvertE'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-AdvertE'); }); </script> </div> </div> </div> </div> </div> </div> </div> <div class="container"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></div> <div class="container storyBottomMostPopularContainer"> <div class="inner-sleeve"> <div class="extrasStory"> <div class="contentWrapper"> <div class="tab-widget-10" data-ajax-load-content="" data-url="/ajax/most?bottom=1&storypage=1"></div> </div> </div> <div class="fixedrightcolumn rightcolumn"> </div> </div> </div> <div class="footer_ad"> <div class="footer_ad_strip"> <div class="ad"> </div> </div> </div> <div id="footer" class="footer" role="contentinfo"> <div class="container footerTopNavPageText"> <div class="inner-sleeve"> <div class="nav topNav"><ul><li class="first"><a href="https://www.screendaily.com/advertise-with-screen">Advertise with Screen</a></li><li class=""><a href="https://www.screendaily.com/contact-us">Contact us</a></li><li class=""><a href="https://www.screendaily.com/az-subjects">A - Z of Subjects</a></li><li class="last"><a href="https://www.screendaily.com/46017.more">Digital Editions</a></li></ul></div><div class="footerSocial"> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook.com/ScreenDaily/">Connect with us on Facebook</a> </li> <li class="footerSocialTwitter"> <a href="https://twitter.com/screendaily">Connect with us on Twitter</a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/2298039">Connect with us on Linked in</a> </li><li class="footerSocialYoutube"> <a href="https://www.youtube.com/channel/UCKV7nCATTd4LFbD93ScBUoA">Connect with us on YouTube</a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/screendaily/?hl=en">Connect with us on Instagram></a> </li> </ul> </div> <!-- /21612928716/Screen/btm-bb --> <!--<div style="width: 970px; height:250px; margin-left:auto; margin-right:auto; text-align:center; padding-top:10px; margin-bottom:20px"> <div class="sleeve"> <div id='div-gpt-ad-bottom-billboard' style='min-width: 970px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-bottom-billboard'); }); </script> </div> </div> </div>--> <div style="clear:both"></div> <div class="footerPromo"> <div> <h3>Subscribe to Screen International</h3> <p>Screen International is the essential resource for the international film industry. Subscribe now for monthly editions, awards season weeklies, access to the Screen International archive and supplements including Stars of Tomorrow and World of Locations.</p> <a href="https://subs.screendaily.com/subscriptions" class="button" target="_blank" id="footer_promo_subscribe_find_more">Find out more</a> </div> <div> <h3>Events</h3> <ul> <li><a href="http://screenawards.co.uk/" rel="nofollow" target="_blank">Screen Awards</a></li> <li><a href="https://www.mediaproductionshow.com/?utm_source=Screen&utm_medium=website&utm_campaign=Awareness" rel="nofollow" target="_blank">Media Production &amp; Technology Show</a></li> </ul> </div> </div> </div> </div> <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="http://www.mb-insight.com/mbi-website-terms-of-use/">Terms and conditions</a></li><li><a href="http://www.globaldata.com/privacy-policy">Privacy & Cookie Policy</a></li><li class="label"><a href="http://www.mb-insight.com/">Copyright © 2023 Media Business Insight Limited</a></li><li class="last"><a href="https://www.screendaily.com/subscription-faqs">Subscription FAQs</a></li></ul></div></div> <div class="bottom"> <div class="container footerBottomNavPageText"> <div class="inner-sleeve"> <p class="webvision">Site powered by <a href="https://www.abacusemedia.com/webvisioncloud">Webvision Cloud</a></p> </div> </div> </div> </div> </div> </div> <script src="/Magazine/core.js?p=7513768137537033" defer></script> <!-- REMOVE CLASS OF `popup` TO FORGOTTEN PASSWORD IN POPUP --> <script> $(window).on('abacus:popuploaded', function() { $('.abacusPopup .forgottenpassword a').removeClass('popup'); }); </script> <!-- AD Renewals Script - Start --> <script type="text/javascript"> (function(d, s) { var config = { baseUrl:'account.screendaily.com', partyId: 0 }; var cacheDate = new Date(); cacheDate.setHours(0,0,0,0); var _abacus_ = d.createElement('script'); _abacus_.type = 'text/javascript'; _abacus_.async = true; _abacus_.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + config.baseUrl + '/templatejs?partyId=' + config.partyId + '&cacheDate=' + cacheDate.getTime(); var sc = d.getElementsByTagName(s)[0]; sc.parentNode.insertBefore(_abacus_, sc); })(document, 'script'); </script> <!-- AD Renewals Script - End --> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10