{"version":3,"sources":["../../dev/j/vue-universal-actionbox.js"],"names":["avm","define","intializeVueInstance","index","element","settings","platforms","pricelist","options","option_1","boxCount","objectSize","datasetsBoxes","getDatasetForBoxes","selectedIndex","datasetBoxes","default_option","parseInt","platform_detect","getPlatformsArray","indexOf","detectedOS","default_platform","showRegularBoxes","contentForBox","selectedValue","hide_toggler","horizontal_toggler","toggler_placeholder","hide_desktop_title","hide_mobile_title","hide_desktop_period","sessionIndex","JSON","parse","sessionStorage","location","pathname","silentError","window","Vue","el","delimiters","data","computed","eventData","CustomEvent","detail","this","$el","methods","changeData","$nextTick","dispatchEvent","choosenOption","content","convertStringToHTML","toggler_text","instance","setTimeout","customToggler","mounted","option_2","shouldDisplayHorizontalToggler","_this","$","on","watch","newIndex","sessionObject","stringify","object","arr","key","push","size","hasOwnProperty","codeString","replace","RegExp","optionsObject","iterator","result","platform","$instanceElement","$toggler","find","length","event","preventDefault","widestToggler","$selfActionBox","eq","$selfActionBoxContainer","$selfActionBoxContainerWidth","width","$horizontalToggler","isTogglerWidthAcceptable","togglerWidth","togglerWidths","i","outerWidth","Math","max","apply","initModal","addEventListener","document","querySelector","getAttribute","contentHolder","targetModal","xhr","XMLHttpRequest","onreadystatechange","readyState","status","container","createElement","innerHTML","responseText","append","modal","open","avastGlobals","web","domain","locale","substring","setRequestHeader","send","config","devtools","errorHandler","err","vm","info","console","log","require","detect","os","name","toLowerCase","$vueActionBox","staticPath","attr","split","component","template","props","singleOption","handleClick","indexValue","$emit","getTogglerCssClasses","isActive","isDisabled","Number","selected_index","active","disabled","optionData","set","Object","keys","htmlDecode","input","e","childNodes","innerText","renderLabel","text","discountPrice","discountFormatted","discountPercentage","discountPercent","setCampaignMarkerCookie","cartLinks","querySelectorAll","campaignMarker","abtest","undefined","forEach","dataCM","hrefCM","abTest","ticketNumber","testVariant","setAttribute","join","footerText","subscription_text","textArray","arrayLength","subscriptionEl","test","subscriptionEl2","elements","elementsLength","slice","afterElement","trim","footerTextAlone","getClasses","priceFlag","discountCoupon","updated","getButtonText","button_text","button_default_text","compileOldPrice","oldPrice","price","priceInteger","priceIntegerPart","priceDecimalSeparator","decimalSeparator","priceDecimalPart","currencySymbol","priceFormat","legalText","legal_gb_text","priceFor1year","monthPrice","realPriceRoundedPerMonth","priceForYear","first_yr","maintenance","first_2yrs","first_3yrs","pricePerYearFormatted","realPricePerYearFormatted","per_2years","per_3years","per_year","compareText","saving_compare_year","updateImageLinks","installmentsPosition","installmentsFormat","symbolShowPrefix","symbol","decimal","realPriceDecimalPart","showDecimal","priceRowSize","realPriceIntegerPart","thousandSeparator","period","text_month","text_first_month","text_first_2yrs","text_first_3yrs","text_first_yr","text_2years","text_3years","text_year","updatePeriodForUk","each","value","self"],"mappings":"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","file":"vue-universal-actionbox.js","sourcesContent":["/**\n * vue-universal-actionbox\n * @version 0.4.0\n * @author Michal Langhoffer , Eliska Klimtova , Ales Gabriel \n * @requires avast.web.campaignMarkerCookie\n * @requires avast.jquery\n */\n\n(function() {\n\t'use strict';\n\n\tavm.define('vue-action-boxes', (function() {\n\t\t'use strict';\n\t\tVue.config.devtools = true;\n\n\t\tVue.config.errorHandler = function(err, vm, info) {\n\t\t\t// err: error trace\n\t\t\t// vm: component in which error occured\n\t\t\t// info: Vue specific error information such as lifecycle hooks, events etc.\n\t\t\tconsole.log('errorHandler');\n\t\t\tconsole.log(1, err);\n\t\t\tconsole.log(2, vm);\n\t\t\tconsole.log(3, info);\n\t\t\t// TODO: Perform any custom logic or log to server\n\t\t};\n\n\t\tvar $ = avm.require('jquery'),\n\t\t\tdetectedOS = avastGlobals.detect.os.name.toLowerCase(),\n\t\t\t$vueActionBox = $('.js-vue-action-box'),\n\t\t\tstaticPath = getStaticPath();\n\n\t\t// Return if no Action boxes present on page\n\t\tif ($vueActionBox.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Register Vue components globally\n\t\tVue.component('toggler', {\n\t\t\ttemplate: '#toggler',\n\t\t\tdelimiters: [\"<%\",\"%>\"],\n\t\t\tprops: ['options', 'selected_index', 'selected_value', 'hide_toggler', 'horizontal_toggler', 'toggler_placeholder'],\n\t\t\tcomputed: {\n\t\t\t\tsingleOption: function() {\n\t\t\t\t\treturn !this.options.option_2;\n\t\t\t\t}\n\t\t\t},\n\t\t\tmethods: {\n\t\t\t\thandleClick: function(event, indexValue) {\n\t\t\t\t\tthis.$emit('change_data', indexValue);\n\t\t\t\t},\n\t\t\t\t// Set CSS classes according to specific rules.\n\t\t\t\t// Method is called from individual items.\n\t\t\t\t// Can't be a copmuted, because index from v-for is not returned to computed in parameter\n\t\t\t\t/**\n\t\t\t\t * getTogglerCssClasses\n\t\t\t\t * @param {Int} index Current selected option index\n\t\t\t\t * @returns {Object} cssClass object. More info https://vuejs.org/v2/guide/class-and-style.html#Binding-HTML-Classes\n\t\t\t\t */\n\t\t\t\tgetTogglerCssClasses: function(index) {\n\t\t\t\t\tvar isActive = false,\n\t\t\t\t\t\tisDisabled = false,\n\t\t\t\t\t\toptionKey = index ? Number(index.substring(7)) - 1 : null;\n\n\t\t\t\t\t// Set active if current option in toggler is selected.\n\t\t\t\t\tif (optionKey === this.selected_index) {\n\t\t\t\t\t\tisActive = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set disabled if only one option\n\t\t\t\t\tif (!this.options.option_2) {\n\t\t\t\t\t\tisActive = false;\n\t\t\t\t\t\tisDisabled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tactive: isActive,\n\t\t\t\t\t\tdisabled: isDisabled\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tVue.component('box', {\n\t\t\tdelimiters: [\"<%\",\"%>\"],\n\t\t\tprops: ['set', 'iterator', 'options', 'selected_index', 'hide_desktop_title', 'hide_mobile_title', 'legal_gb_text', 'subscription_text', 'it_works_out', 'saving_compare_month', 'saving_compare_year', 'first_yr', 'first_2yrs', 'first_3yrs', 'per_year', 'per_2years', 'per_3years', 'button_default_text', 'price_for_month', 'price_for_first_year', 'price_for_first_2years', 'price_for_first_3years'],\n\t\t\ttemplate: '#box',\n\t\t\tdata: function() {\n\t\t\t\treturn {\n\t\t\t\t\toptionData: this.options['option_' + (this.selected_index + 1)],\n\t\t\t\t\tpricelist: this.set[Object.keys(this.set)[this.iterator]],\n\t\t\t\t};\n\t\t\t},\n\t\t\tmethods: {\n\t\t\t\thtmlDecode: function(input) {\n\t\t\t\t\tvar e = document.createElement('div');\n\t\t\t\t\te.innerHTML = input;\n\t\t\t\t\t// TODO - possible to only use with formatFlag type PARTS\n\t\t\t\t\treturn e.childNodes.length === 0 ? '' : e.childNodes[0].innerText;\n\t\t\t\t},\n\t\t\t\trenderLabel: function(text) {\n\t\t\t\t\tvar discountPrice = this.set[Object.keys(this.set)[this.iterator]].discountFormatted,\n\t\t\t\t\t\tdiscountPercentage = this.set[Object.keys(this.set)[this.iterator]].discountPercent;\n\n\t\t\t\t\treturn text.replace('##discount_price##', discountPrice).replace('##discount_percentage##', discountPercentage);\n\t\t\t\t},\n\t\t\t\tsetCampaignMarkerCookie: function() {\n\t\t\t\t\tvar cartLinks = this.$el.querySelectorAll('[data-role=\"cart-link\"]');\n\n\t\t\t\t\t// Update campaign marker data and href attributes with __trSrc cookie\n\t\t\t\t\tif (cartLinks.length) {\n\t\t\t\t\t\tthis.campaignMarker.setCampaignMarkerCookie(cartLinks);\n\t\t\t\t\t}\n\n\t\t\t\t\t// update campaign marker data and href with AB test from google optimize editor\n\t\t\t\t\tif(avastGlobals.web.abtest !== undefined) {\n\t\t\t\t\t\tcartLinks.forEach(function(el) {\n\t\t\t\t\t\t\tvar dataCM = el.getAttribute('data-campaign-marker').split('~'),\n\t\t\t\t\t\t\t\threfCM = el.getAttribute('href').split('~'),\n\t\t\t\t\t\t\t\tabTest = avastGlobals.web.abtest.ticketNumber,\n\t\t\t\t\t\t\t\ttestVariant = avastGlobals.web.abtest.testVariant;\n\n\t\t\t\t\t\t\tdataCM[3] = abTest;\n\t\t\t\t\t\t\tdataCM[4] = testVariant;\n\t\t\t\t\t\t\threfCM[3] = abTest;\n\t\t\t\t\t\t\threfCM[4] = testVariant;\n\t\t\t\t\t\t\tel.setAttribute('data-campaign-marker', dataCM.join('~'))\n\t\t\t\t\t\t\tel.setAttribute('href', hrefCM.join('~'))\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t\treturn cartLinks;\n\t\t\t\t},\n\t\t\t\tfooterText: function(text) {\n\t\t\t\t\tif (text === undefined) {\n\t\t\t\t\t\treturn ''+this.subscription_text+' '\n\t\t\t\t\t}\n\t\t\t\t\tvar textArray = text.split(''+this.subscription_text+' ',\n\t\t\t\t\t\tresult = text;\n\n\t\t\t\t\tif(/bi-cart-link|bi-download-link/.test(text)) {\n\t\t\t\t\t\tvar subscriptionEl2 = ''+this.subscription_text+' 
',\n\t\t\t\t\t\ttextArray = text.split(' 1) {\n\t\t\t\t\t\t\tvar afterElement = textArray[arrayLength - 1].split('>');\n\n\t\t\t\t\t\t\tif (afterElement[1].trim().length === 0) {\n\t\t\t\t\t\t\t\ttextArray[arrayLength - 2] = textArray[arrayLength - 2].slice(-1) !== '.' ? textArray[arrayLength - 2] + '.' : textArray[arrayLength - 2];\n\t\t\t\t\t\t\t\tresult = textArray.join(''+this.subscription_text+' ';\n\t\t\t\t},\n\t\t\t\tgetClasses: function() {\n\t\t\t\t\treturn (this.pricelist.priceFlag == 'M' ? 'row-month' : 'row-year') + ' ' + ('discountCoupon' in this.pricelist && this.pricelist.discountCoupon != '' ? 'row-discount' : '');\n\t\t\t\t}\n\t\t\t},\n\t\t\tmounted: function() {\n\t\t\t\t// Init avm Campaign Marker\n\t\t\t\tthis.campaignMarker = avm.require('avast.web.campaignMarkerCookie')();\n\n\t\t\t\t// Update campaign marker data and href attributes with __trSrc cookie\n\t\t\t\tthis.setCampaignMarkerCookie();\n\t\t\t\tif (this.$el.querySelector('[data-toggle=\"modal\"][data-target]') !== null) {\n\t\t\t\t\tinitModal(this.$el.querySelector('[data-toggle=\"modal\"][data-target]'));\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tupdated: function() {\n\t\t\t\t// Update campaign marker data and href attributes with __trSrc cookie\n\t\t\t\tthis.setCampaignMarkerCookie();\n\t\t\t\tthis.optionData = this.options['option_' + (this.selected_index + 1)];\n\t\t\t},\n\t\t\tcomputed: {\n\t\t\t\tgetButtonText: function() {\n\t\t\t\t\tvar value = \n\t\t\t\t\t\ttypeof(this.optionData.button_text) !== 'undefined' && \n\t\t\t\t\t\tthis.optionData.button_text !== '' &&\n\t\t\t\t\t\ttypeof(this.optionData.button_text['box' + (this.iterator + 1)]) !== 'undefined' &&\n\t\t\t\t\t\tthis.optionData.button_text['box' + (this.iterator + 1)] !== ''\n\t\t\t\t\t\t? \n\t\t\t\t\t\tthis.optionData.button_text['box' + (this.iterator + 1)] : \n\t\t\t\t\t\tthis.button_default_text;\n\t\t\t\t\t\t\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\tcompileOldPrice: function() {\n\t\t\t\t\tvar price = this.set[Object.keys(this.set)[this.iterator]],\n\t\t\t\t\t\tpriceInteger = price.priceIntegerPart,\n\t\t\t\t\t\tpriceDecimalSeparator = price.decimalSeparator,\n\t\t\t\t\t\tpriceDecimalPart = price.priceDecimalPart,\n\t\t\t\t\t\tcurrencySymbol = price.currencySymbol,\n\t\t\t\t\t\tpriceFormat = price.priceFormat,\n\t\t\t\t\t\toldPrice,\n\t\t\t\t\t\toldPriceFormatted;\n\n\t\t\t\t\toldPrice = priceInteger + (priceDecimalPart != '' ? (priceDecimalSeparator + priceDecimalPart) : '');\n\t\t\t\t\toldPriceFormatted = priceFormat.replace('#c',currencySymbol).replace('#p',oldPrice);\n\n\t\t\t\t\treturn oldPriceFormatted;\n\t\t\t\t},\n\t\t\t\tlegalText: function() {\n\t\t\t\t\t// UK compliance GLOWEB-4625\n\t\t\t\t\tvar pricelist = this.set[Object.keys(this.set)[this.iterator]];\n\n\t\t\t\t\treturn this.legal_gb_text.replace('$$', pricelist.priceFor1year);\n\t\t\t\t},\n\t\t\t\tmonthPrice: function() {\n\t\t\t\t\tvar pricelist = this.set[Object.keys(this.set)[this.iterator]];\n\t\t\t\t\tif ('realPriceRoundedPerMonth' in pricelist && pricelist.realPriceRoundedPerMonth !== undefined) {\n\t\t\t\t\t\treturn pricelist.realPriceRoundedPerMonth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpriceForYear: function() {\n\t\t\t\t\tvar price = this.set[Object.keys(this.set)[this.iterator]],\n\t\t\t\t\t\ttext = this.first_yr;\n\n\t\t\t\t\tif ('discountCoupon' in price && price.discountCoupon != '') {\n\t\t\t\t\t\tswitch (price.maintenance) {\n\t\t\t\t\t\t\tcase '24':\n\t\t\t\t\t\t\t\ttext = this.first_2yrs;\n\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\tcase '36':\n\t\t\t\t\t\t\t\ttext = this.first_3yrs;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\ttext = this.first_yr;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn text.replace('$old$',price.pricePerYearFormatted).replace('$new$',price.realPricePerYearFormatted);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (price.maintenance) {\n\t\t\t\t\t\t\tcase '24':\n\t\t\t\t\t\t\t\ttext = this.per_2years;\n\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\tcase '36':\n\t\t\t\t\t\t\t\ttext = this.per_3years;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\ttext = this.per_year;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn text.replace('$$',price.realPricePerYearFormatted);\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\tcompareText: function() {\n\t\t\t\t\treturn ''+ this.saving_compare_year.replace('$$', this.set[Object.keys(this.set)[this.iterator]].priceFor1year) + ' ' + this.subscription_text + ' '\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tVue.component('box-content', {\n\t\t\tdelimiters: [\"<%\",\"%>\"],\n\t\t\tprops: ['content'],\n\t\t\ttemplate: '#box-content',\n\t\t\tcomputed: {\n\t\t\t\tupdateImageLinks: function() {\n\t\t\t\t\treturn this.content.replace(/'i\\//gm, '\\'' + staticPath + 'i/');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Installments\n\t\tVue.component('installments', {\n\t\t\tdelimiters: ['<%', '%>'],\n\t\t\tprops: ['price', 'sr_inst_text', 'installments_placeholder'],\n\t\t\ttemplate: '#installments',\n\t\t\tdata: function () {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t\tcomputed: {\n\t\t\t\tinstallmentsPosition: function() {\n\t\t\t\t\t/*\n\t\t\t\t\tDetect the position of #i in string - is it before #p or after?\n\t\t\t\t\tMight be usefull if it will be needed to place installments on different place for different results.\n\t\t\t\t\tCurrently not used.\n\t\t\t\t\t*/\n\t\t\t\t\treturn this.price.installmentsFormat.indexOf('#i') > this.price.installmentsFormat.indexOf('#p') ? 'before' : 'after';\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Price row\n\t\tVue.component('price-wrapper', {\n\t\t\tdelimiters: ['<%', '%>'],\n\t\t\tprops: ['options','price','oldprice','text_first_month', 'text_first_yr', 'text_first_2yrs', 'text_first_3yrs', 'text_year', 'text_month', 'text_2years', 'text_3years'],\n\t\t\ttemplate: '#price-wrapper',\n\t\t\tdata: function () {\n\t\t\t\treturn {\n\t\t\t\t}\n\t\t\t},\n\t\t\tcomputed: {\n\t\t\t\t// position of currency symbol\n\t\t\t\tsymbolShowPrefix: function() {\n\t\t\t\t\treturn /^#c/.test(this.price.priceFormat);\n\t\t\t\t},\n\t\t\t\tsymbol: function() {\n\t\t\t\t\tif (this.symbolShowPrefix) {\n\t\t\t\t\t\treturn this.price.currencySymbol.replace(' ', '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ' ' + this.price.currencySymbol.replace(' ', '');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdecimal: function() {\n\t\t\t\t\treturn this.price.decimalSeparator + this.price.realPriceDecimalPart;\n\t\t\t\t},\n\t\t\t\tshowDecimal: function() {\n\t\t\t\t\treturn this.price.realPriceDecimalPart !== '' ? true : false;\n\t\t\t\t},\n\t\t\t\tpriceRowSize: function() {\n\t\t\t\t\treturn this.price.realPriceIntegerPart.replace(this.price.thousandSeparator, \" \").length > 5 ? 'price-row-medium' : '';\n\t\t\t\t},\n\t\t\t\tperiod: function() {\n\t\t\t\t\tif (this.price.priceFlag == 'M') {\n\t\t\t\t\t\treturn this.text_month;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ('discountCoupon' in this.price && this.price.discountCoupon !== '') {\n\t\t\t\t\t\t\tswitch (this.price.maintenance) {\n\t\t\t\t\t\t\t\tcase '1':\n\t\t\t\t\t\t\t\t\treturn this.text_first_month;\n\t\t\n\t\t\t\t\t\t\t\tcase '24':\n\t\t\t\t\t\t\t\t\treturn this.text_first_2yrs;\n\t\t\n\t\t\t\t\t\t\t\tcase '36':\n\t\t\t\t\t\t\t\t\treturn this.text_first_3yrs;\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn this.text_first_yr;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch (this.price.maintenance) {\n\t\t\t\t\t\t\t\tcase '1':\n\t\t\t\t\t\t\t\t\treturn this.text_month;\n\t\t\n\t\t\t\t\t\t\t\tcase '24':\n\t\t\t\t\t\t\t\t\treturn this.text_2years;\n\t\t\n\t\t\t\t\t\t\t\tcase '36':\n\t\t\t\t\t\t\t\t\treturn this.text_3years;\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn this.text_year;\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\t\n\t\t\t\t}\n\t\t\t},\n\t\t\tmethods: {\n\t\t\t\tupdatePeriodForUk: function() {\n\t\t\t\t\tif(avastGlobals.web.locale == 'en-gb') {\n\t\t\t\t\t\tif((!'priceFlag' in this.price || ('priceFlag' in this.price && this.price.priceFlag !== \"M\")) && this.price.maintenance !== '1') {\n\t\t\t\t\t\t\tif(this.price.maintenance === '36') {\n\t\t\t\t\t\t\t\tthis.period = '/3 years';\n\t\t\t\t\t\t\t} else if (this.price.maintenance === '24') {\n\t\t\t\t\t\t\t\tthis.period = '/2 years'\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.period = '/year'\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\tupdated: function(){\n\t\t\t\tthis.updatePeriodForUk();\n\t\t\t},\n\t\t\tmounted: function() {\n\t\t\t\tthis.updatePeriodForUk();\n\t\t\t}\n\t\t});\n\n\t\t// /Register Vue components globally\n\n\t\t// Init\n\t\t$vueActionBox.each(function(index, value) {\n\t\t\tvar self = this,\n\t\t\t\t$self = $(self),\n\t\t\t\tsettings = $self.data().settings;\n\n\t\t\tintializeVueInstance(index, self, settings);\n\t\t});\n\t\t// /Init\n\n\t\t/**\n\t\t *\n\t\t * @param {*} index\n\t\t * @param {*} element\n\t\t * @param {*} settings\n\t\t * @returns {Object} vue instance\n\t\t */\n\t\tfunction intializeVueInstance(index, element, settings) {\n\t\t\t// @todo : pricelist relies on option_1 will have pricelist\n\t\t\tvar pricelist = settings.options.option_1.pricelist,\n\t\t\t\tplatforms,\n\t\t\t\tboxCount = objectSize(pricelist),\n\t\t\t\tdatasetsBoxes = getDatasetForBoxes(settings.options),\n\t\t\t\tselectedIndex = 0, // default is first option\n\t\t\t\tdatasetBoxes = datasetsBoxes[0]; // default is first dataset\n\n\t\t\t// Default option pre-selection. This is different from default platform. This overrides detection\n\t\t\tif (typeof settings.default_option !== 'undefined') {\n\t\t\t\t// Convert string number to integer\n\t\t\t\tsettings.default_option = parseInt(settings.default_option);\n\t\t\t\t// Assign default option\n\t\t\t\tselectedIndex\t= settings.default_option - 1; // -1 is due to index counting\n\n\t\t\t// If platform detect enabled\n\t\t\t} else if (typeof settings.platform_detect !== 'undefined') {\n\t\t\t\t// Convert string boolean to boolean\n\t\t\t\tsettings.platform_detect = (settings.platform_detect === 'true');\n\t\t\t\t// Get index accoding to detect\n\t\t\t\tplatforms = getPlatformsArray(settings.options);\n\t\t\t\tselectedIndex = platforms.indexOf(detectedOS) > -1 ? platforms.indexOf(detectedOS) : platforms.indexOf(settings.default_platform);\n\t\t\t}\n\n\t\t\t// when all IFs resolved, assign data\n\t\t\tsettings.boxCount \t\t\t\t= boxCount;\n\t\t\tsettings.datasetsBoxes \t\t\t= datasetsBoxes; // This is data for all boxes\n\t\t\tsettings.datasetBoxes \t\t\t= datasetBoxes; // This is data for changing boxes values\n\t\t\tsettings.showRegularBoxes \t\t= false;\n\t\t\tsettings.contentForBox\t\t\t= '';\n\t\t\tsettings.selectedIndex\t\t\t= selectedIndex;\n\t\t\tsettings.selectedValue\t\t\t= '';\n\t\t\tsettings.hide_toggler\t\t\t= settings.hide_toggler === 'true';\n\t\t\tsettings.horizontal_toggler\t\t= settings.horizontal_toggler === 'true';\n\t\t\tsettings.toggler_placeholder\t= settings.toggler_placeholder === 'true';\n\t\t\tsettings.hide_desktop_title\t\t= settings.hide_desktop_title === 'true';\n\t\t\tsettings.hide_mobile_title\t\t= settings.hide_mobile_title === 'true';\n\t\t\tsettings.hide_desktop_period\t= settings.hide_desktop_period === 'true';\n\n\t\t\t// Get selected index from session storage, use default index in case of error or no previous record\n\t\t\ttry {\n\t\t\t\tvar sessionIndex = JSON.parse(sessionStorage.selectedIndex)[location.pathname]['vue-action-box-' + index];\n\t\t\t\tsettings.selectedIndex = sessionIndex >= 0 ? sessionIndex : selectedIndex;\n\t\t\t} catch (silentError) {}\n\n\t\t\twindow['vue-action-box-' + index] = new Vue({\n\t\t\t\tel: element,\n\t\t\t\tdelimiters: ['<%', '%>'],\n\t\t\t\tdata: function() {\n\t\t\t\t\treturn settings;\n\t\t\t\t},\n\t\t\t\tcomputed: {\n\t\t\t\t\teventData: function() {\n\t\t\t\t\t\treturn new CustomEvent('actionbox-updated', {'detail': {'element':this.$el}});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmethods: {\n\t\t\t\t\tchangeData: function (index) {\n\t\t\t\t\t\tthis.$nextTick(function () { window.dispatchEvent(this.eventData) }) // send global event on toggler change\n\n\t\t\t\t\t\t//console.log('%cChange data : ', 'color: #ffff00', index);\n\t\t\t\t\t\tvar choosenOption = this.options['option_' + (index + 1)],\n\t\t\t\t\t\t\tshowRegularBoxes = typeof choosenOption.content === 'undefined' ? true : false;\n\n\t\t\t\t\t\tthis.datasetBoxes = this.datasetsBoxes[index];\n\t\t\t\t\t\tthis.showRegularBoxes = showRegularBoxes ? true : false;\n\t\t\t\t\t\tthis.contentForBox = showRegularBoxes ? '' : convertStringToHTML(choosenOption.content);\n\t\t\t\t\t\tthis.selectedIndex = index;\n\t\t\t\t\t\tthis.selectedValue = choosenOption.toggler_text;\n\n\t\t\t\t\t\t// Custom toggler\n\t\t\t\t\t\tvar instance = this;\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tcustomToggler(instance);\n\t\t\t\t\t\t}, 10);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmounted: function() {\n\t\t\t\t\t// console.log('INSTANCE mounted', this.selectedIndex);\n\t\t\t\t\tthis.changeData(this.selectedIndex);\n\n\t\t\t\t\t// if horizontal toggler enabled\n\t\t\t\t\tif (this.horizontal_toggler) {\n\t\t\t\t\t\tif (!this.options.option_2) {\n\t\t\t\t\t\t\t// Toggler is the default display\n\t\t\t\t\t\t\tthis.horizontal_toggler = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// decide if to show it according to visual conditions\n\t\t\t\t\t\t\tthis.horizontal_toggler = shouldDisplayHorizontalToggler(index);\n\n\t\t\t\t\t\t\tvar _this = this;\n\t\t\t\t\t\t\t$(window).on('resize', function() {\n\t\t\t\t\t\t\t\t_this.horizontal_toggler = shouldDisplayHorizontalToggler(index);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.$nextTick(function(){window.dispatchEvent(this.eventData)})\n\t\t\t\t},\n\t\t\t\twatch: {\n\t\t\t\t\tselectedIndex: function(newIndex) {\n\t\t\t\t\t\t// Create default session object\n\t\t\t\t\t\tvar sessionObject = {};\n\t\t\t\t\t\tsessionObject[location.pathname] = {};\n\t\t\t\t\t\t// Load object from session storage and in case of failure, use default\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tsessionObject = JSON.parse(sessionStorage.selectedIndex);\n\t\t\t\t\t\t} catch (silentError) {}\n\t\t\t\t\t\t// If there is no previous record of current path, create empty object value\n\t\t\t\t\t\tif (!sessionObject[location.pathname]) {\n\t\t\t\t\t\t\tsessionObject[location.pathname] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Store selected index of current box on current pathname so other pages won't break\n\t\t\t\t\t\tsessionObject[location.pathname]['vue-action-box-' + index] = newIndex;\n\t\t\t\t\t\tsessionStorage.selectedIndex = JSON.stringify(sessionObject);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn window['vue-action-box-' + index];\n\t\t\t// Update campaignMarker\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {*} object\n\t\t * @returns {Array}\n\t\t */\n\t\tfunction getDatasetForBoxes(object) {\n\t\t\tvar arr = [];\n\n\t\t\tfor (var key in object) {\n\t\t\t\tif (typeof object[key].pricelist !== 'undefined') {\n\t\t\t\t\tarr.push(object[key].pricelist);\n\t\t\t\t} else {\n\t\t\t\t\tarr.push(null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arr;\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {*} object\n\t\t * @returns {Int} size\n\t\t */\n\t\tfunction objectSize(object) {\n\t\t\tvar size = 0,\n\t\t\t\tkey;\n\n\t\t\tfor (key in object) {\n\t\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\t\tsize++;\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn size;\n\t\t}\n\n\t\tfunction convertStringToHTML(codeString) {\n\t\t\treturn codeString.replace(new RegExp('<','gm'), '<').replace(new RegExp('>','gm'), '>')\n\t\t}\n\n\t\tfunction getStaticPath() {\n\t\t\tvar path = $('link[href*=\".css\"]').attr('href');\n\t\t\treturn path.split('c/')[0];\n\t\t}\n\n\t\tfunction getPlatformsArray(optionsObject) {\n\t\t\tvar iterator = 1,\n\t\t\t\tresult = [];\n\n\t\t\tfor (var key in optionsObject) {\n\t\t\t\tresult.push(optionsObject['option_' + iterator].platform);\n\t\t\t\titerator++;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// This function detects custom toggle element in boxes and switches according to data attached to toggle elements\n\t\tfunction customToggler(instance) {\n\t\t\tvar $instanceElement = $(instance.$el),\n\t\t\t\t$toggler = $instanceElement.find('.js-toggle-to-option');\n\n\t\t\tif ($toggler.length > 0) {\n\t\t\t\t$toggler.on('click', function(event) {\n\t\t\t\t\tvar index = $(this).data('option') - 1; // must decrement index by 1 because options are using count from 1, not from 0\n\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tinstance.changeData(index);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {Int} index\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction shouldDisplayHorizontalToggler(index) {\n\t\t\tvar $selfActionBox = $('.js-vue-action-box').eq(index),\n\t\t\t\t$selfActionBoxContainer = $selfActionBox.find('.js-actionbox-container'),\n\t\t\t\t$selfActionBoxContainerWidth = $selfActionBoxContainer.width(),\n\t\t\t\t$horizontalToggler = $selfActionBox.find('.js-horizontal-toggler'),\n\t\t\t\t$toggler = $horizontalToggler.find('.js-toggler'),\n\t\t\t\tisTogglerWidthAcceptable = false,\n\t\t\t\ttogglerWidth = 0,\n\t\t\t\ttogglerWidths = [],\n\t\t\t\twidestToggler;\n\n\n\t\t\t// there are maximum of 3 togglers\n\t\t\tif ($toggler.length < 4) {\n\t\t\t\t// longest toggler width less than 180px\n\t\t\t\tfor (var i = 0; i < $toggler.length; i++) {\n\t\t\t\t\ttogglerWidth = $toggler.eq(i).outerWidth();\n\t\t\t\t\ttogglerWidths.push(togglerWidth);\n\n\t\t\t\t\tif (togglerWidth > 180) {\n\t\t\t\t\t\tisTogglerWidthAcceptable = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisTogglerWidthAcceptable = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// check if when setting of same widths for all togglers will be less than actionbox width\n\t\t\tif (isTogglerWidthAcceptable) {\n\t\t\t\twidestToggler = Math.max.apply(Math, togglerWidths);\n\n\t\t\t\t// check if when all togglers have same width if it will be less or same as actionbox container width\n\t\t\t\t// if yes, set same width for all togglers\n\t\t\t\tif ((widestToggler * $toggler.length) <= $selfActionBoxContainerWidth) {\n\t\t\t\t\t// set same width for all togglers\n\t\t\t\t\t$toggler.outerWidth(widestToggler);\n\t\t\t\t// else return false\n\t\t\t\t} else {\n\t\t\t\t\tisTogglerWidthAcceptable = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn isTogglerWidthAcceptable;\n\t\t}\n\n\t\tfunction initModal(element) {\n\t\t\telement.addEventListener('click', function(){\n\t\t\t\tif (document.querySelector(element.getAttribute('data-target')) === null) {\n\t\t\t\t\tvar contentHolder = document.querySelector('#body-inner'),\n\t\t\t\t\t\ttargetModal = element.getAttribute('data-target'),\n\t\t\t\t\t\txhr = new XMLHttpRequest();\n\n\t\t\t\t\txhr.onreadystatechange = function() {\n\t\t\t\t\t\tif (this.readyState == 4 && this.status == 200) {\n\n\t\t\t\t\t\t\tvar container = document.createElement('div');\n\t\t\t\t\t\t\tcontainer.innerHTML = this.responseText;\n\t\t\t\t\t\t\tcontentHolder.append(container);\n\t\t\t\t\t\t\t$(targetModal).modal('show');\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t// xhr.open(\"GET\", 'https://' + avastGlobals.web.domain + '/' + avastGlobals.web.locale + '/' + targetModal.substring(1) + '?projectId[]=29965', true);\n\t\t\t\t\txhr.open(\"GET\", 'https://' + avastGlobals.web.domain + '/' + avastGlobals.web.locale + '/' + targetModal.substring(1), true);\n\t\t\t\t\txhr.setRequestHeader('x-requested-with', 'XMLHttpRequest');\n\t\t\t\t\txhr.send(null);\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\treturn {\n\t\t\tgetDatasetForBoxes: getDatasetForBoxes,\n\t\t\tobjectSize: objectSize,\n\t\t\tintializeVueInstance: intializeVueInstance,\n\t\t\tconvertStringToHTML: convertStringToHTML,\n\t\t\tshouldDisplayHorizontalToggler: shouldDisplayHorizontalToggler\n\t\t};\n\t})());\n})();\n"]}