{"version":3,"sources":["../../../../dev/j/v2/components/vue-actionbox.js"],"names":["slotsConfigObj","header_titles","platforms","label_texts","cta_note","secondary_cta","footer_texts","show_listPrice","installments","instructions","this","searchPlatform","dataset","platform","returnedValue","Object","keys","options","forEach","key","ind","toUpperCase","isYearPeriod","obj","priceFlag","initModal","element","modalButton","querySelector","modalTarget","getAttribute","addEventListener","loadModal","e","charCode","target","document","getElementById","contentHolder","xhr","XMLHttpRequest","onreadystatechange","readyState","status","container","createElement","innerHTML","responseText","append","BSN","Modal","show","open","avastGlobals","web","domain","ulocale","setRequestHeader","send","Vue","config","devtools","errorHandler","err","vm","info","console","log","detectedOS","detect","os","name","toLowerCase","vueActionBoxRow","querySelectorAll","campaignMarkerModule","avm","require","downloadPopup","STATICPATH","split","length","component","template","delimiters","props","data","selectedIndex","settings","default_option","togglerIndex","boxCount","option_1","pricelist","undefined","theme","methods","changeIndex","value","$emit","updateLinks","html","replace","computed","isToggler","hide_toggler","handleClick","event","indexValue","horizontalToggler","display","showToggler","toggler_placeholder","isDisabled","legalNote","textSubscription","legalNoteGBStart","legalNoteGBEnd","showContent","contentindex","setCampaignMarker","cartLinks","$el","setCampaignMarkerCookie","abtest","el","dataCM","hrefCM","abTest","ticketNumber","testVariant","setAttribute","join","showPlatforms","showLabel","box","discountPercent","labelText","saveText","discountPercentFormatted","instructionText","buttonVariant","buttonText","cta_text","buttonDefaultText","showCTANote","CTANoteText","result","firstYearText","test","originalText","currentText","locale","auto_cta_note","indexOf","fixedDot","slice","price","priceFormat","currencySymbol","priceRounded","legalGBText","showPromotion","promo","updated","mounted","$nextTick","setTimeout","button","setPopup","watch","handler","val","symbolShowPrefix","symbol","decimal","decimalSeparator","realPriceDecimalPart","showDecimal","updatePeriodForUk","disable_auto_period","maintenance","period","showOldPrice","discount","showDiscount","showMonthPrice","realPriceRoundedPerMonth","priceText","priceFormatted","childNodes","innerText","i","rowSettings","JSON","parse","globalConfigArray","BoxesIndex","slotsConfig","j","priceboxArray","l","m","opt","n","pricelistCoupon","push","index","usedIndex","platform_detect","default_platform","o","conf","globalSettings","slotsConfigGlobal","boxesOptionsIndex","priceBoxs","filter","type","eventData","CustomEvent","detail","changeSlots","optionIndex","boxIndex","_this","window","dispatchEvent","k"],"mappings":"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","file":"vue-actionbox.js","sourcesContent":["/**\n * vue-actionbox\n * @version 1.1.0\n * @author Jaroslav Slaby \n * @requires avast.web.campaignMarkerCookie\n * @requires avast.web.downloadPopup\n */\n\n(function() {\n\t'use strict';\n\tVue.config.devtools = true;\n\n\tVue.config.errorHandler = function(err, vm, info) {\n\t\t// err: error trace\n\t\t// vm: component in which error occured\n\t\t// info: Vue specific error information such as lifecycle hooks, events etc.\n\t\tconsole.log('errorHandler');\n\t\tconsole.log(1, err);\n\t\tconsole.log(2, vm);\n\t\tconsole.log(3, info);\n\t\t// TODO: Perform any custom logic or log to server\n\t};\n\n\tvar detectedOS = avastGlobals.detect.os.name.toLowerCase(),\n\t\tvueActionBoxRow = document.querySelectorAll('.js-action-box-row'),\n\t\tcampaignMarkerModule = avm.require('avast.web.campaignMarkerCookie')(),\n\t\tdownloadPopup = avm.require('avast.web.downloadPopup');\n\n\tvar STATICPATH = document.querySelector('link[href*=\".css\"]').getAttribute('href').split('/c/')[0];\n\n\t// Return if no Action boxes present on page\n\t// @todo : this can be defined in avast.js config where modules boot\n\tif (vueActionBoxRow.length === 0) {\n\t\treturn false;\n\t}\n\n\t// components\n\n\t// price box / multibox\n\tVue.component('price-box', {\n\t\ttemplate: '#price-box',\n\t\tdelimiters: ['<%', '%>'],\n\t\tprops: ['settings', 'config'],\n\t\tdata: function() {\n\t\t\treturn {\n\t\t\t\tselectedIndex: this.settings.default_option || 1,\n\t\t\t\ttogglerIndex: this.settings.default_option ? this.settings.default_option - 1 : 0,\n\t\t\t\tboxCount: this.settings.options.option_1.pricelist !== undefined ? 'boxCount-' + Object.keys(this.settings.options.option_1.pricelist).length : 'boxCount-1',\n\t\t\t\ttheme: this.settings.theme || 'light'\n\t\t\t};\n\t\t},\n\t\tmethods: {\n\t\t\tchangeIndex: function(value) {\n\t\t\t\tthis.selectedIndex = value + 1;\n\t\t\t\tthis.togglerIndex = value;\n\t\t\t\tthis.$emit('change_slots', value);\n\t\t\t},\n\t\t\tupdateLinks: function(html) {\n\t\t\t\treturn html.replace(/'i\\//gm, '\\'' + STATICPATH + '/i/');\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tisToggler: function() {\n\t\t\t\treturn this.settings.hide_toggler !== 'true';\n\t\t\t}\n\t\t}\n\t});\n\n\t// toggler\n\tVue.component('toggler', {\n\t\ttemplate: '#toggler',\n\t\tdelimiters: ['<%', '%>'],\n\t\tprops: ['display', 'settings', 'hide', 'selectedoption'],\n\t\tmethods: {\n\t\t\thandleClick: function(event, indexValue) {\n\t\t\t\tthis.$emit('change_data', indexValue);\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\thorizontalToggler: function() {\n\t\t\t\treturn this.display === 'true';\n\t\t\t},\n\t\t\tshowToggler: function() {\n\t\t\t\tif ('hide_toggler' in this.settings && this.settings.hide_toggler === 'true') {\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (this.settings.toggler_placeholder === 'true') {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t},\n\t\t\tisDisabled: function() {\n\t\t\t\treturn Object.keys(this.settings.options).length === 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t// box - pricebox content with price\n\tVue.component('box', {\n\t\ttemplate: '#box',\n\t\tdelimiters: ['<%', '%>'],\n\t\tprops: ['slotsconfig', 'settings', 'box', 'contentindex', 'hidetitles', 'saveText', 'firstYearText', 'customClasses', 'currentText', 'originalText', 'textSubscription', 'legalGBText', 'buttonDefaultText'],\n\t\tdata: function() {\n\t\t\treturn {\n\t\t\t\tlegalNote: '' + this.textSubscription + ' ',\n\t\t\t\tlegalNoteGBStart: '',\n\t\t\t\tlegalNoteGBEnd: ' '\n\t\t\t};\n\t\t},\n\t\tmethods: {\n\t\t\tshowContent: function(key) {\n\t\t\t\treturn key in this.settings && this.settings[key][this.contentindex] !== 'undefined';\n\t\t\t},\n\t\t\tsetCampaignMarker: function() {\n\t\t\t\tvar cartLinks = this.$el.querySelectorAll('[data-role=\"cart-link\"]');\n\n\t\t\t\t// Update campaign marker data and href attributes with __trSrc cookie\n\t\t\t\tif (cartLinks.length) {\n\t\t\t\t\tcampaignMarkerModule.setCampaignMarkerCookie(cartLinks);\n\t\t\t\t}\n\n\t\t\t\tif (avastGlobals.web.abtest !== undefined) {\n\t\t\t\t\tcartLinks.forEach(function(el) {\n\t\t\t\t\t\tvar dataCM = el.getAttribute('data-campaign-marker').split('~'),\n\t\t\t\t\t\t\threfCM = el.getAttribute('href').split('~'),\n\t\t\t\t\t\t\tabTest = avastGlobals.web.abtest.ticketNumber,\n\t\t\t\t\t\t\ttestVariant = avastGlobals.web.abtest.testVariant;\n\n\t\t\t\t\t\tdataCM[3] = abTest;\n\t\t\t\t\t\tdataCM[4] = testVariant;\n\t\t\t\t\t\threfCM[3] = abTest;\n\t\t\t\t\t\threfCM[4] = testVariant;\n\t\t\t\t\t\tel.setAttribute('data-campaign-marker', dataCM.join('~'));\n\t\t\t\t\t\tel.setAttribute('href', hrefCM.join('~'));\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\treturn cartLinks;\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\tshowPlatforms: function() {\n\t\t\t\treturn 'platforms' in this.settings && this.settings.platforms.length > 0;\n\t\t\t},\n\t\t\tshowLabel: function() {\n\t\t\t\tif ('label_texts' in this.settings && 'box' + (this.contentindex + 1) in this.settings.label_texts) {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tif ('discountPercent' in this.box && this.box.discountPercent !== '') {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tlabelText: function() {\n\t\t\t\tif ('label_texts' in this.settings && 'box' + (this.contentindex + 1) in this.settings.label_texts) {\n\t\t\t\t\treturn this.settings.label_texts['box' + (this.contentindex + 1)].replace(' ', ' ');\n\t\t\t\t} else {\n\t\t\t\t\tif ('discountPercent' in this.box && this.box.discountPercent !== '') {\n\t\t\t\t\t\treturn this.saveText.replace('$$', this.box.discountPercentFormatted).replace(' ', ' ');\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t},\n\t\t\tinstructionText: function() {\n\t\t\t\tif ('instructions' in this.settings && 'box' + (this.contentindex + 1) in this.settings.instructions) {\n\t\t\t\t\treturn this.settings.instructions['box' + (this.contentindex + 1)].replace(' ', ' ');\n\t\t\t\t}\n\t\t\t},\n\t\t\tbuttonVariant: function() {\n\t\t\t\tif ('buttonVariant' in this.settings && 'box' + (this.contentindex + 1) in this.settings.buttonVariant) {\n\t\t\t\t\treturn this.settings.buttonVariant['box' + (this.contentindex + 1)];\n\t\t\t\t}\n\t\t\t},\n\t\t\tbuttonText: function() {\n\t\t\t\tif ('cta_text' in this.settings && 'box' + (this.contentindex + 1) in this.settings.cta_text) {\n\t\t\t\t\treturn this.settings.cta_text['box' + (this.contentindex + 1)];\n\t\t\t\t} else {\n\t\t\t\t\treturn this.buttonDefaultText;\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowCTANote: function() {\n\t\t\t\treturn true;\n\t\t\t\t/* if ('cta_note' in this.settings && this.settings.cta_note.length >= this.contentindex + 1 || avastGlobals.web.locale === 'en-gb') {\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\tif ('discountPercent' in this.box && this.box.discountPercent !== '') {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t} */\n\t\t\t},\n\t\t\tCTANoteText: function() {\n\t\t\t\tvar result = '';\n\n\t\t\t\tif ('cta_note' in this.settings && this.settings.cta_note.length >= this.contentindex + 1) {\n\t\t\t\t\tresult = this.settings.cta_note[this.contentindex];\n\t\t\t\t} else if ('discountPercent' in this.box && this.box.discountPercent !== '' && isYearPeriod(this.box)) {\n\t\t\t\t\tresult = this.firstYearText;\n\t\t\t\t}\n\n\t\t\t\t// set A11y screen reader text to cta_note with strikethrough price\n\t\t\t\tif (/.+<\\/s>/.test(result)) {\n\t\t\t\t\tresult = result.replace(//, '' + this.originalText + '').replace(/<\\/s>/, ' ' + this.currentText + '');\n\t\t\t\t}\n\n\t\t\t\t// create subscription link or let original cta_note (for GB is specific subscription link)\n\t\t\t\tif (avastGlobals.web.locale === 'en-gb' && !('auto_cta_note' in this.settings && this.settings.auto_cta_note === 'false')) {\n\t\t\t\t\tvar price = this.box.priceFormat.replace('#c', this.box.currencySymbol).replace('#p', this.box.priceRounded);\n\n\t\t\t\t\treturn this.legalNoteGBStart + this.legalGBText.replace('$$', price) + this.legalNoteGBEnd;\n\n\t\t\t\t} else if (!('auto_cta_note' in this.settings && this.settings.auto_cta_note === 'false')) {\n\t\t\t\t\tif (result.length > 0) {\n\t\t\t\t\t\tvar specialDotLocales = ['ja-jp', 'zh-cn', 'zh-tw'];\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (specialDotLocales.indexOf(avastGlobals.web.locale) > -1) {\n\t\t\t\t\t\t\tvar fixedDot = (result.slice(-1) !== '。') ? '。 ' : ' ';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar fixedDot = (result.slice(-1) !== '.') ? '. ' : ' ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result + fixedDot + this.legalNote;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.legalNote;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t},\n\t\t\tshowPromotion: function() {\n\t\t\t\treturn 'promo' in this.settings && 'box' + (this.contentindex + 1) in this.settings.promo;\n\t\t\t}\n\t\t},\n\t\tupdated: function() {\n\t\t\tthis.setCampaignMarker();\n\t\t},\n\t\tmounted: function() {\n\t\t\tthis.$nextTick(function () {\n\t\t\t\tvar cartLinks = this.$el.querySelectorAll('[data-role=\"cart-link\"]');\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (cartLinks.length) {\n\t\t\t\t\t\tcampaignMarkerModule.setCampaignMarkerCookie(cartLinks);\n\t\t\t\t\t}\n\t\t\t\t}, 0);\n\t\t\t})\n\t\t\tvar button = this.$el.querySelector('a[data-role=\"download-link\"]:not([data-behavior=\"downloadPage\"])');\n\t\t\t\n\t\t\t// Subscription modal\n\t\t\tinitModal(this.$el);\n\t\t\t/* if (avastGlobals.web.locale === 'en-us' || avastGlobals.web.locale === 'en-gb') {\n\t\t\t\tinitModal(this.$el);\n\t\t\t} */\n\n\t\t\tif (button !== null) {\n\t\t\t\tdownloadPopup.setPopup(button);\n\t\t\t}\n\t\t},\n\t\twatch: {\n\t\t\tsettings: {\n\t\t\t\thandler: function(val) {\n\t\t\t\t\tthis.$nextTick(function() {\n\t\t\t\t\t\tvar button = this.$el.querySelector('a[data-role=\"download-link\"]:not([data-behavior=\"downloadPage\"])');\n\n\t\t\t\t\t\t// Subscription modal\n\t\t\t\t\t\tinitModal(this.$el);\n\t\t\t\t\t\t/* if (avastGlobals.web.locale === 'en-us' || avastGlobals.web.locale === 'en-gb') {\n\t\t\t\t\t\t\tinitModal(this.$el)\n\t\t\t\t\t\t} */\n\n\t\t\t\t\t\tif(button !== null) {\n\t\t\t\t\t\t\tdownloadPopup.setPopup(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t// price wrapper\n\tVue.component('price-wrapper', {\n\t\ttemplate: '#price-wrapper',\n\t\tdelimiters: ['<%', '%>'],\n\t\tprops: ['price', 'period', 'showSrText', 'hideperiod', 'settings'],\n\t\tcomputed: {\n\t\t\t// position of currency symbol\n\t\t\tsymbolShowPrefix: function() {\n\t\t\t\treturn /^#c/.test(this.price.priceFormat);\n\t\t\t},\n\t\t\tsymbol: function() {\n\t\t\t\tif (this.symbolShowPrefix) {\n\t\t\t\t\treturn this.price.currencySymbol.replace(' ', '');\n\t\t\t\t} else {\n\t\t\t\t\treturn ' ' + this.price.currencySymbol.replace(' ', '');\n\t\t\t\t}\n\t\t\t},\n\t\t\tdecimal: function() {\n\t\t\t\treturn this.price.decimalSeparator + this.price.realPriceDecimalPart;\n\t\t\t},\n\t\t\tshowDecimal: function() {\n\t\t\t\treturn this.price.realPriceDecimalPart !== '';\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\tupdatePeriodForUk: function() {\n\t\t\t\t// update period text for UK compliance, disable automatic period text if \"diable_auto_period\" is true\n\t\t\t\tif (avastGlobals.web.locale == 'en-gb' && ('disable_auto_period' in this.settings === false || 'disable_auto_period' in this.settings && this.settings.disable_auto_period !== 'true')) {\n\t\t\t\t\tif (('priceFlag' in this.price === false || 'priceFlag' in this.price && this.price.priceFlag !== 'M') && this.price.maintenance !== '1' && this.period !== '/call') {\n\t\t\t\t\t\tif (this.price.maintenance === '36') {\n\t\t\t\t\t\t\tthis.period = '/3 years';\n\t\t\t\t\t\t} else if (this.price.maintenance === '24') {\n\t\t\t\t\t\t\tthis.period = '/2 years';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.period = '/year';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdated: function() {\n\t\t\tthis.updatePeriodForUk();\n\t\t},\n\t\tmounted: function() {\n\t\t\tthis.updatePeriodForUk();\n\t\t}\n\t});\n\n\t// price before sale\n\tVue.component('old-price', {\n\t\ttemplate: '#old-price',\n\t\tdelimiters: ['<%', '%>'],\n\t\tprops: ['price', 'showDiscount'],\n\t\tcomputed: {\n\t\t\tshowOldPrice: function() {\n\t\t\t\treturn typeof this.price.discount !== 'undefined' && this.price.discount !== '0' && this.showDiscount !== 'false' && avastGlobals.web.locale !== 'en-gb';\n\t\t\t},\n\t\t\tshowMonthPrice: function() {\n\t\t\t\treturn 'realPriceRoundedPerMonth' in this.price && this.price.realPriceRoundedPerMonth !== undefined && avastGlobals.web.locale === 'en-gb' && this.price.maintenance !== \"1\";\n\t\t\t},\n\t\t\tpriceText: function() {\n\t\t\t\tif ('realPriceRoundedPerMonth' in this.price && this.price.realPriceRoundedPerMonth !== undefined && avastGlobals.web.locale === 'en-gb' && this.price.maintenance !== \"1\") {\n\t\t\t\t\treturn this.price.realPriceRoundedPerMonth;\n\t\t\t\t} else {\n\t\t\t\t\tvar e = document.createElement('div');\n\t\t\t\t\te.innerHTML = this.price.priceFormatted;\n\t\t\t\t\treturn e.childNodes.length === 0 ? '' : e.childNodes[0].innerText;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t});\n\n\t// box content\n\tVue.component('box-content', {\n\t\tdelimiters: ['<%', '%>'],\n\t\tprops: [],\n\t\ttemplate: '#box-content',\n\t\tdata: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\t// Init\n\tfor (var i = 0; i < vueActionBoxRow.length; i++) {\n\t\tvar element = vueActionBoxRow[i],\n\t\t\trowSettings = JSON.parse(element.getAttribute('data-settings')),\n\t\t\tglobalConfigArray = [],\n\t\t\tBoxesIndex = [],\n\t\t\tslotsConfig = new slotsConfigObj();\n\n\t\t// default slots config prototype\n\t\tfunction slotsConfigObj(header_titles, platforms, label_texts, cta_note, secondary_cta, footer_texts, show_listPrice, installments, instructions) {\n\t\t\tthis.header_titles = header_titles || false;\n\t\t\tthis.platforms = platforms || false;\n\t\t\tthis.label_texts = label_texts || false;\n\t\t\tthis.cta_note = cta_note || false;\n\t\t\tthis.secondary_cta = secondary_cta || false;\n\t\t\tthis.footer_texts = footer_texts || false;\n\t\t\tthis.show_listPrice = show_listPrice || false;\n\t\t\tthis.installments = installments || false;\n\t\t\tthis.instructions = instructions || false;\n\t\t}\n\n\t\t// avoid JS error if rowSettings is null\n\t\tif (!rowSettings && rowSettings === null) {\n\t\t\trowSettings = []\n\t\t}\n\n\t\t// creates array with slots configuration for all variants\n\t\tfor (var j = 0; j < rowSettings.length; j++) {\n\t\t\tvar config = rowSettings[j],\n\t\t\t\tpriceboxArray = [];\n\n\t\t\tfor (var l = 0; l < Object.keys(config.options).length; l++) {\n\t\t\t\tvar key = Object.keys(config.options)[l],\n\t\t\t\t\tobj = config.options[key],\n\t\t\t\t\toptions = new slotsConfigObj(),\n\t\t\t\t\tinstallments = false;\n\n\t\t\t\tfor (var m = 0; m < Object.keys(options).length; m++) {\n\t\t\t\t\tvar opt = Object.keys(options)[m];\n\t\t\t\t\tif (opt in obj) {\n\t\t\t\t\t\toptions[opt] = true;\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\tif ('pricelist' in obj) {\n\t\t\t\t\tfor (var n = 0; n < Object.keys(obj.pricelist).length; n++) {\n\t\t\t\t\t\tvar pricelistCoupon = Object.keys(obj.pricelist)[n];\n\t\t\t\t\t\tif ('installments' in obj.pricelist[pricelistCoupon]) {\n\t\t\t\t\t\t\tinstallments = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// automatic sale label\n\t\t\t\t\t\tif (obj.pricelist[pricelistCoupon].discountPercent !== undefined && obj.pricelist[pricelistCoupon].discountPercent !== '0') {\n\t\t\t\t\t\t\tif (!options.label_texts) {\n\t\t\t\t\t\t\t\toptions.label_texts = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isYearPeriod(obj.pricelist[pricelistCoupon])) {\n\t\t\t\t\t\t\t\toptions.cta_note = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// subscription detail for en-us region\n\t\t\t\t\t\toptions.cta_note = true;\n\t\t\t\t\t\t/* if (avastGlobals.web.locale === 'en-us' || avastGlobals.web.locale === 'en-gb') {\n\t\t\t\t\t\t\toptions.cta_note = true;\n\t\t\t\t\t\t} */\n\n\t\t\t\t\t\t// monthly price for en-gb local instead old price\n\t\t\t\t\t\tif (avastGlobals.web.locale === 'en-gb' && obj.pricelist[pricelistCoupon].realPriceRoundedPerMonth) {\n\t\t\t\t\t\t\toptions.show_listPrice = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\toptions.installments = installments;\n\t\t\t\tpriceboxArray.push(options);\n\t\t\t};\n\t\t\tglobalConfigArray.push(priceboxArray);\n\t\t};\n\n\t\t// globalConfigArray - object with slots configuration for each boxes variant in whole actionbox row\n\n\t\t// default slots configuration\n\t\tfor (var index = 0; index < globalConfigArray.length; index++) {\n\t\t\tvar config = globalConfigArray[index], // configuration for each pricebox in row\n\t\t\t\tusedIndex = 0; // if default option isn't set and platform detection isn't active, then first variant is used\n\n\t\t\tif (rowSettings[index].default_option !== undefined) {\n\t\t\t\t// default_option is defined\n\n\t\t\t\tusedIndex = rowSettings[index].default_option - 1;\n\n\t\t\t} else {\n\t\t\t\tif (rowSettings[index].platform_detect === 'true') {\n\t\t\t\t// default_option not defined but platform detection is active\n\n\t\t\t\t\tusedIndex = searchPlatform(rowSettings[index], detectedOS);\n\n\t\t\t\t\tif (usedIndex === false) {\n\t\t\t\t\t// check if the same platform was found in settings as detected user's platform\n\t\t\t\t\t\tusedIndex = searchPlatform(rowSettings[index], rowSettings[index].default_platform);\n\n\t\t\t\t\t\tif (usedIndex === false) {\n\t\t\t\t\t\t\t// default platform not found, is set first variant\n\t\t\t\t\t\t\tusedIndex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trowSettings[index].default_option = usedIndex + 1; // todo - use diferent variable and add check in template\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tfor (var o = 0; o < Object.keys(slotsConfig).length; o++) {\n\t\t\t\tvar conf = Object.keys(slotsConfig)[o];\n\n\t\t\t\tif (config[usedIndex][conf] === true) {\n\t\t\t\t\tslotsConfig[conf] = true;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tBoxesIndex.push(0);\n\t\t};\n\n\t\telement = new Vue({\n\t\t\tel: element,\n\t\t\tdelimiters: ['<%', '%>'],\n\t\t\tdata: function() {\n\t\t\t\treturn {\n\t\t\t\t\tglobalSettings: rowSettings,\n\t\t\t\t\tslotsConfigGlobal: globalConfigArray,\n\t\t\t\t\tslotsConfig: slotsConfig,\n\t\t\t\t\tboxesOptionsIndex: BoxesIndex\n\t\t\t\t};\n\t\t\t},\n\t\t\tcomputed: {\n\t\t\t\tpriceBoxs: function() {\n\t\t\t\t\treturn this.globalSettings.filter(function(box) {\n\t\t\t\t\t\treturn box.type.toUpperCase() === 'PRICEBOX';\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\teventData: function() {\n\t\t\t\t\treturn new CustomEvent('actionbox-updated', {'detail': {'element':this.$el}});\n\t\t\t\t}\n\t\t\t},\n\t\t\tmethods: {\n\t\t\t\tchangeSlots: function(optionIndex, boxIndex) {\n\t\t\t\t\tvar _this = this;\n\n\t\t\t\t\tthis.$nextTick(function(){window.dispatchEvent(this.eventData)}) // send global event on toggler change\n\n\t\t\t\t\tthis.boxesOptionsIndex[boxIndex] = optionIndex;\n\t\t\t\t\tthis.slotsConfig = new slotsConfigObj();\n\t\t\t\t\tthis.slotsConfig.installments = false;\n\t\t\t\t\tfor (var index = 0; index < this.slotsConfigGlobal.length; index++) {\n\t\t\t\t\t\tvar config = this.slotsConfigGlobal[index];\n\t\t\t\t\t\tfor (var k = 0; k < Object.keys(_this.slotsConfig).length; k++) {\n\t\t\t\t\t\t\tvar key = Object.keys(_this.slotsConfig)[k];\n\n\t\t\t\t\t\t\tif (config[_this.boxesOptionsIndex[index]][key]) {\n\t\t\t\t\t\t\t\t_this.slotsConfig[key] = true;\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}\n\t\t\t},\n\t\t\tmounted: function() {\n\t\t\t\tthis.$nextTick(function(){window.dispatchEvent(this.eventData)})\n\t\t\t}\n\t\t});\n\n\t};\n\n\tfunction searchPlatform(dataset, platform) {\n\t\t// search user platform in dataset\n\t\tvar returnedValue = false;\n\n\t\tObject.keys(dataset.options).forEach(function(key, ind) {\n\t\t\tif ('platform' in dataset.options[key]) {\n\t\t\t\tif (platform.toUpperCase() === dataset.options[key].platform.toUpperCase()) {\n\t\t\t\t\treturnedValue = ind;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn returnedValue;\n\t}\n\n\tfunction isYearPeriod(obj) {\n\t\tif ('priceFlag' in obj && obj.priceFlag !== 'M') {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\n\t\t/*\n\t\tvar yearRegex = new RegExp('(year|vuosi|Ã¥r|año|Jahr|an|anno|jaar|ano|χÏόνο|roÄnÄ›|rok|év|год|yıl|å¹´|ë…„|ปี|any|taon|tahun|năm|वरà¥à¤·|å¹´|å¹´|рік|سنة|×©× ×”|سنويًا)$'),\n\t\t\tmonthRegex = new RegExp('buwan|bulan');\n\n\t\tif ('period_text' in obj && yearRegex.test(obj.period_text) && !monthRegex.test(obj.period_text)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t\t*/\n\t}\n\n\tfunction initModal(element) {\n\t\tvar modalButton = element.querySelector('[data-toggle=\"modal\"]'),\n\t\t\tmodalTarget = modalButton !== null ? modalButton.getAttribute('data-target') : null;\n\n\t\tif (modalButton !== null && modalTarget !== null) {\n\t\t\tmodalButton.addEventListener('click', function() {\n\t\t\t\tloadModal(modalTarget);\n\t\t\t});\n\n\t\t\tmodalButton.addEventListener('keypress', function(e) {\n\t\t\t\tif (e.charCode === 13) {\n\t\t\t\t\tloadModal(modalTarget);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction loadModal(target) {\n\t\t// !!make sure name of source page for modal and target in modal trigger are same!!\n\t\tif (document.getElementById(target) === null) {\n\t\t\tvar contentHolder = document.querySelector('.content-holder'),\n\t\t\t\txhr = new XMLHttpRequest();\n\n\t\t\txhr.onreadystatechange = function() {\n\t\t\t\tif (this.readyState == 4 && this.status == 200) {\n\n\t\t\t\t\tvar container = document.createElement('div');\n\n\t\t\t\t\tcontainer.innerHTML = this.responseText;\n\t\t\t\t\tcontentHolder.append(container);\n\n\t\t\t\t\tvar modal = new BSN.Modal(document.getElementById(target));\n\t\t\t\t\tmodal.show();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.open('GET', 'https://' + avastGlobals.web.domain + avastGlobals.web.ulocale + '/' + target, true);\n\t\t\txhr.setRequestHeader('x-requested-with', 'XMLHttpRequest');\n\t\t\txhr.send(null);\n\t\t} else {\n\t\t\tvar modal = new BSN.Modal(document.getElementById(target));\n\t\t\tmodal.show();\n\t\t}\n\t}\n\n})();\n"]}