{"version":3,"sources":["../../../../dev/j/v3/pages/index.js"],"names":["stopAutoplay","name","sliderEl","document","querySelector","controls","pause","medias","play","addEventListener","removeEventListener","avastGlobals","web","locale","tns","container","mode","controlsContainer","navContainer","controlsPosition","navPosition","slideBy","autoplay","autoplayButtonOutput","onInit","avm","require","$","ready","getRandomNumber","min","max","Math","floor","random","animateCountUp","elem","start","end","countUpDuration","elementId","getAttribute","numberOfAttacksPerHourElementID","options","startVal","duration","demoHour","countUp","CountUp","error","console","numberOfAttacksPerDayElementID","demoDay","showTile","tile","delay","countUpConfig","setTimeout","classList","add","id","getElementById","innerText","dataset","endValue","spinnerFadeOutSpeed","graphAnimationSpeed","numberOfPointsOnXaxis","numberOfPointsOnTheGraphLine","numberOfAttacksPerSecondMinimum","numberOfAttacksPerSecondMaximum","numberOfAttacksPerSecondElementID","numberOfAttacksPerSecondElement","numberOfAttacksPerSecondElementInitialValue","randomNumber","attacksPerHourData","attacksPerDayData","graphColorTheme","tileVisibilityDelay","tilesNodeList","querySelectorAll","secondsTile","hoursTile","daysTile","worldwideTile","graphHeight","breakpoint","xs","sm","md","lg","xl","xl2","xxl","xxxl","graphWidth","graphResponsiveness","chart","width","secondsTileVisibilityDelay","hoursTileVisibilityDelay","daysTileVisibilityDelay","worldwideTileVisibilityDelay","attacksPerHourCountUpStart","attacksPerHourCountUpEnd","attacksPerHourCountUpDuration","attacksPerDayCountUpStart","attacksPerDayCountUpEnd","attacksPerDayCountUpDuration","attacksPerSecondChartConfig","height","type","toolbar","show","animations","enabled","easing","dynamicAnimation","speed","responsive","series","data","color","grid","dataLabels","tooltip","stroke","curve","xaxis","range","lines","labels","yaxis","attacksPerSecondChart","ApexCharts","render","randomData","i","push","updateSeries","randomDataPreviousValue","length","runCountThisTime","attacksPerHourChartConfig","setInterval","demoSecond","attacksPerDayChartConfig","performanceCookiesEnabled","activeGroups","window","OptanonActiveGroups","split","includes","jumpshotBanner","localStorage","getItem","style","display","e","setItem","sdl","user","click","element","actionType","component","path","sdlObj","screen","event"],"mappings":"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","file":"index.js","sourcesContent":["if (avastGlobals.web.locale == 'en-us' ||\n\tavastGlobals.web.locale == 'en-gb' ||\n\tavastGlobals.web.locale == 'en-ca' ||\n\tavastGlobals.web.locale == 'en-au' ||\n\tavastGlobals.web.locale == 'fr-fr' ||\n\tavastGlobals.web.locale == 'fr-ch' ||\n\tavastGlobals.web.locale == 'fr-ca' ||\n\tavastGlobals.web.locale == 'de-de' ||\n\tavastGlobals.web.locale == 'de-ch') {\n\n\n\tvar medias = tns({\n\t\t\"container\": \".slider-medias\",\n\t\t\"mode\": \"gallery\",\n\t\t\"controlsContainer\": \".slider-medias-controls\",\n\t\t\"navContainer\": \".slider-medias-navs\",\n\t\t\"controlsPosition\": \"bottom\",\n\t\t\"navPosition\": \"bottom\",\n\t\t\"slideBy\": \"page\",\n\t\t\"autoplay\": true,\n\t\t\"autoplayButtonOutput\": false,\n\t\tonInit: function() {\n\t\t\tstopAutoplay(\"slider-medias\");\n\t\t}\n\t});\n\n\n\t// <#cmp.carousel#> – Slider with Media Section\n\t// Stop autoplay while hovering above controls and navs and when these are clicked on\n\tfunction stopAutoplay(name) {\n\t\tvar\n\t\t\tsliderEl = document.querySelector('[data-name='+name+']'),\n\t\t\tcontrols = sliderEl.querySelector(\".packed-control\"),\n\t\t\tpause = function() { medias.pause(); },\n\t\t\tplay = function() { medias.play(); }\n\n\t\tcontrols.addEventListener('mouseenter', pause);\n\t\tcontrols.addEventListener('mouseleave', play);\n\t\tcontrols.addEventListener('click', function() {\n\t\t\tpause;\n\t\t\tcontrols.removeEventListener('mouseenter', pause);\n\t\t\tcontrols.removeEventListener('mouseleave', play);\n\t\t});\n\t};\n\n\t// <#cmp.carousel#> – Create a slide counter bellow the Carousel\n\tavm.require('avast.web.slideCounter')(medias);\n}\n\n\n//\n//\tGLOWEB-8096 – \"Live\" counter of threats stopped A/B test\n//\t---------------------------------------------------------\n//\tπŸ‘‰ TODO: overal clean up\n//\tπŸ‘‰ TODO: refactoring\n//\n//\t. . . . . . . . . . . . . .\n//\n$(document).ready(function(){\n\n\t//\n\t//\tCheck if the stripe with Graphs exists… \n\t//\n\tif ( document.querySelector('.cmp-counter__section') ) {\n\t\t/**\n\t\t *\n\t\t * ApexCharts – version 3.45.2\n\t\t * \n\t\t * DOCS: https://apexcharts.com/docs/\n\t\t * \n\t\t * * * * * * * * *\n\t\t *\n\t\t * Following code is a composition of various code:\n\t\t * https://codepen.io/collection/vBbzzL\n\t\t * \n\t\t * * * * * * * * *\n\t\t * \n\t\t * HOW TO… Update Charts from JSON API & AJAX ––– If this A/B test (GLOWEB-8096) will be success, we will need to implement this:\n\t\t * https://apexcharts.com/docs/update-charts-from-json-api-ajax/\n\t\t * \n\t\t * * * * * * * * *\n\t\t * @version 0.1.0\n\t\t * @author Frankie Rapcak , Risto Stojkovski \n\t\t * @see {@link https://apexcharts.com/}\n\t\t * \n\t\t * @param {number} graphAnimationSpeed – how fast should be the Chart updated? Value in miliseconds\n\t\t * @param {number} numberOfPointsOnTheGraphLine - number of points rendered on the graph line\n\t\t * @param {number} numberOfAttacksPerSecondMinimum - minimal value on the graph line\n\t\t * @param {number} numberOfAttacksPerSecondMaximum - maximal value on the graph line\n\t\t * \n\t\t */\n\n\n\t\t//\n\t\t//\tS E T T I N G S\n\t\t//\n\t\tvar\n\t\t\tformattedNumberLocale = 'en-US'\t// customize the number formatting. Setting this to \"en-US\" will add thousend separator - the \",\" character\n\t\t\tgraphAnimationSpeed = 1500,\t\t// value in miliseconds; when set to 1000 - the animation is \"choppy\" (CZ: \"trhanΓ‘\" animace); 2000 – value defined in Figma\n\t\t\tnumberOfPointsOnXaxis = 9,\t\t// the number of points shown in the graph line\n\t\t\tnumberOfPointsOnTheGraphLine = 99,\t\t// to create smooth animation, we need much more points then 9\n\t\t\tnumberOfAttacksPerSecondMinimum = 50,\t// 50 – value defined in Figma\n\t\t\tnumberOfAttacksPerSecondMaximum = 179,\t// 179 – value defined in Figma\n\t\t\tnumberOfAttacksPerSecondElementID = 'js-attacks-per-second',\n\t\t\tnumberOfAttacksPerSecondElement = document.getElementById(numberOfAttacksPerSecondElementID),\n\t\t\tnumberOfAttacksPerSecondElementInitialValue = numberOfAttacksPerSecondElement.getAttribute('data-min-value');\n\t\t\tnumberOfAttacksPerHourElementID = 'js-attacks-per-hour',\n\t\t\tnumberOfAttacksPerDayElementID = 'js-attacks-per-day',\n\t\t\trandomNumber = 0,\t\t\t\t// generated random number will be stored here\n\t\t\t// A minimum of 11 items in the array is required for the graph to be rendered at 100% tile width.\n\t\t\tattacksPerHourData = [110, 84, 162, 87, 114, 165, 73, 72, 143, 110, 63],\n\t\t\tattacksPerDayData = [90, 106, 121, 58, 93, 62, 145, 145, 153, 96, 118],\n\t\t\tgraphColorTheme = '#FF7800',\t// $orange-bright – Avast Primary Brand Color\n\t\t\tspinnerFadeOutSpeed = 444,\t// πŸŸ₯ A C H T U N G πŸŸ₯ this has to be the SAME NUMBER as used in index.scss (.cmp-counter____spinner – transition speed)\n\t\t\ttileVisibilityDelay = graphAnimationSpeed,\t// Specifies the duration required for the initial rendering of the graph.\n\t\t\ttilesNodeList = document.querySelectorAll('.cmp-counter'),\n\t\t\tsecondsTile = document.getElementById('cmp-counter--seconds'),\n\t\t\thoursTile = document.getElementById('cmp-counter--hours'),\n\t\t\tdaysTile = document.getElementById('cmp-counter--days'),\n\t\t\tworldwideTile = document.getElementById('cmp-counter--worldwide'),\n\t\t\tgraphHeight = 100,\n\t\t\t//\n\t\t\t//\t⚠️ when you use breakpoint.sm the width will be applied from SM breakpoint UP, but it's the opposite, its DOWN.\n\t\t\t//\n\t\t\tbreakpoint = {\n\t\t\t\t\"xs\":\t320,\t// resolution 319px and down\n\t\t\t\t\"sm\":\t576,\t// resolution 575px and down\n\t\t\t\t\"md\":\t768,\t// resolution 767px and down\n\t\t\t\t\"lg\":\t992,\t// resolution 991px and down\n\t\t\t\t\"xl\":\t1280,\t// resolution 1279px and down\n\t\t\t\t\"xl2\":\t1366,\t// resolution 1365px and down\n\t\t\t\t\"xxl\":\t1600,\t// resolution 1599px and down\n\t\t\t\t\"xxxl\":\t9999\t// resolution 9999px and down. The 9999px is overkill. But we are ready for 8K resolution\n\t\t\t},\n\t\t\t//\n\t\t\t// Graph width has to be slightly higher than the parent's (the Tile) width\n\t\t\t//\n\t\t\tgraphWidth = {\n\t\t\t\t\"xs\":\t348,\n\t\t\t\t\"sm\":\t362,\n\t\t\t\t\"md\":\t278,\n\t\t\t\t\"lg\":\t368,\n\t\t\t\t\"xl\":\t370,\n\t\t\t\t\"xl2\":\t316,\n\t\t\t\t\"xxl\":\t340,\n\t\t\t\t\"xxxl\":\t360\n\t\t\t},\n\t\t\t//\n\t\t\t//\tGraph width on various breakpoints\n\t\t\t//\n\t\t\tgraphResponsiveness = [\n\t\t\t\t{ breakpoint: breakpoint.xs, options: { chart: { width: graphWidth.xs } } },\t// @media-breakpoint-up(xs)\n\t\t\t\t{ breakpoint: breakpoint.sm, options: { chart: { width: graphWidth.sm } } },\t// @media-breakpoint-up(sm)\n\t\t\t\t{ breakpoint: breakpoint.md, options: { chart: { width: graphWidth.md } } },\t// @media-breakpoint-up(md)\n\t\t\t\t{ breakpoint: breakpoint.lg, options: { chart: { width: graphWidth.lg } } },\t// @media-breakpoint-up(lg)\n\t\t\t\t{ breakpoint: breakpoint.xl, options: { chart: { width: graphWidth.xl } } },\t// @media-breakpoint-up(xl)\n\t\t\t\t{ breakpoint: breakpoint.xl2, options: { chart: { width: graphWidth.xl2 } } },\t// @media-breakpoint-up(xl2)\n\t\t\t\t{ breakpoint: breakpoint.xxl, options: { chart: { width: graphWidth.xxl } } },\t// @media-breakpoint-up(xxl)\n\t\t\t\t{ breakpoint: breakpoint.xxxl, options: { chart: { width: graphWidth.xxxl } } }\t// @media-breakpoint-up(xxxl)\n\t\t\t],\n\t\t\t//\n\t\t\t//\tTiles fade-in speed\n\t\t\t//\n\t\t\tsecondsTileVisibilityDelay = tileVisibilityDelay,\t\t\t// ensure the graph is shown fully rendered (there is an ugly design glitch on initial graph animation: The graph line animates faster then the gradient)\n\t\t\thoursTileVisibilityDelay = tileVisibilityDelay + 500,\t\t// value in miliseconds - default 1500 -> 500 is only for GLOWEB-8703\n\t\t\tdaysTileVisibilityDelay = tileVisibilityDelay + 500,\t\t// value in miliseconds - default 2500 -> 500 is only for GLOWEB-8703\n\t\t\tworldwideTileVisibilityDelay = tileVisibilityDelay + 4000,\t// value in miliseconds\n\t\t\t//\n\t\t\t//\tCount up – config:\n\t\t\t//\n\t\t\t// attacksPerHourCountUpStart = 643000, Original value\n\t\t\t// attacksPerHourCountUpEnd = 643836, Original value\n\t\t\tattacksPerHourCountUpStart = 235, // GLOWEB-8703\n\t\t\tattacksPerHourCountUpEnd = 235, // GLOWEB-8703\n\t\t\tattacksPerHourCountUpDuration = 0.3,\t// value in seconds\n\t\t\t// attacksPerDayCountUpStart = 15450000, Original value\n\t\t\t// attacksPerDayCountUpEnd = 15452054, Original value\n\t\t\tattacksPerDayCountUpStart = 6849315,// GLOWEB-8703\n\t\t\tattacksPerDayCountUpEnd = 6849315,// GLOWEB-8703\n\t\t\tattacksPerDayCountUpDuration = 0.2;\t// value in seconds\n\n\n\n\n\t// πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄\n\t//\n\t// - - - - - - - - - - -\t🎬 START ––– S E C O N D S\n\n\t\t//\n\t\t//\tAttacks per SECONDS – Chart configuration\n\t\t//\n\t\tvar attacksPerSecondChartConfig = {\n\t\t\tchart: {\n\t\t\t\twidth: graphWidth.xs,\n\t\t\t\theight: graphHeight,\n\t\t\t\ttype: \"area\",\n\t\t\t\ttoolbar: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tanimations: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\teasing: \"linear\",\n\t\t\t\t\tdynamicAnimation: {\n\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\tspeed: graphAnimationSpeed\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tresponsive: graphResponsiveness,\n\t\t\tseries: [{\n\t\t\t\tdata: [],\t// this array will be filled later by randomised number\n\t\t\t\tcolor: graphColorTheme\t// this will RECOLOR the graph to Avast Brand colors\n\t\t\t}],\n\t\t\tgrid: {\n\t\t\t\tshow: false // Hide the grid lines on the chart\n\t\t\t},\n\t\t\tdataLabels: {\n\t\t\t\tenabled: false\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tenabled: false // Disable tooltip labels shown on :hover\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\twidth: 3,\t// thickness of the graph line (= border-width)\n\t\t\t\tcurve: \"smooth\"\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\trange: numberOfPointsOnXaxis,\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false // disable grid lines \t// ❌ NOT WORKING?\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tshow: false // Disable text labels\n\t\t\t\t}\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\t//max: numberOfAttacksPerSecondMaximum,\t// ❓ WHAT does this will do??? Will it affect the Chart height?\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tshow: false // Disable text labels\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//\n\t\t//\tCreate a NEW chart instance – number of attacks per S E C O N D\n\t\t//\n\t\tvar attacksPerSecondChart = new ApexCharts(document.querySelector(\"#cmp-counter__graph--seconds\"), attacksPerSecondChartConfig);\n\t\tattacksPerSecondChart.render();\n\n\t\t//\n\t\t//\tGenerate random numbers from the defined range\n\t\t//\n\t\tfunction getRandomNumber(min, max) {\n\t\t\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n\t\t}\n\n\t\t//\n\t\t// Create an array of X random numbers from the defined range (numberOfAttacksPerSecondMinimum, numberOfAttacksPerSecondMaximum)\n\t\t//\n\t\tvar randomData = [];\n\t\tfor (var i = 0; i < numberOfPointsOnTheGraphLine; i++) {\n\t\t\trandomData.push(getRandomNumber(numberOfAttacksPerSecondMinimum, numberOfAttacksPerSecondMaximum));\n\t\t}\n\n\t\t//\n\t\t// Attacks per SECOND – Graph – initial state – feed the chart with initial data\n\t\t//\n\t\tattacksPerSecondChart.updateSeries([{\n\t\t\tdata: randomData\n\t\t}]);\n\n\t\t//\n\t\t//\tInitialize variables for the Count up\n\t\t//\n\t\tvar\n\t\t\trandomDataPreviousValue = randomData[randomData.length - 1],\t// get last array item\n\t\t\trunCountThisTime = true;\t// count up will trigger every odd run\n\n\t\t//\n\t\t//\tUpdate the graph every second with randomised numbers\n\t\t//\n\t\tvar timer = setInterval(function () {\n\t\t\t//\tGenerate new random number\n\t\t\trandomNumber = getRandomNumber(numberOfAttacksPerSecondMinimum, numberOfAttacksPerSecondMaximum);\n\n\t\t\t// Add the new random number to the end of the array\n\t\t\trandomData.push(randomNumber);\n\n\t\t\t// Update the chart's series with the updated random data\n\t\t\tattacksPerSecondChart.updateSeries([{\n\t\t\t\tdata: randomData\n\t\t\t}]);\n\n\t\t\t//\n\t\t\t//\tUpdate the text value\n\t\t\t//\n\t\t\t// πŸ‘‰ TODO: clean up\n\n\t\t\t// Update the text value if runCountThisTime is true\n\t\t\tif (runCountThisTime) {\n\t\t\t\tvar options = {\n\t\t\t\t\t\tstartVal: randomDataPreviousValue,\n\t\t\t\t\t\tduration: 1.5\t// value in seconds\n\t\t\t\t\t};\n\n\t\t\t\tvar demoSecond = new countUp.CountUp(numberOfAttacksPerSecondElementID, randomNumber, options);\n\t\t\t\tif (!demoSecond.error) { demoSecond.start(); }\n\t\t\t\telse { console.error(demoSecond.error); }\n\n\t\t\t\t// Toggle runCountThisTime flag for the next run\n\t\t\t\trunCountThisTime = false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Toggle runCountThisTime flag for the next run\n\t\t\t\trunCountThisTime = true;\n\t\t\t}\n\n\t\t\t// Update previous value for the next iteration\n\t\t\trandomDataPreviousValue = randomNumber;\n\n\t\t}, graphAnimationSpeed);\t// End of __ var timer\n\n\n\t// - - - - - - - - - - -\t🎬 END ––– S E C O N D S\n\t//\n\t// πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄ πŸ”΄\n\n\n\n\n\n\t// 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠\n\t//\n\t// - - - - - - - - - - -\t🎬 START ––– H O U R\n\n\t\t//\n\t\t//\tAttacks per HOUR – Chart configuration\n\t\t//\n\t\tvar attacksPerHourChartConfig = {\n\t\t\tchart: {\n\t\t\t\twidth: graphWidth.xs,\n\t\t\t\theight: graphHeight,\n\t\t\t\ttype: \"area\",\n\t\t\t\ttoolbar: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tanimations: {\n\t\t\t\t\tenabled: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tresponsive: graphResponsiveness,\n\t\t\tseries: [{\n\t\t\t\tdata: attacksPerHourData,\n\t\t\t\tcolor: graphColorTheme\n\t\t\t}],\n\t\t\tgrid: {\n\t\t\t\tshow: false // Hide the grid lines on the chart\n\t\t\t},\n\t\t\tdataLabels: {\n\t\t\t\tenabled: false\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tenabled: false\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\twidth: 3,\n\t\t\t\tcurve: \"smooth\"\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\trange: numberOfPointsOnXaxis,\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tshow: false // Disable text labels\n\t\t\t\t}\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tshow: false // Disable text labels\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//\n\t\t//\tCreate a NEW chart instance – number of attacks per H O U R\n\t\t//\n\t\tvar attacksPerHourChart = new ApexCharts(document.querySelector(\"#cmp-counter__graph--hours\"), attacksPerHourChartConfig);\n\t\tattacksPerHourChart.render();\n\n\t// - - - - - - - - - - -\t🎬 END ––– H O U R\n\t//\n\t// 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠 🟠\n\n\n\n\n\n\t// πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅\n\t//\n\t// - - - - - - - - - - -\t🎬 START ––– D A Y\n\n\t\t//\n\t\t//\tAttacks per DAY – Chart configuration\n\t\t//\n\t\tvar attacksPerDayChartConfig = {\n\t\t\tchart: {\n\t\t\t\twidth: graphWidth.sm,\n\t\t\t\theight: graphHeight,\n\t\t\t\ttype: \"area\",\n\t\t\t\ttoolbar: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tanimations: {\n\t\t\t\t\tenabled: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tresponsive: graphResponsiveness,\n\t\t\tseries: [{\n\t\t\t\tdata: attacksPerDayData,\n\t\t\t\tcolor: graphColorTheme\n\t\t\t}],\n\t\t\tgrid: {\n\t\t\t\tshow: false // Hide the grid lines on the chart\n\t\t\t},\n\t\t\tdataLabels: {\n\t\t\t\tenabled: false\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tenabled: false\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\twidth: 3,\n\t\t\t\tcurve: \"smooth\"\n\t\t\t},\n\t\t\txaxis: {\n\t\t\t\trange: numberOfPointsOnXaxis,\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tshow: false // Disable text labels\n\t\t\t\t}\n\t\t\t},\n\t\t\tyaxis: {\n\t\t\t\tlines: {\n\t\t\t\t\tshow: false\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tshow: false // Disable text labels\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//\n\t\t//\tCreate a NEW chart instance – number of attacks per D A Y\n\t\t//\n\t\tvar attacksPerDayChart = new ApexCharts(document.querySelector(\"#cmp-counter__graph--days\"), attacksPerDayChartConfig);\n\t\tattacksPerDayChart.render();\n\n\t// - - - - - - - - - - -\t🎬 END ––– D A Y\n\t//\n\t// πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅ πŸ”΅\n\n\n\t\t//\n\t\t//\tCount-up the number of attacks\n\t\t//\n\t\tfunction animateCountUp(elem, start, end, countUpDuration) {\n\t\t\tvar elementId = elem.getAttribute('id');\n\n\t\t\t// TODO πŸ‘‰ REFACTORING\n\t\t\tif (elementId === numberOfAttacksPerHourElementID){\n\t\t\t\tvar options = {\n\t\t\t\t\tstartVal: start,\n\t\t\t\t\tduration: countUpDuration\n\t\t\t\t};\n\n\t\t\t\tvar demoHour = new countUp.CountUp(elementId, end, options);\n\n\t\t\t\tif (!demoHour.error) {\n\t\t\t\t\tdemoHour.start();\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(demoHour.error);\n\t\t\t\t}\n\t\t\t} else if (elementId === numberOfAttacksPerDayElementID){\n\t\t\t\tvar options = {\n\t\t\t\t\tstartVal: start,\n\t\t\t\t\tduration: countUpDuration\n\t\t\t\t};\n\n\t\t\t\tvar demoDay = new countUp.CountUp(elementId, end, options);\n\n\t\t\t\tif (!demoDay.error) {\n\t\t\t\t\tdemoDay.start();\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(demoDay.error);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//\n\t\t//\tFade-out the the Spinner & show the Tile content\n\t\t//\n\t\tfunction showTile(tile, delay, countUpConfig) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tif(tile) {\n\t\t\t\t\ttile.classList.add('js-show-content');\n\t\t\t\t\t// Only for GLOWEB-8703 - if/else statement (original is whats inside else)\n\t\t\t\t\tif(tile.id==\"cmp-counter--hours\") {\n\t\t\t\t\t\tdocument.getElementById('js-attacks-per-hour').innerText = document.getElementById('js-attacks-per-hour').dataset.endValue;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\n\t\t\t\t\t\t//\n\t\t\t\t\t\t//\tStart count-up (Hour tile, Days tile)\n\t\t\t\t\t\t//\n\t\t\t\t\t\tif (countUpConfig) {\n\t\t\t\t\t\t\tanimateCountUp(document.getElementById(countUpConfig.id), countUpConfig.start, countUpConfig.end, countUpConfig.duration);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\t//\n\t\t\t\t\t//\tSpinner fade-out is completed => add helper class to fix the z-index problem (causing Tooltip not shown on :hover)\n\t\t\t\t\t//\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\ttile.classList.add('js-animation-completed');\n\t\t\t\t\t}, spinnerFadeOutSpeed);\n\t\t\t\t}\n\t\t\t}, delay);\n\t\t}\n\n\n\t\t//\n\t\t//\tFade in the Tiles, one by one\n\t\t//\n\t\tshowTile(secondsTile, secondsTileVisibilityDelay);\n\t\tshowTile(hoursTile, hoursTileVisibilityDelay, { id: numberOfAttacksPerHourElementID, start: attacksPerHourCountUpStart, end: attacksPerHourCountUpEnd, duration: attacksPerHourCountUpDuration });\n\t\tshowTile(daysTile, daysTileVisibilityDelay, { id: numberOfAttacksPerDayElementID, start: attacksPerDayCountUpStart, end: attacksPerDayCountUpEnd, duration: attacksPerDayCountUpDuration });\n\t\tshowTile(worldwideTile, worldwideTileVisibilityDelay);\n\n\t}\t// END of if ( document.querySelector('.cmp-counter__section') )\n\n});\n// END of the GLOWEB-8096 – \"Live\" counter of threats stopped A/B test\n//\t-------------------------------------------------------------------\n\n\n\n\n//\n//\tJumpshot – Banner –– GLOWEB-8731\n//\n$(document).ready(function(){\n\n\t// Get DOM reference to the banner\n\tvar jumpshotBanner = document.querySelector('.jumpshot-banner');\n\n\t// Don't show the Banner to visitors, which already interacted with it (by clicking the \"here\" link or the \"close\" button)\n\tif (avastGlobals.web.locale == 'en-us' && jumpshotBanner !== null && localStorage.getItem('visitorInteractedWithJumpshotBanner') === null) {\n\n\t\t// Show the banner\n\t\tjumpshotBanner.style.display = 'block';\n\n\t\t// Check if Performance cookies are enabled\n\t\tfunction performanceCookiesEnabled() {\n\t\t\tvar\n\t\t\t\tactiveGroups = window.OptanonActiveGroups,\n\t\t\t\tperformanceCookiesGroupID = 'C0002';\t// Optanon code for Performance cookies\n\n\t\t\t// Ensure activeGroups is defined and is a string\n\t\t\tif (typeof activeGroups === 'string') {\n\t\t\t\t// Check if the groupID is present in the array\n\t\t\t\treturn activeGroups.split(',').includes(performanceCookiesGroupID);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t//\tBanner –– Link\n\t\tjumpshotBanner.querySelector('a').addEventListener('click', function(e){\n\t\t\t// Set indicator of visitor's interaction with the banner\n\t\t\tlocalStorage.setItem('visitorInteractedWithJumpshotBanner', 'true');\n\n\t\t\t// Track the visitor only if Performance Cookies are enabled\n\t\t\tif (performanceCookiesEnabled()) {\n\t\t\t\tsdl.push({\n\t\t\t\t\tuser: {\n\t\t\t\t\t\tclick: {\n\t\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\t\tactionType: 'click', // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t\tcomponent: 'link', // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t\tpath: '/' + sdlObj.screen.locale + '/link', // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t\tid: 'jumpshot-banner' // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tevent: 'user.click.element'\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t//\tBanner –– Close button\n\t\tjumpshotBanner.addEventListener('closed.bs.alert', function (e) {\n\t\t\t// Set indicator of visitor's interaction with the banner\n\t\t\tlocalStorage.setItem('visitorInteractedWithJumpshotBanner', 'true');\n\n\t\t\t// Track the visitor only if Performance Cookies are enabled\n\t\t\tif (performanceCookiesEnabled()) {\n\t\t\t\tsdl.push({\n\t\t\t\t\tuser: {\n\t\t\t\t\t\tclick: {\n\t\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\t\tactionType: 'close',\n\t\t\t\t\t\t\t\tcomponent: 'cmp-alert', // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t\tpath: '/' + sdlObj.screen.locale + '/cmp-alert', // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t\tid: 'jumpshot-banner' // πŸ‘‰ TODO: Verify with @OndrejSubrt\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tevent: 'user.click.element'\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n});\n"]}