PageSourceSearch

https://www.drunkelephant.com/on/demandware.static/Sites-drunkelep…/js/googletagmanagerpageload.js

js drunkelephant.com collected 2026-09-24 18:31:11 UTC 51,297 bytes, 1,155 lines download raw bytes

1'use strict';
2var gtCurPage = window.User.clickStream;
3var userid = "";
4var prodholder = new Array();
5var customerNo = window.User.customerNo;
6if (window.User.isCustomerAuthenticated != false || window.User.isRegistered == true) {
7	userid = window.User.id;
8}
9var emailID = window.emailID;
10var emailID_SHA1 = window.emailID_SHA1;
11
12function filterArrDt(arr) {
13        var finishedArr = new Array();
14
15        arr.forEach(function (o) {
16           if (typeof o === "object") {
17               var finishedObj = new Object();
18
19               Object.keys(o).forEach(function (k) {
20                   if (!o[k]) { return; }
21                   finishedObj[k] = o[k];
22               });
23
24               if (Object.keys(finishedObj).length > 0) {
25                   finishedArr.push(finishedObj);
26               }
27           } else if (!!o) {
28               finishedArr.push(o);
29           }
30        });
31
32        return finishedArr;
33}
34
35function filterDt(o) {
36        var finishedObj = {};
37
38
39        Object.keys(o).forEach(function (k) {
40           if (!o[k]) { return; }
41           else if (o[k] instanceof Array) {
42              finishedObj[k] = filterArrDt(o[k]);
43           } else {
44              finishedObj[k] = o[k];
45           }
46        }, this);
47
48        return finishedObj;
49}
50function pushDtLayer(o) {
51    window.dataLayer = window.dataLayer || [];
52    window.dataLayer.push(filterDt(o));
53    //alert(JSON.stringify(util.filterObj(o)));
54}
55function DtgetPageCategory() {
56    //return window.pageContext.title || "Content"; ###### this throws product name
57    if (searchItems.error == "Page Not Found") {
58        return "Error Page";
59    }
60    switch(gtCurPage)   {
61    case 'product-showincategory':
62    case 'product-show':
63        return "Product Page";
64    case 'search-show':
65    case 'search-getsuggestions':
66        if(!searchItems.rs55){
67            return "No Search Results Page";
68        }else{
69        	if(typeof searchItems.search != undefined){
70        		if(searchItems.search){
71        			return "Site Search";
72        		}else if (window.location.href.indexOf("store-locator") > -1) {
73                    return "Store Locator";
74                }else if (window.User.isContent) {
75                    return 'Content';
76                }else{
77        			return "Category Page";
78        		}
79        	}else{
80        		return "Category Page";
81        	}
82        }
83    case 'search-showcontent':
84    	return "Category Page";
85    case 'home-show':
86    case 'default-start':
87        return "Homepage";
88    case 'cart-show':
89    case 'cart-addtowishlist':
90        return "Cart Page";
91    case 'customerservice-contactus':
92        return "Contact Customer Service";
93    case 'customerservice-concierge':
94        return "Ask An Expert";
95    case 'account-startregister':
96    case 'beautystation-show':
97    case 'account-editprofile' :
98    case 'address-list':
99    case 'paymentinstruments-list':
100    case 'wishlist-showlists':
101    case 'wishlist-show':
102    case 'beautystation-ordersandreplenishments':
103    case 'orderreplenishment-show':
104    case 'beautystation-configurationpreferences':
105    case 'beautystation-shippingbilling': 
106        return "My Account";
107    case 'login-show':
108        return "Login Page";
109    case 'coshipping-start':
110    case 'coshipping-singleshipping':
111    case 'cobilling-start':
112    case 'cobilling-billing':
113    case 'cocustomer-start':
114    case 'cosinglepagecheckout-start':
115        return "Checkout";
116    case 'giftcert-purchase':
117        return "Gift Card";
118    case 'cocustomer-loginform':
119        return "Customer Login";
120    case 'login-checkorder':
121        return "Check Your Order";
122    case 'search-brandify':
123        return "Store Locator";
124    case 'cosummary-submit':
125        return "Checkout";
126    case 'page-show':
127        var pageurl = window.location.href;
128        if(pageurl.indexOf("customer-service.html") > 0){
129            return "Customer Service";
130        }else if(pageurl.indexOf("contact-us.html") > 0){
131            return "Ask a Question";
132        }else if(pageurl.indexOf("faqs.html") > 0){
133            return "FAQ";
134        }else if(pageurl.indexOf("concierge-form.html") > 0){
135            return "Ask An Expert";
136        }else if(pageurl.indexOf("replenishment.html") > 0){
137            return "Replenishment";
138        }else if(pageurl.indexOf("privacy.html") > 0){
139            return "Privacy Policy";
140        }else if(pageurl.indexOf("terms.html") > 0){
141            return "Terms and Condition";
142        }else if(pageurl.indexOf("returns-and-exchanges.html") > 0){
143            return "Returns and Exchange";
144        }else if(pageurl.indexOf("staticcountryselect.html") > 0){
145            return "Select Country";
146        }else{
147            var pagecontext = "${pageContext.title}";
148            if(pagecontext == "Consultations"){
149                return "Consultation Tool";
150            }else{
151                return "Content";
152            }
153        }
154    case 'customerservice-submit':
155        return "Ask An Expert";
156    case 'home-errornotfound':
157        return "Error Page";
158    case 'login-loginform':
159        return "Login Page";
160    case 'gatedlandingpage-show':
161        return "Gated Landing Page";
162    case 'compare-show':
163        return 'Compare Tool Page';
164    case 'cart-submitform':
165        return 'Cart Page';
166    default:
167        return "Content";
168    }
169}
170// Specific for checkout and cart page only
171function CouponSubCategory(){
172    switch(gtCurPage){
173    case 'cart-show':
174        return "Cart"
175    case 'coshipping-start':
176        return "Shipping"
177    case 'coshipping-singleshipping':
178    case 'cobilling-removegiftcertificate':
179    case 'cobilling-start':
180        return "Payment"
181    case 'cobilling-billing':
182        if(basketConfirmation != null){
183            if(basketConfirmation.checkoutErrorMessage){
184                return "Payment"
185            }else{
186                return "Review"
187            }
188        }else{
189            return "Review"
190        }
191    case 'cosummary-submit':
192        if(typeof basketConfirmation != "undefined" && basketConfirmation != null){
193            if(basketConfirmation.checkoutErrorMessage){
194                return "Review";
195            }
196        }else{
197            return "Order Confirmation";
198        }
199
200        break;
201    case 'cocustomer-start':
202        return "Checkout Login";
203    case 'cosinglepagecheckout-start':
204        let isCheckoutStep = document.querySelectorAll('.checkout-progress-container .step.active');
205        return isCheckoutStep.length ? "Review" : "Shipping";
206    case 'account-editprofile' :
207        return "Profile"
208    case 'beautystation-shippingbilling':
209        return "Address Book"
210    case 'paymentinstruments-list':
211        return "Payment Methods"
212    case 'wishlist-showlists':
213    case "wishlist-show":
214        return "Wishlist"
215    case 'beautystation-ordersandreplenishments':
216        return "Order History"
217    case 'orderreplenishment-show':
218        return "Replenishment"
219    case 'account-startregister':
220        return "Create Account"
221    case 'tutorial-show':
222        return "Tutorial Page"
223    default:
224        break;
225    }
226}
227
228function DtgetPageSubcategory() {
229    return window.pageContext ? window.pageContext.title : 'Content';
230}
231function Dtgethashmap(paramName) {
232    var output = "";
233
234    var hashParams = window.location.hash.split("&");
235    for (var i = 0; i < hashParams.length; i++) {
236        if (hashParams[i].indexOf(paramName) > - 1) {
237            output = hashParams[i].split("=")[1];
238        }
239    }
240
241    return output;
242}
243function DtgetLanguage() {
244    if (window.location.href.indexOf("zh.shiseido") >= 0) {
245        return "Chinese";
246    } else if (window.location.href.indexOf("es.shiseido") >= 0) {
247        return "Spanish";
248    } else {
249        return "English";
250    }
251}
252function DtisMobile() {
253    return $(window).width() <= 640;
254}
255function DtgetPageError() {
256    var $errorMsg = $(".error-form");
257    if ($errorMsg.length === 0) {
258        return "";
259    }
260
261    return $errorMsg.html().trim();
262}
263function Dtgetsrule() {
264    var str = "";
265    var params = "";
266    if(window.location.href.split("?").length > 1){
267        var urlparam = window.location.href.split("?")[1];
268        if(urlparam.indexOf("&") > -1){
269            params = urlparam.split("&");
270        }else{
271            params = urlparam;
272        }
273        var length = params.length;
274        var b = length / 2;
275
276        for(var i =0;i<b;i++){
277            if(params[i].indexOf("srule") > -1){
278             str = params[i].split("=")[1];
279            }
280        }
281    }
282    return str;
283}
284//Specific for PDP
285function DtgetProductCategory() {
286    return $('.de-breadcrumb').find('li:eq(1)').text().trim();
287}
288//Specific for PDP
289function DtgetProductsubCategory() {
290    return $('.de-breadcrumb').find('li:eq(2)').text().trim();
291}
292// Specific for PDP
293function DtgetProductsubsubCategory() {
294    return $('.de-breadcrumb').find('li:eq(3)').text().trim();
295}
296function Dtgetdropdown() {
297    var str = "";
298    if(window.location.href.split("?").length > 1){
299        var urlparam;
300        if(window.location.href.split("?")[1].indexOf("&")>-1){
301            urlparam = window.location.href.split("?")[1].split("&");
302            var length = urlparam.length;
303            var prefnval,prefnkey,prefvval,prefvkey;
304            for(var i =0;i<length;i++){
305                var prefn = urlparam[i].indexOf("prefn");
306                if(prefn > -1){
307                  prefnkey = urlparam[i].split("=")[0];
308                  prefnval = urlparam[i].split("=")[1];
309                  console.log(prefnkey);
310                  var num = prefnkey.charAt(5);
311                  for(var a =0;a<length;a++){
312                    var prefv = urlparam[a].indexOf("prefv");
313                    prefvkey = urlparam[a].split("=")[0];
314                    if(prefvkey == "prefv"+num){
315                       prefvval = urlparam[a].split("=")[1];
316                       str += "[" + prefnval  + ":" + prefvval  + "]";
317                    }
318                  }
319                }
320            }
321        }
322    }
323    return str;
324}
325
326function listType(){
327    return DtgetProductCategory() == "Search Results" ? "Search Results List" : "Product Category List";
328}
329function listName(){
330    return DtgetProductCategory() == "Search Results" ? "Search" : DtgetProductCategory();
331}
332//Specific for PDP
333function DtgetProductBrand() {
334    return "Drunk Elephant"; //$(".product-detail .product-brand").text();
335}
336function getCookie(name)
337{
338  var re = new RegExp(name + "=([^;]+)");
339  var value = re.exec(document.cookie);
340  return (value != null) ? unescape(value[1]) : null;
341}
342function DtgetCountry() {
343  var country = document.getElementById('websiteCountryCode').value;
344  return country != '' ? country : 'US';
345}
346function Dtgeterror(){
347    switch(DtgetPageCategory()) {
348    case 'Checkout Page':   case 'Cart Page':
349        if(basketConfirmation != null){
350            return basketConfirmation.checkoutErrorMessage;
351        }
352        break;
353    case 'General Error':
354        return searchItems.error;
355        break;
356    case 'Error Page':
357        return "Page Not Found";
358        break;
359    default: break;
360    }
361}
362function receiveMessage(event){
363
364	if (typeof event.data === "object" && event.origin === "https://hosted.where2getit.com"){
365    		pushDtLayer(event.data);
366	}
367}
368function Dtgetpage(){
369	 var url = window.location.href;
370	 var splittedurl = url.split("?");
371	 var page = splittedurl[0].split("/");
372	 return page[page.length-1]
373}
374function DtgetRecommendedProductStatus(productID) {
375    var recoProds = sessionStorage.getItem('recommendedproducts');
376    if (recoProds != null && recoProds != '') {
377        var storedRecommendedProducts = JSON.parse(recoProds);
378    }
379    if (storedRecommendedProducts != undefined && storedRecommendedProducts.length > 0) {
380        if (storedRecommendedProducts.indexOf(productID) > -1) {
381            return 'recommended';
382        } else {
383            return 'non-recommended';
384        }
385    } else {
386        return 'non-recommended';
387    }
388}
389function getRRProvider() {
390    var rrFlag= document.getElementById('rrprovider').getAttribute('data-rr-provider');
391    return rrFlag;
392}
393/** Trigger the following datalayers after gtm.js container  **/
394
395pageViewEvent();
396
397// document ready
398window.addEventListener('load', function () {
399    // fire when coupon is added after page load.
400    if(DtgetPageCategory() == "Checkout"){
401            var error = basketConfirmation.checkoutErrorMessage ? basketConfirmation.checkoutErrorMessage : $(".error-form").text().trim();
402            var errormsgtype = "";
403            if(error.indexOf("Payment") > -1){
404                errormsgtype = "Payment";
405            }else if(error.indexOf("email") > -1){
406                errormsgtype = "Email";
407            }else if(error.indexOf("Server") > -1){
408                errormsgtype = "Server";
409            }
410            if(error){
411                pushDtLayer({
412                       "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage ? basketConfirmation.checkoutErrorMessage : $(".error-form").text().trim(),
413                       "event": "transactionError",
414                       "pageSubCategory": CouponSubCategory(),
415                       "pageCategory": "Checkout",
416                       "checkoutErrorType" : errormsgtype
417                   });
418            }
419
420           if($(".gtpromochecker").length > 0){
421                if(!localStorage.getItem('couponvalidation')){
422                    pushDtLayer({
423                        "productCoupon":$(".gtpromochecker").data("name"),
424                        "event": "couponSubmission",
425                        "pageSubCategory": CouponSubCategory(),
426                        "pageCategory": DtgetPageCategory()
427                        })
428                    localStorage['couponvalidation'] = true;
429                }
430            }else{
431                localStorage.removeItem('couponvalidation');
432            }
433     }
434
435
436    switch (gtCurPage) {
437        case 'cart-show': case 'cart-addtowishlist':
438
439            // fire when coupon is added after page load.
440            if($(".gtpromochecker").length > 0 && $(".rowcoupons").length > 0 && ($(".rowcoupons .show-for-large .bonus-item").text().trim() == "Applied")){
441                if(!localStorage.getItem('couponvalidation')){
442                        pushDtLayer({
443                                "productCoupon": $(".gtpromochecker").data("name"),
444                                "event": "couponSubmission",
445                                "pageSubCategory": CouponSubCategory(),
446                                "pageCategory": DtgetPageCategory()
447                        })
448                        localStorage['couponvalidation'] = true;
449                  }
450            }else if ($(".gtpromochecker").length > 0 && $(".rowcoupons").length == 0){
451                localStorage['couponvalidation'] = true;
452
453            }else{
454                localStorage.removeItem('couponvalidation');
455            }
456            break;
457       case 'account-editprofile':
458       case 'beautystation-show':
459            // user loggedin
460            if ($('.user-info-section.row.loggedin-magic-link').length > 0) {
461                pushDtLayer({
462                    event: "accountLogin",
463                    accountType: "Magic Link",
464                    loginLocation: "Logged in from Account"
465                });
466            } else if(window.User.isRegistered && !localStorage.getItem('uservalidation')){
467                pushDtLayer({
468                        "event": "accountLogin",
469                        'userId': window.User.customerNo,
470                        'accountType':window.User.isExternallyAuthenticated,
471                        'pageCategory': 'Account',
472                        'pageSubCategory':'Profile',
473                        'loginLocation': 'Logged in outside checkout'
474                    });
475                localStorage['uservalidation'] = true;
476            }
477
478            // Account Registration
479            if(window.Resources.ACCOUNT_REGISTRATION){
480                pushDtLayer({
481                    "event": "accountCreation",
482                    "userId": window.User.customerNo,
483                    "accountType": window.User.isExternallyAuthenticated,
484                    "pageCategory": "Account",
485                    "pageSubCategory": "Profile",
486                    'loginLocation': 'Logged in outside checkout'
487                });
488            }
489            break;
490		case 'cosinglepagecheckout-start':
491            if (window.User.isRegistered && !localStorage.getItem('uservalidation')) {
492                if ($('.spc-orderconfirmation-div.login-user.loggedin-magic-link').length > 0) {
493                    pushDtLayer({
494                        event: "accountLogin",
495                        accountType: "Magic Link",
496                        loginLocation: "Logged in from Account"
497                    });
498                } else {
499                    pushDtLayer({
500                        event: 'accountLogin',
501                        userId: window.User.customerNo != null ? window.User.customerNo : null,
502                        accountType: window.User.customerNo != null ? 'Regular' : 'Guest',
503                        pageCategory: 'Checkout',
504                        pageSubCategory: 'Login',
505                        loginLocation: 'Logged in inside checkout'
506                    });
507                }
508                localStorage['uservalidation'] = true;
509            }
510
511            // Account Registration
512            if(window.Resources.ACCOUNT_REGISTRATION){
513                pushDtLayer({
514                    "event": "accountCreation",
515                    "userId": window.User.customerNo != null ? window.User.customerNo : null,
516                    "accountType": window.User.customerNo != null ? 'Regular' : 'Guest',
517                    "pageCategory": "Checkout",
518                    "pageSubCategory": "Sign Up",
519                    "loginLocation": 'Logged in inside checkout'
520                });
521            }
522			break;
523        default: break;
524    }
525})
526
527switch (gtCurPage) {
528    case 'cart-show': case 'cart-addtowishlist':
529        // car show data layer
530        if (typeof basketConfirmation != 'undefined' && basketConfirmation !== null) {
531            pushDtLayer({
532                "event": "view_cart",
533                "eeAction": "eeCheckout",
534                "checkoutStep" : "1",
535                "funnelType": basketConfirmation.funnelType,
536                "giftWrapping": basketConfirmation.giftWrapping,
537                "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage,
538                "pageCategory": "Checkout",
539                "pageSubCategory": "Cart",
540                'products': basketConfirmation.productLineItems
541            });
542        }
543
544        break;
545
546    case 'cocustomer-loginform' :
547
548         if (typeof basketConfirmation != 'undefined' && basketConfirmation !== null) {
549             pushDtLayer({
550                 "eeAction": "eeCheckout",
551                 "checkoutStep" : "2",
552                 "funnelType": basketConfirmation.funnelType,
553                 "giftWrapping": basketConfirmation.giftWrapping,
554                 "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage,
555                 "pageCategory": "Checkout",
556                 "pageSubCategory": "Cart",
557                 'products': basketConfirmation.productLineItems
558             });
559         }
560
561         break;
562    case 'cocustomer-start':
563    // populate data layer for checkout login page
564    if (typeof basketConfirmation !== 'undefined' && basketConfirmation !== null) {
565        pushDtLayer({
566            eeAction: 'eeCheckout',
567            checkoutStep: '2',
568            funnelType: basketConfirmation.funnelType,
569            giftWrapping: basketConfirmation.giftWrapping,
570            checkoutErrorMessage: basketConfirmation.checkoutErrorMessage,
571            pageCategory: 'Checkout',
572            pageSubCategory: 'Checkout Login',
573            checkoutVersion: 'One page checkout',
574            products: basketConfirmation.productLineItems,
575        });
576    }
577
578    break;
579
580    case 'coshipping-start':
581        // populate data layer for shipping
582        if (typeof basketConfirmation != 'undefined' && basketConfirmation !== null) {
583            pushDtLayer({
584            "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage,
585            "giftWrapping": basketConfirmation.giftWrapping,
586            "pageSubCategory": "Shipping",
587            "funnelType": basketConfirmation.funnelType,
588            "eeAction": "eeCheckout",
589            "checkoutStep" : "2",
590            "productOrderType": basketConfirmation.productOrderType,
591            "pageCategory": "Checkout",
592            'products': basketConfirmation.productLineItems
593            })
594       }
595    break;
596
597
598    case 'cosinglepagecheckout-start':
599        // populate data layer for OPC shipping
600        let checkoutPageLoadStep = true;
601        if (typeof spcCheckoutStep != 'undefined' && spcCheckoutStep == '4.0') {
602            checkoutPageLoadStep = false;
603        }
604        var URLParams = window.location.search.substring(1).split('&');
605        var isFourthStepPaypal = URLParams.includes('SPCPMRedirectUrlSteps=fourth') && basketConfirmation.paymentMethod.includes('PayPal')
606        if (checkoutPageLoadStep && typeof basketConfirmation != 'undefined' && basketConfirmation !== null && !isFourthStepPaypal) {
607            pushDtLayer({
608                "eeAction": "eeCheckout",
609                "checkoutStep" : "3",
610                "funnelType": basketConfirmation.funnelType,
611                "giftWrapping": basketConfirmation.giftWrapping,
612                "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage,
613                "pageCategory": 'Checkout',
614                "pageSubCategory": "Shipping",
615                "checkoutVersion": 'One page checkout',
616                'products': basketConfirmation.productLineItems,
617                'conversion_location': window.metaCheckout,
618            })
619       } else if(isFourthStepPaypal) {
620        if(checkoutPageLoadStep) {
621            var couponCode = '';
622            if(basketConfirmation.coupons){
623                for (var i = 0; i < basketConfirmation.coupons.length; i++) {
624                    if (basketConfirmation.coupons[i]) {
625                        couponCode += basketConfirmation.coupons[i] + ',';
626                    }
627                }
628            }
629            if (couponCode.length > 0) {
630                couponCode = couponCode.substr(0, couponCode.length - 1);
631            }
632            var pageUrl = '/us/en/checkout/order-review';
633
634            if (User.locale != null && User.locale != undefined) {
635                if (User.locale == 'en_CA') {
636                    pageUrl = '/ca/en/checkout/order-review';
637                } else if (User.locale == 'fr_CA') {
638                    pageUrl = '/ca/fr/checkout/order-review';
639                }
640            }
641            pushDtLayer({
642                eeAction: 'eeCheckout',
643                event: 'virtualPageview',
644                page: pageUrl,
645                checkoutStep: '5',
646                funnelType: basketConfirmation.funnelType,
647                giftWrapping: basketConfirmation.giftWrapping,
648                checkoutErrorMessage: basketConfirmation.checkoutErrorMessage,
649                pageCategory: 'Checkout',
650                pageSubCategory: 'Review',
651                checkoutVersion: 'One page checkout',
652                couponCode: couponCode,
653                paymentType: basketConfirmation.paymentMethod.includes('PayPal') ? sessionStorage.getItem('PayPalSource') ? sessionStorage.getItem('PayPalSource'): basketConfirmation.paymentMethod.join("/"): basketConfirmation.paymentMethod.join("/"),
654                products: basketConfirmation.productLineItems,
655            });
656        }
657    }
658    break;
659    case 'coshipping-singleshipping':
660        // populate data layer for successful billing
661        if (typeof basketConfirmation != 'undefined' && basketConfirmation !== null) {
662            pushDtLayer({
663            "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage,
664            "giftWrapping": basketConfirmation.giftWrapping,
665            "pageSubCategory": "Billing",
666            "funnelType": basketConfirmation.funnelType,
667            "eeAction": "eeCheckout",
668            "checkoutStep" : "3",
669            "productOrderType": basketConfirmation.productOrderType,
670            "pageCategory": "Checkout",
671            'products': basketConfirmation.productLineItems
672            })
673            pushDtLayer({
674            "event" : "eeCheckoutOption",
675            "checkoutStep" : "2",
676            "checkoutOption" : basketConfirmation.defaultShipping
677            })
678       }
679        break;
680    case 'cobilling-billing': case 'cobilling-start':
681        // populate data layer for successful billing
682        if (typeof basketConfirmation != 'undefined' && basketConfirmation !== null) {
683            pushDtLayer({
684            "checkoutErrorMessage": basketConfirmation.checkoutErrorMessage,
685            "giftWrapping": basketConfirmation.giftWrapping,
686            "pageSubCategory": "Review",
687            "funnelType": basketConfirmation.funnelType,
688            "eeAction": "eeCheckout",
689            "checkoutStep" : "4",
690            "productOrderType": basketConfirmation.productOrderType,
691            "pageCategory": "Checkout",
692            'products': basketConfirmation.productLineItems
693            })
694            pushDtLayer({
695            "event" : "eeCheckoutOption",
696                "checkoutStep" : "3",
697                "checkoutOption" : basketConfirmation.paymentMethod
698            })
699       }
700        break;
701    case 'cosummary-submit': case 'coplaceorder-submit': case 'afterpayredirect-placeorder' : case 'cosummary-showconfirmation': case 'flexredirect-submit':
702        // populate data layer for sucessful transaction
703        if (typeof orderConfirmation != 'undefined') {
704        //the push must be placed before the gtm.js container call
705            var checkoutVersion = 'One Page Checkout';
706
707            if (sessionStorage.getItem('spcheckoutv2') == 'true') {
708                checkoutVersion = 'Vertical Checkout';
709                sessionStorage.removeItem('spcheckoutv2');
710            }
711
712            var tansactionCouponCode = '';
713            if (orderConfirmation.coupons) {
714                for (var i = 0; i < orderConfirmation.coupons.length; i++) {
715                    if (orderConfirmation.coupons[i]) {
716                        tansactionCouponCode += orderConfirmation.coupons[i] + ',';
717                    }
718                }
719            }
720
721            if (tansactionCouponCode.length > 0) {
722                tansactionCouponCode = tansactionCouponCode.substr(0, tansactionCouponCode.length - 1);
723            }
724            for (var i = 0; i < orderConfirmation.productLineItems.length; i++) {
725                orderConfirmation.productLineItems[i].recommendedProduct = DtgetRecommendedProductStatus(orderConfirmation.productLineItems[i].productVariantID);
726            }
727            var paymentType = '';
728            if (orderConfirmation.paymentMethod) {
729                if (orderConfirmation.paymentMethod === 'AFTERPAY_PBI') {
730                    paymentType = 'After Pay';
731                } else if (orderConfirmation.paymentMethod == "ApplePay") {
732                    paymentType = orderConfirmation.paymentMethod + sessionStorage.applePayLoc;
733                } else if (orderConfirmation.paymentMethod === 'PayPal' && sessionStorage.getItem('PayPalSource')) {
734                    paymentType = sessionStorage.getItem('PayPalSource');
735                } else if(orderConfirmation.paymentMethod == 'FLEX') {
736                    paymentType = 'Flex';
737                } else {
738                    paymentType = orderConfirmation.paymentMethod;
739                }
740            }
741            pushDtLayer({
742                "event": "purchase",
743                "transactionId": orderConfirmation.transactionId,
744                "transactionTotal": orderConfirmation.adjMerchandizeTotalNet,
745                "transactionTax": orderConfirmation.tax,
746                "transactionShipping": orderConfirmation.transactionShipping,
747                "transactionCoupon": orderConfirmation.transactionCoupon,
748                "transactionTotalWithoutCoupon": orderConfirmation.merchandizeTotalNet,
749                "pageCategory": "Checkout",
750                "pageSubCategory": "Order Confirmation",
751                "giftWrapping": orderConfirmation.giftWrapping,
752                "funnelType": orderConfirmation.funnelType,
753                "currencyCode": orderConfirmation.currencyCode,
754                "couponCode": tansactionCouponCode,
755                "checkoutVersion": checkoutVersion,
756                "paymentType": paymentType,
757                "shippingType": orderConfirmation.defaultShipping,
758                "orderDiscount": orderConfirmation.orderDiscount,
759                "products": orderConfirmation.productLineItems,
760                "conversion_location": window.metaCheckout,
761            });
762        }
763        break;
764    case 'search-show': case 'search-getsuggestions':
765        if (searchItems.search) {
766            let pageCategory = !searchItems.rs55 ? "No Search Results Page" : "Site Search";
767            pushDtLayer({
768                "pageCategory": pageCategory,
769                "pageSubCategory": DtgetPageSubcategory() == "My Account" ? DtgetPageSubcategory() : "",
770                "kw55": searchItems.kw55.replace(/%20/g, " "),
771                "res55": searchItems.rs55,
772            });
773        } else if (window.location.href.indexOf("store-locator") > -1) {
774            pushDtLayer({
775                "event": "storeLocator",
776                "pageCategory": DtgetPageCategory()
777            });
778            window.addEventListener("message", receiveMessage);
779            break;
780        }
781
782        // plp/search pageview
783        if(typeof productData !== "undefined"){
784            document.addEventListener('DOMContentLoaded', function() {
785                for (var i = 0; i < productData.product.length;i++){
786                    productData.product[i].brand = DtgetProductBrand();
787                    productData.product[i].variant = "";
788                }
789                for (var j = 0; j < productData.product.length;j++){
790                    if(productData.product[j].listName == "Search" && searchItems.kw55){
791                        productData.product[j].listName = searchItems.kw55;
792                    }
793                }
794                let $pageSubCategory = DtgetPageSubcategory();
795                if(document.getElementsByClassName('de-breadcrumb').length > 0){
796                    $pageSubCategory = document.getElementsByClassName('de-breadcrumb')[0].getElementsByTagName('li')[1].getElementsByTagName('span')[0] ? document.getElementsByClassName('de-breadcrumb')[0].getElementsByTagName('li')[1].getElementsByTagName('span')[0].innerHTML.trim() : ""
797                }
798                if(document.getElementsByClassName('drunk-life-page-wrapper').length > 0){
799                    $pageSubCategory = 'Drunk Life';
800                }
801
802                let $pageCategory = searchItems.search ? "Site Search" : "Category Page";
803
804                pushDtLayer({
805                    "event": "eeListView",
806                    "pageCategory": $pageCategory,
807                    "pageSubCategory": $pageCategory === 'Category Page' ? window.Resources.GTPRODUCT_CATEGORYNAME : $pageSubCategory,
808                    "currencyCode": window.User.currencyCode,
809                    "products": productData.product || new Array()
810                });
811                prodholder.push(productData.product);
812            });
813        }
814        break;
815    case 'product-showincategory': case 'product-show':
816        // product detail page load page
817        if(DtgetPageCategory() == "Product Page"){
818            let productArr = [];
819            let prodDataForArr;
820            //for product sets productCache is an array with more than 1 product
821                if (productCache && productCache.length > 1) {
822                    for (let index = 0; index < productCache.length; index++) {
823                        let price;
824
825                        if (productCache[index].pricing) {
826                            price = productCache[index].productautoreplenish == "YES"
827                                ? productCache[index].pricing.minprice
828                                : productCache[index].pricing.sale || productCache[index].pricing.minprice;
829                        }
830
831                        prodDataForArr = {
832                            bundleName :  productCache[index] ? (productCache[index].itemName ? productCache[index].itemName : '') : '',
833                            listType : sessionStorage.getItem('listType') ? sessionStorage.getItem('listType') : null,
834                            listName : sessionStorage.getItem('listName') ? sessionStorage.getItem('listName') : null,
835                            id : productCache[index].masterID ? productCache[index].masterID : productCache[index].ID,
836                            category :productCache[index].catid,
837                            price : price,
838                            name : productCache[index].name,
839                            brand : DtgetProductBrand(),
840                            quantity :productCache[index].quantity,
841                            size : productCache[index].size,
842                            subCategory : productCache[index].subcategory,
843                            subSubCategory : productCache[index].subsubcategory,
844                            productAutoReplen : productCache[index].productautoreplenish,
845                            productOutOfStock : productCache[index].productOutOfStock,
846                            productColor : productCache[index].productColor,
847                            productType : "Bundle",
848                            productVariantID : productCache[index].defalutvariant ? productCache[index].defalutvariant : productCache[index].ID,
849                            productNumReviews : productCache[index].productNumReviews,
850                            productStarRating : productCache[index].productStarRating,
851                            new : window.productCache.new,
852                            lastChance : window.productCache.lastChance,
853                            productLiveDate : window.productCache.productLiveDate
854                        }
855                        productArr.push(prodDataForArr);
856                    }
857                    pushDtLayer({
858                        "event": "view_item",
859                        "eeAction": "eeProductDetail",
860                        "pageCategory": "Product Page",
861                        'products': productArr
862                    })
863
864                } else if (productCache) {
865                    let price;
866
867                    if (productCache.pricing) {
868                        price = productCache.productautoreplenish == "YES"
869                            ? productCache.pricing.minprice
870                            : productCache.pricing.sale || productCache.pricing.minprice;
871                    }
872
873                    pushDtLayer({
874                        "event": "view_item",
875                        "eeAction": "eeProductDetail",
876                        "pageCategory": "Product Page",
877                        'products': [{
878                            "listType" : sessionStorage.getItem('listType') ? sessionStorage.getItem('listType') : null,
879                            "listName" : sessionStorage.getItem('listName') ? sessionStorage.getItem('listName') : null,
880                            "id": productCache.masterID ? productCache.masterID : productCache.ID,
881                            "category":productCache.catid,
882                            "price": price,
883                            "name": productCache.name,
884                            "brand": DtgetProductBrand(),
885                            "quantity":productCache.quantity,
886                            "size": productCache.size,
887                            "subCategory" : productCache.subcategory,
888                            "subSubCategory" : productCache.subsubcategory,
889                            "productAutoReplen": productCache.productautoreplenish,
890                            "productOutOfStock": productCache.productOutOfStock,
891                            "productColor": productCache.productColor,
892                            "productType": productCache.customProductType == 'Bundle' ? 'Bundle' : 'Product',
893                            "productVariantID": productCache.defalutvariant ? productCache.defalutvariant : productCache.ID,
894                            "productNumReviews": productCache.productNumReviews,
895                            "productStarRating": productCache.productStarRating,
896                            "new" : window.productCache.new,
897                            "lastChance" : window.productCache.lastChance,
898                            "productLiveDate" : window.productCache.productLiveDate,
899                        }]
900                    })
901                }
902
903
904        }
905
906     if (typeof $BV !== 'undefined') {
907         $BV.configure('global', {
908             events : {
909                 submissionSubmitted : function (data) {
910                     // NEW Request fix for submit question in PDP
911                     if($(".bv-submission-button-submit:contains('Post Question')").length>0){
912                         pushDtLayer({
913                             "page": Dtgetpage(),
914                             "event": "submitQuestion",
915                             "productCategory": DtgetProductCategory(),
916                             "question": $("#bv-textarea-field-questionsummary").val(),
917                             "productName": productCache.name,
918                             "pageSubCategory": "Ask a Question",
919                             "pageCategory": "Product Page"
920                            })
921                        }
922                        // NEW Request fix for submit review in PDP
923                        if($(".bv-submission-button-submit:contains('Post Review')").length>0){
924                            pushDtLayer({
925                                "event": "submitReview",
926                                "productCategory": DtgetProductCategory(),
927                                "productSubCategory":DtgetProductsubCategory(),
928                                "pageSubCategory": "Reviews",
929                                "productName": productCache.name,
930                                "pageCategory": "Product Page",
931                                "productId": data.Id
932                            })
933                        }
934                    }
935                }
936            });
937        }
938            break;
939    case 'search-brandify':
940        pushDtLayer({
941            "event": "storeLocator",
942            "pageCategory": DtgetPageCategory()
943        });
944        window.addEventListener("message", receiveMessage);
945        break;
946    default: break;
947}
948
949    //Navigation click
950function pageViewEvent() {
951	if (typeof searchItems !== "undefined") {
952		if (searchItems.error === "Page Not Found") {
953			pushDtLayer({
954                "event": "page_view",
955	            "userId": customerNo != null ? customerNo : null,
956	            "pageCategory": "Error Page",
957	            "pageSubCategory": "",
958	            "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
959	            "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
960	            "navigationLocationClicked": sessionStorage.getItem("menuloc"),
961                "emailAddress": window.emailID ? window.emailID : '',
962                "language": DtgetLanguage(),
963                "websiteCountry": DtgetCountry()
964            });
965		} else {
966			if(DtgetPageCategory()=="Category Page"){
967		        if(searchItems.lastclk == "account-editprofile" || searchItems.lastclk == "address-list" || searchItems.lastclk =="paymentinstruments-list" || searchItems.lastclk == "wishlist-show" || searchItems.lastclk == "order-history" || searchItems.lastclk == "orderreplenishment-show" || searchItems.lastclk == "customerservice-contactus"){
968		            pushDtLayer({
969                        "event": "page_view",
970		                "userId": customerNo != null ? customerNo : null,
971		                "pageCategory": DtgetPageCategory(),
972		                "pageSubCategory": CouponSubCategory(),
973		                "navigationLinkClicked": getCookie("navdata") ? "1" : "0",
974		                "navigationLinkNameClicked": sessionStorage.getItem("navlink") ? sessionStorage.getItem("navlink") : getCookie("navdata"),
975		                "navigationLocationClicked": "topmenu",
976                        "emailAddress": window.emailID ? window.emailID : '',
977                        "language": DtgetLanguage(),
978                        "websiteCountry": DtgetCountry()
979		                });
980		        }else{
981		            pushDtLayer({
982                        "event": "page_view",
983		                "userId": customerNo != null ? customerNo : null,
984		                "pageCategory": DtgetPageCategory(),
985		                "pageSubCategory": CouponSubCategory(),
986		                "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
987		                "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
988		                "navigationLocationClicked": sessionStorage.getItem("menuloc"),
989                        "emailAddress": window.emailID ? window.emailID : '',
990                        "language": DtgetLanguage(),
991                        "websiteCountry": DtgetCountry()
992		                });
993		        }
994
995		    }else{
996		        if(gtCurPage == "customerservice-contactus"){
997		            pushDtLayer({
998                        "event": "page_view",
999		                "userId": customerNo != null ? customerNo : null,
1000		                "pageCategory": DtgetPageCategory(),
1001		                "pageSubCategory": CouponSubCategory(),
1002		                "navigationLinkClicked": "0",
1003		                "navigationLinkNameClicked":"",
1004		                "navigationLocationClicked":"",
1005                        "emailAddress": window.emailID ? window.emailID : '',
1006                        "language": DtgetLanguage(),
1007                        "websiteCountry": DtgetCountry()
1008                    });
1009		        }else{
1010		            if(gtCurPage == "account-editprofile"){
1011		                if(sessionStorage.getItem("navlink")!="Profile"){
1012		                    pushDtLayer({
1013                                "event": "page_view",
1014		                        "userId": customerNo != null ? customerNo : null,
1015		                        "pageCategory": DtgetPageCategory(),
1016		                        "pageSubCategory": CouponSubCategory(),
1017		                        "navigationLinkClicked":"0",
1018		                        "navigationLinkNameClicked":"",
1019		                        "navigationLocationClicked":"",
1020                                "emailAddress": window.emailID ? window.emailID : '',
1021                                "language": DtgetLanguage(),
1022                                "websiteCountry": DtgetCountry()
1023                            });
1024		                }else{
1025		                    pushDtLayer({
1026                                "event": "page_view",
1027		                        "userId": customerNo != null ? customerNo : null,
1028		                        "pageCategory": DtgetPageCategory(),
1029		                        "pageSubCategory": CouponSubCategory(),
1030		                        "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
1031		                        "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
1032		                        "navigationLocationClicked": sessionStorage.getItem("menuloc"),
1033                                "emailAddress": window.emailID ? window.emailID : '',
1034                                "language": DtgetLanguage(),
1035                                "websiteCountry": DtgetCountry()
1036                            });
1037		                }
1038		            }else{
1039		                pushDtLayer({
1040                            "event": "page_view",
1041		                    "userId": customerNo != null ? customerNo : null,
1042		                    "pageCategory": DtgetPageCategory(),
1043		                    "pageSubCategory": CouponSubCategory(),
1044		                    "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
1045		                    "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
1046		                    "navigationLocationClicked": sessionStorage.getItem("menuloc"),
1047                            "emailAddress": window.emailID ? window.emailID : '',
1048                            "language": DtgetLanguage(),
1049                            "websiteCountry": DtgetCountry()
1050                        });
1051		            }
1052		        }
1053
1054		    }
1055		}
1056
1057	} else {
1058	    if(DtgetPageCategory()=="Category Page"){
1059	        if(searchItems.lastclk == "account-editprofile" || searchItems.lastclk == "address-list" || searchItems.lastclk =="paymentinstruments-list" || searchItems.lastclk == "wishlist-show" || searchItems.lastclk == "order-history" || searchItems.lastclk == "orderreplenishment-sh
1059ow" || searchItems.lastclk == "customerservice-contactus"){
1060	            pushDtLayer({
1061                    "event": "page_view",
1062	                "userId": customerNo != null ? customerNo : null,
1063	                "pageCategory": DtgetPageCategory(),
1064	                "pageSubCategory": CouponSubCategory(),
1065	                "navigationLinkClicked": getCookie("navdata") ? "1" : "0",
1066	                "navigationLinkNameClicked": sessionStorage.getItem("navlink") ? sessionStorage.getItem("navlink") : getCookie("navdata"),
1067	                "navigationLocationClicked": "topmenu",
1068                    "emailAddress": window.emailID ? window.emailID : '',
1069                    "language": DtgetLanguage(),
1070                    "websiteCountry": DtgetCountry()
1071                });
1072	        }else{
1073	            pushDtLayer({
1074                    "event": "page_view",
1075	                "userId": customerNo != null ? customerNo : null,
1076	                "pageCategory": DtgetPageCategory(),
1077	                "pageSubCategory": CouponSubCategory(),
1078	                "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
1079	                "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
1080	                "navigationLocationClicked": sessionStorage.getItem("menuloc"),
1081                    "emailAddress": window.emailID ? window.emailID : '',
1082                    "language": DtgetLanguage(),
1083                    "websiteCountry": DtgetCountry()
1084                });
1085	        }
1086
1087	    }else{
1088	        if(gtCurPage == "customerservice-contactus"){
1089	            pushDtLayer({
1090                    "event": "page_view",
1091	                "userId": customerNo != null ? customerNo : null,
1092	                "pageCategory": DtgetPageCategory(),
1093	                "pageSubCategory": CouponSubCategory(),
1094	                "navigationLinkClicked": "0",
1095	                "navigationLinkNameClicked":"",
1096	                "navigationLocationClicked":"",
1097                    "emailAddress": window.emailID ? window.emailID : '',
1098                    "language": DtgetLanguage(),
1099                    "websiteCountry": DtgetCountry()
1100                });
1101	        }else{
1102	            if(gtCurPage == "account-editprofile"){
1103	                if(sessionStorage.getItem("navlink")!="Profile"){
1104	                    pushDtLayer({
1105                            "event": "page_view",
1106	                        "userId": customerNo != null ? customerNo : null,
1107	                        "pageCategory": DtgetPageCategory(),
1108	                        "pageSubCategory": CouponSubCategory(),
1109	                        "navigationLinkClicked":"0",
1110	                        "navigationLinkNameClicked":"",
1111	                        "navigationLocationClicked":"",
1112                            "emailAddress": window.emailID ? window.emailID : '',
1113                            "language": DtgetLanguage(),
1114                            "websiteCountry": DtgetCountry()
1115                        });
1116	                }else{
1117	                    pushDtLayer({
1118                            "event": "page_view",
1119	                        "userId": customerNo != null ? customerNo : null,
1120	                        "pageCategory": DtgetPageCategory(),
1121	                        "pageSubCategory": CouponSubCategory(),
1122	                        "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
1123	                        "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
1124	                        "navigationLocationClicked": sessionStorage.getItem("menuloc"),
1125                            "emailAddress": window.emailID ? window.emailID : '',
1126                            "language": DtgetLanguage(),
1127                            "websiteCountry": DtgetCountry()
1128                        });
1129	                }
1130	            }else{
1131	                pushDtLayer({
1132                        "event": "page_view",
1133	                    "userId": customerNo != null ? customerNo : null,
1134	                    "pageCategory": DtgetPageCategory(),
1135	                    "pageSubCategory": CouponSubCategory(),
1136	                    "navigationLinkClicked": sessionStorage.getItem("navlink") ? "1" : "0",
1137	                    "navigationLinkNameClicked": sessionStorage.getItem("navlink"),
1138	                    "navigationLocationClicked": sessionStorage.getItem("menuloc"),
1139                        "emailAddress": window.emailID ? window.emailID : '',
1140                        "language": DtgetLanguage(),
1141                        "websiteCountry": DtgetCountry()
1142                    });
1143	            }
1144	        }
1145
1146	    }
1147	}
1148}
1149
1150    sessionStorage.setItem("navlink","");
1151    sessionStorage.setItem("menuloc","");
1152    sessionStorage.setItem("productUpdate","");
1153    sessionStorage.setItem("userid",userid);
1154    sessionStorage.setItem("languange", DtgetLanguage());
1155    sessionStorage.setItem("webCountry",DtgetCountry());

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.