{"version":3,"file":"app.js?3ccec55bb92ebb5207af","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./assets/js/logging/sentry.js","webpack:///./assets/js/components/sliders.js","webpack:///./assets/js/components/alt-header.js","webpack:///./assets/js/components/contact-form.js","webpack:///./assets/js/components/form-validation.js","webpack:///./assets/js/components/popup.js","webpack:///./assets/js/components/site-header.js","webpack:///./assets/js/components/donate.js","webpack:///./assets/js/components/news-loader.js","webpack:///./assets/js/components/form-helpers.js","webpack:///./assets/js/components/uv-chart.js","webpack:///./assets/js/components/gallery-popup.js","webpack:///./assets/js/components/shop.js","webpack:///./assets/js/components/donation-popup.js","webpack:///./assets/js/components/presentation-form.js","webpack:///./assets/js/components/recaptcha-form.js","webpack:///./assets/js/app.js","webpack:///./assets/js/components/counter-animated.js","webpack:///./assets/js/components/lazy-loader.js","webpack:///./assets/js/components/video-popups.js","webpack:///../../node_modules/moment/locale/ sync ^\\.\\/.*$","webpack:///webpack/bootstrap","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var blacklistUserAgents = [\r\n /Seekport Crawler/,\r\n /TurnitinBot/,\r\n /MauiBot/,\r\n /MJ12bot/,\r\n /AhrefsBot/,\r\n /Yeti/,\r\n];\r\n\r\nvar denyUrls = [\r\n /(.*)\\/gpt\\/(.*)/,\r\n /ampproject/,\r\n /bat.bing.com/,\r\n /translatoruser-int/,\r\n /doubleclick.net/,\r\n /googleadservices.com/,\r\n /googlesyndication.com/,\r\n /hotjar.io/,\r\n];\r\n\r\nvar allowedHosts = [\r\n];\r\n\r\nvar blacklistErrorMessages = [\r\n];\r\n\r\nvar blacklistErrorNames = [];\r\n\r\n/**\r\n * beforeSend set additional values on the Sentry event to be logged\r\n * @param {Object} data - the original Sentry event data to be logged\r\n */\r\nvar beforeSend = function( event, hint ) {\r\n var userAgent = navigator.userAgent;\r\n var currentHost = window.location.hostname;\r\n\r\n for ( var hostIndex = 0; hostIndex < allowedHosts.length; hostIndex++ ) {\r\n if ( !allowedHosts[ hostIndex ].test( currentHost ) ) {\r\n return null;\r\n }\r\n }\r\n\r\n for ( var agentIndex = 0; agentIndex < blacklistUserAgents.length; agentIndex++ ) {\r\n if ( blacklistUserAgents[ agentIndex ].test( userAgent ) ) {\r\n return null;\r\n }\r\n }\r\n\r\n for ( var nameIndex = 0; nameIndex < blacklistErrorNames.length; nameIndex++ ) {\r\n if ( blacklistErrorNames[ nameIndex ].test( hint.originalException.name ) ) {\r\n return null;\r\n }\r\n }\r\n\r\n for ( var msgIndex = 0; msgIndex < blacklistErrorMessages.length; msgIndex++ ) {\r\n if ( blacklistErrorMessages[ msgIndex ].test( hint.originalException.message ) ) {\r\n return null;\r\n }\r\n }\r\n\r\n return event;\r\n};\r\n\r\nvar config = {\r\n dsn: window.sentryDSN,\r\n sampleRate: 1,\r\n denyUrls: denyUrls,\r\n beforeSend: beforeSend,\r\n};\r\n\r\nexport default config;\r\n","let Sliders = function () {\r\n\r\n this.defaults = {\r\n arrows: false,\r\n dots: true,\r\n centerMode: false,\r\n infinite: true,\r\n vertical: false,\r\n verticalSwiping: false,\r\n swipeToSlide: true,\r\n edgeFriction: true,\r\n accessibility: true,\r\n slidesToScroll: 1,\r\n speed: 300,\r\n autoplaySpeed: 6000,\r\n autoplay: false,\r\n mobileFirst: true,\r\n accessibility: false\r\n };\r\n\r\n this.init();\r\n};\r\n\r\nSliders.prototype.init = function () {\r\n this.home();\r\n this.genericHero();\r\n this.footer();\r\n this.donationMethods();\r\n};\r\n\r\nSliders.prototype.home = function () {\r\n\r\n let homeSlider = '.home-slider';\r\n\r\n let opts = {\r\n autoplay: true,\r\n appendDots: $('.slide-content')\r\n };\r\n\r\n $(homeSlider)\r\n .slick(this.buildOptions(opts))\r\n .on( 'afterChange', function( event, slick, currentSlide ) {\r\n var $dots = $( '.slick-dots' );\r\n $( 'li', $dots ).removeClass( 'slick-active' );\r\n $dots.each( function() {\r\n $( 'li', $( this ) ).eq( currentSlide ).addClass( 'slick-active' );\r\n } );\r\n } );\r\n\r\n};\r\n\r\nSliders.prototype.genericHero = function () {\r\n\r\n let homeSlider = '.generic-slider';\r\n\r\n let opts = {};\r\n\r\n $(homeSlider).slick(this.buildOptions(opts));\r\n\r\n};\r\n\r\nSliders.prototype.footer = function () {\r\n\r\n let footerSlider = '#footer-slider';\r\n\r\n let opts = {\r\n infinite: false,\r\n autoplay: false,\r\n slidesToShow: 1,\r\n responsive: [\r\n {\r\n breakpoint: 576,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: 992,\r\n settings: 'unslick'\r\n },\r\n {\r\n breakpoint: 1200,\r\n settings: 'unslick'\r\n }\r\n ]\r\n };\r\n\r\n $(footerSlider).slick(this.buildOptions(opts));\r\n\r\n};\r\n\r\nSliders.prototype.donationMethods = function () {\r\n\r\n let donationSlider = '#donation-methods';\r\n\r\n let opts = {\r\n responsive: [\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 2,\r\n }\r\n },\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n }\r\n ]\r\n };\r\n\r\n $(donationSlider).slick(this.buildOptions(opts));\r\n\r\n};\r\n\r\nSliders.prototype.buildOptions = function (opts) {\r\n return $.extend({}, this.defaults, opts);\r\n};\r\n\r\n/**\r\n * Static initialiser\r\n */\r\nSliders.init = function () {\r\n return new Sliders();\r\n};\r\n\r\nexport default Sliders;","let AltHeader = function () {\r\n\r\n this.header = $('#standard-header-wrap');\r\n this.altHeader = $('#alternate-header-wrap');\r\n\r\n this.navbar = $('#navbar');\r\n this.navToggle = $('#mobileNavToggle');\r\n\r\n this.init();\r\n};\r\n\r\n/**\r\n * Add event listeners\r\n */\r\nAltHeader.prototype.init = function () {\r\n $(document).on('click', 'button[data-action=\"show-header\"]', function () {\r\n this.showStandard();\r\n }.bind(this));\r\n};\r\n\r\nAltHeader.prototype.showStandard = function () {\r\n\r\n this.altHeader.hide();\r\n\r\n this.header.css('opacity', 0)\r\n .slideDown('200')\r\n .animate({\r\n opacity: 1,\r\n display: 'block'\r\n },\r\n {\r\n queue: false,\r\n duration: 'slow',\r\n complete: function () {\r\n if (this.navToggle.attr(\"aria-expanded\") === 'false' && this.navbar.css('display') === 'none') {\r\n this.navbar.collapse('show');\r\n }\r\n }.bind(this)\r\n }\r\n );\r\n};\r\n\r\n/**\r\n * Static initialiser\r\n */\r\nAltHeader.init = function () {\r\n return new AltHeader();\r\n};\r\n\r\nexport default AltHeader;","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport axios from 'axios';\r\n\r\nlet ContactForm = function ($el, opts) {\r\n this.$el = $el;\r\n this.opts = $.extend(true, {}, ContactForm.defaults, this.$el.data(), opts || {});\r\n\r\n this.init();\r\n this.action = this.$el.data('action') || window.location.href;\r\n};\r\n\r\nContactForm.prototype.init = function () {\r\n\r\n /**\r\n * Register Event handlers here\r\n */\r\n\r\n $(this.$el).on('submit', (event) => {\r\n event.preventDefault();\r\n this.$el.find('input[type=\"submit\"]').val(\"Sending ...\");\r\n this.$el.find('input[type=\"submit\"]').prop( \"disabled\", true );\r\n if (this.$el.parsley().isValid() || this.$el.parsley.isValid) {\r\n\r\n const data = this.toJSON(this.$el.serializeArray());\r\n this.submit(data);\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.$el[0].dataset.initialised = true;\r\n};\r\n\r\nContactForm.prototype.submit = function (data) {\r\n\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n }\r\n };\r\n\r\n axios.post(this.action, data, config).then((response) => {\r\n\r\n const msg = response.data.msg;\r\n\r\n switch (response.status) {\r\n\r\n case 200:\r\n\r\n let success = this.$el.parent().find('.success');\r\n //success.find('.msg').text(msg);\r\n success.removeClass('d-none');\r\n this.$el.hide();\r\n break;\r\n\r\n case 500:\r\n\r\n let error = this.$el.parent().find('.error');\r\n //error.find('.msg').text(msg);\r\n error.removeClass('d-none');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n }).catch((error) => {\r\n console.log(error);\r\n }).finally(() => {\r\n this.$el.parent().find('.result').removeClass('d-none');\r\n this.$el.find('input[type=\"submit\"]').val(\"Submit\");\r\n this.$el.find('input[type=\"submit\"]').prop( \"disabled\", true );\r\n return false; \r\n });\r\n return false;\r\n};\r\n\r\nContactForm.prototype.toJSON = function (data) {\r\n\r\n let obj = {};\r\n\r\n data.forEach((input) => {\r\n obj[input.name] = input.value;\r\n });\r\n\r\n return obj;\r\n};\r\n\r\nContactForm.defaults = {};\r\n\r\nContactForm.init = function (el) {\r\n return new ContactForm(el);\r\n};\r\n\r\nexport default ContactForm;","export default {\r\n\r\n initialised: false,\r\n\r\n init: function() {\r\n // Don't initialise twice!\r\n if (this.initialised) {\r\n return;\r\n }\r\n\r\n // Validate all forms with the \"validate\" class\r\n $('form.validate').parsley({\r\n trigger: 'change', // Which event to trigger validation on\r\n errorClass: 'is-invalid', // Class when there are errors\r\n successClass: 'is-valid', // Class for successful validation\r\n //errorsMessagesDisabled: false, // Whether to add disable messages on each field\r\n whitespace: 'trim', // Trim whitespace before validation\r\n validationThreshold: 1, // Minimum number of chars before validation will fire\r\n errorTemplate: '',\r\n priorityEnabled: true,\r\n\r\n classHandler: function(field) {\r\n var tagName = (field.$element.prop('tagName') || '').toLowerCase();\r\n var type = (field.$element.attr('type') || '').toLowerCase();\r\n\r\n }\r\n\r\n });\r\n\r\n window.Parsley.addValidator('donationAmount', {\r\n requirementType: 'integer',\r\n validateString : function(value, requirement) {\r\n if ( !value ) {\r\n return false;\r\n }\r\n\r\n if ( !/^[0-9]{1,}([,.]{1}[0-9]{1,})?$/.test( value ) ) {\r\n return false;\r\n }\r\n\r\n const valueWithNumericOnly = parseFloat( value.replace( ',', '' ) );\r\n\r\n return valueWithNumericOnly <= requirement;\r\n },\r\n });\r\n }\r\n};","require('parsleyjs');\r\n\r\nimport ContactForm from './contact-form';\r\nimport FormValidation from './form-validation';\r\n\r\nlet ContactPopup = function (RecaptchaForm) {\r\n\r\n this.initialised = false;\r\n\r\n if (this.initialised) {\r\n return;\r\n }\r\n\r\n this.init(RecaptchaForm);\r\n};\r\n\r\nContactPopup.prototype.init = function (RecaptchaForm) {\r\n\r\n $(document).on('click', '[data-popup]', (e) => {\r\n this.popup({\r\n src: $(e.currentTarget).data('popup'),\r\n callbacks: {\r\n ajaxContentAdded: function () {\r\n FormValidation.init('#contactPopup');\r\n ContactForm.init($('[data-type=\"contact-form\"]'));\r\n new RecaptchaForm(document.getElementById('contactPopup'));\r\n }\r\n }\r\n })\r\n });\r\n\r\n this.initialised = true;\r\n};\r\n\r\nContactPopup.prototype.popup = function (data) {\r\n $.magnificPopup.open({\r\n fixedContentPos: true,\r\n autoFocusLast: false,\r\n closeOnBgClick: true,\r\n items: {\r\n src: data.src,\r\n type: 'ajax'\r\n },\r\n callbacks: data.callbacks\r\n });\r\n};\r\n\r\n/**\r\n * Static initialiser\r\n */\r\nContactPopup.init = function (RecaptchaForm) {\r\n return new ContactPopup(RecaptchaForm);\r\n};\r\n\r\nexport default ContactPopup;\r\n","import $ from 'jquery';\r\n\r\nlet SiteHeader = {\r\n initialised: false\r\n};\r\n\r\n/**\r\n * Add event listeners\r\n */\r\nSiteHeader.init = function () {\r\n\r\n if (this.initialised) {\r\n return;\r\n }\r\n\r\n this.$el = $('#navbar');\r\n this.$subnav = this.$el.find('.subnav').eq(0);\r\n this.$mobileSubnav = this.$el.find('.mobile-subnav').eq(0);\r\n\r\n this.subnavActive = false;\r\n this.childSubnavActive = false;\r\n this.subnavHiding = false;\r\n this.currentSelector = null;\r\n this.currentChildSubnav = null;\r\n\r\n\r\n /** Desktop Event Handlers */\r\n\r\n this.$el.on('mouseenter', '[data-subnav]', function (e) {\r\n if (!$(e.target).is(\"a\"))\r\n return;\r\n this.showDesktopSubnav($(e.currentTarget).data('subnav'));\r\n }.bind(this));\r\n\r\n this.$el.on('mouseleave', function (e) {\r\n this.hideDesktopSubnav();\r\n }.bind(this));\r\n\r\n this.$el.on('show.bs.collapse', '.navbar-collapse', function (e) {\r\n if ($(e.target).hasClass('navbar-collapse')) {\r\n $('html').addClass('navbar-open');\r\n }\r\n }.bind(this));\r\n\r\n this.$el.on('hide.bs.collapse', '.navbar-collapse', function (e) {\r\n if ($(e.target).hasClass('navbar-collapse')) {\r\n $('html').removeClass('navbar-open');\r\n }\r\n });\r\n\r\n $(document).on('click', '[data-action=\"openNav\"]', function (e) {\r\n if ( e.target.dataset.page && e.target.dataset.page.length > 0 ) {\r\n const subnavItem = document.querySelector( '.mobile-subnav a[href=\"' + e.target.dataset.page +'\"]' );\r\n\r\n if ( !subnavItem ) {\r\n return;\r\n }\r\n\r\n const parentMenu = subnavItem.closest( '.mobile-subnav .nav' );\r\n\r\n if ( !parentMenu ) {\r\n return;\r\n }\r\n\r\n this.$el.find('#mobileRoot').addClass('inactive');\r\n this.$mobileSubnav.addClass('active');\r\n $(parentMenu).parents().find('.nav.active').removeClass('active');\r\n $(parentMenu).addClass('active');\r\n this.currentChildSubnav = $(parentMenu);\r\n this.$el.collapse('show');\r\n return;\r\n }\r\n \r\n this.$el.collapse('show');\r\n }.bind(this));\r\n\r\n this.$el.on('click', '[data-child]', function (e) {\r\n e.preventDefault();\r\n this.openDesktopChildSubnav($(e.target));\r\n }.bind(this));\r\n\r\n this.$el.on('click', '[data-action=\"back\"]', function (e) {\r\n e.preventDefault();\r\n this.closeDesktopChildSubnav($(e.target));\r\n }.bind(this));\r\n\r\n /** Mobile Event Handlers */\r\n\r\n this.$el.on('click', '[data-mobile-subnav]', function (e) {\r\n e.preventDefault();\r\n this.openMobileChildSubnav($(e.target));\r\n }.bind(this));\r\n\r\n this.$el.on('click', '[data-mobile-parent]', function (e) {\r\n e.preventDefault();\r\n this.closeMobileChildSubnav($(e.target));\r\n }.bind(this));\r\n\r\n /** final initialisation */\r\n\r\n this.initialised = true;\r\n};\r\n\r\n/** Mobile Nav Functions */\r\n\r\nSiteHeader.openMobileChildSubnav = function ($target) {\r\n\r\n let target = $($target.data('mobile-subnav'));\r\n\r\n if (this.currentChildSubnav === target) {\r\n return;\r\n }\r\n\r\n this.$el.find('#mobileRoot').addClass('inactive');\r\n this.$mobileSubnav.addClass('active');\r\n\r\n $target.parents().find('.nav.active').removeClass('active');\r\n target.addClass('active');\r\n\r\n\r\n this.currentChildSubnav = target;\r\n\r\n};\r\n\r\nSiteHeader.closeMobileChildSubnav = function ($target) {\r\n\r\n let target = $($target.data('mobile-parent'));\r\n\r\n if ($target.data('mobile-parent') === '#mobileRoot') {\r\n\r\n this.$mobileSubnav.removeClass('active');\r\n this.$mobileSubnav.find('.nav').removeClass('active');\r\n this.$el.find('#mobileRoot').removeClass('inactive');\r\n\r\n this.currentChildSubnav = null;\r\n return;\r\n }\r\n\r\n if (this.currentChildSubnav === target) {\r\n return;\r\n }\r\n\r\n this.$mobileSubnav.find('.nav').removeClass('active');\r\n target.addClass('active');\r\n\r\n this.currentChildSubnav = target;\r\n};\r\n\r\n/** Desktop Nav Functions */\r\n\r\nSiteHeader.openDesktopChildSubnav = function ($target) {\r\n\r\n let target = $($target.data('child'));\r\n\r\n if (!this.childSubnavActive) {\r\n this.showSubnavTimeout = setTimeout(function () {\r\n this.$subnav.find('.nav').removeClass('active');\r\n target.addClass('active');\r\n }.bind(this), 100);\r\n }\r\n\r\n if (target === this.currentChildSubnav) {\r\n return;\r\n }\r\n\r\n this.currentChildSubnav = target;\r\n};\r\n\r\nSiteHeader.closeDesktopChildSubnav = function ($target) {\r\n\r\n let target = $($target.data('parent'));\r\n\r\n if (!this.childSubnavActive) {\r\n this.hideSubnavTimeout = setTimeout(function () {\r\n this.$subnav.find('.nav').removeClass('active');\r\n target.addClass('active');\r\n }.bind(this),100);\r\n }\r\n\r\n if (target === '#desktopRoot') {\r\n this.currentChildSubnav = null;\r\n return;\r\n }\r\n\r\n this.currentChildSubnav = target;\r\n};\r\n\r\nSiteHeader.showDesktopSubnav = function (selector) {\r\n clearTimeout(this.hideTimeout);\r\n this.subnavHiding = false;\r\n\r\n if (!this.subnavActive) {\r\n this.$subnav.removeClass('in');\r\n this.$subnav.addClass('active');\r\n document.body.classList.add('nav-open');\r\n\r\n this.showTimeout = setTimeout(function () {\r\n this.$subnav.addClass('in');\r\n }.bind(this), 1);\r\n this.subnavActive = true;\r\n\r\n $(document).on('mousemove.subnav', function (e) {\r\n let $el = $(e.target);\r\n if (!($el.hasClass('subnav') || !!$el.data('subnav') || $el.parents('.subnav').length > 0 || $el.parents('[data-subnav]').length > 0)) {\r\n this.hideDesktopSubnav();\r\n } else {\r\n clearTimeout(this.hideTimeout);\r\n this.subnavHiding = false;\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if (selector === this.currentSelector) {\r\n return;\r\n }\r\n\r\n this.currentSelector = selector;\r\n this.toggleSubnavTimeout = setTimeout(function () {\r\n this.$subnav.find('.nav').removeClass('active').filter(selector).addClass('active');\r\n this.$el.find( 'a[data-subnav]').removeClass('active');\r\n this.$el.find( 'a[data-subnav=\"' + selector + '\"]').addClass('active');\r\n }.bind(this), 100);\r\n};\r\n\r\nSiteHeader.hideDesktopSubnav = function () {\r\n if (!this.subnavActive || this.subnavHiding) {\r\n return;\r\n }\r\n\r\n this.subnavHiding = true;\r\n this.childSubnavActive = false;\r\n\r\n clearTimeout(this.hideTimeout);\r\n this.hideTimeout = setTimeout(function () {\r\n\r\n if (!this.subnavActive) {\r\n return;\r\n }\r\n\r\n this.subnavActive = this.subnavHiding = false;\r\n $(document).off('mousemove.subnav');\r\n\r\n this.$subnav.removeClass('in');\r\n document.body.classList.remove('nav-open');\r\n this.$el.find( 'a[data-subnav]').removeClass('active');\r\n\r\n this.hideTimeout = setTimeout(function () {\r\n this.$subnav.removeClass('active');\r\n }.bind(this), 300);\r\n\r\n }.bind(this), 200);\r\n};\r\n\r\nexport default SiteHeader;","/**\r\n * Functionality for Donate Home Page\r\n */\r\nvar Donate = {\r\n initialised: false\r\n};\r\n\r\n/**\r\n * Add event listeners\r\n */\r\nDonate.init = function() {\r\n if (this.initialised) {\r\n return;\r\n }\r\n\r\n\r\n $(document).on('change', '#frequency-select', function(e) {\r\n\r\n var checkedSelector = $(e.currentTarget).find(\"input[name='frequency']:checked\").val();\r\n\r\n if (checkedSelector === 'm') { // Monthly\r\n\r\n $('.amount-selection#one-time').addClass('d-none')\r\n $('.amount-selection#monthly').removeClass('d-none')\r\n $('.amount-selection#one-time').find('input[type=\"radio\"]').prop('checked', false);\r\n\r\n } else if (checkedSelector === 'o') { // One-time\r\n\r\n $('.amount-selection#monthly').addClass('d-none');\r\n $('.amount-selection#one-time').removeClass('d-none');\r\n $('.amount-selection#monthly').find('input[type=\"radio\"]').prop('checked', false);\r\n }\r\n\r\n });\r\n\r\n $(document).on('focus', '#donationAmount', function(e) {\r\n this.DeselectSetAmounts();\r\n }.bind(this));\r\n\r\n $(document).on('change', '.amount-selection', function(e) {\r\n this.ClearCustomAmount();\r\n }.bind(this));\r\n\r\n this.initialised = true;\r\n};\r\n\r\nDonate.DeselectSetAmounts = function() {\r\n console.log('DeselectSetAmounts');\r\n $('.amount-selection').find('input[type=\"radio\"]').prop('checked', false);\r\n};\r\n\r\nDonate.ClearCustomAmount = function() {\r\n console.log('ClearCustomAmount');\r\n $('#mainDonationForm').find('#donationAmount').val('');\r\n};\r\n\r\nexport default Donate;","'use strict';\r\n\r\nimport $ from 'jquery';\r\nimport axios from 'axios';\r\n\r\nconst origin = window.location.pathname;\r\nconst path = '/getMoreArticles';\r\n\r\nlet NewsLoader = function ($el, opts) {\r\n this.$el = $el;\r\n this.opts = $.extend(true, {}, NewsLoader.defaults, this.$el.data(), opts || {});\r\n this.quantityToLoad = parseInt($el.data('load-quantity')) || NewsLoader.defaults.quantityToLoad;\r\n\r\n this.$articles = this.$el.find('[data-section=\"all-articles\"]');\r\n this.$errors = this.$el.find('[data-type=\"errors\"]');\r\n this.$submit = this.$el.find('button[data-action=\"submit\"]');\r\n\r\n this.init();\r\n};\r\n\r\nNewsLoader.prototype.init = function () {\r\n\r\n /**\r\n * Register Event handlers here\r\n */\r\n this.$submit.on('click', () => {\r\n this.getArticles();\r\n return false;\r\n });\r\n\r\n};\r\n\r\nNewsLoader.prototype.getArticles = function () {\r\n\r\n const ENDPOINT = origin.concat(path);\r\n\r\n axios.get(ENDPOINT, {\r\n params: {\r\n lastId: this.$articles.children().last().data('id'),\r\n quantity: this.quantityToLoad\r\n },\r\n header: {\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n }\r\n }).then(function (response) {\r\n\r\n let articles = response.data;\r\n\r\n switch (response.status) {\r\n\r\n case 200: // All articles requested will be returned\r\n this.appendArticles(articles);\r\n break;\r\n\r\n case 204: // No articles have been returned\r\n this.hideLoader(NewsLoader.defaults.hideMessage, true);\r\n break;\r\n\r\n case 206: // Only some of the articles will be returned\r\n this.appendArticles(articles);\r\n this.hideLoader(NewsLoader.defaults.hideMessage, true);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n }.bind(this)).catch(function (error) {\r\n this.hideLoader(error.message, true);\r\n }.bind(this));\r\n\r\n return false;\r\n};\r\n\r\nNewsLoader.prototype.appendArticles = function (articles) {\r\n\r\n articles.forEach((article) => {\r\n const articleMarkup = this.buildArticleHtml(article);\r\n this.$articles.append(articleMarkup);\r\n })\r\n\r\n};\r\n\r\nNewsLoader.prototype.buildArticleHtml = function (article) {\r\n return (\r\n '
' + article.createdAt +'
' +\r\n '' + message + '
').fadeIn();\r\n\r\n if(hideLoader) {\r\n this.$submit.fadeOut();\r\n }\r\n\r\n};\r\n\r\nNewsLoader.defaults = {\r\n quantityToLoad: 3,\r\n hideMessage: 'No more news articles to load',\r\n errorMessage: 'No articles could be found, try refreshing and trying again.'\r\n};\r\n\r\nNewsLoader.init = function ($scope) {\r\n $($scope || '[data-type=\"news-section\"]').each(function (i, el) {\r\n return new NewsLoader($(el));\r\n }.bind(this));\r\n};\r\n\r\nexport default NewsLoader;","'use strict';\r\n\r\nimport $ from 'jquery';\r\n\r\nlet FormHelpers = function ($el) {\r\n this.$el = $el;\r\n\r\n this.$billingName = $(this.$el).find('#fullBillingName');\r\n\r\n this.mTitle = this.$el.find(\"[name='mTitle']\").val();\r\n this.mFirstName = this.$el.find(\"[name='mFirstName']\").val();\r\n this.mLastName = this.$el.find(\"[name='mLastName']\").val();\r\n\r\n if ($('#fullBillingName').length > 0) {\r\n\r\n let fullCardName = `${this.mTitle ? this.mTitle : \"\"} ${this.mFirstName ? this.mFirstName : \"\"} ${this.mLastName ? this.mLastName : \"\"}`;\r\n $('#fullBillingName').val(fullCardName.toUpperCase());\r\n }\r\n\r\n if($('#BermudaAddress').length > 0) {\r\n changeToBDA();\r\n }\r\n\r\n //billing address country selector\r\n $('#BermudaAddress').change(function() {\r\n changeToBDA();\r\n });\r\n console.log();\r\n\r\n //billing address country selector\r\n $('#UnitedStatesAddress').change(function() {\r\n changeToUSA()\r\n });\r\n\r\n if ($('#UnitedStatesAddress').is(':checked')){\r\n changeToUSA();\r\n }\r\n\r\n //billing address country selector\r\n $('#OtherAddress').change(function() {\r\n changeToOther()\r\n });\r\n\r\n if ($('#OtherAddress').is(':checked')) {\r\n changeToOther();\r\n }\r\n\r\n this.init();\r\n};\r\n\r\nfunction changeToBDA() {\r\n\r\n // hide others\r\n $('#streetAddress').show()//.attr('required', 'required');\r\n $('#street2Address').show()//.attr('required', 'required');\r\n $('#companyAddress').show()//.attr('required', 'required');\r\n $('#countryAddress').hide()//.attr('required', 'required');\r\n $('#parishAddress').show()//.attr('required', 'required');\r\n $('#parishAddressBDA').show()//.attr('required', 'required');\r\n $('#codeAddressOther').show()//.attr('required', 'required');\r\n $('#zipAddress').show()//.attr('required', 'required');\r\n $('#bcountry').val(\"BM\");\r\n\r\n //set to Bermuda\r\n $('#cityAddress').hide();\r\n //$('#bcity').removeAttr('required');\r\n $('#stateAddress').hide()//.removeAttr('required');\r\n $('#parishAddressOther').hide()//.removeAttr('required');\r\n $('#codeAddressUS').hide()//.removeAttr('required');\r\n\r\n}\r\n\r\nfunction changeToUSA() {\r\n\r\n // hide others\r\n $('#streetAddress').show()//.attr('required', 'required');\r\n $('#street2Address').show()//.attr('required', 'required');\r\n $('#cityAddress').show()//.attr('required', 'required');\r\n $('#companyAddress').show()//.attr('required', 'required');\r\n $('#parishAddressOther').show()//.attr('required', 'required');\r\n $('#stateAddress').show()//.attr('required', 'required');\r\n $('#codeAddressUS').show()//.attr('required', 'required');\r\n $('#zipAddress').show()//.attr('required', 'required');\r\n $('#bcountry').val(\"US\");\r\n\r\n $('#countryAddress').hide()//.removeAttr('required');\r\n $('#parishAddress').hide()//.removeAttr('required');\r\n $('#parishAddressBDA').hide()//.removeAttr('required');\r\n $('#codeAddressOther').hide()//.removeAttr('required');\r\n}\r\n\r\nfunction changeToOther() {\r\n\r\n // hide others\r\n $('#streetAddress').show()//.attr('required', 'required');\r\n $('#street2Address').show()//.attr('required', 'required');\r\n $('#cityAddress').show()//.attr('required', 'required');\r\n $('#companyAddress').show()//.attr('required', 'required');\r\n $('#parishAddressOther').show()//.attr('required', 'required');\r\n $('#codeAddressOther').show()//.attr('required', 'required');\r\n $('#countryAddress').show()//.attr('required', 'required');\r\n $('#parishAddress').show()//.attr('required', 'required');\r\n $('#zipAddress').show()//.attr('required', 'required');\r\n $('#bcountry').val(\"GB\");\r\n\r\n $('#stateAddress').hide()//.removeAttr('required');\r\n $('#parishAddressBDA').hide()//.removeAttr('required');\r\n $('#codeAddressUS').hide()//.removeAttr('required');\r\n\r\n}\r\n\r\n\r\nFormHelpers.prototype.init = function () {\r\n\r\n /**\r\n * Register Event handlers here\r\n */\r\n\r\n $(this.$el).on('change', '#checkoutReason', (event) => {\r\n this.setExtraInfo(event);\r\n });\r\n\r\n};\r\n\r\nFormHelpers.prototype.setExtraInfo = function (event) {\r\n\r\n let $extra = $('#donationExtra');\r\n\r\n if ($(event.target).find(\":selected\").data('show-extra')) {\r\n $extra.parent().removeClass('d-none');\r\n $extra.parent().find('[for=\"donationExtra\"]').text($(event.target).find(\":selected\").data('show-extra') + ' *');\r\n $extra.attr('required', 'required');\r\n } else {\r\n $extra.parent().addClass('d-none');\r\n $extra.removeAttr('required');\r\n }\r\n\r\n};\r\n\r\nFormHelpers.prototype.hideActionCaller = function (event) {\r\n $(event.currentTarget).addClass('d-none');\r\n};\r\n\r\nFormHelpers.init = function ($scope) {\r\n $($scope || '.form-helpers').each(function (i, el) {\r\n return new FormHelpers($(el));\r\n }.bind(this));\r\n};\r\n\r\nexport default FormHelpers;","import $ from \"jquery\";\r\nimport Chart from 'chart.js';\r\nimport moment from 'moment';\r\n\r\nconst CHART_TYPE = 'line';\r\n\r\nlet UVChart = function (el, opts) {\r\n\r\n this.$el = $(el);\r\n this.opts = $.extend(true, {}, UVChart.defaults, this.$el.data(), opts || {});\r\n\r\n this.data = this.initData(window.uvData) || [];\r\n\r\n if (!this.initialised) {\r\n this.init();\r\n }\r\n\r\n};\r\n\r\nUVChart.prototype.init = function () {\r\n\r\n if (!this.chart) { // TODO interpolate the time data\r\n this.chart = new Chart(\r\n this.$el,\r\n {\r\n type: CHART_TYPE,\r\n data: this.data,\r\n options: this.opts\r\n }\r\n );\r\n }\r\n\r\n this.initialised = true;\r\n};\r\n\r\n\r\nUVChart.prototype.initData = function (data) {\r\n\r\n let modified = {\r\n datasets: [{\r\n data: []\r\n }],\r\n borderColor: '#7dafd6',\r\n borderWidth: 4,\r\n pointBackgroundColor: '#7dafd6',\r\n pointBorderWidth: 0,\r\n pointRadius: 0\r\n };\r\n\r\n data.forEach((record) => {\r\n modified.datasets[0].data.push(\r\n {\r\n x: moment(record.x),\r\n y: record.y\r\n }\r\n );\r\n });\r\n\r\n return modified;\r\n};\r\n\r\nUVChart.defaults = {\r\n responsive: true,\r\n legend: {\r\n display: false\r\n },\r\n scales: {\r\n yAxes: [{\r\n ticks: {\r\n max: 12,\r\n min: 0,\r\n display: true\r\n }\r\n }],\r\n xAxes: [{\r\n type: 'time',\r\n time: {\r\n unit: 'hour'\r\n },\r\n ticks: {\r\n source: 'auto',\r\n fontColor: '#61508c',\r\n fontStyle: 'bold',\r\n fontSize: 12\r\n }\r\n }]\r\n },\r\n layout: {\r\n padding: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n }\r\n },\r\n animation: {\r\n duration: 0\r\n },\r\n hover: {\r\n animationDuration: 0\r\n },\r\n responsiveAnimationDuration: 0\r\n};\r\n\r\nUVChart.init = function (scope, opts) {\r\n $(scope || '[data-chart=\"uv\"]').each((i, el) => {\r\n return new UVChart(el, opts);\r\n });\r\n};\r\n\r\nexport default UVChart;","\r\nlet GalleryPopup = function ($el, options) {\r\n\r\n this.options = { ...this.defaultOptions, ...options };\r\n\r\n this.$root = $el;\r\n this.$content = $(document).find(this.options.content.class);\r\n\r\n this.currentSlide = 0;\r\n this.initialImageToShow = 0;\r\n\r\n this.init();\r\n\r\n};\r\n\r\nGalleryPopup.prototype.init = function () {\r\n\r\n /**\r\n * Slick Slider\r\n */\r\n\r\n if (typeof this.$content.data(\"image\") !== 'undefined') {\r\n this.initialImageToShow = parseInt(this.$content.data(\"image\"));\r\n }\r\n\r\n this.totalSlides = $(this.options.sliderNav.class).find('img').length;\r\n\r\n $(this.options.sliderViewer.class).slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n adaptiveHeight: false,\r\n arrows: false,\r\n fade: true,\r\n infinite: true,\r\n mobileFirst: true,\r\n asNavFor: this.options.sliderNav.class\r\n });\r\n\r\n $(this.options.sliderViewer.class).on('beforeChange', function (event, slick, currentSlide, nextSlide) {\r\n var newImg = $(slick.$slides[nextSlide]).find('img');\r\n\r\n if (!newImg.attr('img') && !!newImg.data('src')) {\r\n newImg.attr(\"src\", newImg.data('src'));\r\n newImg.data('src', null)\r\n }\r\n\r\n var nextIndex;\r\n\r\n if (nextSlide > currentSlide) { // forward\r\n nextIndex = nextSlide + 1;\r\n } else { // backwards\r\n nextIndex = nextSlide - 1;\r\n }\r\n\r\n if (nextIndex in slick.$slides) {\r\n var img = $(slick.$slides[nextIndex]).find('img');\r\n var url = img.data('src');\r\n\r\n if (!!url) {\r\n img.attr(\"src\", url);\r\n img.data('src', null)\r\n }\r\n }\r\n });\r\n\r\n $(this.options.sliderNav.class).slick({\r\n slidesToScroll: 1,\r\n asNavFor: this.options.sliderViewer.class,\r\n dots: false,\r\n infinite: true,\r\n centerMode: true,\r\n mobileFirst: true,\r\n variableWidth: true,\r\n prevArrow: $(this.options.sliderNav.class).find('[data-action=\"slick-prev\"]'),\r\n nextArrow: $(this.options.sliderNav.class).find('[data-action=\"slick-next\"]'),\r\n focusOnSelect: true,\r\n });\r\n\r\n /**\r\n * Event Handlers\r\n */\r\n $(this.$content).on('click', '[data-action=\"slick-prev\"]', () => {\r\n $(this.options.sliderViewer.class).slick('slickPrev');\r\n });\r\n\r\n $(this.$content).on('click', '[data-action=\"slick-next\"]', () => {\r\n $(this.options.sliderViewer.class).slick('slickNext');\r\n });\r\n\r\n $(this.options.sliderNav.class).on('afterChange', () => {\r\n this.updateCurrentSlide();\r\n this.updateContent();\r\n });\r\n\r\n if (this.initialImageToShow > 0) {\r\n $(this.options.sliderViewer.class).slick('slickGoTo', this.initialImageToShow, false)\r\n }\r\n};\r\n\r\nGalleryPopup.prototype.updateContent = function () {\r\n\r\n let currentSlide = $(this.options.sliderNav.class).slick('slickCurrentSlide');\r\n\r\n const target = $(this.options.sliderViewer.class).find(`[data-slick-index=\"${currentSlide}\"]`);\r\n\r\n if (target.length > 0) {\r\n\r\n const text = $(target).find('img').data('description');\r\n this.$content.find('[data-type=\"content\"]').text(text);\r\n\r\n } else {\r\n\r\n this.$content.find('[data-type=\"content\"]').text(\"No description provided\");\r\n }\r\n\r\n};\r\n\r\nGalleryPopup.prototype.updateCurrentSlide = function () {\r\n\r\n let currentSlide = $(this.options.sliderNav.class).slick('slickCurrentSlide');\r\n this.$content.find('[data-type=\"index\"]').text(currentSlide + 1);\r\n\r\n this.currentSlide = currentSlide;\r\n};\r\n\r\n/**\r\n * Return the default configuration options\r\n */\r\nGalleryPopup.prototype.defaultOptions = {\r\n content: {\r\n class: '.album-gallery-popup-container'\r\n },\r\n sliderNav: {\r\n class: '.gallery-slider-nav'\r\n },\r\n sliderViewer: {\r\n class: '.gallery-slider-viewer'\r\n }\r\n};\r\n\r\nexport default GalleryPopup;","let shopReLoader = function() {\r\n this.timer = null;\r\n this.changedControls = [];\r\n this.errorControls = [];\r\n};\r\n\r\nshopReLoader.init = function () {\r\n //this holds a record of all the controls that have been changed and need posting\r\n this.changedControls = [];\r\n //this holds a record of controls currently in error\r\n this.errorControls = [];\r\n //this is the path to the server post\r\n this.postPath = $('#checkout-form').data('ajax-path');\r\n\r\n this.continueButton = $('button[data-action=\\'continueToCheckout\\']');\r\n this.originalButtonText = this.continueButton.html();\r\n \r\n //on each keyup on any of the controls with this class, set a timer, reset each time to stop loads of server posts and when a timer \r\n //eventually executes call the function to push the data\r\n $(document).on('input', '.reloadOnChange', function(e) {\r\n\r\n //stop the user being able to \"continue\"\r\n this.continueButton.html('Updating Basket Please Wait...');\r\n this.continueButton.prop('disabled', true);\r\n\r\n //add the control to the array (if not there already)\r\n if (!this.changedControls.includes(e.target.name))\r\n this.changedControls.push(e.target.name);\r\n\r\n //clear the current timer and set a new one\r\n clearTimeout(this.timer);\r\n this.timer = setTimeout(this.tryPost.bind(this), 1000);\r\n }.bind(this));\r\n\r\n};\r\n\r\n\r\nshopReLoader.tryPost = function() {\r\n //for each control that has been changed\r\n this.changedControls.forEach(function(changedControl, i) \r\n {\r\n var inputType = (changedControl.indexOf('sNote') > -1) ? 'textarea' : (changedControl.indexOf('variant') > -1 ? 'select' : 'input');\r\n var selector = inputType + '[name=\\'' + changedControl + '\\']';\r\n var control = $(selector);\r\n var controlValue = control.val();\r\n console.log(selector);\r\n console.log(control);\r\n console.log(controlValue);\r\n \r\n $.when(\r\n //would have used a $.post call but in trying to fix a bug with context (turned out to not be about that), I changed it to this format\r\n //no point in changing it back\r\n $.ajax({\r\n type: 'POST',\r\n url: this.postPath,\r\n data: {\r\n //send the name of the control and new value to the server\r\n name: changedControl,\r\n value: controlValue\r\n },\r\n context: this,\r\n success: \r\n function(returnData) {\r\n if (returnData)\r\n {\r\n if (returnData.success)\r\n {\r\n if (returnData.data && returnData.data.messageTarget)\r\n {\r\n //update the line price and basket price and make both \"flash\" by adding classes\r\n var priceSelector = '#linePrice_' + returnData.data.messageTarget;\r\n $(priceSelector).html(returnData.data.lineItemTotal).removeClass('flashChange').removeClass('undoFlash').addClass('flashChange');\r\n $('#basket-total').html(returnData.data.basketTotal).removeClass('flashChange').removeClass('undoFlash').addClass('flashChange');\r\n //this add a second class with the transition back to white\r\n setTimeout(\r\n function() { \r\n $(priceSelector).addClass('undoFlash');\r\n $('#basket-total').addClass('undoFlash');\r\n }, 300\r\n );\r\n \r\n //clear the associated error message as this was successful\r\n var errorSelector = '#serverErrorMessage_' + returnData.data.messageTarget;\r\n $(errorSelector).html('');\r\n $(errorSelector).hide();\r\n\r\n //remove the control from the error list\r\n if (this.errorControls.includes(this.changedControls[i]))\r\n this.errorControls = this.errorControls.filter(function(item) { return item !== this.changedControls[i] }.bind(this));\r\n \r\n }\r\n\r\n if (this.errorControls.length === 0)\r\n {\r\n //no errors - so let the user continue\r\n this.continueButton.html(this.originalButtonText);\r\n this.continueButton.prop('disabled', false);\r\n }\r\n else\r\n {\r\n //errors still remain, so leave the button disabled and show the \"please correct\" text\r\n this.continueButton.html('Please Correct the Form');\r\n }\r\n }\r\n else\r\n {\r\n //the call was not successful, so show the error in the appropriate place\r\n this.errorControls.push(this.changedControls[i]);\r\n this.displayErrorMessage(returnData.message, returnData.messageTarget);\r\n }\r\n }\r\n else\r\n {\r\n //if no data, then probably a 500 or similar...\r\n this.displayErrorMessage('Sorry, something has gone wrong with the auto-update - please use the manual Update Basket button below before checkout.', null);\r\n }\r\n }\r\n })\r\n ).done(function() { \r\n //remove the control from the controls needing to be posted\r\n this.changedControls = this.changedControls.filter(function(item) { return item !== changedControl }.bind(this)); } \r\n );\r\n }.bind(this));\r\n};\r\n\r\nshopReLoader.displayErrorMessage = function(message, target) {\r\n this.continueButton.html('Please Correct the Form');\r\n\r\n target = '#serverErrorMessage_' + (target ? target : 'All');\r\n \r\n $(target).html('Error updating your details: ' + message);\r\n $(target).show();\r\n};\r\n\r\nexport default shopReLoader;","import Cookies from 'js-cookie'\r\n\r\nlet DonationPopup = function( options ) {\r\n this.options = Object.assign( {}, DonationPopup.defaultOptions, options );\r\n \r\n this.timeout;\r\n this.timesSeen = 0;\r\n this.previousState;\r\n\r\n this.popup = document.querySelector( '.donationpopup' );\r\n\r\n if ( !this.popup || this.popup.classList.contains( 'donationpopup--initialised' ) ) {\r\n return;\r\n }\r\n\r\n const userHasDonated = Cookies.get( 'bchc__lastDonationDate' );\r\n\r\n if ( userHasDonated ) {\r\n return;\r\n }\r\n\r\n const userHasSeenPopup = Cookies.get( 'bchc__donationPopupSeen' );\r\n\r\n if ( userHasSeenPopup ) {\r\n return;\r\n }\r\n\r\n for ( let i = 0; i < this.options.denyURLs.length; i++ ) {\r\n const urlToTest = this.options.denyURLs[ i ];\r\n\r\n const pattern = new RegExp( urlToTest, );\r\n\r\n if ( pattern.test( window.location.href ) ) {\r\n return;\r\n }\r\n }\r\n\r\n const hasValidDisplayConfig = (\r\n this.options.minPageViews > 0 ||\r\n ( this.options.useTimer && this.options.timerDurationInSeconds > 0 )\r\n );\r\n\r\n if ( !this.options.enabled || !hasValidDisplayConfig ) {\r\n return;\r\n }\r\n\r\n this.previousState = this.getState();\r\n\r\n this.state = Object.assign( {}, this.previousState, {\r\n pageViews: this.previousState.pageViews + 1,\r\n } );\r\n\r\n this.updateState( this.state );\r\n\r\n this.init();\r\n}\r\n\r\nDonationPopup.prototype.init = function() {\r\n const useTimer = ( this.options.useTimer && this.options.timerDurationInSeconds > 0 );\r\n\r\n if ( useTimer ) {\r\n this.timeout = window.setTimeout( this.show.bind( this ), this.options.timerDurationInSeconds * 1000 );\r\n }\r\n\r\n if ( !useTimer && this.state.pageViews >= this.options.minPageViews ) {\r\n window.setTimeout( this.show.bind( this ), 500 );\r\n }\r\n\r\n this.popup.classList.add( 'donationpopup--initialised' );\r\n};\r\n\r\nDonationPopup.prototype.show = function() {\r\n $.magnificPopup.open( {\r\n items: {\r\n src: '.donationpopup',\r\n type: 'inline',\r\n },\r\n callbacks: {\r\n open: () => {\r\n this.open();\r\n }\r\n },\r\n closeOnBgClick: false,\r\n showCloseBtn: true,\r\n closeOnContentClick: false,\r\n enableEscapeKey: false,\r\n fixedContentPos: true,\r\n } );\r\n};\r\n\r\nDonationPopup.prototype.open = function() {\r\n this.timesSeen++;\r\n\r\n this.state = Object.assign( {}, this.previousState, {\r\n timesSeen: this.timesSeen,\r\n } );\r\n\r\n this.updateState( this.state );\r\n\r\n const now = new Date();\r\n\r\n const currentDate = `${now.getUTCDay()}/${now.getUTCMonth()}/${now.getUTCFullYear()}`;\r\n\r\n Cookies.set( 'bchc__donationPopupSeen', currentDate, {\r\n secure: true,\r\n expires: this.options.cookieExpirationInDays,\r\n } );\r\n};\r\n\r\nDonationPopup.prototype.getState = function() {\r\n const previousStateJSON = window.sessionStorage.getItem( 'donationPopupState' ) || '';\r\n\r\n if ( previousStateJSON.length > 0 ) {\r\n return JSON.parse( previousStateJSON );\r\n } \r\n\r\n return DonationPopup.defaultState;\r\n}\r\n\r\nDonationPopup.prototype.updateState = function( state ) {\r\n window.sessionStorage.setItem( 'donationPopupState', JSON.stringify( state ) );\r\n}\r\n\r\nDonationPopup.defaultState = {\r\n pageViews: 0,\r\n};\r\n\r\nDonationPopup.defaultOptions = {\r\n enabled: false,\r\n minPageViews: 0,\r\n timerDurationInSeconds: 0,\r\n useTimer: false,\r\n cookieExpirationInDays: 365,\r\n denyURLs: []\r\n};\r\n\r\nexport default DonationPopup;\r\n","import axios from 'axios';\r\n\r\nvar BookAPresentationForm = function( form ) {\r\n if ( !form ) {\r\n throw new Error( 'form is undefined' );\r\n }\r\n\r\n const errorMsgs = form.querySelectorAll( 'form-error-msg' );\r\n const submitBtn = form.querySelector( 'button[type=submit]' );\r\n\r\n form.addEventListener( 'submit', function( event ) {\r\n event.preventDefault();\r\n\r\n if ( submitBtn ) {\r\n submitBtn.disabled = true;\r\n }\r\n\r\n errorMsgs.forEach( msg => msg.classList.add( 'd-none' ) );\r\n\r\n axios.post( window.location.origin + form.getAttribute( 'action' ), new FormData( form ), {} ).then( ( response ) => {\r\n if ( response.status !== 200 ) {\r\n errorMsgs.forEach( msg => {\r\n msg.innerHTML = 'Please check the form for errors and try again.'\r\n msg.classList.remove( 'd-none' );\r\n } );\r\n submitBtn.disabled = false;\r\n return;\r\n }\r\n\r\n if ( !response.data.success ) {\r\n errorMsgs.forEach( msg => {\r\n msg.innerHTML = response.data.error;\r\n msg.classList.remove( 'd-none' );\r\n } );\r\n submitBtn.disabled = false;\r\n return\r\n }\r\n\r\n form.classList.add( 'd-none' );\r\n\r\n form.insertAdjacentHTML( 'afterend', `${response.data.msg}
` );\r\n\r\n const successMsg = document.querySelector( '#presentation-form-success-msg' );\r\n\r\n if ( !successMsg ) {\r\n return;\r\n }\r\n\r\n successMsg.scrollIntoView( {\r\n behaviour: 'smooth',\r\n } );\r\n } );\r\n } );\r\n}\r\n\r\nexport default BookAPresentationForm;\r\n","class RecaptchaForm\r\n{\r\n constructor(form){\r\n this.form = form;\r\n this.submitButton = form.querySelector('[type=\"submit\"]');\r\n this.submitButton.addEventListener('click', (e) => { this.clickHandler(e) });\r\n this.alertContainer = this.form.querySelector('.recaptcha-alert');\r\n }\r\n\r\n clickHandler(e)\r\n {\r\n const grcaptchaInput = this.form.querySelector(\"[name='g-recaptcha-response']\")\r\n if(!grcaptchaInput || !grcaptchaInput.value){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n grecaptcha.ready(() => {\r\n try{\r\n grecaptcha.execute( this.form.dataset.sitekey, {action: 'submit'}).then((token) => {\r\n console.log(token);\r\n if(!grcaptchaInput)\r\n {\r\n let input = document.createElement(\"input\");\r\n input.type = \"hidden\";\r\n input.name = \"g-recaptcha-response\";\r\n input.value = token;\r\n this.form.appendChild(input);\r\n }\r\n else{\r\n grcaptchaInput.value = token;\r\n }\r\n if(token != null)\r\n {\r\n this.submitButton.click();\r\n } \r\n else{\r\n this.showError();\r\n } \r\n }).catch((error) => { \r\n this.showError();\r\n //Can implement Sentry logging\r\n });\r\n }\r\n catch(error){\r\n this.showError();\r\n //Can implement Sentry logging\r\n }\r\n \r\n });\r\n }\r\n }\r\n\r\n showError()\r\n {\r\n if(!this.alertContainer)\r\n {\r\n alert(\"Sorry, we have detected an issue submitting the form - the system we use to determine and exclude automated submission of data (from bots) is malfunctioning - please try again or contact us by email\");\r\n }\r\n else{\r\n this.alertContainer.innerHTML = \"Sorry, we have detected an issue submitting the form - the system we use to determine and exclude automated submission of data (from bots) is malfunctioning - please try again or contact us by email\";\r\n this.alertContainer.scrollIntoView({ behavior: \"smooth\"});\r\n } \r\n }\r\n}\r\n\r\nconst RecaptchaForms = document.querySelectorAll(\".recaptcha-form\");\r\n\r\nRecaptchaForms.forEach( (form) => {\r\n new RecaptchaForm(form);\r\n});\r\n\r\nexport default RecaptchaForm;\r\n","// ------------------------------------------------------------------------------------------------------\r\n// VENDOR LIBRARIES\r\n\r\nimport $ from \"jquery\";\r\nimport \"slick-carousel\";\r\nimport \"bootstrap\";\r\nimport \"magnific-popup\";\r\nimport \"jquery-touchswipe\";\r\nimport \"parsleyjs\";\r\nimport \"sharer.js\";\r\nimport Splide from '@splidejs/splide';\r\n\r\nimport * as Sentry from \"@sentry/browser\";\r\nimport sentryConfig from './logging/sentry';\r\n\r\n// ------------------------------------------------------------------------------------------------------\r\n// SITE COMPONENTS\r\n\r\nimport './components/lazy-loader';\r\n\r\nimport Sliders from './components/sliders'\r\nimport AltHeader from './components/alt-header';\r\nimport ContactPopup from './components/popup';\r\nimport VideoPopups from './components/video-popups';\r\nimport FormValidation from './components/form-validation';\r\nimport SiteHeader from './components/site-header';\r\nimport Donate from './components/donate';\r\nimport NewsLoader from './components/news-loader';\r\nimport FormHelpers from './components/form-helpers';\r\nimport UVChart from './components/uv-chart';\r\nimport GalleryPopup from './components/gallery-popup';\r\nimport shopReLoader from './components/shop';\r\nimport DonationPopup from './components/donation-popup';\r\nimport ContactForm from './components/contact-form';\r\nimport BookAPresentationForm from './components/presentation-form';\r\n\r\nimport RecaptchaForm from './components/recaptcha-form';\r\nimport './components/counter-animated';\r\n\r\n// ------------------------------------------------------------------------------------------------------\r\n// APP ENTRY POINT\r\n\r\nlet App = function() {\r\n Sentry.init( sentryConfig );\r\n};\r\n\r\nApp.prototype.init = function() {\r\n FormValidation.init();\r\n\r\n // Sliders\r\n Sliders.init();\r\n\r\n //Alternate Header/nav\r\n AltHeader.init();\r\n\r\n //Main site header/nav\r\n SiteHeader.init();\r\n\r\n // Popups initialisation\r\n ContactPopup.init(RecaptchaForm);\r\n\r\n // AJAX videos popups\r\n VideoPopups.init();\r\n\r\n Donate.init();\r\n\r\n // AJAX news article loader\r\n NewsLoader.init();\r\n\r\n // Donation/Checkout form helper functions\r\n FormHelpers.init();\r\n\r\n // UV Chart\r\n UVChart.init();\r\n\r\n // Shop on change of params re-loader\r\n shopReLoader.init();\r\n\r\n // Donation popup\r\n if ( document.body.classList.contains( 'bchc' ) ) {\r\n new DonationPopup( window.donationPopupConfig || {} );\r\n }\r\n\r\n // Album Gallery Popups\r\n const $albumPopups = $(document).find(\".album-popup\");\r\n\r\n if ($albumPopups.length > 0) {\r\n\r\n $albumPopups.each((i, el) => {\r\n\r\n $(el).magnificPopup({\r\n type: 'ajax',\r\n closeOnBgClick: true,\r\n callbacks: {\r\n ajaxContentAdded: function() {\r\n this.gallery = new GalleryPopup(this.content);\r\n }\r\n }\r\n });\r\n\r\n })\r\n }\r\n\r\n var productSearchForm = document.querySelector( '#product-search-form' );\r\n if ( productSearchForm ) {\r\n var productSort = productSearchForm.querySelector( 'select[name=sort]' );\r\n productSort.addEventListener( 'change', function() {\r\n productSearchForm.submit();\r\n } );\r\n }\r\n\r\n var continueToCheckoutBtn = document.querySelector( '[data-action=\"continueToCheckout\"]' );\r\n var checkoutForm = document.querySelector( '#checkout-form' );\r\n\r\n if ( continueToCheckoutBtn && checkoutForm ) {\r\n var $checkoutForm = $( '#checkout-form' );\r\n\r\n $( $checkoutForm ).parsley( {\r\n trigger: 'change', // Which event to trigger validation on\r\n errorClass: 'is-invalid', // Class when there are errors\r\n successClass: 'is-valid', // Class for successful validation\r\n //errorsMessagesDisabled: false, // Whether to add disable messages on each field\r\n whitespace: 'trim', // Trim whitespace before validation\r\n validationThreshold: 1, // Minimum number of chars before validation will fire\r\n errorTemplate: '',\r\n priorityEnabled: true,\r\n classHandler: function(field) {\r\n var tagName = (field.$element.prop('tagName') || '').toLowerCase();\r\n var type = (field.$element.attr('type') || '').toLowerCase();\r\n }\r\n } );\r\n \r\n continueToCheckoutBtn.addEventListener( 'click', function( event ) {\r\n event.preventDefault();\r\n \r\n var isValid = $( '#checkout-form' ).parsley().validate();\r\n if ( !isValid ) {\r\n return;\r\n }\r\n\r\n window.location.href = continueToCheckoutBtn.dataset.href;\r\n } );\r\n }\r\n\r\n var quickLinks = document.querySelector( '.search-bar-quick-links' );\r\n var searchBarInputs = document.getElementsByClassName( 'search-bar-input' );\r\n\r\n if ( quickLinks && searchBarInputs.length > 0 ) {\r\n let closingTimeout;\r\n\r\n for ( let i = 0; i < searchBarInputs.length; i++ ) {\r\n searchBarInputs[ i ].addEventListener( 'focus', function( event ) {\r\n if ( closingTimeout ) {\r\n clearTimeout( closingTimeout );\r\n }\r\n\r\n var inputForm = event.target.parentNode.parentNode;\r\n inputForm.classList.add( 'quickLinksOpen' );\r\n\r\n } );\r\n\r\n searchBarInputs[ i ].addEventListener( 'blur', function( event ) {\r\n closingTimeout = setTimeout( () => {\r\n var inputForm = event.target.parentNode.parentNode;\r\n inputForm.classList.remove( 'quickLinksOpen' );\r\n }, 100 );\r\n } );\r\n }\r\n }\r\n \r\n const splides = document.querySelectorAll( '.splide' );\r\n\r\n splides.forEach( el => {\r\n new Splide( el ).mount();\r\n } );\r\n\r\n const rflContactForm = document.querySelector( '[data-type=\"rfl-contact-form\"]' )\r\n if ( rflContactForm ) {\r\n ContactForm.init( $( '[data-type=\"rfl-contact-form\"]' ) );\r\n }\r\n\r\n document.querySelectorAll( '.book-a-presentation-form' ).forEach( form => new BookAPresentationForm( form ) );\r\n\r\n /**\r\n * Single line init actions here (Usually for jQuery plugins)\r\n */\r\n\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n\r\n};\r\n\r\n// ------------------------------------------------------------------------------------------------------\r\n// GLOBALS\r\nwindow.$ = window.jQuery = $;\r\nwindow.app = new App();\r\nwindow.app.init();","// How long you want the animation to take, in ms\r\nconst animationDuration = 2000;\r\n// Calculate how long each ‘frame’ should last if we want to update the animation 60 times per second\r\nconst frameDuration = 1000 / 60;\r\n// Use that to calculate how many frames we need to complete the animation\r\nconst totalFrames = Math.round( animationDuration / frameDuration );\r\n// An ease-out function that slows the count as it progresses\r\n\r\nconst EasingFunctions = {\r\n // no easing, no acceleration\r\n linear: t => t,\r\n // accelerating from zero velocity\r\n easeInQuad: t => t*t,\r\n // decelerating to zero velocity\r\n easeOutQuad: t => t*(2-t),\r\n // acceleration until halfway, then deceleration\r\n easeInOutQuad: t => t<.5 ? 2*t*t : -1+(4-2*t)*t,\r\n // accelerating from zero velocity \r\n easeInCubic: t => t*t*t,\r\n // decelerating to zero velocity \r\n easeOutCubic: t => (--t)*t*t+1,\r\n // acceleration until halfway, then deceleration \r\n easeInOutCubic: t => t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1,\r\n // accelerating from zero velocity \r\n easeInQuart: t => t*t*t*t,\r\n // decelerating to zero velocity \r\n easeOutQuart: t => 1-(--t)*t*t*t,\r\n // acceleration until halfway, then deceleration\r\n easeInOutQuart: t => t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t,\r\n // accelerating from zero velocity\r\n easeInQuint: t => t*t*t*t*t,\r\n // decelerating to zero velocity\r\n easeOutQuint: t => 1+(--t)*t*t*t*t,\r\n // acceleration until halfway, then deceleration \r\n easeInOutQuint: t => t<.5 ? 16*t*t*t*t*t : 1+16*(--t)*t*t*t*t\r\n }\r\n\r\n// The animation function, which takes an Element\r\nconst animateCountUp = (entries, observer) => {\r\n let formatter = new Intl.NumberFormat( 'en-US' );\r\n\r\n entries.forEach( entry => {\r\n if (entry.isIntersecting) {\r\n let el = entry.target;\r\n observer.unobserve(el);\r\n \r\n let frame = 0;\r\n\r\n let isPercentage = el.dataset.target.includes(\"%\");\r\n let isDollar = el.dataset.target.includes(\"$\");\r\n let isMillion = el.dataset.target.includes(\"m\") || el.dataset.target.includes(\"M\");\r\n let hasDecimal = el.dataset.target.includes(\".\")\r\n\r\n let countTo = parseFloat( el.dataset.target.replace(\"M\", \"\").replace(\"%\", \"\").replace(\"m\", \"\").replace(\"$\", \"\"), 10 );\r\n // Start the animation running 60 times per second\r\n let counter = setInterval( () => {\r\n frame++;\r\n // Calculate our progress as a value between 0 and 1\r\n // Pass that value to our easing function to get our\r\n // progress on a curve\r\n let progress = EasingFunctions.easeOutQuint( frame / totalFrames );\r\n // Use the progress value to calculate the current count\r\n\r\n let currentCount = 0\r\n if(hasDecimal)\r\n {\r\n currentCount = (countTo * progress).toFixed(1);\r\n }else{\r\n currentCount = Math.round( countTo * progress);\r\n }\r\n \r\n // If the current count has changed, update the element\r\n if ( parseFloat( el.innerHTML.replace(\"M\", \"\").replace(\"%\", \"\").replace(\"m\", \"\").replace(\"$\", \"\"), 10 ) !== currentCount ) {\r\n el.innerHTML = (isDollar ? \"$\" : \"\") + formatter.format( currentCount ) + (isPercentage ? \"%\" : \"\") + (isMillion ? \"m\" : \"\");\r\n }\r\n \r\n // If we’ve reached our last frame, stop the animation\r\n if ( frame === totalFrames ) {\r\n clearInterval( counter );\r\n }\r\n }, frameDuration );\r\n }\r\n });\r\n};\r\n\r\nconst observer = new window.IntersectionObserver(animateCountUp)\r\n\r\n// Run the animation on all elements with a class of ‘countup’\r\nconst init = () => {\r\n let countupEls = document.querySelectorAll( '.counter' );\r\n for (let index = 0; index < countupEls.length; index++) {\r\n observer.observe(countupEls[index]); \r\n }\r\n};\r\n\r\ninit();\r\n","let config = {\r\n loadedClass: 'lazy-loaded',\r\n observedClass: 'lazy-observed',\r\n selector: '[data-src],[data-style]',\r\n scriptClickSelector: '[data-load-script]',\r\n scriptLoadingClass: 'script-loading',\r\n rootMargin: '50px 0px', // If the element gets within 50px in the Y axis, start the download.\r\n threshold: 0.01\r\n};\r\n\r\nlet userInteractions = [ 'keydown', 'mouseover', 'touchmove', 'mousedown' ];\r\nlet elements = null;\r\nlet elementCount = null;\r\nlet observer = null;\r\nlet lazyScriptsLoaded = false;\r\nlet initd = false;\r\n\r\nfunction init() {\r\n elements = document.querySelectorAll( config.selector );\r\n elementCount = elements.length;\r\n\r\n // If we don't have support for intersection observer, loads the elements immediately\r\n if ( !( 'IntersectionObserver' in window ) ) {\r\n loadImmediately( elements );\r\n } else {\r\n // It is supported, load the elements\r\n observer = new IntersectionObserver( ( entries ) => onIntersection( entries ), config );\r\n\r\n for ( let i = 0; i < elements.length; i++ ) {\r\n let element = elements[ i ];\r\n\r\n element.classList.add(config.observedClass);\r\n\r\n if ( element.classList.contains( config.loadedClass ) ) {\r\n elementCount--;\r\n continue;\r\n }\r\n\r\n observer.observe( element );\r\n }\r\n }\r\n\r\n initd = true;\r\n}\r\n\r\n/**\r\n * Loads all of the elements immediately\r\n */\r\nfunction loadImmediately() {\r\n for ( let i = 0; i < elements.length; i++ ) {\r\n loadElement( elements[ i ] );\r\n }\r\n}\r\n\r\n/**\r\n * Loads a single element\r\n */\r\nfunction loadElement( el ) {\r\n if ( el.dataset.style ) {\r\n el.style = el.dataset.style;\r\n } else if ( el.dataset.src ) {\r\n el.src = el.dataset.src;\r\n }\r\n\r\n // Add the \"loaded\" class\r\n el.classList.add( config.loadedClass );\r\n}\r\n\r\n/**\r\n * Fires when observed elements come into view\r\n */\r\nfunction onIntersection( entries ) {\r\n // Disconnect if we've already loaded all of the elements\r\n if ( elementCount === 0 ) {\r\n disconnect();\r\n return;\r\n }\r\n\r\n // Loop through the entries\r\n for ( let i = 0; i < entries.length; i++ ) {\r\n let entry = entries[ i ];\r\n\r\n // Stop watching and load the element if we are in viewport\r\n if ( entry.intersectionRatio > 0 ) {\r\n elementCount--;\r\n observer.unobserve( entry.target );\r\n loadElement( entry.target );\r\n }\r\n }\r\n}\r\n\r\nfunction disconnect() {\r\n if ( observer ) {\r\n observer.disconnect();\r\n }\r\n}\r\n\r\ninit();\r\n\r\nwindow.addEventListener( 'lazyload:init', init );\r\n","var $ = require('jquery');\r\n\r\n/**\r\n * Fits an element to its parent\r\n * @param $el\r\n * @param options\r\n */\r\nvar VideoPopups = {\r\n initialised: false\r\n};\r\n\r\n/**\r\n * Add event listeners\r\n */\r\nVideoPopups.init = function()\r\n{\r\n if (this.initialised) {\r\n return;\r\n }\r\n\r\n $(document).on('click', '[data-video-popup]', function(e) {\r\n this.showPopup($(e.currentTarget).data('video-popup'));\r\n }.bind(this));\r\n\r\n this.initialised = true;\r\n};\r\n\r\n/**\r\n * Update all elements\r\n */\r\nVideoPopups.showPopup = function(src)\r\n{\r\n $.magnificPopup.open({\r\n mainClass: 'mfp-zoom-in mfp-custom',\r\n fixedContentPos: true,\r\n autoFocusLast: false,\r\n items: {\r\n src: src,\r\n type: 'iframe'\r\n }\r\n });\r\n};\r\n\r\nmodule.exports = VideoPopups;","var map = {\n\t\"./af\": 5191,\n\t\"./af.js\": 5191,\n\t\"./ar\": 4358,\n\t\"./ar-dz\": 1727,\n\t\"./ar-dz.js\": 1727,\n\t\"./ar-kw\": 8279,\n\t\"./ar-kw.js\": 8279,\n\t\"./ar-ly\": 7895,\n\t\"./ar-ly.js\": 7895,\n\t\"./ar-ma\": 1987,\n\t\"./ar-ma.js\": 1987,\n\t\"./ar-sa\": 2796,\n\t\"./ar-sa.js\": 2796,\n\t\"./ar-tn\": 2386,\n\t\"./ar-tn.js\": 2386,\n\t\"./ar.js\": 4358,\n\t\"./az\": 7452,\n\t\"./az.js\": 7452,\n\t\"./be\": 9053,\n\t\"./be.js\": 9053,\n\t\"./bg\": 5428,\n\t\"./bg.js\": 5428,\n\t\"./bm\": 1569,\n\t\"./bm.js\": 1569,\n\t\"./bn\": 6212,\n\t\"./bn.js\": 6212,\n\t\"./bo\": 3667,\n\t\"./bo.js\": 3667,\n\t\"./br\": 192,\n\t\"./br.js\": 192,\n\t\"./bs\": 1802,\n\t\"./bs.js\": 1802,\n\t\"./ca\": 9118,\n\t\"./ca.js\": 9118,\n\t\"./cs\": 9990,\n\t\"./cs.js\": 9990,\n\t\"./cv\": 557,\n\t\"./cv.js\": 557,\n\t\"./cy\": 4227,\n\t\"./cy.js\": 4227,\n\t\"./da\": 5406,\n\t\"./da.js\": 5406,\n\t\"./de\": 7994,\n\t\"./de-at\": 4139,\n\t\"./de-at.js\": 4139,\n\t\"./de-ch\": 6591,\n\t\"./de-ch.js\": 6591,\n\t\"./de.js\": 7994,\n\t\"./dv\": 4649,\n\t\"./dv.js\": 4649,\n\t\"./el\": 4453,\n\t\"./el.js\": 4453,\n\t\"./en-SG\": 9804,\n\t\"./en-SG.js\": 9804,\n\t\"./en-au\": 8428,\n\t\"./en-au.js\": 8428,\n\t\"./en-ca\": 6972,\n\t\"./en-ca.js\": 6972,\n\t\"./en-gb\": 3224,\n\t\"./en-gb.js\": 3224,\n\t\"./en-ie\": 8843,\n\t\"./en-ie.js\": 8843,\n\t\"./en-il\": 2732,\n\t\"./en-il.js\": 2732,\n\t\"./en-nz\": 9851,\n\t\"./en-nz.js\": 9851,\n\t\"./eo\": 654,\n\t\"./eo.js\": 654,\n\t\"./es\": 3621,\n\t\"./es-do\": 8791,\n\t\"./es-do.js\": 8791,\n\t\"./es-us\": 717,\n\t\"./es-us.js\": 717,\n\t\"./es.js\": 3621,\n\t\"./et\": 2404,\n\t\"./et.js\": 2404,\n\t\"./eu\": 2944,\n\t\"./eu.js\": 2944,\n\t\"./fa\": 496,\n\t\"./fa.js\": 496,\n\t\"./fi\": 8137,\n\t\"./fi.js\": 8137,\n\t\"./fo\": 6545,\n\t\"./fo.js\": 6545,\n\t\"./fr\": 9090,\n\t\"./fr-ca\": 3049,\n\t\"./fr-ca.js\": 3049,\n\t\"./fr-ch\": 2338,\n\t\"./fr-ch.js\": 2338,\n\t\"./fr.js\": 9090,\n\t\"./fy\": 5088,\n\t\"./fy.js\": 5088,\n\t\"./ga\": 7812,\n\t\"./ga.js\": 7812,\n\t\"./gd\": 8374,\n\t\"./gd.js\": 8374,\n\t\"./gl\": 3649,\n\t\"./gl.js\": 3649,\n\t\"./gom-latn\": 4948,\n\t\"./gom-latn.js\": 4948,\n\t\"./gu\": 4033,\n\t\"./gu.js\": 4033,\n\t\"./he\": 175,\n\t\"./he.js\": 175,\n\t\"./hi\": 8055,\n\t\"./hi.js\": 8055,\n\t\"./hr\": 1678,\n\t\"./hr.js\": 1678,\n\t\"./hu\": 5111,\n\t\"./hu.js\": 5111,\n\t\"./hy-am\": 6530,\n\t\"./hy-am.js\": 6530,\n\t\"./id\": 9126,\n\t\"./id.js\": 9126,\n\t\"./is\": 1696,\n\t\"./is.js\": 1696,\n\t\"./it\": 8710,\n\t\"./it-ch\": 8821,\n\t\"./it-ch.js\": 8821,\n\t\"./it.js\": 8710,\n\t\"./ja\": 3974,\n\t\"./ja.js\": 3974,\n\t\"./jv\": 648,\n\t\"./jv.js\": 648,\n\t\"./ka\": 4731,\n\t\"./ka.js\": 4731,\n\t\"./kk\": 3501,\n\t\"./kk.js\": 3501,\n\t\"./km\": 4398,\n\t\"./km.js\": 4398,\n\t\"./kn\": 1825,\n\t\"./kn.js\": 1825,\n\t\"./ko\": 3729,\n\t\"./ko.js\": 3729,\n\t\"./ku\": 9670,\n\t\"./ku.js\": 9670,\n\t\"./ky\": 8797,\n\t\"./ky.js\": 8797,\n\t\"./lb\": 627,\n\t\"./lb.js\": 627,\n\t\"./lo\": 5859,\n\t\"./lo.js\": 5859,\n\t\"./lt\": 355,\n\t\"./lt.js\": 355,\n\t\"./lv\": 6594,\n\t\"./lv.js\": 6594,\n\t\"./me\": 5324,\n\t\"./me.js\": 5324,\n\t\"./mi\": 1689,\n\t\"./mi.js\": 1689,\n\t\"./mk\": 1308,\n\t\"./mk.js\": 1308,\n\t\"./ml\": 5241,\n\t\"./ml.js\": 5241,\n\t\"./mn\": 6320,\n\t\"./mn.js\": 6320,\n\t\"./mr\": 6771,\n\t\"./mr.js\": 6771,\n\t\"./ms\": 503,\n\t\"./ms-my\": 7748,\n\t\"./ms-my.js\": 7748,\n\t\"./ms.js\": 503,\n\t\"./mt\": 5534,\n\t\"./mt.js\": 5534,\n\t\"./my\": 2727,\n\t\"./my.js\": 2727,\n\t\"./nb\": 7550,\n\t\"./nb.js\": 7550,\n\t\"./ne\": 9899,\n\t\"./ne.js\": 9899,\n\t\"./nl\": 1228,\n\t\"./nl-be\": 1225,\n\t\"./nl-be.js\": 1225,\n\t\"./nl.js\": 1228,\n\t\"./nn\": 7130,\n\t\"./nn.js\": 7130,\n\t\"./pa-in\": 1282,\n\t\"./pa-in.js\": 1282,\n\t\"./pl\": 8190,\n\t\"./pl.js\": 8190,\n\t\"./pt\": 1549,\n\t\"./pt-br\": 8135,\n\t\"./pt-br.js\": 8135,\n\t\"./pt.js\": 1549,\n\t\"./ro\": 307,\n\t\"./ro.js\": 307,\n\t\"./ru\": 9272,\n\t\"./ru.js\": 9272,\n\t\"./sd\": 9248,\n\t\"./sd.js\": 9248,\n\t\"./se\": 4969,\n\t\"./se.js\": 4969,\n\t\"./si\": 5522,\n\t\"./si.js\": 5522,\n\t\"./sk\": 1581,\n\t\"./sk.js\": 1581,\n\t\"./sl\": 6428,\n\t\"./sl.js\": 6428,\n\t\"./sq\": 4611,\n\t\"./sq.js\": 4611,\n\t\"./sr\": 9821,\n\t\"./sr-cyrl\": 185,\n\t\"./sr-cyrl.js\": 185,\n\t\"./sr.js\": 9821,\n\t\"./ss\": 5029,\n\t\"./ss.js\": 5029,\n\t\"./sv\": 939,\n\t\"./sv.js\": 939,\n\t\"./sw\": 3107,\n\t\"./sw.js\": 3107,\n\t\"./ta\": 2304,\n\t\"./ta.js\": 2304,\n\t\"./te\": 2550,\n\t\"./te.js\": 2550,\n\t\"./tet\": 9717,\n\t\"./tet.js\": 9717,\n\t\"./tg\": 7669,\n\t\"./tg.js\": 7669,\n\t\"./th\": 4959,\n\t\"./th.js\": 4959,\n\t\"./tl-ph\": 2234,\n\t\"./tl-ph.js\": 2234,\n\t\"./tlh\": 4120,\n\t\"./tlh.js\": 4120,\n\t\"./tr\": 1111,\n\t\"./tr.js\": 1111,\n\t\"./tzl\": 3080,\n\t\"./tzl.js\": 3080,\n\t\"./tzm\": 8246,\n\t\"./tzm-latn\": 5385,\n\t\"./tzm-latn.js\": 5385,\n\t\"./tzm.js\": 8246,\n\t\"./ug-cn\": 8777,\n\t\"./ug-cn.js\": 8777,\n\t\"./uk\": 2014,\n\t\"./uk.js\": 2014,\n\t\"./ur\": 5953,\n\t\"./ur.js\": 5953,\n\t\"./uz\": 9716,\n\t\"./uz-latn\": 7791,\n\t\"./uz-latn.js\": 7791,\n\t\"./uz.js\": 9716,\n\t\"./vi\": 9816,\n\t\"./vi.js\": 9816,\n\t\"./x-pseudo\": 4450,\n\t\"./x-pseudo.js\": 4450,\n\t\"./yo\": 2556,\n\t\"./yo.js\": 2556,\n\t\"./zh-cn\": 7414,\n\t\"./zh-cn.js\": 7414,\n\t\"./zh-hk\": 824,\n\t\"./zh-hk.js\": 824,\n\t\"./zh-tw\": 3285,\n\t\"./zh-tw.js\": 3285\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6616;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(5877); })\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], function() { return __webpack_require__(3355); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","blacklistUserAgents","allowedHosts","blacklistErrorMessages","blacklistErrorNames","dsn","window","sentryDSN","sampleRate","denyUrls","beforeSend","event","hint","userAgent","navigator","currentHost","location","hostname","hostIndex","length","test","agentIndex","nameIndex","originalException","name","msgIndex","message","Sliders","this","defaults","arrows","dots","centerMode","infinite","vertical","verticalSwiping","swipeToSlide","edgeFriction","accessibility","slidesToScroll","speed","autoplaySpeed","autoplay","mobileFirst","init","prototype","home","genericHero","footer","donationMethods","opts","appendDots","$","slick","buildOptions","on","currentSlide","$dots","removeClass","each","eq","addClass","slidesToShow","responsive","breakpoint","settings","extend","AltHeader","header","altHeader","navbar","navToggle","document","showStandard","bind","hide","css","slideDown","animate","opacity","display","queue","duration","complete","attr","collapse","ContactForm","$el","data","action","href","preventDefault","find","val","prop","parsley","isValid","toJSON","serializeArray","submit","dataset","initialised","axios","headers","then","response","msg","status","parent","catch","error","console","log","finally","obj","forEach","input","value","el","trigger","errorClass","successClass","whitespace","validationThreshold","errorTemplate","priorityEnabled","classHandler","field","$element","toLowerCase","Parsley","addValidator","requirementType","validateString","requirement","parseFloat","replace","require","ContactPopup","RecaptchaForm","e","popup","src","currentTarget","callbacks","ajaxContentAdded","FormValidation","getElementById","magnificPopup","open","fixedContentPos","autoFocusLast","closeOnBgClick","items","type","SiteHeader","$subnav","$mobileSubnav","subnavActive","childSubnavActive","subnavHiding","currentSelector","currentChildSubnav","target","is","showDesktopSubnav","hideDesktopSubnav","hasClass","page","subnavItem","querySelector","parentMenu","closest","parents","openDesktopChildSubnav","closeDesktopChildSubnav","openMobileChildSubnav","closeMobileChildSubnav","$target","showSubnavTimeout","setTimeout","hideSubnavTimeout","selector","clearTimeout","hideTimeout","body","classList","add","showTimeout","toggleSubnavTimeout","filter","off","remove","Donate","checkedSelector","DeselectSetAmounts","ClearCustomAmount","origin","pathname","NewsLoader","quantityToLoad","parseInt","$articles","$errors","$submit","getArticles","ENDPOINT","concat","params","lastId","children","last","quantity","articles","appendArticles","hideLoader","hideMessage","article","articleMarkup","buildArticleHtml","append","id","link","title","createdAt","html","fadeIn","fadeOut","errorMessage","$scope","i","FormHelpers","$billingName","mTitle","mFirstName","mLastName","fullCardName","toUpperCase","changeToBDA","change","changeToUSA","changeToOther","show","setExtraInfo","$extra","text","removeAttr","hideActionCaller","UVChart","initData","uvData","chart","Chart","options","modified","datasets","borderColor","borderWidth","pointBackgroundColor","pointBorderWidth","pointRadius","record","push","x","moment","y","legend","scales","yAxes","ticks","max","min","xAxes","time","unit","source","fontColor","fontStyle","fontSize","layout","padding","left","right","top","bottom","animation","hover","animationDuration","responsiveAnimationDuration","scope","GalleryPopup","defaultOptions","$root","$content","content","class","initialImageToShow","totalSlides","sliderNav","sliderViewer","adaptiveHeight","fade","asNavFor","nextSlide","nextIndex","newImg","$slides","img","url","variableWidth","prevArrow","nextArrow","focusOnSelect","updateCurrentSlide","updateContent","shopReLoader","timer","changedControls","errorControls","postPath","continueButton","originalButtonText","includes","tryPost","changedControl","indexOf","control","controlValue","when","ajax","context","success","returnData","messageTarget","priceSelector","lineItemTotal","basketTotal","errorSelector","item","displayErrorMessage","done","DonationPopup","Object","assign","timeout","timesSeen","previousState","contains","Cookies","denyURLs","urlToTest","RegExp","hasValidDisplayConfig","minPageViews","useTimer","timerDurationInSeconds","enabled","getState","state","pageViews","updateState","showCloseBtn","closeOnContentClick","enableEscapeKey","now","Date","currentDate","getUTCDay","getUTCMonth","getUTCFullYear","secure","expires","cookieExpirationInDays","previousStateJSON","sessionStorage","getItem","JSON","parse","defaultState","setItem","stringify","form","Error","errorMsgs","querySelectorAll","submitBtn","addEventListener","disabled","getAttribute","FormData","innerHTML","insertAdjacentHTML","successMsg","scrollIntoView","behaviour","constructor","submitButton","clickHandler","alertContainer","grcaptchaInput","stopPropagation","grecaptcha","ready","execute","sitekey","token","createElement","appendChild","click","showError","behavior","alert","App","Sentry","sentryConfig","VideoPopups","donationPopupConfig","$albumPopups","gallery","productSearchForm","continueToCheckoutBtn","checkoutForm","$checkoutForm","validate","quickLinks","searchBarInputs","getElementsByClassName","closingTimeout","parentNode","Splide","mount","BookAPresentationForm","tooltip","jQuery","app","frameDuration","totalFrames","Math","round","EasingFunctions","t","observer","IntersectionObserver","animateCountUp","entries","formatter","Intl","NumberFormat","entry","isIntersecting","unobserve","frame","isPercentage","isDollar","isMillion","hasDecimal","countTo","counter","setInterval","progress","currentCount","toFixed","format","clearInterval","countupEls","index","observe","config","loadedClass","observedClass","scriptClickSelector","scriptLoadingClass","rootMargin","threshold","elements","elementCount","initd","disconnect","intersectionRatio","loadElement","onIntersection","element","loadImmediately","style","showPopup","mainClass","module","exports","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","resolve","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","hmd","create","set","hasOwnProperty","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}