$(function(){"use strict;" const sessionKey="RelatedPaintings";$(".m-related-paintings.with-see-more-loader-form").each(function(idx){var component=$(this);var pageSize=component.data("pageSize");var componentKey=component.data("componentKey");componentKey="c_"+componentKey+"_"+idx;component.data("componentKey",componentKey);var sessionObj=ng.util.sessionGet(sessionKey)||{};var visibleItems=sessionObj[componentKey]||pageSize;component.find('.image-item').each(function(idx){if(idx>=visibleItems){$(this).hide();}});UpdateIndicators(component);component.find('.see-more-loader-form button').on("click",function(){SeeMoreRelatedPaintings(component,pageSize);});component.find('.view-all-link').on("click",function(){if(!($(this).hasClass("disabled"))){SeeAllRelatedPaintings(component);}});});function SeeMoreRelatedPaintings(component,pageSize){component.find('.image-item:not(:visible)').each(function(idx){if(idx100){visiblePercent=100;} component.find('.x-count').html(visibleItems);component.find('.showing-x-of-y-indicator .x-count-line').css("width",visiblePercent+"%");if(visibleItems===totalCount){component.find(".see-more-loader-form button").prop("disabled",true);component.find(".view-all-link").addClass("disabled");} else{component.find(".see-more-loader-form button").prop("disabled",false);} if(Cookiebot.consent.preferences){var sessionObj=ng.util.sessionGet(sessionKey)||{};var componentKey=component.data("componentKey");sessionObj[componentKey]=visibleItems;ng.util.sessionSet(sessionKey,sessionObj);}}});;; (function(){"use strict";var DEBUG=false;var infoParameterName="ngInfo";var infoCookieName="ngInfo";const defaultCurrency="GBP";$(function(){var $products=$(".dl-product").not(".dl-duplicate");if($products.length>0){var products=[];$products.each(function(){var $product=$(this);var product={name:$product.data("dlName"),id:$product.data("dlName"),category:$product.data("dlCategory"),variant:$product.data("dlVariant"),list:getListName($product)};products.push(product);});var dataLayerItem={event:"productImpression",ecommerce:{impressions:products}};pushToDataLayer(dataLayerItem);} var $product=$(".dl-product-detail").first();if($product.length===1){var product={name:$product.data("dlName"),id:$product.data("dlName"),category:$product.data("dlCategory"),variant:$product.data("dlVariant"),price:parseFloat($product.data("dlPrice"))};var dataLayerItem={event:"productDetail",ecommerce:{detail:{products:[product]}}};pushToDataLayer(dataLayerItem);} if(ng.util.urlContains("/visiting/plan-your-visit/general-admission")){var dataLayerItem={event:"productDetail",ecommerce:{detail:{products:[{name:"Gallery entry",id:"Gallery entry",category:"Gallery entry",variant:"Gallery entry",price:"0"}]}}};pushToDataLayer(dataLayerItem);} var $promotions=$(".c-angle-cut, .c-browse-events-panel");if($promotions.length>0){var promotions=[];$promotions.each(function(idx){var $promotion=$(this);var name=$promotion.hasClass("c-angle-cut")?$promotion.find(".title").text():"Browse all events";var promotion={name:name,id:name,creative:$promotion.hasClass("c-angle-cut")?"Angle cut":"Browse all events",position:(idx+1).toString()};promotions.push(promotion);});var dataLayerItem={event:"promotionView",ecommerce:{promoView:{promotions:promotions}}};pushToDataLayer(dataLayerItem);} $(document).on("click",".dl-purchase-link, .btp-membership-button, .btp-tickets-button, .c-banner-body-side-panel .btn-next",function(){var url=$(this).attr("href");var id=$(this).attr("id");var funnel=$(this).hasClass("btp-membership-button")?"member":$(this).hasClass("btp-tickets-button")?"guest":undefined;var $product=$(this).closest(".dl-product, .dl-product-detail");if($product.length===0){$product=$(document).find(".dl-product-detail").first();} if(url&&$product.length){url=addDataLayerInfoToUrl(url,$product.data("dlName"),$product.data("dlName"),$product.data("dlCategory"),$product.data("dlVariant"),$product.data("dlPrice"),funnel);}else if(url&&url.match(/galleryentry/i)){url=addDataLayerInfoToUrl(url,"General admission","General admission","Admissions","General admission","0.00",funnel);} $(this).attr("href",url);});$(".event-listing .label").has("label[for='IncludePaid_main']").on("click",function(){var dataLayerItem={"event":"trackEvent","eventDetails.category":"Event Filter","eventDetails.action":"Price","eventDetails.label":"Paid"};pushToDataLayer(dataLayerItem);});$(".event-listing .label").has("label[for='IncludeFree_main']").on("click",function(){var dataLayerItem={"event":"trackEvent","eventDetails.category":"Event Filter","eventDetails.action":"Price","eventDetails.label":"Free"};pushToDataLayer(dataLayerItem);});$(".event-listing .category-picker .label").on("click",function(){var category=$(this).closest(".category-picker").find("input").val();var dataLayerItem={"event":"trackEvent","eventDetails.category":"Event Filter","eventDetails.action":"Type","eventDetails.label":category};pushToDataLayer(dataLayerItem);});$(".event-listing .audience-filter .label").on("click",function(){var $input=$(this).closest(".audience-filter").find("input");var audience=$input.attr("id")==="IsAccessible_main"?"Access":$input.val();var dataLayerItem={"event":"trackEvent","eventDetails.category":"Event Filter","eventDetails.action":"Audience","eventDetails.label":audience};pushToDataLayer(dataLayerItem);});$(".dl-product-link").on("click",function(){var $product=$(this).closest(".dl-product");var product={name:$product.data("dlName"),id:$product.data("dlName"),category:$product.data("dlCategory"),variant:$product.data("dlVariant")};var dataLayerItem={event:"productClick",ecommerce:{click:{actionField:{list:getListName($product)},products:[product]}}};pushToDataLayer(dataLayerItem);});$(".exhibition-listing .label").has("label[for='showPaid']").on("click",function(){var dataLayerItem={"event":"trackEvent","eventDetails.category":"Exhibition Filter","eventDetails.action":"Price","eventDetails.label":"Paid"};pushToDataLayer(dataLayerItem);});$(".exhibition-listing .label").has("label[for='showFree']").on("click",function(){var dataLayerItem={"event":"trackEvent","eventDetails.category":"Exhibition Filter","eventDetails.action":"Price","eventDetails.label":"Free"};pushToDataLayer(dataLayerItem);});$("#subscribe-form .btn").on("click",function(){var userID=ng.util.getCookie("ngSessUid");var dataLayerItem={"event":"trackEvent","eventDetails.category":"Form","eventDetails.action":"Newsletter Sign-up","eventDetails.label":userID};pushToDataLayer(dataLayerItem);});$(".dc-image-carousel-with-expand .shift-right").on("click",function(){var slideNumber=$(this).closest("div").find(".displayed-object-idx").text();var dataLayerItem={"event":"trackEvent","eventDetails.category":"Image Carousel","eventDetails.label":slideNumber};pushToDataLayer(dataLayerItem);});$(".c-angle-cut a, .c-browse-events-panel a").on("click",function(){var $promotion=$(this).closest(".c-angle-cut, .c-browse-events-panel");var $promotions=$(".c-angle-cut, .c-browse-events-panel");var idx=0;$promotions.each(function(i){if($(this)[0]===$promotion[0]){idx=i;}}) var promotion={};promotion.name=promotion.id=$promotion.hasClass("c-angle-cut")?$promotion.find(".title").text():"Browse all events";promotion.creative=$promotion.hasClass("c-angle-cut")?"Angle cut":"Browse all events";promotion.position=(idx+1).toString();var dataLayerItem={event:"promotionClick",ecommerce:{promoClick:{promotions:[promotion]}}};pushToDataLayer(dataLayerItem);});$("#contact-preferences-form .btn-primary").on("click",function(){var userID=ng.util.getCookie("ngSessUid");var dataLayerItem={"event":"trackEvent","eventDetails.category":"Account","eventDetails.action":"Update Account","eventDetails.label":userID};pushToDataLayer(dataLayerItem);});});function getListName($obj){var listName;if($(".home-page .c-events-carousel").find($obj).length>0){listName="Home carousel";}else if($(".exhibition-page .c-events-carousel").find($obj).length>0){listName="Related events";}else if($(".c-events-carousel").find($obj).length>0){listName="Events carousel";}else if($(".exhibition-listing").find($obj).length>0){listName="Exhibitions";}else if($(".event-listing").find($obj).length>0){listName="Events";}else if($(".event-page.festival-variant").find($obj).length>0){listName="Festival events";}else if($(".m-membership-promo-block").find($obj).length>0){listName="Membership";}else if($(".c-whats-on-panel").find($obj).length>0){listName="What's on panel";}else if($(".c-exhibition-listing").find($obj).length>0){listName="Exhibition listing component";}else if($(".c-promoted-event").find($obj).length>0){listName="Promoted event";}else if(ng.util.urlContains("/membership/on-demand")){listName="On-demand films";}else if($obj.closest(".dl-list").length>0){listName=$obj.closest(".dl-list").data("dlListName");} return listName;} function addDataLayerInfoToUrl(url,name,id,category,variant,price,funnel){var info={product:{name:name,id:id,category:category,variant:variant,price:price},funnel:funnel};var jsonInfo=JSON.stringify(info);url=ng.util.setUrlParam(url,infoParameterName,jsonInfo);saveDataLayerInfoToCookie(jsonInfo);return url;} function saveDataLayerInfoToCookie(jsonInfo){var domain=window.location.host;if(domain.match("/nationalgallery\.org\.uk/")){domain=".nationalgallery.org.uk";}else{domain=null;} ng.util.setCookie(infoCookieName,encodeURIComponent(jsonInfo),0,"/",domain);} function pushToDataLayer(item){var dataLayer=window.dataLayer=window.dataLayer||[];dataLayer.push(item);consoleLog(item);} function consoleLog(item){if(DEBUG) console.log(JSON.stringify(item,null,2));} function getItemsFromEvent($elem){let items=[];let $itemElems=$elem.find("[data-dl-item-name], [data-dl-item-id]") $itemElems.each(function(){let $itemElem=$(this);let item={item_id:$itemElem.data("dlItemId"),item_name:$itemElem.data("dlItemName"),index:Number($itemElem.data("dlIndex")),item_category:$itemElem.data("dlItemCategory"),item_category2:$itemElem.data("dlItemCategory2"),item_category3:$itemElem.data("dlItemCategory3"),price:Number($itemElem.data("dlPrice")),quantity:Number($itemElem.data("dlQuantity")),};items.push(item);});return items;} function pushEcommerceEventToDataLayer(event){pushToDataLayer({ecommerce:null});pushToDataLayer(event);}})();;;