PageSourceSearch

https://www.dumbartonreporter.co.uk/newsletters/

html dumbartonreporter.co.uk collected 2026-09-24 21:39:05 UTC 138,734 bytes, 3,462 lines download raw bytes

1<!-- standard - CustomHeader-NoAds-Site.html --> <!DOCTYPE html>
2<html lang="en" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">
3<head>
4    <title>Newsletters On The Dumbarton And Vale Of Leven Reporter</title>
5
6    <meta charset="utf-8">
7    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
8    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9    <meta name="OMG-Verify-V1" content="4389-366acdfc-5224-4c07-bb70-f74d8fbfc2db" />
10    <meta name="robots" content="max-image-preview:large">
11    <meta name="format-detection" content="telephone=no">
12
13    <style>
14        .mar-leaderboard--top {
15            display: none;
16        }
17    </style>
18    
18<script>
19        window.doNotAdvertise = true;
20    </script>
20
21    <link rel="canonical" href="https://www.dumbartonreporter.co.uk/newsletters/" />
22	<meta property="fb:pages" content="125834953798" />
23	<meta name="title" content="Newsletters On The Dumbarton And Vale Of Leven Reporter"/>
24	<meta name="description" content="Newsletters On The Dumbarton And Vale Of Leven Reporter"/>
25	<meta name="keywords" content=""/>
26
27<script type="application/ld+json">
28    {
29        "@context": "http://schema.org",
30        "@type": "WebPage",
31        "headline": "Newsletters Index",
32        "url": "https://www.dumbartonreporter.co.uk/newsletters/"
33    }
34</script>
34
35
36
37
38
39
40
41
42
43    <link id="page_stylesheet_vars" href="/resources/responsive-static/build/mds/css/palette-4-sans-serif-vars.css?r=mkW8NyPe" rel="stylesheet" type="text/css">
44
45    <link href="/resources/responsive-static/build/mds/css/header-footer.css?r=mkW8NyPe" rel="stylesheet" type="text/css">
46
47    <link id="page_stylesheet" href="/resources/responsive-static/build/mds/css/emailbulletin.css?r=mkW8NyPe" rel="stylesheet" type="text/css">
48
49    <link rel="shortcut icon" href="/resources/images/17395788/" type="image/vnd.microsoft.icon">
50    <link rel="icon" href="/resources/images/17395788/" type="image/vnd.microsoft.icon">
51    
51<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" crossorigin="anonymous"></script>
vendor: 1 bytes, line 51
51
52<script src="https://code.jquery.com/jquery-migrate-3.6.0.js" integrity="sha384-ekzRTCLAU/LqHRBjnphRAxgZZvGdoP+TfkGGsX+tBJpRdM7r2/89ZZNzC/7YTJXX" crossorigin="anonymous"></script>
vendor: 1 bytes, line 52
52
53<script type="text/javascript" src="/resources/shared/responsive-sync/?r=mkW8NyPe"></script>
53
54
55<script type="text/javascript">
56    data_layer_helper.setIsArticle(false);
57    data_layer_helper.setCookieDomain('.dumbartonreporter.co.uk');
58    data_layer_helper.setModuleType('Newsquest\Modules\EmailBulletinModule');
59    data_layer_helper.setLocalInfoFolder('');
60    data_layer_helper.setHomesData('', '', '', 'newsletters');
61    data_layer_helper.setPrimaryDomain('www.dumbartonreporter.co.uk');
62    data_layer_helper.setPath('/newsletters/');
63    data_layer_helper.setGoogleNetworkCode('154725070');
64    data_layer_helper.setArticleTimestamp('');
65    data_layer_helper.setPathOverride();
66
67
68    var extraTags = [];
69    
70        extraTags.push('user_level_anonymous');
71    
72
73    var data_layer = {
74        environment: {
75            is_test_site: 'no',
76            is_live_site: 'yes',
77            is_paywall_site: 'no',
78            is_portable_screen: (data_layer_helper.isMobileScreen()) ? 'yes' : 'no',
79            is_desktop_screen: (data_layer_helper.isMobileScreen()) ? 'no' : 'yes',
80            is_mobile_device: data_layer_helper.getMobileDevice(),
81            is_tablet_device: data_layer_helper.getTabletDevice(),
82            server: 'webapp-66cb74b878-ffmfh',
83            platform: 'Martini'
84        },
85        site: {
86            id: '1003',
87            comments_subscriber_only: 'no',
88            viafoura_site_id: '00000000-0000-4000-8000-95eb37bc0095',
89            comments_use_viafoura: 'yes',
90            centre_id: '24',
91            centre_name: 'Greenock and Clydebank',
92            country: 'Scotland',
93            name: 'Dumbarton and Vale of Leven Reporter',
94            name_with_prefix_capitalised_possessive: 'The Dumbarton and Vale of Leven Reporter\'s',
95            name_with_prefix_lower_possessive: 'the Dumbarton and Vale of Leven Reporter\'s',
96            domain: 'www.dumbartonreporter.co.uk',
97            editor_name: 'Stacey Mullen',
98            onboarding_enabled: 'no',
99            onboarding_flow_id: 'onboarding_disabled',
100            allowing_mr_replacement: '',
101            cookie_domain: '.dumbartonreporter.co.uk',
102            uses_cmp: 'yes',
103            short_domain: 'dumbartonreporter',
104            using_piano_id: 'yes',
105            enable_skimlinks: 'yes',
106            skimlinks_domain_id: '1680357',
107            disable_newsletters: 'no',
108            is_archant_site: 'no',
109            shc_merchant_name: '',
110            piano_application_group: 'Forest',
111            piano_site_name: 'Dumbarton and Vale of Leven Reporter',
112            piano_site_name_possessive: 'Dumbarton and Vale of Leven Reporter\'s',
113            piano_site_name_with_prefix_lower: 'the Dumbarton and Vale of Leven Reporter',
114            piano_site_name_with_prefix_capitalised: 'The Dumbarton and Vale of Leven Reporter',
115            piano_site_name_with_prefix_capitalised_possessive: 'The Dumbarton and Vale of Leven Reporter\'s',
116            piano_site_name_with_prefix_lower_possessive: 'the Dumbarton and Vale of Leven Reporter\'s',
117            piano_location_primary: 'Dumbarton',
118            piano_location_primary_possessive: 'Dumbarton\'s',
119            piano_location_county: 'West Dunbartonshire',
120            piano_location_county_possessive: 'West Dunbartonshire\'s',
121            piano_primary_sports_team: '',
122            piano_primary_sports_team_nickname: '',
123            piano_primary_sports_team_sport: '',
124            piano_primary_sports_team_possessive: '',
125            piano_primary_sports_team_nickname_possessive: '',
126            piano_self_service_cancellation_setting: 'None',
127            has_app: 'no',
128            app_provider: '',
129            app_platform: '',
130            app_store_url_ios: '',
131            app_store_url_google_play: ''
132        },
133        page: {
134            module: 'Newsquest\Modules\EmailBulletinModule',
135            referrer: data_layer_helper.getReferrerHostName(),
136            name: '(www) ' + data_layer_helper.getOmniturePath(),
137            title: document.title,
138            path: data_layer_helper.getOmniturePath(),
139            section: data_layer_helper.getPathFragment(0),
140            subsection: data_layer_helper.getPathFragment(1),
141            subsection_2: data_layer_helper.getPathFragment(2),
142            subsection_3: data_layer_helper.getPathFragment(3),
143            reference: qs.get('ref'),
144            layout: '',
145            ad_timing: data_layer_helper.getCookie('adtiming'),
146            template_namespace: 'standard',
147            template: '',
148            colour_scheme: '',
149            layout_template: '',
150            mds_font: 'sans-serif',
151            user_used_app_last_24hours: '',
152            user_used_app_last_7days: '',
153            user_used_app_last_14days: '',
154            mds_colour_palette: 'palette-4',
155            feature_block_a_enabled: ($('[data-name="Feature Article Block A"]').length > 0) ? 'yes' : 'no',
156            feature_block_b_variant: (typeof $('[data-name="Feature Article Block B"]').data('variant') === 'undefined') ? '' : $('[data-name="Feature Article Block B"]').data('variant'),
157            is_article_list: 'no',
158            error_404: '',
159            top_stories_article_count: '',
160            interstitial_dedupe_top_stories: '',
161            interstitial_desktop_height: '',
162            interstitial_mobile_height: '',
163            interstitial_tablet_height: '',
164            interstitial_piano_module_id: '',
165            interstitial_using_recommendations: '',
166            interstitial_recommendation_header: '',
167            interstitial_article_count: '',
168            news_stories_article_count: '',
169            site_newspaper_archive_enabled: 'no',
170            site_newspaper_archive_number_of_pages: '',
171            site_newspaper_archive_start_year: 0,
172            article_originates_from_this_site: '',
173            article_originates_from_site: '',
174            article_originates_from_url: ''
175        },
176        user: {
177            id: '',
178            first_name: '',
179            advertising_experience: 'Ad-Full',
180            is_privacy_plus: 'no',
181            is_alist: 'no',
182            level: data_layer_helper.getCookie('nq_ul'),
183            seen_cmp: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true' || data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
184            given_consent: (data_layer_helper.getCookie('_sp_enable_dfp_personalized_ads') === 'true') ? 'yes' : 'no',
185            consent_string: data_layer_helper.getConsentString(),
186            type: 'anonymous',
187            parsely_type: 'Anonymous',
188            chartbeat_type: 'anon',
189            type_as_int: '1',
190            is_logged_in: 'no',
191            is_admin: 'no',
192            is_internal_admin: '',
193            has_full_admin_link_permissions: '',
194            has_registered: (data_layer_helper.getCookie('nqr') !== null) ? 'yes' : 'no',
195            comments_verified: '',
196            comments_verified_date: '',
197            user_email_is_verified: '',
198            user_email_is_verified_date: '',
199            mobile_number_is_verified: '',
200            mobile_number_is_verified_date: '',
201            user_needs_email_verification: '',
202            user_needs_mobile_verification: '',
203            user_too_many_requests: '',
204            age_decade:  '0' ,
205            gender:  'u' ,
206            is_known: data_layer_helper.getCookie('__siren') ? 'yes' : 'no',
207            hash: '',
208            lr_hash_1: '',
209            lr_hash_2: '',
210            lr_hash_3: '',
211            gender:  'u' ,
212            user_decade:  '0' ,
213            subscription_plan: '',
214            subscription_tier: 'null',
215            subscription_plan_and_frequency: ' - ',
216            commented: (data_layer_helper.isArticle() && qs.get('action') === 'success') ? 'yes' : 'no',
217            time_since_last_visit: 'not implemented (maybe drop)',
218            device: data_layer_helper.getDevice(),
219            using_ad_blocker_sourcepoint: data_layer_helper.getSourcepointAdbockStatus(),
220            admin_user_name: '',
221            is_admin_internal: '',
222            is_admin_external: '',
223            card_expired: '',
224            card_will_expire: '',
225            expires_urgency: '',
226            abandoned_cart: 'no',
227            subscription_expired: 'no',
228            is_archant_site: 'no',
229            signed_up_primary_news_newsletter: 'no',
230            signed_up_primary_sport_newsletter: 'no',
231            played_free_puzzles_last_7days: '',
232            played_paid_puzzles_last_7days: '',
233            commenter_badge: '',
234        },
235        analytics: {
236            hierachy: 'newsquest,Greenock and Clydebank,www.dumbartonreporter.co.uk,' + data_layer_helper.getPathFragment(3).replace(/\//,','),
237            link_filters: 'javascript:,dumbartonreporter.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,',
238            tracking_block: data_layer_helper.getTrackingFromCookie('tracking_block', ''),
239            tracking_block_index: data_layer_helper.getTrackingFromCookie('tracking_block_index', ''),
240            previous_page_name: data_layer_helper.getCookie('nq_prev_page'),
241            advert_id: '',
242            position_in_list: data_layer_helper.getTrackingFromCookie('o-prop30', ''),
243            featured_content: data_layer_helper.getTrackingFromCookie('o-ref', qs.get('ref')),
244            account: data_layer_helper.getAccount()
245        },
246        chartbeat: {
247            enabled: "no",
248            id: "",
249            domain: "",
250            sections: ''
251        },
252        parsely: {
253            enabled: "yes",
254            site_id: "dumbartonreporter.co.uk",
255            type: 'Anonymous'
256        },
257        piano: {
258            tags: data_layer_helper.getPianoTags({
259                      piano_domain: 'dumbartonreporter',
260                      piano_master: '',
261                      breaking_news: false,
262                      editorial_opinion: false,
263                      free_subscriber: false,
264                      free_subscriber: false,
265                      has_video: false,
266                      is_article: false,
267                      article_content_level : '',
268                      article_content_level_open_access: false,
269                      picture_gallery_id: false,
270                      user_is_newsquest: false,
271                      user_is_entra_authenticated: false,
272                      user_logged_in: false,
273                      is_live_article: false,
274                      why_free_subscriber: '',
275                      extra_tags: extraTags,
276                      is_covid_headline: false,
277                      is_covid_body: false,
278                      is_alist: false,
279                      audio_provider_bytecast: false
280                  }
281            ),
282            custom_variables: {
283                article_length: '',
284                application_group: 'Forest',
285                content_is_editorial_opinion: 'no',
286                base_url: 'https://www.dumbartonreporter.co.uk',
287                full_url: document.location.href,
288                mds_font: 'sans-serif',
289                mds_colour_palette: 'palette-4',
290                site_name: 'Dumbarton and Vale of Leven Reporter',
291                site_name_possessive: 'Dumbarton and Vale of Leven Reporter\'s',
292                site_name_with_prefix_capitalised: 'The Dumbarton and Vale of Leven Reporter',
293                site_name_with_prefix_lower: 'the Dumbarton and Vale of Leven Reporter',
294                site_name_with_prefix_capitalised_possessive: 'The Dumbarton and Vale of Leven Reporter\'s',
295                site_name_with_prefix_lower_possessive: 'the Dumbarton and Vale of Leven Reporter\'s',
296                location_primary: 'Dumbarton',
297                location_primary_possessive: 'Dumbarton\'s',
298                location_county: 'West Dunbartonshire',
299                location_county_possessive: 'West Dunbartonshire\'s',
300                site_has_primary_sports_team: 'no',
301                primary_sports_team: '',
302                primary_sports_team_nickname: '',
303                primary_sports_team_sport: '',
304                primary_sports_team_possessive: '',
305                primary_sports_team_nickname_possessive: '',
306                site_id: '1003',
307                content_level: '',
308                content_author: '',
309                content_id: '',
310                content_is_article: 'no',
311                content_primary_topic: '',
312                user_seen_consent_modal: ($.cookie('_sp_enable_dfp_personalized_ads') === 'true' || $.cookie('_sp_enable_dfp_personalized_ads') === 'false') ? 'yes' : 'no',
313                site_section: data_layer_helper.getPathFragment(0, true),
314                article_published_yyyy: '',
315                user_played_free_puzzles_last_7days: '',
316                user_played_paid_puzzles_last_7days: '',
317                anon_user_played_free_puzzles_last_7days: data_layer_helper.untrackedPuzzleCheck(),
318                home_delivery_phone_number: '0800 953 0227',
319                content_is_restricted: data_layer_helper.getRestrictedContent('', '', '', ''),
320                day_of_week: data_layer_helper.getDayOfWeek(),
321                user_card_expired: '',
322                user_card_will_expire: '',
323                user_expires_urgency: '',
324                user_used_app_last_24hours: '',
325                user_used_app_last_7days: '',
326                user_used_app_last_14days: '',
327                user_subscription_tier: 'null',
328                user_is_newsquest: 'no',
329                primary_news_newsletter_id: '1797',
330                primary_news_newsletter_name: 'the Morning Briefing',
331                primary_news_newsletter_description: 'The latest stories, in your inbox every morning.',
332                primary_sport_newsletter_id: '1799',
333                primary_sport_newsletter_name: 'the Sports Briefing',
334                primary_sport_newsletter_description: 'Keep up to date with the latest sport headlines.',
335                user_signed_up_primary_news_newsletter: 'no',
336                user_signed_up_primary_sport_newsletter: 'no',
337                newsletter_auto_promote: '',
338                newsletter_auto_promote_name: '',
339                newsletter_auto_promote_description: '',
340                newsletter_auto_promote_ID: '',
341                site_has_app: 'no',
342                site_app_store_url_ios: '',
343                site_app_store_url_google_play: '',
344                subsets_experiment_id: '',
345                site_section1: data_layer_helper.getPathFragment(1, true), // GBL required
346                site_newspaper_archive_enabled: 'no',
347                site_newspaper_archive_number_of_pages: '',
348                site_newspaper_archive_start_year: 0,
349                article_originates_from_this_site: '',
350                article_originates_from_site: '',
351                article_originates_from_url: ''
352            },
353            native_variables: {
354                setContentCreated: '',
355                setContentIsNative:  'no',
356                setContentAuthor: '',
357                setContentSection: data_layer_helper.getPathFragment(0, true)
358            }
359        },
360        article: {
361            cscore:'',
362            showing_preview: '',
363            is_article: data_layer_helper.isArticle() ? 'yes' : 'no',
364            id : '',
365            length_type: '',
366            character_count: '',
367            author: ''.toLowerCase(),
368            e_var15: ''.toLowerCase(),
369            context: '',
370            content_level: '',
371            content_level_open_access: '',
372            content_level_combined: ',,no',
373            content_is_restricted: data_layer_helper.getRestrictedContent('', '', '', ''),
374            increment: (data_layer_helper.isArticle()) ? '+1' : '',
375            sponsor: '',
376            contributions: '0',
377            is_sponsored: 'no',
378            headline: '',
379            age: data_layer_helper.getArticleAge(),
380            upload_date: '',
381            publish_date: '',
382            update_date: '',
383            rating: '',
384            source: data_layer_helper.getSource(''),
385            subjects: (typeof articleSubjects === 'object') ? articleSubjects.join(',') : '',
386            context: '',
387            grapeshot_context: (typeof gs_channels !== 'undefined') ? gs_channels : '',
388            allow_comments: 'no',
389            total_comments: '',
390            originating_site_id: '',
391            parent_article_site_id: '',
392            parent_article_id: '',
393            originating_article_id: '',
394            parent_originating_site_id: '',
395            is_original_to_site: '',
396            is_cloned: '',
397            parent_article_url: '',
398            use_skimlinks: 'no',
399            content_primary_topic: '',
400            taxonomy: {
401                article_types: '',
402                topics: '',
403                sports: '',
404                sports_teams: '',
405                locations: '',
406                shared_content: '',
407                free_tags: '',
408                farming: ''
409            },
410            audio: {
411                has_audio: 'no',
412                provider: ''
413            },
414            article_comments_use_viafoura: ''
415        },
416        homes: {
417            search_bedrooms_minimum: '',
418            search_location: 'newsletters',
419            search_price_minimum: '',
420            search_price_maximum: '',
421            list: '',
422            id: ''
423        },
424        video: {
425            exists: 'no',
426            auto_play_enabled: data_layer_helper.getAutoPlay('no')
427        },
428        contributions: {
429            allow_text: '',
430            allow_image: '',
431            user_contributions_number: '0',
432            has_user_contributions: 'no'
433        },
434        search: {
435            keywords: qs.get('search'),
436            results: ''
437        },
438        announcements: {
439            category: ''
440        },
441        config: {
442            google_analytics_id: 'UA-1773968-13',
443            site_template_set: 'standard',
444            path: '/newsletters/',
445            top_level_section: 'newsletters',
446            polar_property_id: 'NA-DUMB-11238192',
447            gallery_show_advert_after: '5',
448            disable_outbrain_with_ad_light: 'no',
449            disable_outbrain: 'no'
450        },
451        dfp: {
452            is_landing: 'yes',
453            module_path: 'newsletters',
454            weather_band: '11-15',
455            weather_summary: 'cloudy'.toLowerCase(),
456            id: data_layer_helper.getGoogleId(),
457            display_screen: data_layer_helper.isMobileScreen() ? 'mobile' : 'desktop',
458            can_show_billboard: (window.screen.width > 960) ? 'y' : 'n'
459        },
460        dates: {
461            date: (new Date()).toLocaleDateString('en-GB'),
462            hour: (new Date()).getHours(),
463            day: data_layer_helper.getDayOfWeek(),
464            weekend: ((new Date()).getDay() === 6 || (new Date()).getDay() === 0) ? 'Weekend' : 'Weekday'
465        },
466        memorials: {
467            contact_phone_number: '',
468            contact_email_address: '',
469            publications: JSON.parse('' || '[]'),
470            user: {
471                id: '',
472                email_verified: 'no',
473                type: ''
474            },
475            funeral_director: {
476                id: '',
477                person_urn: ''
478            }
479        }
480    }
481
482    data_layer_helper.storeCurrentPageName(data_layer.page.name);
483
484    window.dispatchEvent(new Event('data-layer-loaded'))
485
486      data_layer.piano.custom_variables.user_used_app_last_24hours = 'no';
487      data_layer.piano.custom_variables.user_used_app_last_7days = 'no';
488      data_layer.piano.custom_variables.user_used_app_last_14days = 'no';
489  if (data_layer.article.is_article !== 'yes') {
490      data_layer.piano.custom_variables.site_module = 'Newsquest\Modules\EmailBulletinModule';
491      data_layer.piano.custom_variables.puzzles_landing_page = 'no';
492      data_layer.piano.custom_variables.puzzles_display_page = 'no';
493  }
494</script>
494
495 
496<script
497  src="https://assets.adobedtm.com/499440d21de9/54b957ecfb7e/launch-98090dfa3d73.min.js"
498  async
499></script>
499
500 
501
502<script>"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",r.title="tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}();</script>
502
503
504<script type = "text/javascript">
505( function () {
506
507    window._sp_ = {
508        config: {
509            baseEndpoint: 'https://a02342.dumbartonreporter.co.uk',
510            accountId: 52,
511            targetingParams:{
512                subscribed: false,
513                privacy: false
514            },
515            gdpr: { },
516            events: {
517                onMessageReady: function (message_type) {
518                    trackSPEvents('event76');
519                },
520                onMessageChoiceSelect: function (message_type, choice_id, choice_type_id) {
521                    console.log('message_type: ', message_type);
522                    console.log('choice_id: ', choice_id);
523                    console.log('choice_type_id: ', choice_type_id);
524                    if ('yes' === 'yes') {
525                        if (choice_type_id === 12) {
526                            trackSPEvents('event83'); //Consent Banner Reject All
527                            trackSPEvents('event82'); //Journalism Message Shown
528                        }
529                        if (choice_type_id === 11) {
530                            trackSPEvents('event78');
531                        }
532                        if (choice_type_id === 9) {
533                            trackSPEvents('event77');
534                        }
535                    } else {
536                        // these are the second argument in non-gate
537                        if (choice_type_id === 12) {
538                            trackSPEvents('event77');
539                        }
540
541                        if (choice_type_id === 11) {
542                            trackSPEvents('event78');
543                        }
544
545                        if (choice_type_id === 13) {
546		                    trackSPEvents('event83');
547                        }
548                    }
549                },
550                onPrivacyManagerActionStatus: function(message_type, status, actionType) {
551                    console.log('message_type: ' + message_type);
552                    console.log('status: ' + status);
553                    console.log('actionType: ' + actionType);
554                    if ('yes' === 'yes') {
555                        if (actionType === 11) {
556                            trackSPEvents('event79'); //Privacy Manager Accept
557                        }
558                        if (actionType === 9) {
559                            trackSPEvents('event68'); //Privacy Manager Redirect
560                        }
561                        if (actionType === 1) {
562                            trackSPEvents('event75'); //Forced tcf String Change
563                        }
564                    } else {
565                    // these are the second argument in non-gate
566                        if (actionType === 13) {
567                            trackSPEvents('event81'); //Privacy Manager Reject
568                        }
569                        if (actionType === 11) {
570                            trackSPEvents('event79'); //Privacy Manager Accept
571                        }
572                        if (actionType === 1) {
573                            trackSPEvents('event80'); //Privacy Manager Save & Exit
574                        }
575                    }
576                },
577                onPMCancel: function (message_type) {
578                    console.log('onPMCancel', message_type);
579                    trackSPEvents('event84'); //Privacy Manager Back
580                },
581            }
582        }
583    }
584
585    if (typeof window.__tcfapi === 'function') {
586        window.__tcfapi('addEventListener', 2, function (tcData, success) {
587            console.log('SP: Event Listen:', tcData, success);
588            if (success && tcData.eventStatus === 'useractioncomplete') {
589                setTcfCookie(tcData.purpose.consents, tcData.purpose.legitimateInterests);
590
591                var csnt = 'none';
592                if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
593                    csnt = 'yes';
594                } else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
595                    csnt = 'no';
596                }
597                googletag.cmd.push(function() {
598                    // console.log('DFP: Cookie check - setting dfpcsnt to ', csnt);
599                    googletag.pubads().setTargeting('dfpcsnt', csnt);
600                });
601                // ready to start DFP
602                // console.log('PIANO: setting unrestricted via useractioncomplete');
603                // runPiano('unrestricted');
604                startAdvertising(tcData.listenerId);
605
606                var e = new Event('launch:cmp:choice-made');
607                window.dispatchEvent(e);
608            } else if (success && tcData.eventStatus === 'tcloaded') {
609                // tcloaded means a valid TCF v2.0 string is available
610                // console.log('PIANO: setting unrestricted via tcloaded');
611                // runPiano('unrestricted');
612                if (tcData.gdprApplies === false) {
613                    $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.dumbartonreporter.co.uk', path: '/', expires: 100});
614                }
615                startAdvertising(tcData.listenerId);
616
617            } else if (success && tcData.eventStatus === 'useractionnotcomplete') {
618                // do nothing - this means the user has not made a choice yet
619            } else if (success && tcData.eventStatus === 'cmpuishown') {
620                // do nothing - this means the CMP UI has been shown
621            } else if (!success) {
622                // $.cookie('_sp_enable_dfp_personalized_ads', 'true', {domain: '.dumbartonreporter.co.uk', path: '/', expires: 100});
623                // startAdvertising();
624            } else {
625                // console.log('PIANO: setting restricted');
626                // runPiano('restricted');
627            }
628        });
629    }
630
631    
632
633    document.addEventListener('click', function (e) {
634        const option = e.target.closest('.gdpr-option-v2');
635
636        if (!option) return;
637
638        e.preventDefault();
639        sendEvent76 = false;
640
641        const id = option.dataset.v2Id;
642        const isGate = option.dataset.isGate;
643
644        if (isGate === 'yes') {
645            trackSPEvents('event87');
646            _sp_.gdpr.loadPrivacyManagerModal(id);
647        } else {
648            trackSPEvents('event77');
649            _sp_.gdpr.loadPrivacyManagerModal(id);
650        }
651    });
652
653    function getTcfData() {
654        if (typeof window.__tcfapi !== 'function') {
655            console.warn('TCF API unavailable');
656            return;
657        }
658        window.__tcfapi('addEventListener', 2, function(data, success) {
659            if (!data.purpose || !data.purpose.consents || !data.purpose.legitimateInterests) {
660                // console.log('DFP: No TCF data found, not setting cookies');
661                return;
662            }
663            setTcfCookie(data.purpose.consents, data.purpose.legitimateInterests);
664        }, [755]);
665    }
666    getTcfData();
667
668    function setTcfCookie(data, legitimateInterests) {
669        var consents = [];
670        $.each(data, function(id, consent)  {
671            var c = (consent === true) ? 'yes' : 'no';
672            consents.push(c)
673        });
674        // console.log('DFP: consents length: ', consents.length);
675        if (consents.length !== 10) {
676            // consents = consents.fill('no', consents.length, 10);
677            for (var i = consents.length; i < 10; i++) {
678                consents[i] = 'no';
679            }
680        }
681        // console.log('DFP: Found consents to store in cookie:', consents);
682        $.cookie('prev-tcf-v2', consents.join(','), {domain: '.dumbartonreporter.co.uk', path: '/', expires: 100});
683
684        var consentEvent4 = 'none';
685        if (typeof data[4] !== 'undefined') {
686            consentEvent4 = data[4] ? 'true' : 'false';
687        }
688        $.cookie('_sp_enable_dfp_personalized_ads', consentEvent4, {domain: '.dumbartonreporter.co.uk', path: '/', expires: 100});
689
690        var legitInterest = 'none';
691        if (legitimateInterests && typeof legitimateInterests[2] !== 'undefined') {
692            legitInterest = legitimateInterests[2] ? 'true' : 'false';
693        }
694
695        $.cookie('_sp_legitimate_interests', legitInterest , {domain: '.dumbartonreporter.co.uk', path: '/', expires: 100});
696    }
697
698    var sendEvent76 = true;
699
700    function trackSPEvents(events) {
701        if (events === 'event76' && !sendEvent76) {
702            return;
703        } else if (events === 'event76') {
704            sendEvent76 = false;
705        }
706
707        if (typeof window.s !== 'object') {
708            // console.log('DFP: No window.s object found, trying again in 1 second');
709            window.setTimeout(function () { trackSPEvents(events)} , 1000);
710            return;
711        }
712
713        // console.log("ADB: Tracking %s", events);
714        // Re-create the Omniture object so the data can be tracked.
715        var s = window.s;
716
717        if (events.indexOf('event70') !== -1) {
718            // console.log('DFP: Events passed, added evars');
719            s.eVar35 = 'enabled';
720            s.prop35 = 'enabled';
721        }
722
723        s.events = events;
724        s.linkTrackEvents = events;
725        s.linkTrackVars = "eVar2,eVar3,eVar4,eVar5,eVar6,evar7,evar8,evar9,eVar16,eVar19,eVar26,eVar35,eVar43,eVar67,prop35";
726        s.suppressPageView = true;
727        s.tl(true,'o','Ad Block');
728    }
729
730    function startAdvertising(id)
731    {
732        if (typeof window.doNotAdvertise !== 'undefined' && window.doNotAdvertise === true) {
733            return;
734        }
735
736        // console.log("DFP: Is the page fully loaded?", window.googleReady);
737        if (window.googleReady !== true) {
738            window.setTimeout(function () {
739                // console.log('DFP: Google not fully loaded yet, pausing quarter of a second before trying again');
740                startAdvertising(id);
741            }, 250);
742            return;
743        }
744
745        // Ensure that we never run this code twice
746        if (window.advertisingStart === true) {
747            return;
748        }
749        // console.log('DFP: Running advertisement');
750        window.advertisingStart = true;
751
752        var googletag = window.googletag;
753        // init google objects and array
754        (function() {
755            var gads = document.createElement('script');
756            gads.async = true;
757            gads.type = 'text/javascript';
758            gads.src = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';
759            var node = document.getElementsByTagName('script')[0];
760            node.parentNode.insertBefore(gads, node);
761        })();
762
763        // launch the exco slideshow player
764        launchExcoSlideshow();
765
766        // load facebook etc
767        loadSocials();
768
769        // Checking our decision to use headerbidding (shorterned as prebid) is correct
770        // via system logic, and that we have the simplified consent to do so
771        if (usePrebid && $.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
772            var e = new Event('launch:sourcepoint:consentaccepted');
773            window.dispatchEvent(e);
774
775            // AP code initialisation
776            // the script is loaded via launch, once we have detected a consent signal via the datalayer.
777            fetchAp();
778
779            var site = 'desktop';
780            var _site = 'desktop';
781
782            // load IAS scripts and set up vars
783            (function() {
784                var ias = document.createElement('script');
785                ias.async = true;
786                ias.type = 'text/javascript';
787                ias.src = 'https://cdn.adsafeprotected.com/iasPET.1.js';
788                var node = document.getElementsByTagName('script')[0];
789                node.parentNode.insertBefore(ias, node);
790            })();
791
792            // load the prebid script
793            (function() {
794                var pbs = document.createElement('script');
795                pbs.async = true;
796                pbs.type = 'text/javascript';
797                pbs.src = 'https://micro.rubiconproject.com/prebid/dynamic/11022.js?group=newsquest';
798                var node = document.getElementsByTagName('script')[0];
799                node.parentNode.insertBefore(pbs, node);
800            })();
801
802            // tell google to actually get the bids from all relevant vendors when loaded
803            googletag.cmd.push(function () {
804                fetchHeaderBids();
805            });
806        }
807
808        // Outbrain
809        if (
810            (window.data_layer.user.advertising_experience === 'Ad-Free' || window.data_layer.config.disable_outbrain === 'yes') ||
811            (window.data_layer.user.advertising_experience === 'Ad-Light' && window.data_layer.config.disable_outbrain_with_ad_light === 'yes')
812        ) {
813            // console.log("No Outbrain script loading due to page settings");
814        } else {
815            // console.log("Loading Outbrain");
816            var ob = document.createElement('script');
817            ob.async = true;
818            ob.type = 'text/javascript';
819            ob.src = 'https://widgets.outbrain.com/outbrain.js';
820            var node = document.getElementsByTagName('script')[0];
821            node.parentNode.insertBefore(ob, node);
822        }
823
824
825        // remove the listener
826        if (id !== null) {
827            window.__tcfapi('removeEventListener', 2, function (success) { }, id);
828        }
829    }
830
831    /**
832     * Wait until we have advertising consent to show this advertising
833     * based replacement for the single image on our article pages
834     * This logic is based on excoSlidshowPlayerID that only appears on the page
835     * if a user is NOT a subscriber (including privacy plus) and the page has the
836     * correct information to show it (doesn't have a video, not in sport etc)
837     */
838    function launchExcoSlideshow() {
839        const slideShowPlayerId = window.excoSlideshowPlayerId;
840        // if we do not have a player id, we do not need to do anything
841        if (!slideShowPlayerId) {
842            return;
843        }
844
845        // this is exco's supplied code, modified for our use
846        (function (d, s, n) {
847            fjs = d.getElementsByTagName(s)[0];
848            js = d.createElement(s);
849            js.className = n;
850            js.src = '//player.ex.co/player/' + slideShowPlayerId;
851            js.setAttribute('programmatic', 'true');
852	        js.onload = function () {
853                const playerApi = ExCoPlayer.connect(slideShowPlayerId);
854                playerApi.init({});
855
856                playerApi.on('player-load', function(data) {
857                    $('.mar-article-image').remove();
858                    if (window.screen.width > 800) {
859                        $('.article-hero').attr('style', 'order: 1');
860                    }
861                    window.hide_overlay_for_exco = true;
862                });
863            };
864            fjs.parentNode.insertBefore(js, fjs);
865        }(document, 'script', 'exco-player'));
866    }
867
868    function loadSocials()
869    {
870        const socials = [
871            'https://platform.twitter.com/widgets.js',
872            'https://connect.facebook.net/en_US/all.js#xfbml=1',
873            'https://www.tiktok.com/embed.js',
874        ];
875
876        socials.forEach((social) => {
877            var script = document.createElement('script');
878            script.src = social;
879            script.async = true;
880            document.getElementsByTagName('head')[0].appendChild(script);
881        });
882    }
883
884
885})();
886
887</script>
vendor: 1 bytes, line 887
887
888<script src="https://a02342.dumbartonreporter.co.uk/unified/wrapperMessagingWithoutDetection.js"></script>
888
889
890<script>
891window.usePiano = true;
892window.selectedOfferId = null;
893window.selectedTermId = null;
894</script>
vendor: 1 bytes, line 894
894
895<script>
896document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
897var setNptTechAdblockerCookie = function(adblocker) {
898    var d = new Date();
899    d.setTime(d.getTime() + 60 * 60 * 24 * 2 * 1000);
900    document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/";
901}
902var script = document.createElement("script");
903script.setAttribute("async", true);
904script.setAttribute("src", "//www.npttech.com/advertising.js");
905script.setAttribute("onerror", "setNptTechAdblockerCookie(true);");
906document.getElementsByTagName("head")[0].appendChild(script);
907</script>
907
908
909<script>
910// window.pdl = window.pdl || {};
911// window.pdl.requireConsent = 'v2';
912
913// Store entry point unless it's a user or subscribe page
914// to redirect after subscription
915const excludedPaths = ['/user/', '/subscribe/'];
916
917const shouldExclude = excludedPaths.some(path =>
918  window.location.pathname.includes(path)
919);
920
921if (!shouldExclude) {
922  sessionStorage.setItem(
923    'last_piano_page_interacted_with',
924    window.location.pathname
925  );
926}
927
928tp = window.tp || [];
929
930function runPiano(restrictedMode) {
931    // console.log('Running Piano with restricted mode:', restrictedMode);
932    // tp.push(['init', function() {
933    //      console.log('Piano purpose map, before calling setAllPurposes()', tp.consent.getByPurpose());
934    // }]);
935    // if (restrictedMode === 'restricted') {
936    //     // If we're in restricted mode, we need to set some specific parameters
937    //     tp.push(['init', function() {
938    //         tp.consent.setAllPurposes('opt-out')
939    //     }]);
940    // } else {
941    //     tp.push(['init', function() {
942    //         tp.consent.setAllPurposes('opt-in')
943    //     }]);
944    // }
945    // tp.push(['init', function() {
946    //     console.log('Piano purpose map, after calling setAllPurposes()', tp.consent.getByPurpose());
947    // }]);
948    // init Piano ID
949    tp.push(['init', function() {
950        tp.pianoId.init();
951    }]);
952
953    const isGooglebot = window.isRobot.googleBot();
954
955    const isArticle = (data_layer.article.is_article === 'yes');
956
957    const isCl3 = (parseInt(data_layer.article.content_level, 10) === 3);
958
959    if (isGooglebot) {
960        // we don't load Piano from all non-article pages
961        if (!isArticle) {
962            return;
963        }
964
965        // If we are on an article, we do not load piano on CL0, 1, or 2
966        if (!isCl3) {
967            return;
968        }
969    }
970    Object.keys(data_layer.piano.custom_variables).forEach(function (k) {
971        var v = data_layer.piano.custom_variables[k];
972
973        if (v != '') {
974            tp.push(["setCustomVariable", k, v]);
975        }
976    });
977
978    Object.keys(data_layer.piano.native_variables).forEach(function (k) {
979        var v = data_layer.piano.native_variables[k];
980        if (v != '') {
981            tp.push([k, v]);
982        }
983    });
984
985    tp.push(['setTags', data_layer.piano.tags]);
986
987   (function(src){
988        var a=document.createElement("script");
989        a.type = "text/javascript";
990        a.async=true;
991        a.src=src;
992        var b=document.getElementsByTagName("script")[0];
993        b.parentNode.insertBefore(a, b)
994    })("//experience.tinypass.com/xbuilder/experience/load?aid=vC1QJLQIpu");
995}
996
997// Init Piano
998const debug = document.cookie
999    .split('; ')
1000    .find(row => row.startsWith('debug='))
1001    ?.split('=')[1];
1002
1003tp.push(["setDebug", debug === '1']);
1004
1005tp.push(["setApplePayMerchantId", 'merchant.nq.subssites.piano']);
1006
1007tp.push(["setUsePianoIdUserProvider", true ]);
1008
1009tp.push(["addHandler", "loginRequired", function(params) {
1010    // If they're already signed in, we don't need to do anything special.
1011    if (tp.user.isUserValid()) {
1012        return;
1013    }
1014    if (typeof window._overridePianoDefault !== 'undefined' && window._overridePianoDefault !== true) {
1015        console.log("TPL Called")
1016        tp.pianoId.show({
1017            screen: 'login',
1018            displayMode: 'modal',
1019            loggedIn: (data) => {
1020                pianoId.loggedIn();
1021            },
1022            loggedOut: () => {
1023                console.log('TP-TJ: user logged out');
1024            },
1025            registrationSuccess: () => {
1026                pianoId.registered();
1027            },
1028            width: '500px',
1029            height: '460px',
1030        });
1031    }
1032}]);
1033
1034tp.push(["addHandler", "checkoutSelectTerm", function (termDetails) {
1035    if (typeof termDetails.termId !== 'undefined') {
1036        window.selectedTermId = termDetails.termId;
1037    }
1038}]);
1039
1040tp.push(["addHandler", "showTemplate", function (templateParams) {
1041    showPianoTarget(templateParams);
1042}]);
1043
1044tp.push(["addHandler", "showOffer", function (offerParams) {
1045    window.shownOffer = true;
1046
1047    // Store some data we might need later.
1048    if (typeof offerParams.offerId !== 'undefined') {
1049        window.selectedOfferId = offerParams.offerId;
1050    }
1051
1052    showPianoTarget(offerParams);
1053}]);
1054
1055function handleFullWidthBanner(selector) {
1056    if (selector === '#po-overlay-articlegate-full-width-full-article-scroll-below') {
1057        document.querySelector(selector).classList.add(selector.replace('#', ''));
1058    }
1059    document.querySelector(selector).style.minHeight = "254px";
1060    document.querySelector('#subscription-content').style.display = 'none';
1061    document.querySelectorAll('.send-us-your-news-cta').forEach((el) => { el.style.display = 'none'; });
1062    document.querySelectorAll('.mega-news-block').forEach((el) => { el.style.display = 'none'; });
1063
1064    const block = document.querySelector(selector);
1065    const containerBlock = block.parentElement;
1066    const containerBlockHeight = 254; // to prevent abrupt jumping
1067
1068    if (!block) { return; }
1069
1070    block.style.display = 'block';
1071
1072    const blockRect = block.getBoundingClientRect();
1073    const startTop = blockRect.top + window.scrollY;
1074    const blockHeight = blockRect.height;
1075    const screenWidth = window.screen.width;
1076
1077    let lastState = ''; // 'top', 'bottom', 'default'
1078
1079    function getScrollbarWidth() {
1080        return window.innerWidth - document.documentElement.clientWidth;
1081    }
1082
1083    function updatePosition() {
1084        const scrollY = window.scrollY;
1085        const viewportHeight = window.innerHeight;
1086        const bottomTrigger = startTop + blockHeight - viewportHeight;
1087
1088        let newState = 'default';
1089
1090        if (scrollY > startTop && screenWidth >= 768) {
1091            newState = 'top';
1092        } else if (scrollY < bottomTrigger && screenWidth >= 768) {
1093            newState = 'bottom';
1094        } else if (scrollY < bottomTrigger + 90 && screenWidth < 768) {
1095            newState = 'bottom-mobile';
1096        }
1097
1098        const scrollbarWidth = getScrollbarWidth();
1099
1100        if (newState !== lastState) {
1101            switch (newState) {
1102                case 'top':
1103                    block.style.position = 'fixed';
1104                    block.style.top = '0';
1105                    block.style.bottom = 'auto';
1106                    block.style.marginLeft = '0';
1107                    block.style.marginRight = '0';
1108                    containerBlock.style.minHeight = `${containerBlockHeight}px`;
1109                    break;
1110
1111                case 'bottom':
1112                    block.style.position = 'fixed';
1113                    block.style.bottom = '0';
1114                    block.style.top = 'auto';
1115                    block.style.marginLeft = '0';
1116                    block.style.marginRight = '0';
1117                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1118                    containerBlock.style.minHeight = 'unset';
1119                    break;
1120
1121                case 'bottom-mobile':
1122                    block.style.position = 'fixed';
1123                    block.style.bottom = '90px';
1124                    block.style.top = 'auto';
1125                    block.style.marginLeft = 'calc(-100vw + 100%)';
1126                    block.style.marginRight = 'calc(-100vw + 100%)';
1127                    containerBlock.style.minHeight = 'unset';
1128                    break;
1129
1130                default:
1131                    block.style.position = '';
1132                    block.style.top = '';
1133                    block.style.bottom = '';
1134                    block.style.width = `calc(100vw - ${scrollbarWidth}px)`;
1135                    block.style.marginLeft = '-100vw';
1136                    block.style.marginRight = '-100vw';
1137                    containerBlock.style.minHeight = 'unset';
1138                    break;
1139            }
1140
1141            lastState = newState;
1142        }
1143
1144        requestAnimationFrame(updatePosition);
1145    }
1146
1147    updatePosition();
1148    window.addEventListener('resize', updatePosition);
1149}
1150
1151function trackLocation(forceValidLocation = false) {
1152    var currentLocation = window.location.pathname;
1153
1154    let valid = false;
1155
1156    if (currentLocation.indexOf('puzzles') > -1) {
1157        valid = true;
1158    }
1159
1160    if (currentLocation.indexOf('pagesuite') > -1) {
1161        valid = true;
1162    }
1163
1164    var articleMatch = currentLocation.match(/(\d+)\.[^\/]+\/(r\/)?$/);
1165    if (articleMatch != null) {
1166        valid = true;
1167    }
1168
1169    if (forceValidLocation) {
1170        valid = true;
1171    }
1172
1173    if (currentLocation.indexOf('subscribe') > -1) {
1174        valid = false;
1175    }
1176
1177    if (!valid) {
1178        return;
1179    }
1180
1181    $.cookie('last-piano-page-interacted-with', currentLocation, {path: '/', domain: window.data_layer.site.cookie_domain});
1182}
1183
1184function trackPianoWithNewRelic(templateName) {
1185    if (this.newrelic && typeof this.newrelic === 'object') {
1186        newrelic.setCustomAttribute('user_was_shown_piano_experience', templateName);
1187    }
1188}
1189
1190function handleOfferShow(params) {
1191    console.log('Piano params', params);
1192
1193    // If on the subscription page and the URL has a term ID and offer ID, show the relevant offer.
1194    if (typeof location.pathname !== 'undefined' && location.pathname === '/subscribe/') {
1195        var offerId = location.search.match(/offer_id=([A-Z0-9]+)/);
1196        if (offerId !== null && offerId.length > 1) {
1197            offerId = offerId[1];
1198        }
1199        var termId = location.search.match(/term_id=([A-Z0-9]+)/);
1200        if (termId !== null && termId.length > 1) {
1201            termId = termId[1];
1202        }
1203        if (offerId !== null && termId !== null) {
1204            tp.offer.show({'termId': termId, 'offerId': offerId});
1205        }
1206    }
1207
1208    // we are only tracking
1209    var templateId = params.templateId;
1210    var variantId = params.templateVariantId;
1211    if (params.containerSelector !== '#po-inline-articlegate-fullarticle' &&
1212        params.containerSelector !== '#po-overlay-articlegate-full-width-full-article-scroll-below' &&
1213        params.containerSelector !== '#po-inline-articlegate-partialarticle' &&
1214        params.containerSelector !== '#po-overlay-articlegate-full-width-scroll-below'
1215    ) {
1216        $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1217            trackPianoSimplified(params, response.name);
1218        });
1219        return;
1220    }
1221
1222
1223    $.get('/ws/piano/templatename/', {template_id: templateId, variant_id: variantId}, function (response) {
1224        trackPiano(params, response.name);
1225    });
1226}
1227
1228function trackPiano(params, templateName) {
1229    trackPianoWithNewRelic(templateName);
1230
1231    if (typeof params.activeMeters === 'string') {
1232        activeMeters = JSON.parse(params.activeMeters);
1233    } else {
1234        activeMeters = params.activeMeters;
1235    }
1236
1237    var s = window.s;
1238    if (!s || !s.pageName) {
1239        // console.log("ADB: Setting s from backup");
1240        s = window.backupAdobe;
1241        window.s = s;
1242    }
1243
1244    // this would call when CL3 is a hard gate
1245    if (!activeMeters && data_layer.article.content_level === '3') {
1246        s.eVar59 = templateName;
1247        s.eVar58 = data_layer.article.content_level;
1248        s.events = "event91";
1249        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar15,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,eVar79,eVar104,eVar106,eVar107,eVar108,eVar118,prop63,list3,events";
1250        s.linkTrackEvents="event91";
1251        s.tl(document, 'o', 'Metered Access Notice');
1252        s.events = '';
1253        return;
1254    }
1255
1256    if (!activeMeters) {
1257        return;
1258    }
1259
1260    var meterData = activeMeters[0];
1261
1262    var meterName = meterData.meterName.toLowerCase();
1263
1264    // track event 5
1265    if (meterName.indexOf('cl1') !== -1 || meterName.indexOf('cl2') !== -1 || meterName.indexOf('cl3') !== -1 || params.containerSelector === '#po-inline-articlegate-partialarticle' || params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below') {
1266        s.eVar58 = data_layer.article.content_level;
1267        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1268        s.eVar59 = templateName;
1269        s.events = "event5";
1270        s.linkTrackVars="eVar58,eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1271        s.linkTrackEvents="event5";
1272    } else {
1273        s.eVar80 = meterData.meterName + ',' +  meterData.views + ',' + meterData.totalViews + ',' + meterData.viewsLeft + ',' + meterData.maxViews;
1274        s.eVar59 = templateName;
1275        s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3, events";
1276    }
1277    s.tl(document, 'o', 'Metered Access Notice');
1278    s.events = '';
1279
1280}
1281
1282/**
1283 * Just track the template name in 78 for non-article-interrupts/gates
1284 */
1285function trackPianoSimplified(params, templateName)
1286{
1287    trackPianoWithNewRelic(templateName);
1288
1289    var s = window.s;
1290    if (!s || !s.pageName) {
1291        // console.log("ADB: Setting s from backup");
1292        s = window.backupAdobe;
1293        window.s = s;
1294    }
1295    s.eVar78 = templateName;
1296    s.events = 'event90';
1297    s.linkTrackEvents="event90";
1298    s.linkTrackVars="eVar2,eVar3,eVar4,eVar5,eVar6,eVar16,eVar19,eVar25,eVar26,eVar28,eVar43,eVar59,eVar61,eVar62,prop63,eVar80,eVar79,eVar118,list3,eVar78, events";
1299    s.tl(document, 'o', 'Piano Template');
1300}
1301
1302function raiseLaunchEvent(name) {
1303    var e = new Event('launch:piano:' + name);
1304    window.dispatchEvent(e);
1305}
1306
1307function removePianoToast() {
1308    setTimeout(() => {
1309        document.getElementById('po-overlay-toast-left').remove()
1310    }, 30000)
1311}
1312
1313function showPianoTarget(params) {
1314    handleOfferShow(params);
1315    trackLocation();
1316
1317    if ($(params.containerSelector).length > 0) {
1318        const displayType = $(params.containerSelector).attr('data-display');
1319
1320        if (displayType) {
1321            $(params.containerSelector).addClass(`shown-${displayType}`);
1322        } else {
1323            $(params.containerSelector).addClass('shown').show();
1324        }
1325
1326        if ($(params.containerSelector).hasClass('piano--block-level') || $(params.containerSelector).hasClass('piano--inside-block')) {
1327            $(params.containerSelector).show();
1328        }
1329
1330        if (
1331            params.containerSelector === '#po-overlay-articlegate-full-width-scroll-below' ||
1332            params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below'
1333        ) {
1334            handleFullWidthBanner(params.containerSelector);
1335        }
1336
1337        if ($(params.containerSelector) === '#po-inline-subscribe-page') {
1338            $(params.containerSelector).show();
1339        }
1340
1341        if (['#po-inline-blocksystem-target-e'].includes(params.containerSelector)) {
1342            $('#po-inline-blocksystem-target-e').show();
1343            $('.piano-promo-container').show();
1344        }
1345
1346        if (params.containerSelector === '#po-overlay-toast-left') {
1347            removePianoToast()
1348        }
1349
1350        if (params.containerSelector === '#po-overlay-toast-main-navigation') {
1351            removePianoToast()
1352        }
1353
1354        if (params.containerSelector === '#po-inline-articlewall-partialarticle-closable') {
1355            $('#po-inline-articlegate-partialarticle').css('display', 'none');
1356        }
1357
1358        if (params.containerSelector === '#po-inline-articlewall-fullarticle-closable') {
1359            $('#po-inline-articlegate-fullarticle').css('display', 'none');
1360        }
1361
1362        if (params.containerSelector === '#po-overlay-articlegate-full-width-full-article-scroll-below-closable') {
1363            $('#po-overlay-articlegate-full-width-full-article-scroll-below').css('display', 'none');
1364        }
1365    }
1366}
1367
1368tp.push(["addHandler", "checkoutComplete", function(conversion) {
1369    var s = window.s;
1370    s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
1371    s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
1372    s.products = "Subscription : Metered Access;" + conversion.termId + ";1;"+conversion.chargeAmount;
1373    s.linkTrackEvents = "event4,purchase";
1374    s.purchaseID = conversion.termConversionId;
1375    s.pageName = '(www) /subscribe/complete/';
1376    // wipe out errors
1377    s.eVar31 = '';
1378    s.linkTrackVars="eVar2,eVar3,eVar5,eVar6,eVar7,eVar8,eVar9,eVar10,eVar15,eVar16,eVar17,eVar18,eVar19,eVar20,eVar22,eVar23,eVar24,eVar25,eVar26,eVar61,eVar62,events,products,purchaseID";
1379
1380    s.tl(true, 'o', 'Subscription');
1381
1382    $.cookie('resourceConverted', conversion.rid, {path: '/', domain: window.data_layer.site.cookie_domain});
1383    $.cookie('pianoConverted', '1', {path: '/', domain: window.data_layer.site.cookie_domain});
1384    raiseLaunchEvent('checkoutComplete');
1385
1386    // Clean Session Storage
1387    sessionStorage.removeItem('nq_selected_offer_id');
1388    sessionStorage.removeItem('nq_selected_term_id');
1389    sessionStorage.removeItem('nq_adobe_tracking_article_dimensions');
1390    sessionStorage.removeItem('nq_adobe_tracking_visiting_dimensions');
1391
1392    // Show Onboarding modal after subscription
1393    const lastPage = sessionStorage.getItem('last_piano_page_interacted_with');
1394    const baseUrl = lastPage || window.location.href;
1395
1396    const url = new URL(baseUrl, window.location.origin);
1397    url.searchParams.set('show-onboarding', 'yes');
1398
1399    setTimeout(() => {
1400        window.location.href = url.pathname + url.search;
1401    }, 2000);
1402}]);
1403
1404tp.push(["addHandler", "checkoutPaymentError", function(errorData) {
1405    var s = window.s;
1406    s.pageName = '(www) /subscribe/error/';
1407    s.eVar31 = errorData.message;
1408    s.tl(true, 'o', 'CheckoutPaymentError');
1409
1410    raiseLaunchEvent('checkoutPaymentError');
1411}]);
1412
1413tp.push(["addHandler", "checkoutError", function(errorData) {
1414    var s = window.s;
1415    s.pageName = '(www) /subscribe/error/';
1416    s.eVar31 = errorData.message;
1417    s.tl(true, 'o', 'CheckoutError');
1418    raiseLaunchEvent('checkoutError');
1419}]);
1420
1421tp.push(["addHandler", "startCheckout", function(options) {
1422    sessionStorage.setItem("nq_selected_offer_id", options.offerId);
1423    sessionStorage.setItem("nq_selected_term_id", options.termId);
1424
1425    if (!tp.user.isUserValid()) {
1426        window.location = '/user/create-account/subscribe/';
1427        return;
1428    }
1429
1430    var s = window.s;
1431    s.eVar2 = '(www) /subscribe/payment/';
1432    s.pageName = '(www) /subscribe/payment/';
1433    const storedAdobeArticleDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
1434    const storedAdobeVisitingDimensions = sessionStorage.getItem('nq_adobe_tracking_visiting_dimensions');
1435    if (storedAdobeVisitingDimensions) {
1436        const storedAdobeVisitingDimensionsObj = JSON.parse(storedAdobeVisitingDimensions);
1437        s.eVar10 = storedAdobeVisitingDimensionsObj.eVar10;
1438        s.eVar22 = storedAdobeVisitingDimensionsObj.eVar22;
1439        s.eVar23 = storedAdobeVisitingDimensionsObj.eVar23;
1440        s.eVar24 = storedAdobeVisitingDimensionsObj.eVar24;
1441    }
1442    if (storedAdobeArticleDimensions) {
1443        const storedAdobeArticleDimensionsObj = JSON.parse(storedAdobeArticleDimensions);
1444        s.eVar10 = storedAdobeArticleDimensionsObj.eVar10;
1445        s.eVar15 = storedAdobeArticleDimensionsObj.eVar15;
1446        s.eVar22 = storedAdobeArticleDimensionsObj.eVar22;
1447        s.eVar23 = storedAdobeArticleDimensionsObj.eVar23;
1448        s.eVar24 = storedAdobeArticleDimensionsObj.eVar24;
1449        s.eVar25 = storedAdobeArticleDimensionsObj.eVar25;
1450    }
1451    // wipe out errors
1452    s.eVar31 = '';
1453    s.events = '';
1454    raiseLaunchEvent('startCheckout');
1455    s.linkTrackVars="eVar10,eVar15,eVar22,eVar23,eVar24,eVar25";
1456    s.t();
1457}]);
1458
1459tp.push(["addHandler", "checkoutClose", function(conversion) {
1460    raiseLaunchEvent('checkoutClose');
1461
1462    // Did they abandon the cart? If so: was anything in their cart?
1463    if (typeof conversion.state === 'undefined' || conversion.state !== 'close') {
1464        return;
1465    }
1466    if (window.selectedOfferId === null || window.selectedTermId === null) {
1467        return;
1468    }
1469    $.post('/ws/piano/abandoned-cart/', {offer_id: window.selectedOfferId, term_id: window.selectedTermId});
1470}]);
1471
1472tp.push(["addHandler", "meterExpired", function(meterData){
1473    var msg = "<div><b>meterName:</b> " + meterData.meterName
1474        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1475        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1476        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1477        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1478        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1479    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1480        $('#piano-meter-value').html(msg);
1481        $('#piano-meter-display').show();
1482        $('#piano-meter-display-content').append(msg);
1483    }
1484    var cVal = window.location.href;
1485
1486    trackLocation(true);
1487
1488    console.log("Piano Meter Expired:", meterData.meterName);
1489    if (meterData.meterName === 'CL1 Meter') {
1490        console.log("Piano: Setting meter expired cookie");
1491        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1492    }
1493
1494    raiseLaunchEvent('meterExpired');
1495
1496}]);
1497
1498tp.push(["addHandler", "meterActive", function(meterData){
1499    var msg = "<div><b>meterName:</b> " + meterData.meterName
1500        + "&nbsp; | &nbsp;<b>views:</b> " + meterData.views
1501        + "&nbsp; | &nbsp;<b>totalViews:</b> " + meterData.totalViews
1502        + "&nbsp; | &nbsp;<b>viewsLeft:</b> " + meterData.viewsLeft
1503        + "&nbsp; | &nbsp;<b>maxViews:</b> " + meterData.maxViews
1504        + "&nbsp; | &nbsp;<b>callback:</b> " + meterData.callback + '</div>';
1505    if ($.cookie('nq-show-piano-viewer') === 'yes') {
1506        $('#piano-meter-value').html(msg);
1507        $('#piano-meter-display').show();
1508        $('#piano-meter-display-content').append(msg);
1509    }
1510
1511    console.log("Piano Meter running total:", meterData.meterName,  meterData.totalViews, meterData.maxViews, meterData);
1512    if (meterData.meterName === 'CL1 Meter' && meterData.totalViews >= meterData.maxViews) {
1513        $.cookie('isMeterExpired', 'yes', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1514    } else {
1515        $.cookie('isMeterExpired', 'no', {path: '/', domain: window.data_layer.site.cookie_domain, expires: 1});
1516    }
1517}]);
1518
1519
1520tp.push(["setCxenseSiteId", "3612210327590544502"]);
1521
1522
1523runPiano('unrestricted');
1524
1525</script>
1525
1526
1527
1528
1529    <link rel="apple-touch-icon" href="/resources/images/17395790/">
1530    <link rel="apple-touch-icon" sizes="72x72" href="/resources/images/17395789/">
1531    <link rel="apple-touch-icon" sizes="114x114" href="/resources/images/17395791/">
1532
1533
1534    <!-- Add iconify -->
1535    
1535<script src="https://code.iconify.design/1/1.0.7/iconify.min.js" integrity="sha384-jQq64HqdQD5xg0PPkpkCOW3x8Nsfx5UT1qWOpoJxLYy6Ef+5i+8xPoAj/I3B+ZMm" crossorigin="anonymous"></script>
1535
1536</head>
1537<body class="sticky-footer" data-cache-buster="mkW8NyPe" data-template="" data-template-colour="Blue" data-namespace="standard">
1538    <!--
1539  ##+ +##  ##: `#####.  #######  ###  ###      ######  `#####.  #######      ###  ,##  +#####
1540  +## ###' ##  #######  ######## ### ###       ######  #######  ########     ###  ,##  ######:
1541  .## #### ## ###   ### ###  ### ######        ##,    ###   ### ###  ###     ###  ,##  ##`
1542   ##,#+##:## ###   ### #######  ######        #####+ ###   ### #######      ###  ,##  +#####
1543   ####`####+ ###   ### ######   #######       #####+ ###   ### ######       ###  ,##     ####
1544   #### .###. '##   ##' ### ###  ### ,##:      ##,    '##   ##' ### ###      ###  ### '##  +##
1545   :###  ###   #######  ### `##+ ###  ###      ##,     #######  ### `##+     `#######  ######+
1546    ##:  ###    #####   ###  ### ###  ,###     ##,      #####   ###  ###       #####    ####+
1547
1548Developers, designers, testers - interested in working for us?
1549Contact this guy....https://uk.linkedin.com/in/hillsimon
1550-->
1551
1552
1553    <div style="height: 0px"><div id="DFP_out_of_page"></div></div>
1554
1555    <div id="paywallWindowOverlay"></div>
1556
1557
1558
1559    <div id="takeover">
1560        <div id="martini-config" class="layout">
1561            <div id="header-content">
1562                <!-- standard - header-1.html --> <header id="site-header" class="site-header site-header--1 header-bottom-margin" >
1563    
1564    <div class="header-topnav" role="navigation" aria-label="top-navigation">
1565    
1566    <div class="container-inner-width">
1567        <div class="header-topnav-links">
1568          <ul class="list-style-none">
1569             <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="https://www.s1homes.com/" target="blank">Homes</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Motoring</a></li> <li><a class="mar-nav--promo-link" href="https://directory.dumbartonreporter.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1570          </ul>
1571        </div>
1572          <ul id="links-nav" class="header-topnav--links-nav list-style-none">
1573            <li class="links-nav-label"><span class="links-nav-label-text">More</span>
1574                <ul class="list-style-none">
1575                    <li class="dropdown-icon-closed">
1576                        <span class="iconify" data-icon="akar-icons:chevron-down"></span>
1577                    </li>
1578                    <li class="dropdown-icon-open" style="display: none;">
1579                        <span class="iconify" data-icon="akar-icons:chevron-up"></span>
1580                    </li>
1581
1582                    <li class="links-nav-container">
1583                        <ul class="list-style-none">
1584                            <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="https://www.s1homes.com/" target="blank">Homes</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Motoring</a></li> <li><a class="mar-nav--promo-link" href="https://directory.dumbartonreporter.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1585                        </ul>
1586                    </li>
1587                </ul>
1588            </li>
1589          </ul>
1590    </div>
1591    
1592        </div>
1593
1594    <div class="site-brand container-inner-width">
1595        <div class="site-brand__container">
1596        <a href="/">
1597            <img src="/resources/images/small_site_logo/" alt="Dumbarton and Vale of Leven Reporter" class="site-brand__brand-image"/>
1598        </a>
1599        </div>
1600        <div class="simple-header-top-navigation">
1601    <div class="simple-header-top-navigation__links">
1602
1603        <div class="simple-header-top-navigation__links--primary-links header-primary-links">
1604            
1605
1606            
1607            <ul class="list-style-none top-nav-overflow">
1608                <li><a  href="/newsletters/" class="mar-btn mar-btn--promo-primary">Newsletters</a></li> 
1609            </ul>
1610            
1611        </div>
1612
1613        
1614        
1615        <div class="simple-header-top-navigation__links--classifieds">
1616            
1617        </div>
1618        
1619        
1620
1621    </div>
1622    
1623    <div class="simple-header-top-navigation__links--account">
1624        
1625        <a id="user-login-not-loggedin" href="/user/login/?redirect_url=/user/account/" class="simple-header-top-navigation__user-login mar-btn" title="User Account">
1626            <div aria-label="User Account Button" id="headerUserAccountButton">
1627                <svg xmlns="http://www.w3.org/2000/svg " width="14" height="16" viewB
1627ox="0 0 10 14" fill="none">
1628<circle cx="5" cy="3.85718" r="3" fill="black"/>
1629<ellipse cx="5" cy="10.2857" rx="5" ry="2.85714" fill="black"/>
1630</svg>
1631            </div>
1632        </a>
1633        
1634    </div>
1635    
1636
1637    <button aria-expanded="false" aria-label="Open the menu" class="simple-header-top-navigation__mega-menu-btn primary-nav__menu--more-btn">
1638        <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M3 6h18M3 12h18M3 18h18"/></svg>
1639    </button>
1640
1641</div>
1642    </div>
1643
1644    <div id="mega-menu" class="mega-menu" style="display: none;">
1645    <div class="mega-menu__container mega-menu__wrapper">
1646        <div class="mega-menu__cancel-button">
1647            <i aria-expanded="true" aria-hidden="true" aria-label="Close the menu" class="mega-menu__cancel-button--icon">
1648                <span class="iconify" data-icon="eva:close-fill" data-inline="false"></span>
1649                <div>Close</div>
1650            </i>
1651        </div>
1652
1653    
1654
1655    
1656        <div class="mega-menu__features expanded-sub-nav">
1657        <div class="mega-menu__features--links">
1658            
1659                <h4 class="prefix mega-menu__features--prefix link-item">Featured newsletters</h4>
1660            
1661            <a href="/newsletters/1797/"  class="col link-item">Morning Briefing</a>
1662            
1663
1664                <a href="/newsletters/1798/"  class="col link-item">Today's Most Read</a>
1665            
1666
1667                <a href="/newsletters/2733/"  class="col link-item">Crime and Court</a>
1668            
1669
1670                <a href="/newsletters/1799/"  class="col link-item">Sports Briefing</a>
1671            
1672
1673                <a href="/newsletters/2734/"  class="col link-item">Council and Planning</a>
1674            
1675            </div>
1676            <hr class="divider none">
1677        </div>
1678    
1679
1680        <div class="mega-menu__search">
1681          <form method="get" action="/search/">
1682              <label class="mega-menu__search--title" for="searchbar-input">Search</label>
1683              <div class="mega-menu__search--bar">
1684                  <input id="searchbar-input" class="searchbar-input" type="text" name="search" placeholder="Search Dumbarton and Vale of Leven Reporter">
1685                  <button class="searchbar-btn mira-search-button" type="submit"><span class="iconify" data-icon="fe:search" data-inline="false"></span></button>
1686              </div>
1687          </form>
1688        </div>
1689
1690        <div class="mega-menu__main-list link-list">
1691      <div class="mega-menu__main-list--list-item">
1692                <div>
1693                    <div>
1694                        <a href="/news/">
1695                            <h3><span class="mega-menu__main-list--parent-link">News</span></h3>
1696                        </a>
1697                    </div>
1698        
1699                    <div class="mega-menu__main-list--child-links">
1700                      <div class="child-item">
1701                          <a href="/news/dumbarton/">Dumbarton</a>
1702                      </div>
1703                  
1704
1705                      <div class="child-item">
1706                          <a href="/news/valeofleven/">Vale of Leven</a>
1707                      </div>
1708                  
1709
1710                      <div class="child-item">
1711                          <a href="/news/balloch_and_jamestown/">Balloch &amp; Jamestown</a>
1712                      </div>
1713                  
1714
1715                      <div class="child-item">
1716                          <a href="/news/council-and-planning/">Council and Planning</a>
1717                      </div>
1718                  
1719
1720                      <div class="child-item">
1721                          <a href="/news/crime-and-court/">Crime and Court</a>
1722                      </div>
1723                    </div>
1724        
1725                </div>
1726                <div class="divider"></div>
1727            </div>
1728      
1729
1730            <div class="mega-menu__main-list--list-item">
1731                <div>
1732                    <div>
1733                        <a href="/sport/">
1734                            <h3><span class="mega-menu__main-list--parent-link">Sport</span></h3>
1735                        </a>
1736                    </div>
1737        
1738                    <div class="mega-menu__main-list--child-links">
1739                      <div class="child-item">
1740                          <a href="/sport/football/">Football</a>
1741                      </div>
1742                  
1743
1744                      <div class="child-item">
1745                          <a href="/sport/thesons/">The Sons</a>
1746                      </div>
1747                  
1748
1749                      <div class="child-item">
1750                          <a href="/sport/valeoflevenjrs/">Vale of Leven Jrs</a>
1751                      </div>
1752                  
1753
1754                      <div class="child-item">
1755                          <a href="/sport/juniors/">Junior Football</a>
1756                      </div>
1757                  
1758
1759                      <div class="child-item">
1760                          <a href="/sport/national-sport/">National Sport</a>
1761                      </div>
1762                  
1763
1764                      <div class="child-item">
1765                          <a href="/sport/national/">UK Sport News</a>
1766                      </div>
1767                    </div>
1768        
1769                </div>
1770                <div class="divider"></div>
1771            </div>
1772      
1773
1774            <div class="mega-menu__main-list--list-item">
1775                <div>
1776                    <div>
1777                        <a href="/opinion/">
1778                            <h3><span class="mega-menu__main-list--parent-link">Opinion</span></h3>
1779                        </a>
1780                    </div>
1781        
1782                </div>
1783                <div class="divider"></div>
1784            </div>
1785      
1786
1787            <div class="mega-menu__main-list--list-item">
1788                <div>
1789                    <div>
1790                        <a href="/leisure/">
1791                            <h3><span class="mega-menu__main-list--parent-link">What&#039;s On</span></h3>
1792                        </a>
1793                    </div>
1794        
1795                    <div class="mega-menu__main-list--child-links">
1796                      <div class="child-item">
1797                          <a href="/leisure/local-events/">Local Events</a>
1798                      </div>
1799                    </div>
1800        
1801                </div>
1802                <div class="divider"></div>
1803            </div>
1804      
1805
1806            <div class="mega-menu__main-list--list-item">
1807                <div>
1808                    <div>
1809                        <a href="/notices/">
1810                            <h3><span class="mega-menu__main-list--parent-link">Notices</span></h3>
1811                        </a>
1812                    </div>
1813        
1814                    <div class="mega-menu__main-list--child-links">
1815                      <div class="child-item">
1816                          <a href="/notices/bereavement-guide/">Bereavement Guide</a>
1817                      </div>
1818                    </div>
1819        
1820                </div>
1821                <div class="divider"></div>
1822            </div>
1823      
1824
1825            <div class="mega-menu__main-list--list-item">
1826                <div>
1827                    <div>
1828                        <a href="/e_edition/">
1829                            <h3><span class="mega-menu__main-list--parent-link">E-Editions</span></h3>
1830                        </a>
1831                    </div>
1832        
1833                    <div class="mega-menu__main-list--child-links">
1834                      <div class="child-item">
1835                          <a href="/e_edition/supplements/">Supplements</a>
1836                      </div>
1837                  
1838
1839                      <div class="child-item">
1840                          <a href="/e_edition/connect/">Connect</a>
1841                      </div>
1842                    </div>
1843        
1844                </div>
1845                <div class="divider"></div>
1846            </div>
1847        </div>
1848    </div>
1849
1850    <div class="mega-menu__sticky">
1851        <ul class="list-style-none mega-menu__sticky--list">
1852            <div class="mega-menu__sticky--primary-links">
1853                
1854                <li><a  href="/newsletters/" class="mar-btn mar-btn--promo-primary">Newsletters</a></li> 
1855            </div>
1856            <li><a class="mar-nav--promo-link" href="/newsletters/">Newsletters</a></li> <li><a class="mar-nav--promo-link" href="/jobs/">Jobs</a></li> <li><a class="mar-nav--promo-link" href="https://www.s1homes.com/" target="blank">Homes</a></li> <li><a class="mar-nav--promo-link" href="/cars/">Motoring</a></li> <li><a class="mar-nav--promo-link" href="https://directory.dumbartonreporter.co.uk/" target="blank">Local listings</a></li> <li><a class="mar-nav--promo-link" href="/li/">Local info</a></li> 
1857        </ul>
1858    </div>
1859</div>
1860
1861
1862    <!-- standard - SimplePrimaryNavigation.html --> <nav aria-label="Main navigation" id="primary-nav" class="primary-nav">
1863    <div class="primary-nav__container container-inner-width">
1864        <span class="primary-nav__left">
1865          <nav class="primary-nav__menu">
1866              <div class="primary-nav__menu-container">
1867  <div class="primary-nav__menu--item">
1868                      <a class="primary-nav__menu--link" href="/news/">News</a>
1869                  </div>
1870  
1871
1872                  <div class="primary-nav__menu--item">
1873                      <a class="primary-nav__menu--link" href="/sport/">Sport</a>
1874                  </div>
1875  
1876
1877                  <div class="primary-nav__menu--item">
1878                      <a class="primary-nav__menu--link" href="/opinion/">Opinion</a>
1879                  </div>
1880  
1881
1882                  <div class="primary-nav__menu--item">
1883                      <a class="primary-nav__menu--link" href="/leisure/">What&#039;s On</a>
1884                  </div>
1885  
1886
1887                  <div class="primary-nav__menu--item">
1888                      <a class="primary-nav__menu--link" href="/notices/">Notices</a>
1889                  </div>
1890  
1891
1892                  <div class="primary-nav__menu--item">
1893                      <a class="primary-nav__menu--link" href="/e_edition/">E-Editions</a>
1894                  </div>
1895              </div>
1896          </nav>
1897        </span>
1898        <span class="primary-nav__right">
1899            <div class="primary-nav__menu--more-btn">
1900                <button aria-expanded="false" aria-label="Open the menu" class="more-link more-burger-icon">
1901                    <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M3 6h18M3 12h18M3 18h18"/></svg>
1902                </button>
1903            </div>
1904            <div class="primary-nav__right--search">
1905                <a class="primary-nav__container--search-icon search-icon" href="#" aria-label="Search for article"><span class="iconify" data-icon="ion:search-circle-sharp" data-inline="false"></span></a>
1906            </div>
1907        </span>
1908    </div>
1909</nav>
1910
1911
1912
1913    
1914
1915
1916</header>
1917            </div>
1918
1919            <div id="redesign-content">
1920                <div id="module-content" class="content">
1921                    <div class="piano--block-level block-bottom-margin" id="po-inline-banner-top-hero-content"></div>
1922
1923
1924                    <!-- standard - NewslettersList.html --> <div id="newsletters" class="newsletters-list mar-mb-5">
1925
1926    <div class="newsletters-list__heading-container">
1927        <h1 class="block-heading">Newsletters</h1>
1928        <p>Sign up to our newsletters to get the latest stories sent straight to your inbox.</p>
1929    </div>
1930
1931    <div class="newsletters-list__bulletin-list">
1932    <h2 class=" mar-mt-5">Featured</h2>
1933        <div class="newsletter-grid">
1934        <!-- standard - NewsletterCard.html --> <div id="newsletter-1797" class="newsletter-card-container" data-bulletin-name="Morning Briefing">
1935  <div class="hidden">
1936
1937  </div>
1938  <div class="newsletter-card ">
1939    <div class="card-info">
1940      <div class="recurrence">Daily at 6am</div>
1941      <div class="title">Morning Briefing</div>
1942      <div class="description">The latest stories, in your inbox every morning.</div>
1943      <a href="/newsletters/bulletin/1797/" target="_blank">
1944        <span class="preview-link">Preview</span>
1945      </a>
1946      <div
1947        class="action-button  "
1948        data-bulletin-name="Morning Briefing"
1949        data-bulletin-id="1797"
1950        data-bulletin-subscription-id=""
1951        data-uses-js="newsletter-subscribe"
1952      >
1953        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
1954    <path 
1955      fill-rule="evenodd" 
1956      clip-rule="evenodd" 
1957      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.1094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
1958    />
1959</svg>
1960
1961        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewB
1961ox="0 0 21 5">
1962    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
1963</svg>
1964
1965        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
1966
1967      </div>
1968      <div class="subscribed hidden">Subscribed</div>
1969    </div>
1970  </div>
1971</div>
1972        </div>
1973
1974    <h2 class=" mar-mt-5">News</h2>
1975        <div class="newsletter-grid">
1976        <!-- standard - NewsletterCard.html --> <div id="newsletter-1359" class="newsletter-card-container" data-bulletin-name="Breaking news">
1977  <div class="hidden">
1978
1979  </div>
1980  <div class="newsletter-card ">
1981    <div class="card-info">
1982      <div class="recurrence">As it happens</div>
1983      <div class="title">Breaking news</div>
1984      <div class="description">The biggest and newest stories, sent straight to you as they happen. </div>
1985      <a href="/newsletters/bulletin/1359/" target="_blank">
1986        <span class="preview-link">Preview</span>
1987      </a>
1988      <div
1989        class="action-button  "
1990        data-bulletin-name="Breaking news"
1991        data-bulletin-id="1359"
1992        data-bulletin-subscription-id=""
1993        data-uses-js="newsletter-subscribe"
1994      >
1995        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
1996    <path 
1997      fill-rule="evenodd" 
1998      clip-rule="evenodd" 
1999      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.1094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
2000    />
2001</svg>
2002
2003        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewBox="0 0 21 5">
2004    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
2005</svg>
2006
2007        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
2008
2009      </div>
2010      <div class="subscribed hidden">Subscribed</div>
2011    </div>
2012  </div>
2013</div>
2014
2015        
2016
2017            <!-- standard - NewsletterCard.html --> <div id="newsletter-1798" class="newsletter-card-container" data-bulletin-name="Today's Most Read">
2018  <div class="hidden">
2019
2020  </div>
2021  <div class="newsletter-card ">
2022    <div class="card-info">
2023      <div class="recurrence">Daily at 8pm</div>
2024      <div class="title">Today's Most Read</div>
2025      <div class="description">Your round-up of the day's top stories.</div>
2026      <a href="/newsletters/bulletin/1798/" target="_blank">
2027        <span class="preview-link">Preview</span>
2028      </a>
2029      <div
2030        class="action-button  "
2031        data-bulletin-name="Today's Most Read"
2032        data-bulletin-id="1798"
2033        data-bulletin-subscription-id=""
2034        data-uses-js="newsletter-subscribe"
2035      >
2036        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
2037    <path 
2038      fill-rule="evenodd" 
2039      clip-rule="evenodd" 
2040      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.
20401094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
2041    />
2042</svg>
2043
2044        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewBox="0 0 21 5">
2045    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
2046</svg>
2047
2048        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
2049
2050      </div>
2051      <div class="subscribed hidden">Subscribed</div>
2052    </div>
2053  </div>
2054</div>
2055
2056        
2057
2058            <!-- standard - NewsletterCard.html --> <div id="newsletter-2733" class="newsletter-card-container" data-bulletin-name="Crime and Court">
2059  <div class="hidden">
2060
2061  </div>
2062  <div class="newsletter-card ">
2063    <div class="card-info">
2064      <div class="recurrence">Every Monday at 12pm</div>
2065      <div class="title">Crime and Court</div>
2066      <div class="description">Don't miss the latest local crime and court news headlines with our weekly newsletter update.</div>
2067      <a href="/newsletters/bulletin/2733/" target="_blank">
2068        <span class="preview-link">Preview</span>
2069      </a>
2070      <div
2071        class="action-button  "
2072        data-bulletin-name="Crime and Court"
2073        data-bulletin-id="2733"
2074        data-bulletin-subscription-id=""
2075        data-uses-js="newsletter-subscribe"
2076      >
2077        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
2078    <path 
2079      fill-rule="evenodd" 
2080      clip-rule="evenodd" 
2081      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.1094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
2082    />
2083</svg>
2084
2085        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewBox="0 0 21 5">
2086    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
2087</svg>
2088
2089        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
2090
2091      </div>
2092      <div class="subscribed hidden">Subscribed</div>
2093    </div>
2094  </div>
2095</div>
2096
2097        
2098        </div>
2099    
2100
2101        <h2 class=" mar-mt-5">Politics</h2>
2102        <div class="newsletter-grid">
2103        <!-- standard - NewsletterCard.html --> <div id="newsletter-2734" class="newsletter-card-container" data-bulletin-name="Council News and Planning">
2104  <div class="hidden">
2105
2106  </div>
2107  <div class="newsletter-card ">
2108    <div class="card-info">
2109      <div class="recurrence">Every Friday at 12pm</div>
2110      <div class="title">
2110Council News and Planning</div>
2111      <div class="description">Your essential local government and planning news update, sent to your inbox every week.</div>
2112      <a href="/newsletters/bulletin/2734/" target="_blank">
2113        <span class="preview-link">Preview</span>
2114      </a>
2115      <div
2116        class="action-button  "
2117        data-bulletin-name="Council News and Planning"
2118        data-bulletin-id="2734"
2119        data-bulletin-subscription-id=""
2120        data-uses-js="newsletter-subscribe"
2121      >
2122        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
2123    <path 
2124      fill-rule="evenodd" 
2125      clip-rule="evenodd" 
2126      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.1094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
2127    />
2128</svg>
2129
2130        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewBox="0 0 21 5">
2131    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
2132</svg>
2133
2134        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
2135
2136      </div>
2137      <div class="subscribed hidden">Subscribed</div>
2138    </div>
2139  </div>
2140</div>
2141
2142        
2143        </div>
2144    
2145
2146        <h2 class=" mar-mt-5">Sport</h2>
2147        <div class="newsletter-grid">
2148        <!-- standard - NewsletterCard.html --> <div id="newsletter-3143" class="newsletter-card-container" data-bulletin-name="Breaking sport news">
2149  <div class="hidden">
2150
2151  </div>
2152  <div class="newsletter-card ">
2153    <div class="card-info">
2154      <div class="recurrence">As it happens</div>
2155      <div class="title">Breaking sport news</div>
2156      <div class="description">The latest breaking sport stories sent straight to your inbox.</div>
2157      <a href="/newsletters/bulletin/3143/" target="_blank">
2158        <span class="preview-link">Preview</span>
2159      </a>
2160      <div
2161        class="action-button  "
2162        data-bulletin-name="Breaking sport news"
2163        data-bulletin-id="3143"
2164        data-bulletin-subscription-id=""
2165        data-uses-js="newsletter-subscribe"
2166      >
2167        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
2168    <path 
2169      fill-rule="evenodd" 
2170      clip-rule="evenodd" 
2171      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.1094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
2172    />
2173</svg>
2174
2175        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewB
2175ox="0 0 21 5">
2176    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
2177</svg>
2178
2179        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
2180
2181      </div>
2182      <div class="subscribed hidden">Subscribed</div>
2183    </div>
2184  </div>
2185</div>
2186
2187        
2188
2189            <!-- standard - NewsletterCard.html --> <div id="newsletter-1799" class="newsletter-card-container" data-bulletin-name="Sports Briefing">
2190  <div class="hidden">
2191
2192  </div>
2193  <div class="newsletter-card ">
2194    <div class="card-info">
2195      <div class="recurrence">Every Monday at 5pm</div>
2196      <div class="title">Sports Briefing</div>
2197      <div class="description">Keep up to date with the latest sport headlines.</div>
2198      <a href="/newsletters/bulletin/1799/" target="_blank">
2199        <span class="preview-link">Preview</span>
2200      </a>
2201      <div
2202        class="action-button  "
2203        data-bulletin-name="Sports Briefing"
2204        data-bulletin-id="1799"
2205        data-bulletin-subscription-id=""
2206        data-uses-js="newsletter-subscribe"
2207      >
2208        <!-- standard - IconNewsletterPlus.html --> <svg class="icon-plus" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21">
2209    <path 
2210      fill-rule="evenodd" 
2211      clip-rule="evenodd" 
2212      d="M11.9063 9.09375L18.9844 9.09375C19.1719 9.09375 19.3555 9.12891 19.5352 9.19922C19.7148 9.26953 19.875 9.375 20.0156 9.51563C20.2813 9.78125 20.4141 10.1094 20.4141 10.5C20.4141 10.8906 20.2734 11.2266 19.9922 11.5078C19.8516 11.6484 19.6914 11.7539 19.5117 11.8242C19.332 11.8945 19.1563 11.9219 18.9844 11.9063L11.9063 11.9063L11.9063 18.9844C11.9063 19.1719 11.8711 19.3555 11.8008 19.5352C11.7305 19.7148 11.625 19.875 11.4844 20.0156C11.2188 20.2813 10.8906 20.4141 10.5 20.4141C10.1094 20.4141 9.78125 20.2813 9.51563 20.0156C9.375 19.875 9.26953 19.7148 9.19922 19.5352C9.12891 19.3555 9.09375 19.1719 9.09375 18.9844L9.07031 11.9297L2.01563 11.9063C1.82812 11.9063 1.64844 11.875 1.47656 11.8125C1.30469 11.75 1.14844 11.6484 1.00781 11.5078C0.726561 11.2266 0.585938 10.8906 0.585938 10.5C0.585938 10.1094 0.718749 9.78125 0.984375 9.51563C1.125 9.375 1.28516 9.26953 1.46484 9.19922C1.64453 9.12891 1.82812 9.09375 2.01563 9.09375H9.09375V2.01562C9.07813 1.84375 9.10547 1.66797 9.17578 1.48828C9.24609 1.30859 9.35156 1.14844 9.49219 1.00781C9.77344 0.726561 10.1094 0.585938 10.5 0.585938C10.8906 0.585938 11.2266 0.726561 11.5078 1.00781C11.6484 1.14844 11.75 1.30469 11.8125 1.47656C11.875 1.64844 11.9063 1.82812 11.9063 2.01563L11.9063 9.09375Z" 
2213    />
2214</svg>
2215
2216        <!-- standard - IconNewsletterMinus.html --> <svg class="icon-minus" xmlns="http://www.w3.org/2000/svg" width="21" height="5" viewBox="0 0 21 5">
2217    <rect y="0.75" width="21" height="3.5" rx="1.75"/>
2218</svg>
2219
2220        <!-- standard - IconNewsletterLoading.html --> <span class="iconify icon-loading" data-icon="eos-icons:bubble-loading"></span>
2221
2222      </div>
2223      <div class="subscribed hidden">Subscribed</div>
2224    </div>
2225  </div>
2226</div>
2227
2228        
2229        </div>
2230    </div>
2231
2232
2233
2234    <input type="hidden" id="loggedIn" value="">
2235</div>
2236                </div>
2237            </div>
2238
2239            <footer class="site-footer" aria-label="site-footer">
2240    <div class="container-inner-width">
2241        <div class="links-grid" aria-label="site-footer-links">
2242            <section class="get-in-touch-section">
2243                <h2>Get in Touch</h2>
2244                <a href="/contact/">Contact Us</a><a href="/advertising/">Advertise</a><a href="/send-us-your-news/">Send Us Your News</a><a href="/submit-an-event/">Add Your Event For Free</a><a href="/publications/">Our Publications</a>
2245            </section>
2246            <section class="follow-us-section">
2247                <h2>Follow Us</h2>
2248<a
2249                        class="footer__social-media--link"
2250                        href="https://www.facebook.com/dumbartonreporter"
2251                        title="Dumbarton Reporter Facebook"
2252                        role="link"
2253                        data-media-type="facebook"
2254                    >
2255                        <i class="footer__social-media--icon iconify"></i>
2256                        Dumbarton Reporter Facebook
2257                    </a>
2258
2259
2260                    <a
2261                        class="footer__social-media--link"
2262                        href="https://twitter.com/dumbartonreport"
2263                        title="Dumbarton Reporter Twitter"
2264                        role="link"
2265                        data-media-type="twitter"
2266                    >
2267                        <i class="footer__social-media--icon iconify"></i>
2268                        Dumbarton Reporter Twitter
2269                    </a>
2270            </section>
2271            <section class="useful-links-section">
2272                <h2>Useful Links</h2>
2273                <div class="useful-links">
2274                    <section>
2275                        <a href="/subscribe/">Subscriptions</a><a href="/newsletters/">Newsletters</a><a href="/notices/">Death Notices</a><a href="/announcements/">Announcements</a><a href="/announcements/public_notices/">Public Notices</a>
2276                    </section>
2277                    <section>
2278                        <a href="https://www.exchangeandmart.co.uk/" target="_blank">Exchange and Mart</a><a href="https://newsquest.newsprints.co.uk/" target="_blank">Photo Sales</a><a href="http://leap.dumbartonreporter.co.uk" target="_block">Leap</a><a href="/archive/" style="display: inline-block">Archive</a> | <a href="/misc/sitemap/" style="display: inline-block">Sitemap</a><a href="/gdpr/" class="gdpr-option-v2" data-v2-id="1170586" data-is-gate="yes" rel="nofollow">Manage Consent</a><a href="https://www.newsquest.co.uk/legal/ai-notice/" target="_blank">AI Notice</a>
2279                    </section>
2280                </div>
2281            </section>
2282            <section class="ipso-terms">
2283                <img class="ipso-logo" src="/resources/responsive-static/mds/images/ipso-regulated.png" alt="IPSO Regulated image" />
2284                <p class="ipso-copy">This website and associated newspapers adhere to the Independent Press Standards Organisation's
2285    Editors' Code of Practice. If you have a complaint about the editorial content which relates to
2286    inaccuracy or intrusion, then please <a class="footer__ipso-terms--link" href="/contact">
2287    contact the editor here</a>.
2288    If you are dissatisfied with the response provided you can
2289    <a class="footer__ipso-terms--link" href="https://www.ipso.co.uk/contact-us/" target="_block">contact IPSO here</a></p>
2290            </section>
2291        </div>
2292        <div class="notice" aria-label="site-footer-notice">
2293            <img src="/resources/responsive-static/mds/images/newsquest.png" alt="Newsquest" style="width: 193px"/>
2294            <p><strong>&copy; 2001-2026. The Dumbarton and Vale of Leven Reporter</strong> is owned and operated by Newsquest Media Group Ltd, an audited local newspaper network.</p>
2295            <p>Visit <a href="https://www.newsquest.co.uk/" target="_blank">newsquest.co.uk</a> to view our <a href="https://www.newsquest.co.uk/our-policies/" target="_blank">policies</a>, <a href="https://www.newsquest.co.uk/legal/" target="_blank" >terms</a> and <a href="https://www.newsquest.co.uk/legal/" target="_blank" >legal agreements</a>.</p>
2296            <p>The Echo Building, 18 Albert Road, Bournemouth, England BH1 1BZ. Registered in England & Wales | 01676637</p>
2297        </div>
2298    </div>
2299</footer>
2300
2301
2302            <div id="fb-root"></div>
2303
2304
2305        </div>
2306    </div>
2307
2308
2309
2310    <div class="mar-modal-container mar-modal-container--animate mar-modal-container--animate-out visually-hidden">
2311    <div class="mar-modal-overlay" data-uses-js="close-modal"></div>
2312
2313    <div aria-label="Pop up dialog" class="mar-modal" tabindex="-1" role="dialog">
2314        <div class="mar-modal__header">
2315            <h3 class="mar-modal__title">Modal headline</h3>
2316
2317            <div class="mar-modal__close" data-uses-js="close-modal">
2318<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2319    <path fill-rule="evenodd" clip-rule="evenodd" d="M7.60714 6L11.6518 10.0446C11.7589 10.1518 11.8438 10.2768 11.9062 10.4196C11.9688 10.5625 12 10.7143 12 10.875C12 11.1786 11.8884 11.442 11.6652 11.6652C11.442 11.8884 11.1696 12 10.8482 12C10.6875 12 10.5357 11.9688 10.3929 11.9062C10.25 11.8438 10.1339 11.7589 10.0446 11.6518L6 7.60714L1.95536 11.6518C1.84821 11.7589 1.72321 11.8438 1.58036 11.9062
2319C1.4375 11.9688 1.28572 12 1.125 12C0.821427 12 0.558037 11.8884 0.334821 11.6652C0.111606 11.442 0 11.1786 0 10.875C0 10.7143 0.0312497 10.5625 0.09375 10.4196C0.15625 10.2768 0.241071 10.1518 0.348214 10.0446L4.36607 6L0.348214 1.95536C0.241071 1.84821 0.15625 1.72768 0.09375 1.59375C0.0312497 1.45982 0 1.3125 0 1.15179C0 0.830355 0.111606 0.558037 0.334821 0.334821C0.558037 0.111606 0.821427 0 1.125 0C1.28572 0 1.4375 0.0312497 1.58036 0.09375C1.72321 0.15625 1.84821 0.241071 1.95536 0.348214L6 4.39286L10.0446 0.348214C10.1339 0.241071 10.25 0.15625 10.3929 0.09375C10.5357 0.0312497 10.6875 0 10.8482 0C11.1696 0 11.442 0.111606 11.6652 0.334821C11.8884 0.558037 12 0.830355 12 1.15179C12 1.3125 11.9688 1.45982 11.9062 1.59375C11.8438 1.72768 11.7589 1.84821 11.6518 1.95536L7.60714 6Z" fill="#9DA0A4"/>
2320</svg>
2321
2322
2323                <span>Close</span>
2324            </div>
2325        </div>
2326
2327        <div class="mar-modal__body">Automatically injected HTML goes here</div>
2328
2329        <div class="mar-modal__actions">
2330<!-- standard - Buttons.html --> 
2331    
2332<button
2333    type="button"
2334    data-uses-js="modal-submit"
2335    
2336    class=" mar-btn
2337    mar-btn--light
2338    mar-btn--md
2339    
2340    
2341    "
2342>
2343    Submit
2344</button>
2345    
2346
2347
2348
2349<!-- standard - Buttons.html --> 
2350    
2351<button
2352    type="button"
2353    data-uses-js="modal-cancel"
2354    
2355    class=" mar-btn
2356    mar-btn--outline
2357    mar-btn--md
2358    
2359    
2360    "
2361>
2362    Cancel
2363</button>
2364    
2365
2366
2367        </div>
2368    </div>
2369</div>
2370
2371</body>
2372
2373<div id="outbrain-holder">
2374    <div id="DFP_standard_mpu_3"></div>
2375    <div id="DFP_standard_mpu_4"></div>
2376    <div id="DFP_standard_mpu_5"></div>
2377    <div id="DFP_standard_mpu_6"></div>
2378    <div id="DFP_standard_mpu_7"></div>
2379</div>
2380<script>
2381
2382const elementToObserve = document.querySelector("#outbrain-holder");
2383
2384// create a new instance of `MutationObserver` named `observer`,
2385// passing it a callback function
2386const observer = new MutationObserver(function(e) {
2387    $.each(e, function(j, obs) {
2388        $.each(obs.removedNodes, function (i, node) {
2389            var id = $(node).attr('id');
2390            addAdSlot(id, id.replace('DFP_', ''));
2391        });
2392    });
2393});
2394
2395// call `observe()` on that MutationObserver instance,
2396// passing it the element to observe, and the options object
2397observer.observe(elementToObserve, {subtree: true, childList: true});
2398</script>
2398
2399
2400<script>
2401window.domComplete = performance.now();
2402</script>
2402
2403
2404<script type="text/javascript">
2405path = document.location.href.split("/");
2406var prop30 = qs.get('lp');
2407var prop43 = qs.get('ref');
2408var pType="Newsquest\Modules\EmailBulletinModule"
2409
2410if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
2411    pType = 'ArticleModule';
2412}
2413for(x=4; x<7; x++)
2414{
2415    if (typeof path[x] == 'undefined')
2416    {
2417        path[x] = '';
2418    }
2419    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
2420    {
2421        path[x] = path[x-1];
2422    }
2423    else
2424    {
2425        path[x] = path[x-1] + "/" + path[x];
2426    }
2427    path[x] = path[x].replace(/\/undefined/g,"");
2428}
2429sitename = path[2].split(".");
2430
2431pathN= unescape(document.location.pathname.toString());
2432matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
2433detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
2434if (detailMatches !== null && detailMatches.length > 1)
2435{
2436    matches = detailMatches;
2437}
2438
2439if (matches !== null && matches.length > 1)
2440{
2441    var subfolder = '';
2442    path[3] = 'li';
2443    path[4] = 'li/'+subfolder;
2444    path[5] = 'li/'+subfolder+'/'+matches[1];
2445    path[6] = 'li/'+subfolder+'/'+matches[1];
2446}
2447if (pathN === '/')
2448{
2449    path[3] = 'homepage';
2450    path[4] = 'homepage';
2451    path[5] = 'homepage';
2452    path[6] = 'homepage';
2453}
2454
2455
2456function filterArray(arr) {
2457    var retArr = [];
2458    $.each(arr, function(i, part) {
2459        if (part !== '') {
2460            retArr.push(part);
2461        }
2462    });
2463
2464    return retArr;
2465}
2466</script>
2466
2467
2468
2469<script type="text/javascript">
2470var known = $.cookie('__siren') ? '1' : '0' ;
2471</script>
2471
2472
2473<script type="text/javascript">
2474
2475var known = $.cookie('__siren') ? '1' : '0' ;
2476var ref = document.referrer;
2477var parser = document.createElement('a');
2478parser.href = ref;
2479
2480// values in the below MUST be strings
2481var targeting = {
2482    'context': '',
2483    
2484    'domain': 'www.dumbartonreporter.co.uk',
2485    'isLanding': 'yes',
2486    'top_path': 'newsletters',
2487    'weather': 'cloudy'.toLowerCase(),
2488    'jbsjs': ''.toLowerCase(),
2489    'site_search': '',
2490    'bmd_cat': '',
2491    'wt': '11-15',
2492    'cmpid': qs.get('cmpid'),
2493    'refdm': parser.hostname,
2494    'k': known,
2495    'g':  'u' ,
2496    'a':  '0' ,
2497    'topic': '',
2498    'publication': '',
2499    'primary_tag_future_use': '',
2500    'site': (isMobile()) ? 'mobile': 'desktop',
2501    'r': data_layer.user.subscription_plan !== ''
2502        ? '2'       // 2 = subscribed
2503        : data_layer.user.is_logged_in == 'yes'
2504            ? '1'   // 1 = registered
2505            : '0',  // 0 = anonymous
2506};
2507
2508if (!usePrebid) {
2509    targeting.adrq = 'adl';
2510}
2511
2512if (data_layer.video.exists === 'yes') {
2513    targeting.ptype = 'video';
2514}
2515
2516if ($.cookie('isMeterExpired') === 'yes' && window.data_layer.article.is_article) {
2517    var articleContentLevel = parseInt(window.data_layer.article.content_level, 10) || 0; // account for NaN
2518    if (articleContentLevel !== 0 && window.data_layer.article.content_level_open_access === 'no') {
2519        targeting.ao = 'y';
2520    }
2521}
2522
2523if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
2524    targeting.dfpcsnt = 'yes';
2525} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
2526    targeting.dfpcsnt = 'no';
2527} else {
2528    targeting.dfpcsnt = 'none';
2529}
2530
2531if (typeof MobileDetect !== "undefined") {
2532    targeting.canbb = (window.screen.width > 960) ? 'y' : 'n';
2533}
2534
2535if (typeof module_targeting === "object") {
2536    targeting = addToTargeting(targeting, module_targeting);
2537}
2538
2539// $.each(apData, function (k, v) {
2540//     targeting[k] = v;
2541// });
2542
2543// if (typeof gs_channels !== 'undefined') {
2544//     targeting.gs_channels = gs_channels;
2545// }
2546
2547targeting = addToTargeting(targeting, data_layer_helper.homesData);
2548
2549targeting.article_id = '';
2550var googleSiteName = 'www.dumbartonreporter.co.uk';
2551var googlePath = '/newsletters/';
2552
2553var googleNetworkCode = 154725070;
2554
2555var googleChildNetworkCode = 22694024870;
2556var googleId = '/'+googleNetworkCode + ',' + googleChildNetworkCode + '/' + googleSiteName+googlePath;
2557
2558if (googleId.charAt(googleId.length - 1) === '/') {
2559    googleId = googleId.slice(0, -1);
2560}
2561
2562var googletag = googletag || {};
2563googletag.cmd = googletag.cmd || [];
2564
2565googletag.cmd.push(function () {
2566    var _YB = _YB || {
2567        ab: function () {
2568            return _YB.dool ? "b" : "a" + Math.floor(Math.random() * 10);
2569        },
2570        dool: Math.random() >= 0.1,
2571    };
2572    var yb_ab;
2573    if (Math.random() <= 0.9) {
2574        yb_ab = _YB.ab();
2575    } else {
2576        yb_ab = "c";
2577    }
2578    googletag.pubads().setTargeting("yb_ab", yb_ab);
2579});
2580
2581googletag.cmd.push(function() {
2582    googletag.pubads().set("adsense_background_color", "FFFFFF");
2583    googletag.pubads().setTargeting('rfs', "0");
2584    $.each(targeting, function (key, value) {
2585
2586        // No real value so exclude
2587        if (value === 0 || value === '' || value === null) {
2588            return;
2589        }
2590        googletag.pubads().setTargeting(key, value);
2591    });
2592
2593});
2594
2595if (isMobile() && '' === 'top') {
2596    $('.desktop-standard-leaderboard').remove();
2597    $('.mobile-top-leaderboard').show();
2598    $('#DFP_top_leaderboard_mobile').attr('id', 'DFP_top_leaderboard');
2599} else {
2600    $('.mobile-top-leaderboard').remove();
2601}
2602// Ads
2603var adUnits = [];
2604
2605hideAdsByScreensize();
2606
2607if (blackListAds.length > 0) {
2608    removeBlacklistAds(blackListAds);
2609}
2610
2611$.each(unfilteredAdUnits, function (i, unit) {
2612    removeWhitelistAds(unit);
2613});
2614
2615// set up a holder for all the adverts so we can do things with them later
2616var dfpHolder = {};
2617// the set up code
2618googletag.cmd.push(function() {
2619    $.each(adUnits, function(i, data) {
2620
2621        // check if the dom exists
2622        if ($('#'+data.domName).length === 0) {
2623            return;
2624        }
2625
2626        var dfp = null;
2627
2628        if (data.slotType === 'standard')
2629        {
2630            // get the correct sizes, using the alternate_sizes if they exist and we are on a mobile site
2631            var sizes = data.sizes;
2632            if (data.alternate_mobile_size && isMobile()) {
2633                sizes = data.alternate_mobile_size;
2634            }
2635            // push this ad slot through
2636            dfp = googletag.defineSlot(googleId, sizes, data.domName)
2637                .addService(googletag.pubads())
2638                .setTargeting("position", data.positionName)
2639                .setCollapseEmptyDiv(data.collapseContainer);
2640            // check if we have an array of targets, and assign them as a companion if we do
2641            if (data.targets instanceof Array && data.targets.length > 0 ) {
2642                dfp.setTargeting('companion', data.targets);
2643            }
2644
2645        }
2646        else if (data.slotType === 'outofpage')
2647        {
2648            dfp = googletag.defineOutOfPageSlot(googleId, data.domName)
2649                .addService(googletag.pubads())
2650                .setTargeting("position", data.positionName)
2651                .setCollapseEmptyDiv(data.collapseContainer);
2652            // check if we have an array of targets, and assign them as a companion if we do
2653            if (data.targets instanceof Array && data.targets.length > 0 ) {
2654                dfp.setTargeting('companion', data.targets);
2655            }
2656        }
2657
2658        // store
2659        dfpHolder[data.domName] = dfp;
2660
2661    });
2662
2663    if (adLight === true) {
2664        googletag.pubads().setCategoryExclusion('adlight');
2665        // var adlightexplanation = '<div class="adlight-explanation">I\'m a subscriber <a href="#" class="adlight-explanation-link">Why am I seeing this advert?</a></div>';
2666        // if ($('#DFP_premium_mpu').length > 0) {
2667        //     $('#DFP_premium_mpu').before(adlightexplanation);
2668        // }
2669
2670        // if ($('#DFP_standard_mpu_1').length > 0) {
2671        //     $('#DFP_standard_mpu_1').before(adlightexplanation);
2672        // }
2673
2674        // var imageIds = [11497497, 11497535, 11497536, 11497541, 11497542, 11497545, 11497546, 11497547];
2675        // var imageId = imageIds[Math.floor(Math.random() * imageIds.length)];
2676        // $('.adlight-explanation-link').click(function(e) {
2677        //     e.preventDefault();
2678        //     $('#adlight-explanation-modal-image').attr('src', '/resources/images/' + imageId + '/').show();
2679        //     $('#adlight-explanation-modal').modal();
2680        // });
2681    }
2682
2683    // send the request
2684    googletag.pubads().enableSingleRequest();
2685
2686    googletag.enableServices();
2687
2688    googletag.pubads().addEventListener('slotVisibilityChanged', function(event) {
2689        if (event.slot.getResponseInformation().creativeTemplateId === 828288 ||
2690            event.slot.getResponseInformation().creativeTemplateId === 12383216 ) {
2691            console.log('DFP: Magic template id detected, not refreshing');
2692            return;
2693        }
2694        var slotName = '';
2695        $.each(dfpHolder, function (a, e) {
2696            if (e == event.slot) {
2697                slotName = a;
2698            }
2699        });
2700        if (typeof window.advertisingTimer !== 'undefined') {
2701            var perc = event.inViewPercentage;
2702            window.advertisingTimer.timer(slotName, perc);
2703        }
2704    });
2705});
2706
2707// the display code
2708$.each(adUnits, function(i, data) {
2709
2710    // check if the dom exists
2711    if ($('#'+data.domName).length === 0) {
2712        return;
2713    }
2714
2715    if (data.domName === 'DFP_interstitial_mpu') {
2716        if (!inter.checkVisit()) {
2717            return;
2718        }
2719    }
2720
2721    // are we manually loading it?
2722    if ($('#'+data.domName).attr('data-manual-loading') === "yes") {
2723        return;
2724    }
2725    // for mobile, we check if the dom element has the data-delay-loading attribute set to "1"
2726    else if ($('#'+data.domName).attr('data-delay-loading') === "yes") {
2727
2728        // load it
2729        $('#'+data.domName).appear();
2730        $(document.body).on('appear', '#'+data.domName, function(e, allElement) {
2731
2732            // don't call it many times
2733            if ($(this).attr('data-processed') === 'yes') {
2734                return;
2735            }
2736
2737            $(this).attr('data-processed', 'yes');
2738
2739            // display the google ad
2740            googletag.display(data.domName);
2741            googletag.pubads().refresh([dfpHolder[data.domName]]);
2742        });
2743        return;
2744    }
2745    googletag.cmd.push(function() {
2746        googletag.display(data.domName);
2747    });
2748});
2749window.googleComplete = performance.now();
2750window.googleReady = true;
2751
2752// METHODS
2753function addToTargeting(targeting, data) {
2754    if (!data) {
2755        return targeting;
2756    }
2757    $.each(data, function (key, value) {
2758        if (!value) {
2759            return;
2760        }
2761        targeting[key] = value;
2762    });
2763    return targeting;
2764}
2765
2766function addAdSlot(slotName, slot, initHidden) {
2767    console.log("Add ad slot called for %s %s", slotName, slot);
2768    // check if item already exists
2769    if (typeof window.dfpHolder[slotName] !== 'undefined') {
2770        return;
2771    }
2772
2773    if (window.adLight === true) {
2774        return;
2775    }
2776    window.googletag.cmd.push(function() {
2777        var dfp = googletag.defineSlot(window.googleId, [[300,250]], slotName)
2778            .setTargeting('position', [slot])
2779            .addService(googletag.pubads());
2780        window.dfpHolder[slotName] = dfp;
2781
2782        if (!initHidden) {
2783            googletag.pubads().refresh([dfp]);
2784
2785            return;
2786        }
2787    });
2788}
2789
2790function hideAdsByScreensize() {
2791    if (window.screen.width < 728 && $('#BlockArticleContainer').length > 0) {
2792        if ('1003' === '1147') {
2793            $('#DFP_out_of_page').remove();
2794        } else {
2795            $('#DFP_premium_mpu').remove();
2796        }
2797        $('#DFP_on_scroll').remove();
2798    } else if (window.screen.width < 728 &&
2799        ( $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='9']").length > 0 ||
2800        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='12']").length > 0  ||
2801        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='18']").length > 0  ||
2802        $(".article-grid__uber[data-top-stories-articles='7'][data-news-list-articles='24']").length > 0 )
2803    ) {
2804        const adElement = document.querySelector('#high_vis_container');
2805        $('.omnicard[data-position="5"]').after(adElement);
2806    }
2807
2808    if ('1003' === '1147' && window.screen.width > 450) {
2809        $('#DFP_bottom_leaderboard').remove();
2810    }
2811
2812    if ('1003' === '1147' && window.screen.width < 728) {
2813        $('#DFP_top_leaderboard').remove();
2814    }
2815
2816    if ('1003' === '1147') {
2817        $('#DFP_teads').remove();
2818        $('#DFP_out_of_page').remove();
2819    }
2820
2821    if ($('#comments-in-page').length === 1 && window.screen.width > 450) {
2822        $('#DFP_top_leaderboard').parent().remove();
2823        $('#DFP_bottom_leaderboard').parent().remove();
2824        // $('#DFP_standard_mpu_1').parent().remove();
2825    }
2826}
2827
2828function removeBlacklistAds(blackListAds) {
2829    $.each(blackListAds, function(i, name) {
2830        removeAdContainer(name);
2831    });
2832}
2833
2834function removeWhitelistAds(unit) {
2835    // VAST (video) ad units never get displayed in here.
2836    if (unit.isVast) {
2837        return;
2838    }
2839
2840    // if we have an ad-light experience
2841    if (whiteList === true) {
2842        if (typeof whiteListAds[unit.positionName] === 'undefined') {
2843            removeAdContainer(unit.domName)
2844            return;
2845        }
2846    }
2847
2848    adUnits.push(unit);
2849}
2850
2851function removeAdContainer(name) {
2852    const element = document.getElementById(name);
2853    // doesn't exist? exit
2854    if(!element) {
2855        return;
2856    }
2857
2858    const parent = element.parentElement;
2859    if (parent && parent.classList.contains('block-bottom-margin')) {
2860        // if immediate parent contains block-bottom-margin as a class, remove the parent as well
2861        parent.classList.remove('block-bottom-margin');
2862    }
2863    if (parent && parent.classList.contains('mar-leaderboard--top')) {
2864        // in case of leaderboard, remove as has min-height
2865        parent.remove();
2866        return;
2867    }
2868
2869    if (parent && parent.classList.contains('mar-leaderboard--bottom')) {
2870        // in case of article ad container, remove as has min-height
2871        parent.remove();
2872        return;
2873    }
2874
2875    element.remove();
2876}
2877</script>
2877
2878
2879
2880<script src="/resources/responsive-static/build/mds/js/global.js?cb=mkW8NyPe"></script>
2880
2881
2882
2883
2884
2885<script src="/resources/responsive-static/build/mds/js/newsletters.js?cb=mkW8NyPe"></script>
2885
2886
2887
2888<script src="/__siren/"></script>
2888
2889
2890
2891
2892<script type="text/javascript">
2893    var s_account="newsquestgroupprod";
2894</script>
2894
2895
2896<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/VisitorAPI.js?cb=mkW8NyPe"></script>
vendor: 1 bytes, line 2896
2896
2897<script type="text/javascript" src="/resources/responsive-static/vendor/adobe/omniture.js?cb=mkW8NyPe"></script>
2897
2898
2899<script type="text/javascript">
2900
2901function getOmniturePath() {
2902    var path = '';
2903    if ($('#gallery-base-url').length === 1) {
2904        path = $('#gallery-base-url').val();
2905    }
2906    else {
2907        path = window.location.pathname;
2908    }
2909    return path;
2910}
2911
2912function getPositionFromCookie() {
2913    const cookieName = 'tracking_block_index';
2914
2915    const ref = document.cookie
2916        .split('; ')
2917        .find(row => row.startsWith(`${cookieName}=`))
2918        ?.slice(cookieName.length + 1);
2919
2920    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
2921
2922    return ref ? decodeURIComponent(ref) : undefined;
2923}
2924function getRefFromCookie() {
2925    const cookieName = 'tracking_block';
2926
2927    const ref = document.cookie
2928        .split('; ')
2929        .find(row => row.startsWith(`${cookieName}=`))
2930        ?.split('=')[1];
2931
2932    // Remove the cookie
2933    document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.data_layer.site.cookie_domain}`;
2934
2935    return ref;
2936}
2937
2938function getOmnitureTrackingFromCookie(key, preExistingValue) {
2939    var ref = $.cookie('o-' + key);
2940    if(typeof(ref) === 'undefined') {
2941    	ref  = preExistingValue
2942    } else {
2943    	ref = decodeURIComponent(ref);
2944    	$.removeCookie('o-' + key, {
2945            path: '/',
2946            domain: window.data_layer.site.cookie_domain,
2947        });
2948    }
2949    return ref;
2950}
2951
2952function getValidatedAPList() {
2953
2954    var validList = [1100, 1101, 1002, 1006, 1010, 1014, 1018, 1022, 1200, 1202, 1205, 1300, 1602, 1605, 1608, 1612, 1616, 1500, 1503, 1507, 1509, 1512, 1402, 1406, 1409, 1412, 1416, 14331, 14333, 14335, 14336, 14339, 14342, 14344, 14345, 14346, 14350, 14351, 14353, 14359, 14366, 14370, 14371, 14377, 14388, 14394, 14396, 14399, 14407, 14221, 14423, 15679, 15681, 15682, 15683, 15684, 15686, 15687, 15688, 15975];
2955
2956    var data = getAudienceProjectTargetingData();
2957    if (!data || !data.ap_x) {
2958        return '';
2959    }
2960
2961    validData = [];
2962    $.each(data.ap_x, function(i, td) {
2963        if ($.inArray(parseInt(td, 10), validList) !== -1) {
2964            validData.push(td);
2965        }
2966    });
2967
2968    return validData.join(',');
2969}
2970
2971path = document.location.href.split("/");
2972
2973var qs = new URLSearchParams(window.location.search);
2974
2975var prop30 = qs.get('lp');
2976var prop43 = qs.get('ref');
2977var pType="Newsquest\Modules\EmailBulletinModule"
2978
2979if (pType === 'BlockArticleModule' || pType === 'NationalNewsModule' || pType === 'BlockWhatsOnModule') {
2980    pType = 'ArticleModule';
2981}
2982
2983for(x=4; x<7; x++)
2984{
2985    if (typeof path[x] == 'undefined')
2986    {
2987        path[x] = '';
2988    }
2989    if(path[x] == "" || (pType == "ArticleModule" && path[x].match(/[0-9]+\./)) || (path[x].indexOf('?') > -1))
2990    {
2991        path[x] = path[x-1];
2992    }
2993    else
2994    {
2995        path[x] = path[x-1] + "/" + path[x];
2996    }
2997    path[x] = path[x].replace(/\/undefined/g,"");
2998}
2999pathN= unescape(document.location.pathname.toString());
3000matches = pathN.match(/(\w+)\.(in|near|compare)\.([\,a-zA-Z0-9\ _-]+)[\/]?$/);
3001detailMatches = pathN.match(/(\w+)\.detail\.(.*)$/);
3002if (detailMatches !== null && detailMatches.length > 1)
3003{
3004    matches = detailMatches;
3005}
3006
3007if (matches !== null && matches.length > 1)
3008{
3009    var subfolder = '';
3010    path[3] = 'li';
3011    path[4] = 'li/'+subfolder;
3012    path[5] = 'li/'+subfolder+'/'+matches[1];
3013    path[6] = 'li/'+subfolder+'/'+matches[1];
3014}
3015if (pathN === '/')
3016{
3017    path[3] = 'homepage';
3018    path[4] = 'homepage';
3019    path[5] = 'homepage';
3020    path[6] = 'homepage';
3021}
3022
3023
3024/* You may give each page an identifying name, server, and channel on
3025the next lines. */
3026s.pageName="(www) "+getOmniturePath();
3027s.pageName = s.pageName.toLowerCase();
3028s.server="martini";
3029s.channel="";
3030s.pageType="";
3031s.prop1= qs.get('search');
3032s.prop2="";
3033s.prop3=document.title;
3034s.prop4="";
3035s.prop5="Newsquest\Modules\EmailBulletinModule"; /* get from Martini */
3036s.prop6=path[3].toLowerCase();
3037s.prop7=path[4].toLowerCase();
3038s.prop8=path[5].toLowerCase();
3039s.prop9=path[6].toLowerCase();
3040s.prop10="";
3041
3042s.prop16=path[2].toLowerCase();
3043s.prop17="Greenock and Clydebank";
3044s.prop18="Martini";
3045s.prop19="1";
3046s.prop20 = s.getPreviousValue(s.pageName, 'gpv_pn');
3047s.prop42 = "";
3048s.prop53 = 'standard';
3049s.prop54 = '';
3050s.prop55 = '';
3051s.prop56 = "";
3052s.prop57 = ($('[data-name="Feature Article Block A"]').length > 0) ? 'Enabled' : 'Disabled';
3053s.prop58 = document.querySelector('[data-name="Feature Article Block B"]')?.dataset.variant;
3054s.prop59 = getRefFromCookie();
3055s.prop60 = getPositionFromCookie();
3056s.prop73 = document.cookie.split('; ').find(row => row.startsWith('adtiming='))?.split('=')[1] || null;
3057
3058var eVar67 = [];
3059
3060if ($.cookie('consentUUID')) {
3061    eVar67.push('yes');
3062} else {
3063    eVar67.push('no');
3064}
3065if ($.cookie('_sp_enable_dfp_personalized_ads') === 'true') {
3066    eVar67.push('yes');
3067} else if ($.cookie('_sp_enable_dfp_personalized_ads') === 'false') {
3068    eVar67.push('no');
3069} else {
3070    eVar67.push('none');
3071}
3072
3073if ($.cookie('_sp_legitimate_interests') === 'true') {
3074    eVar67.push('yes');
3075} else if ($.cookie('_sp_legitimate_interests') === 'false') {
3076    eVar67.push('no');
3077} else {
3078    eVar67.push('none');
3079}
3080
3081//if ($.cookie('euconsent')) {
3082//    eVar67.push($.cookie('euconsent'));
3083//} else {
3084//    eVar67.push('none');
3085//}
3086
3087s.eVar67 = eVar67.join(',');
3088// console.log('ADB: setting eVar67 to %s', eVar67.join(','));
3089
3090if ($.cookie('prev-tcf-v2')) {
3091    // console.log('ADB: Setting eVar68 to ', $.cookie('prev-tcf-v2'));
3092    s.eVar68 = $.cookie('prev-tcf-v2');
3093}
3094
3095if (typeof iabNames !== 'undefined') {
3096    s.prop29 = iabNames.join(',');
3097} else if (typeof iabIds !== 'undefined') {
3098    s.prop29 = iabIds.join(',');
3099}
3100
3101if (s.prop20 && s.prop20 !== 'no value') {
3102    s.prop21 = s.getPercentPageViewed();
3103} else {
3104    s.prop21 = '';
3105}
3106
3107if (typeof __siren !== 'undefined') {
3108    s.eVar27 = __siren;
3109}
3110
3111s.prop22 = s.getDaysSinceLastVisit('s_lv');
3112
3113
3114s.prop43=getOmnitureTrackingFromCookie('ref', prop43);
3115s.prop25 = ''
3116
3117s.prop27 = '';
3118
3119s.prop30 = getOmnitureTrackingFromCookie('prop30', prop30);
3120s.linkInternalFilters="javascript:,dumbartonreporter.co.uk,fish4.co.uk,adsys.newsquest.co.uk,www.exchangeandmart.co.uk,www.communigate.co.uk,"
3121s.eVar61=(new Date()).toLocaleDateString("en-GB");
3122/* s.eVar62=(new Date()).toLocaleDateString("en-GB"); */
3123
3124
3125
3126
3127
3128
3129/* Article-site-cloning data */
3130s.eVar90 = window.data_layer.article.parent_originating_site_id;
3131s.eVar91 = window.data_layer.article.originating_article_id;
3132s.eVar92 = window.data_layer.article.is_original_to_site;
3133s.eVar95 = window.data_layer.site.using_piano_id;
3134s.eVar106 = '';
3135
3136s.eVar109 = '';
3137
3138/* Uber block article counts */
3139s.eVar93 = window.data_layer.page.top_stories_article_count + ':' + window.data_layer.page.interstitial_article_count + ':' + window.data_layer.page.news_stories_article_count;
3140
3141/* Conversion Variables */
3142s.campaign=""
3143s.state=""
3144s.zip=""
3145s.events=""
3146s.products=""
3147s.purchaseID=""
3148s.eVar14=""
3149try {
3150    s.list3=getValidatedAPList();
3151} catch (e) {
3152    // do nothing
3153}
3154
3155
3156
3157
3158// Initial fotorama tracking.
3159var moduleType = null;
3160if (s.prop5 === 'ArticleModule' || s.prop5 == 'PropertyModuleReplacement' || s.prop5 === 'BlockArticleModule') {
3161    moduleType = 'article';
3162} else if (s.prop5 === 'PictureGalleryModule') {
3163    moduleType = 'gallery';
3164}
3165
3166if ($('#comments-in-page').length === 1) {
3167    moduleType = 'comments';
3168}
3169
3170if (moduleType === 'article' || moduleType === 'gallery' || moduleType === 'comments') {
3171    var imagePath = '';
3172
3173    if ($('.fotorama').length > 0) {
3174        // Get the first Fotorama image.
3175        try {
3176            var el = $('.fotorama').data('fotorama').data[0].html;
3177            var url = $(el).find('div').css('background-image');
3178            imagePath = url.replace('url(','').replace(')','').replace(/\"/gi, "");
3179        } catch (e) {
3180        }
3181    } else {
3182        // If there's just one image (i.e. it's not a gallery), find its path.
3183        var imagePathSingle = $('#mainImage').attr('src');
3184        if (typeof imagePathSingle !== 'undefined') {
3185            imagePath = imagePathSingle.split('.')[0] + '/';
3186        }
3187    }
3188    var imageParts = imagePath.split('/');
3189    if (imageParts.length > 1) {
3190        s.eVar37 = imageParts[imageParts.length - 2];
3191        s.prop37 = imageParts[imageParts.length - 2];
3192        s.events = s.apl(s.events, 'event7', ',', 2);
3193    }
3194    s.eVar36 = moduleType;
3195    s.prop36 = moduleType;
3196}
3197
3198
3199
3200// Education pages.
3201if (s.prop5 === 'ResponsiveEducationModule') {
3202    // School profile page.
3203    if ($('#eduOverview').length > 0) {
3204        s.eVar40 = $('#eduOverview').data('school-status');
3205        s.prop40 = s.eVar40;
3206        s.prop41 = 'edu-' + $('#eduOverview').data('school-urn');
3207        s.prop46 = $('#town').text();
3208    }
3209
3210    // Comparison page.
3211    if ($('#eduComparisonTable').length > 0) {
3212        s.list1 = '';
3213    }
3214
3215    // Results page.
3216    if ($('.school-results').length > 0) {
3217        s.list1 = '';
3218
3219        // Track the search criteria.
3220        s.prop44 = '';
3221        s.prop45 = "".toLowerCase();
3222        s.prop46 = "".toLowerCase();
3223        s.prop49 = '';
3224        s.prop50 = '';
3225        s.prop51 = '';
3226        s.eVar2 = s.prop50;
3227
3228        var newSearch = false;
3229        if (newSearch) {
3230            s.events = s.apl(s.events, 'event17', ',', 1);
3231        }
3232    }
3233}
3234
3235// Notices Module
3236if (s.prop5 === 'NewsquestModulesNoticesModule') {
3237    // Notices Find page.
3238    if (s.pageName.includes('notices/find')) {
3239        s.pageName = '(www) /notices/find/';
3240        s.eVar50 = '';
3241        const noticesURL = new URL(window.location.href);
3242        const noticesParams = new URLSearchParams(noticesURL.search);
3243
3244        s.eVar1 = noticesParams.has('keyword') ? noticesParams.get('keyword') : 'None';
3245        s.eVar51 = noticesParams.has('sort') ? noticesParams.get('sprt') : 'best';
3246        s.eVar52 = noticesParams.has('p') ? (parseInt(noticesParams.get('p'), 10) + 1) : 1;
3247        s.eVar53 = noticesParams.has('type') ? noticesParams.get('type') : 'All';
3248        s.eVar54 = noticesParams.has('nearby') ? noticesParams.get('nearby') : 'no';
3249        s.eVar55 = noticesParams.has('daterange') ? noticesParams.get('daterange') : 'last-month';
3250
3251        if (noticesParams.has('sort')) {
3252            switch (noticesParams.get('sort')) {
3253                case 'date_asc':
3254                    s.eVar51 = 'oldest';
3255                    break;
3256                case 'date_desc':
3257                    s.eVar51 = 'newest';
3258                    break;
3259                case 'best_match':
3260                    s.eVar51 = 'best';
3261                    break;
3262                default:
3263                    s.eVar51 = noticesParams.get('sort');
3264                    break;
3265            }
3266        }
3267
3268        // Concatenate all search params into eVar44
3269        if (noticesParams.size > 0) {
3270            const searchParams = new URL(window.location.href).searchParams;
3271            s.eVar44 = '';
3272            searchParams.forEach((value, key) => {
3273                s.eVar44 += `${key}=${value},`;
3274            });
3275        } else {
3276            s.eVar44 = '';
3277        }
3278
3279        // Adobe Search Event triggering
3280        const setNoticePaginationClicked = (value) => {
3281            localStorage.setItem("isNoticePaginationClicked", value);
3282        };
3283
3284        const noticeSearchInput = document.getElementById("notices-search");
3285        const noticeSearchBtn = document.getElementById("notice-search-find");
3286        const noticePaginationBtns = document.querySelectorAll('.notice-find__pagination .pagination-btn');
3287        const noticePaginationBtnPrev = document.querySelector('.pagination-btn-previous svg');
3288        const noticePaginationBtnNext = document.querySelector('.pagination-btn-next svg');
3289
3290        noticeSearchInput?.addEventListener('change', () => setNoticePaginationClicked('false'));
3291        noticeSearchBtn?.addEventListener('click', () => setNoticePaginationClicked('false'));
3292
3293        noticePaginationBtns.forEach(btn => {
3294            btn.addEventListener('click', () => setNoticePaginationClicked('true'));
3295        });
3296
3297        noticePaginationBtnPrev?.addEventListener('click', () => setNoticePaginationClicked('true'));
3298        noticePaginationBtnNext?.addEventListener('click', () => setNoticePaginationClicked('true'));
3299
3300        if (localStorage.getItem("isNoticePaginationClicked") === 'false') {
3301            s.events = s.apl(s.events, 'event1', ',', 1);
3302        }
3303    }
3304
3305    if (/notices\/funeral-directors\/(\d+)\.([a-zA-Z0-9-?]+)?/.test(s.pageName)) {
3306        s.pageName = '(www) /notices/funeral-director/';
3307        s.eVar41 = '';
3308    }
3309}
3310
3311if (s.prop5 === 'NewsquestModulesNoticeModule') {
3312    s.eVar41 = '';
3313    const type = window.announcement_data?.details?.type || '';
3314    const subCategory = window.announcement_data?.details?.sub_category || '';
3315    s.eVar40 = type !== 'Tribute' ? type : `${type} - ${subCategory}`;
3316    s.eVar42 = window.announcement_data?.details?.id || '';
3317    s.eVar107 = '';
3318    s.eVar119 = '';
3319    s.eVar120 = '';
3320    s.eVar2 = "(www) /notice/";
3321}
3322
3323//New Property module
3324if (s.prop5 === 'ResponsivePropertyModule') {
3325    /*
3326        Use prop42 for single and list pages, for list pages use hyphen separate lists of id's
3327    */
3328    
3329    
3330    //Property's all over the place (homepage, searches etc - HOM-133
3331
3332    //Property Detail - HOM-131, HOM-134, HOM-130
3333
3334    //Contact us submissions - HOM-137
3335    if($('#propertyModule.agent-details').length > 0) {
3336        //Add a click handler for a.contact-detail
3337    }
3338
3339
3340}
3341
3342// is their a video tag on the page?
3343if ($('.exco-embed').length > 0) {
3344    console.log('VID: setting tracking for event50');
3345    s.events = s.apl(s.events, 'event50', ',', 1);
3346}
3347
3348var foundAutoPlayVid = false;
3349$('.jw-outer').each(function (a, domEle) {
3350    if ($(this).data('multimedia-block') === 'no' && !foundAutoPlayVid) {
3351        console.log('VID: setting tracking for event51');
3352        s.events = s.apl(s.events, 'event51', ',', 1);
3353        foundAutoPlayVid = true;
3354    }
3355});
3356
3357
3358
3359
3360
3361
3362
3363s.eVar66 = 'Ad-Full';
3364s.eVar114 = '';
3365
3366
3367
3368    // var eVar65Copy = s.getValOnce(s.eVar65, "ev65", 0);
3369    // if (eVar65Copy !== '' && s.prop20.indexOf("/my/subscription/activate/") > -1) {
3370    //     s.events = s.apl(s.events, "event4", ",", 1); // Set the subscription counter event.
3371    //     s.events = s.apl(s.events, "purchase", ",", 1); // Set the purchase event.
3372    //     s.products = "Subscription : Metered Access;" + eVar65Copy + ";1;";
3373    //     s.purchaseID = "";
3374    // }
3375
3376
3377if(qs.get('action') === 'success' && (s.prop5 === 'ArticleModule' || s.prop5 === 'BMDModule' || s.prop5 === 'BlockArticleModule')) {
3378    s.events=s.apl(s.events,'event9',',',2)
3379}
3380/* Hierarchy Variables */
3381s.hier1="newsquest," + "Greenock and Clydebank" + ",www.dumbartonreporter.co.uk," + path[6].replace(/\//,",");
3382
3383if (typeof MartiniFotorama !== 'undefined') {
3384    MartiniFotorama.loadOmniture(s);
3385}
3386s.prop39 = "0";
3387
3388
3389
3390// Tracking usage of Bytecast audio embeds in articles.
3391s.eVar82 = 'no';
3392s.eVar83 = '';
3393
3394    console.log('ADB: starting');
3395    console.log('Google Bot Browser: ', window.isRobot.googleBot()); //TODO Remove this log after QA
3396
3397// Tracking of Commenting Registration FLow
3398if (s.prop5 !== 'BlockArticleModule') {
3399    const storedAdobeDimensions = sessionStorage.getItem('nq_adobe_tracking_article_dimensions');
3400    if (storedAdobeDimensions) {
3401        const storedAdobeDimensionObj = JSON.parse(storedAdobeDimensions);
3402        s.eVar10 = storedAdobeDimensionObj.eVar10;
3403        s.eVar15 = storedAdobeDimensionObj.eVar15;
3404        s.eVar22 = storedAdobeDimensionObj.eVar22;
3405        s.eVar23 = storedAdobeDimensionObj.eVar23;
3406        s.eVar24 = storedAdobeDimensionObj.eVar24;
3407        s.eVar25 = storedAdobeDimensionObj.eVar25;
3408        s.eVar28 = storedAdobeDimensionObj.eVar28;
3409        s.eVar60 = storedAdobeDimensionObj.eVar60;
3410        s.eVar104 = storedAdobeDimensionObj.eVar104;
3411        s.eVar106 = storedAdobeDimensionObj.eVar106;
3412        s.eVar107 = storedAdobeDimensionObj.eVar107;
3413        s.eVar108 = storedAdobeDimensionObj.eVar108;
3414        s.prop63 = storedAdobeDimensionObj.prop63;
3415    }
3416}
3417
3418if (window.location.href.includes("/user/create-account/commenting/")) {
3419    s.eVar2 = '(www) /user/create-account/commenting/';
3420}
3421
3422/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
3423if (qs.get('callback') !== 'in' && !window.isRobot.googleBot()) {
3424    var s_code=s.t();
3425    var backupAdobe = s;
3426
3427    if(s_code)document.write(s_code)
3428}
3429
3430// Storing the visiting dimensions
3431if (s.eVar10 || s.eVar22 || s.eVar23 || s.eVar24) {
3432    const adobeTrackingVisitingDimensions = {
3433        eVar10: s.eVar10,
3434        eVar22: s.eVar22,
3435        eVar23: s.eVar23,
3436        eVar24: s.eVar24,
3437    }
3438    sessionStorage.setItem('nq_adobe_tracking_visiting_dimensions', JSON.stringify(adobeTrackingVisitingDimensions));
3439}
3440
3441//--></script>
3441
3442<!-- End SiteCatalyst code version: H.19.3. -->
3443
3444
3445
3446
3447
3448<script>
3449    if ('' !== '') {
3450        setTimeout(function() {
3451            data_layer_helper.loadScript(
3452                "/resources/responsive-static/build/mds-next/js/.js?cb=mkW8NyPe",
3453                true,
3454                null,
3455                "module"
3456            )
3457        }, 500);
3458    }
3459</script>
3459
3460
3461
3462</html>

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