PageSourceSearch

https://thecelticstar.com/wp-content/plugins/brand-management-plugin/public/js/bm-data-layer.js

js thecelticstar.com collected 2026-10-02 11:35:24 UTC 21,001 bytes, 590 lines download raw bytes

1(function ($) {
2    'use strict';
3
4    $(function () {
5        init_data_layer_events();
6    });
7
8    let main_offer_selectors = [
9        '.campaign-list-item',
10        '.campaign-compact-table__offer',
11        '.casino_finder__final_offer',
12        '.toplist-flagship-crypto__offer',
13        '.toplist-poker__offer',
14        '.toplist-poker-v2__offer',
15        '.toplist-poker-compact__offer',
16        '.toplist-tech__offer',
17        '.toplist-repurposed__offer',
18    ].join(', ');
19
20    const cta_button_selectors = [
21        '.campaign-list-item_cta-btn',
22        '.campaign-compact-table__offer-cta-button a',
23        '.campaign-list-item__cta_button',
24        '.toplist-flagship-crypto__offer-visit-link',
25        '.toplist-poker__offer-cta-btn',
26        '.toplist-poker-v2__offer-cta-btn',
27        '.toplist-poker-compact__offer-cta-btn',
28        '.toplist-tech__offer-cta-btn',
29        '.toplist-repurposed__offer-cta-btn',
30    ].join(', ');
31
32    const coupon_copied_selectors = [
33        '.country_code_right',
34        '.coupon-code__copy-btn',
35        '.campaign-list-item__coupon-wrapper',
36    ].join(', ');
37
38    const toplist_database = {
39        'campaign-list-item': {
40            type: 'Casino Toplist v1',
41            selectors: {
42                title: '.campaign-list-item_key-features > p, .campaign-list-item__offer',
43                rating: '.campaign_list_item__score_text, .campaign-list-item__rating',
44                coupon: '.coupon_code, .campaign-list-item__coupon span',
45            },
46        },
47        'campaign-compact-table__offer': {
48            type: 'Casino Toplist v2',
49            selectors: {
50                title: '.campaign-compact-table__offer-description',
51                rating: '.campaign-compact-table__offer-rating-text',
52                coupon: '.coupon-code',
53            },
54        },
55        'casino_finder__final_offer': {
56            type: '',
57            selectors: {
58                title: '.casino_finder__final_offer_title',
59                rating: '.casino_finder__final_marks_section p',
60                coupon: '.casino_finder__final_coupon_text:first',
61            },
62        },
63        'toplist-flagship-crypto__offer': {
64            type: 'CryptoNews Toplist',
65            selectors: {
66                title: '.toplist-flagship-crypto__offer-title',
67                rating: '.toplist-flagship-crypto__offer-rating',
68            },
69        },
70        'toplist-poker__offer': {
71            type: 'Poker Toplist',
72            selectors: {
73                title: '.toplist-poker__offer-title',
74                rating: '.toplist-poker__offer-rating',
75            },
76        },
77        'toplist-poker-v2__offer': {
78            type: 'Poker Toplist v2',
79            selectors: {
80                title: '.toplist-poker-v2__offer-title',
81                rating: '.toplist-poker-v2__offer-rating',
82            },
83        },
84        'toplist-poker-compact__offer': {
85            type: 'Poker Toplist Compact',
86            selectors: {
87                title: '.toplist-poker-compact__offer-title',
88                rating: '.toplist-poker-compact__offer-rating',
89            },
90        },
91        'toplist-tech__offer': {
92            type: 'Tech Toplist',
93            selectors: {
94                title: '.toplist-tech__offer-title',
95            },
96        },
97        'toplist-repurposed__offer': {
98            type: 'Casino Repurposed Toplist',
99            selectors: {
100                title: '.toplist-repurposed__offer-title',
101                rating: '.toplist-repurposed__offer-rating-score',
102            },
103        },
104    }
105
106    const init_data_layer_events = () => {
107        if (typeof dataLayer !== 'undefined') {
108            init_data_layer_campaign_events();
109            init_data_layer_casino_finder_events();
110        }
111    }
112
113    const init_data_layer_campaign_events = (
114        campaign = false,
115        database = {}
116    ) => {
117        if (typeof dataLayer === 'undefined') {
118            return;
119        }
120
121        if (
122            jQuery.isEmptyObject(database) === false
123            && typeof database['selectors']['offer'] !== 'undefined'
124            && typeof database['selectors']['cta'] !== 'undefined'
125        ) {
126            // Extend default events by adding a new event.
127
128            const offer_class_name = database['selectors']['offer'].replace('.', '');
129            toplist_database[offer_class_name] = database;
130
131            event_campaign_hover(database['selectors']['offer'], campaign);
132            event_campaign_cta_button(database['selectors']['cta'], campaign, database['selectors']['offer']);
133
134            return;
135        }
136
137        // Init default events.
138        event_campaign_vote_action(campaign);
139        event_campaign_learn_more(campaign);
140        event_campaign_coupon_copied(coupon_copied_selectors, campaign);
141        event_campaign_cta_button(cta_button_selectors, campaign);
142        event_campaign_hover(main_offer_selectors, campaign);
143        event_campaign_filter_start(campaign);
144        event_campaign_filter_applied(campaign);
145        event_campaign_extra_filter_start(campaign);
146        event_campaign_extra_filter_applied(campaign);
147        event_campaign_popular_filter(campaign);
148        event_campaign_compare_toggle(campaign);
149        event_campaign_compare_view_section_click(campaign);
150    }
151
152    const init_data_layer_casino_finder_events = () => {
153        event_casino_finder_start();
154        event_casino_finder_form_interaction();
155        event_casino_finder_form_end();
156
157        $('.casino_finder__final_screen_show_more').click(function () {
158            event_campaign_hover('.casino_finder__final_offer');
159        });
160    }
161
162    const init_data_layer_casino_finder_final_offers_events = () => {
163        if (typeof dataLayer !== 'undefined') {
164            event_campaign_coupon_copied('.casino_finder__final_copy_btn');
165            event_campaign_cta_button('a.casino_finder__final_cta');
166            event_campaign_hover('.casino_finder__final_offer');
167        }
168    }
169
170    const data_layer_compare_view_visible = (campaign = false) => {
171        if (typeof dataLayer !== 'undefined') {
172            event_campaign_compare_view_section_click(campaign);
173        }
174    }
175
176    const event_campaign_vote_action = (campaign = false) => {
177        let selector = '.campaign__voting_section__btn';
178        if (campaign !== false) {
179            selector = $(campaign).find(selector);
180        }
181
182        $(selector).click(function () {
183            const campaign_item = $(this).parents('.campaign-list-item').first();
184            const $params = get_event_default_params(campaign_item);
185
186            $params.event = 'Bonus';
187            $params.workflowName = 'vote action';
188            $params.voteType = $(this).hasClass('like-action') ? 'like' : 'dislike';
189            $params.interfaceComponent = 'vote button';
190            $params.filterType = '';
191
192            dataLayer.push($params);
193        });
194    }
195
196    const event_campaign_learn_more = (campaign = false) => {
197        let selector = '.campaign-list-item_open-more-btn, .campaign-list-item__show-more-btn';
198        if (campaign !== false) {
199            selector = $(campaign).find(selector);
200        }
201
202        $(selector).click(function () {
203            const campaign_item = $(this).parents('.campaign-list-item').first();
204            const $params = get_event_default_params(campaign_item);
205
206            $params.event = 'Bonus';
207            $params.workflowName = 'more info';
208            $params.interfaceComponent = 'learn more button';
209            $params.filterType = '';
210
211            dataLayer.push($params);
212        });
213    }
214
215    const event_campaign_coupon_copied = (selectors, campaign = false) => {
216        let selector = selectors;
217        if (campaign !== false) {
218            selector = $(campaign).find(selectors);
219        }
220
221        $(selector).click(function () {
222            const campaign_item = $(this).parents(main_offer_selectors).first();
223            const $params = get_event_default_params(campaign_item);
224
225            $params.event = 'Bonus';
226            $params.workflowName = 'bonus copied';
227            $params.interfaceComponent = 'copy coupon button';
228            $params.filterType = '';
229
230            dataLayer.push($params);
231        });
232    }
233
234    const event_campaign_cta_button = (selectors, campaign = false, custom_main_offer_selectors = '') => {
235        let selector = selectors;
236        if (campaign !== false) {
237            selector = $(campaign).find(selectors);
238        }
239
240        $(selector).click(function () {
241            let campaign_item;
242            if (custom_main_offer_selectors === '') {
243                campaign_item = $(this).parents(main_offer_selectors).first();
244            } else {
245                campaign_item = $(this).parents(custom_main_offer_selectors).first();
246            }
247
248            const $params = get_event_default_params(campaign_item);
249
250            $params.event = 'Bonus';
251            $params.workflowName = 'Toplist CTA Click';
252            $params.interfaceComponent = 'cta button';
253            $params.filterType = '';
254
255            dataLayer.push($params);
256        });
257    }
258
259    const event_campaign_hover = (selectors, campaign = false) => {
260        let selector = selectors;
261        if (campaign !== false) {
262            selector = $(campaign).find(selectors);
263        }
264
265        let hovered_offers = [];
266
267        $(selector).hover(function () {
268            const campaign_item = $(this).first();
269
270            let offer_id = $(campaign_item).data('id');
271            if (typeof offer_id === 'undefined') {
272                offer_id = $(campaign_item).attr('offer_id');
273            }
274
275            if (hovered_offers.includes(offer_id) === false) {
276                const $params = get_event_default_params(campaign_item);
277
278                $params.event = 'Bonus';
279                $params.workflowName = 'Toplist shown';
280                $params.interfaceComponent = 'cta button';
281                $params.filterType = '';
282
283                dataLayer.push($params);
284
285                hovered_offers.push(offer_id);
286            }
287        });
288    }
289
290    const get_event_default_params = (campaign_item) => {
291        const $campaign_item = $(campaign_item);
292
293        return {
294            affcode: $campaign_item.data('offer-name'),
295            bonusCode: get_campaign_bonus_code($campaign_item),
296            toplistTitle: get_campaign_bonus_title($campaign_item),
297            toplistType: get_campaign_toplist_type($campaign_item),
298            partnerRating: get_campaign_bonus_rating($campaign_item),
299            interfaceOfferPosition: $campaign_item.index(),
300        }
301    }
302
303    const event_campaign_filter_start = (campaign = false) => {
304        let selector = '.campaign_sport_filters__quick_block:not(.disable_click)';
305        if (campaign !== false) {
306            selector = $(campaign).find(selector);
307        }
308
309        $(selector).click(function () {
310            const filter_type = 'Main Filter';
311
312            dataLayer.push({
313                event: 'Filter',
314                workflowName: 'Toplist filter',
315                workflowStepName: 'start',
316                filterType: filter_type,
317            });
318        });
319    }
320
321    const event_campaign_filter_applied = (campaign = false) => {
322        let selector = '.campaign_sport_filters__quick_block_field';
323        if (campaign !== false) {
324            selector = $(campaign).find(selector);
325        }
326
327        $(selector).click(function () {
328            const filter_type = 'Main Filter';
329            const filter_value = $(this).find('.campaign_sport_filters__quick_block_label').first().text();
330
331            dataLayer.push({
332                event: 'Filter',
333                workflowName: 'Toplist filter',
334                workflowStepName: 'applied',
335                filterType: filter_type,
336                filterValue: filter_value,
337            });
338        });
339
340        selector = '.campaign_sport_filters__quick_block_select_option';
341        if (campaign !== false) {
342            selector = $(campaign).find(selector);
343        }
344
345        $(selector).click(function () {
346            const filter_type = 'Main Filter';
347            const filter_value = $(this).find('span').first().text();
348
349            dataLayer.push({
350                event: 'Filter',
351                workflowName: 'Toplist filter',
352                workflowStepName: 'applied',
353                filterType: filter_type,
354                filterValue: filter_value,
355            });
356        });
357    }
358
359    const event_campaign_extra_filter_start = (campaign = false) => {
360        let selector = '.campaign_sport_filters__open_btn';
361        if (campaign !== false) {
362            selector = $(campaign).find(selector);
363        }
364
365        $(selector).click(function () {
366            const filter_type = 'Extra Filter';
367
368            dataLayer.push({
369                event: 'Filter',
370                workflowName: 'Toplist filter',
371                workflowStepName: 'start',
372                filterType: filter_type,
373            });
374        });
375    }
376
377    const event_campaign_extra_filter_applied = (campaign = false) => {
378        let selector = '.campaign_sport_filters__extended_view';
379        if (campaign !== false) {
380            selector = $(campaign).find(selector);
381        }
382
383        $(selector).click(function () {
384            const filter_type = 'Extra Filter';
385            let filter_field = '';
386            let filter_value = {};
387
388            const checked_inputs = $('.campaign_sport_filters__quick_block_field input:checked');
389            $(checked_inputs).each(function () {
390                const filter_group = $(this).parents('.campaign_sport_filters__extended_group').first();
391                const filter_group_title = $(filter_group).find('.campaign_sport_filters__extended_group_title').text();
392                const input_label = $(this).parents('label').first().find('.campaign_sport_filters__quick_block_label').first().text();
393
394                if (input_label !== 'Show all') {
395                    if (typeof filter_value[filter_group_title] === 'undefined') {
396                        filter_value[filter_group_title] = input_label;
397                    } else {
398                        filter_value[filter_group_title] = filter_value[filter_group_title] + ', ' + input_label;
399                    }
400                }
401            });
402
403            filter_value = JSON.stringify(filter_value);
404
405            dataLayer.push({
406                event: 'Filter',
407                workflowName: 'Toplist filter',
408                workflowStepName: 'applied',
409                filterType: filter_type,
410                filterField: filter_field,
411                filterValue: filter_value,
412            });
413        });
414    }
415
416    const event_campaign_popular_filter = (campaign = false) => {
417        let selector = '.campaign_sport_filters__tag, .campaign-shortcode-table_filter-list-item';
418        if (campaign !== false) {
419            selector = $(campaign).find(selector);
420        }
421
422        $(selector).click(function () {
423            const filter_type = 'Most Popular Filter';
424            let filter_value = '';
425            if ($(this).hasClass('campaign_sport_filters__tag')) {
426                filter_value = $(this).clone().children().remove().end().text();
427            } else {
428                filter_value = $(this).text();
429            }
430
431            dataLayer.push({
432                event: 'Filter',
433                workflowName: 'Toplist filter',
434                workflowStepName: 'applied',
435                filterType: filter_type,
436                filterValue: filter_value,
437            });
438        });
439    }
440
441    const event_campaign_compare_toggle = (campaign = false) => {
442        let selector = '.campaign_sport_filters__compare-toggle-input';
443        if (campaign !== false) {
444            selector = $(campaign).find(selector);
445        }
446
447        $(selector).change(function () {
448            if ($(this).is(':checked')) {
449                dataLayer.push({
450                    event: 'Filter',
451                    workflowName: 'Toplist filter',
452                    workflowStepName: 'start',
453                    filterType: 'Extra filter',
454                    filterValue: 'Compare toggle',
455                });
456            }
457        });
458    }
459
460    const event_campaign_compare_view_section_click = (campaign = false) => {
461        let selector = '.campaign-shortcode__compare-view__section';
462        if (campaign !== false) {
463            selector = $(campaign).find(selector);
464        }
465
466        if ($(selector).length === 0) {
467            return;
468        }
469
470        const $campaign_compare_view_wrapper = $(selector).parents('.campaign-compare-view-wrapper').first();
471        if ($campaign_compare_view_wrapper.hasClass('bm-data-layer-init')) {
472            return;
473        }
474
475        $campaign_compare_view_wrapper.addClass('bm-data-layer-init');
476
477        $(selector).click(function () {
478            if ($(this).hasClass('collapsed')) {
479                return;
480            }
481
482            const filter_value = $(this).find('.campaign-shortcode__compare-view__section-name').first().text().trim();
483
484            dataLayer.push({
485                event: 'Filter',
486                workflowName: 'Toplist filter',
487                workflowStepName: 'start',
488                filterType: 'Compare toggle accordion',
489                filterValue: filter_value,
490            });
491        });
492    }
493
494    const event_casino_finder_start = () => {
495        $('.casino_finder__start_btn, .casino_finder__first_button_screen_wrapper').click(function () {
496            let interface_component = '';
497
498            if ($(this).parents('header').length > 0) {
499                interface_component = 'header';
500            }
501
502            if ($(this).parents('footer').length > 0) {
503                interface_component = 'footer';
504            }
505
506            if ($(this).parents('.sidebar').length > 0) {
507                interface_component = 'sidebar';
508            } else if ($(this).parents('main').length > 0) {
509                interface_component = 'content';
510            }
511
512            dataLayer.push({
513                event: 'Casino Finder',
514                workflowStepName: 'form start',
515                interfaceComponent: interface_component,
516            });
517        });
518    }
519
520    const event_casino_finder_form_interaction = () => {
521        $('.casino_finder__tile').click(function () {
522            const question_screen_wrapper = $(this).parents('.casino_finder__question_screen_wrapper').first();
523            const form_step_number = $(question_screen_wrapper).attr('screen-number');
524            const form_question = $(question_screen_wrapper).find('.casino_finder__question_header_question').first().text();
525            const form_value = $(this).find('.casino_finder__label').text();
526
527            dataLayer.push({
528                event: 'Casino Finder',
529                workflowStepName: 'form interaction',
530                formStepNumber: form_step_number,
531                formQuestion: form_question,
532                formValue: form_value,
533            });
534        });
535    }
536
537    const event_casino_finder_form_end = () => {
538        $('.casino_finder__wrapper').each(function () {
539            const question_screen_wrapper = $(this).find('.casino_finder__question_screen_wrapper').last();
540            const tiles = $(question_screen_wrapper).find('.casino_finder__tile');
541
542            $(tiles).click(function () {
543                dataLayer.push({
544                    event: 'Casino Finder',
545                    workflowStepName: 'form end',
546                });
547            });
548        });
549    }
550
551    const get_entity_value = (campaign_item, selector_key) => {
552        const $campaign_item = $(campaign_item);
553
554        for (const [class_name, dictionary] of Object.entries(toplist_database)) {
555            if ($campaign_item.hasClass(class_name)) {
556                const selector = dictionary.selectors[selector_key];
557
558                return selector ? $campaign_item.find(selector).first().text().trim() : '';
559            }
560        }
561
562        return '';
563    }
564
565    const get_campaign_bonus_code = (campaign_item) => {
566        return get_entity_value(campaign_item, 'coupon');
567    }
568
569    const get_campaign_bonus_title = (campaign_item) => {
570        return get_entity_value(campaign_item, 'title');
571    }
572
573    const get_campaign_toplist_type = (campaign_item) => {
574        for (const [class_name, dictionary] of Object.entries(toplist_database)) {
575            if (campaign_item.hasClass(class_name)) {
576                return dictionary.type;
577            }
578        }
579
580        return '';
581    }
582
583    const get_campaign_bonus_rating = (campaign_item) => {
584        return get_entity_value(campaign_item, 'rating').replace('/10', '').replace('/5', '');
585    }
586
587    window.dataLayer_initCampaignEvents = init_data_layer_campaign_events;
588    window.dataLayer_initCasinoFinderFinalOffersEvents = init_data_layer_casino_finder_final_offers_events;
589    window.dataLayer_compareViewVisible = data_layer_compare_view_visible;
590})(jQuery);

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.