(function() { function bxBootstrap() { var re = /bot|crawl|slurp|spider|mediapartners|headlesschrome|snap-prefetch|remotasks|woorank|uptime\.com|facebookexternalhit|facebookcatalog/i; if (re.test(navigator.userAgent) || navigator.userAgent == '') { return; } if (!(window.bouncex&&bouncex.website)) { var pushedData = []; if(window.bouncex && bouncex.push && bouncex.length){ pushedData = bouncex; } window.bouncex = {}; bouncex.pushedData = pushedData; bouncex.website = {"id":2298,"name":"Hugo Boss","cookie_name":"bounceClientVisit2298","domain":"hugoboss.com","ct":"fp_local_storage","ally":0,"ei":0,"tcjs":"","cjs":"/* enable.feature.DISABLE_RELOAD_CAMPAIGNS_V2 */\n\n/* --- DV: CART VALUE AJAX LISTENER --- */\n\nif (window.location.pathname.indexOf('us/cart') === -1) {\n bouncex.on(jQuery(window.document), 'ajaxComplete', function(event, xhr, settings) {\n \tif (settings && settings.url.indexOf('en_US/Cart') > -1) {\n var parser = new DOMParser();\n var htmlDoc = parser.parseFromString(xhr.responseText, \"text/html\");\n var subtotal = jQuery(htmlDoc).find('.order-totals__row--total .order-totals__col--sidebar-price').text().replace(/[^0-9.]/g, '');\n if (subtotal === \"\") { subtotal = 0; }\n\n bouncex.setVarAndReload('cart_value', subtotal);\n \t}\n });\n}\n\n/* --- END CART VALUE AJAX LISTENER --- */\n\n/* MW - store data in sessionStorage - https://www.wrike.com/open.htm?id=207577874*/\nbouncex.infoStore = {\n sessionStorageIdentifier: 'bxInfoStore',\n set: function(data) {\n var hashedData = bouncex.lz.compressToURI(JSON.stringify(data));\n try {\n sessionStorage.setItem(this.sessionStorageIdentifier, hashedData);\n } catch(e) {\n bouncex.err('session storage failure');\n }\n },\n get: function() {\n var email = sessionStorage.getItem(this.sessionStorageIdentifier);\n\t\treturn email ? JSON.parse(bouncex.lz.decompressFromURI(email)) : '';\n },\n infoIsStored: function() {\n return !!sessionStorage.getItem(this.sessionStorageIdentifier);\n },\n populateFields: function(fields) {\n if (!this.infoIsStored()) return;\n \n var data = this.get();\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n fields[field].val(data[field]);\n }\n }\n }\n};\n\nvar $accountForm = jQuery('#dwfrm_login').length > 0 ? jQuery('#dwfrm_login') : jQuery('#edit-profile-form');\n\nif ($accountForm.length > 0) {\n $accountForm.on('submit.bx', function(event) { \n var $emailAddressDiv = jQuery(this).find('[type=email]');\n var emailAddress = false;\n \n if ($emailAddressDiv.length > 0) {\n emailAddress = $emailAddressDiv.val();\n \n if (emailAddress) {\n localStorage.setItem('bxConversionEmail', emailAddress);\n $accountForm.off('submit.bx');\n }\n }\n });\n}\n\n\n/* ZN - above is BZ adding to localstorage for conversion pixel. Below handles guest checkouts*/\nvar $accountForm2 = jQuery('#dwfrm_singleshipping_shippingAddress') ; \nif ($accountForm2.length > 0){\n jQuery('#dwfrm_singleshipping_shippingAddress').on('submit.bx',function(){\n var email = jQuery(this).find('input.email').val();\n localStorage.setItem('bxConversionEmail', email);\n });\n}\n/* END conv pixel stuff*/\n\n/*ISR Tracking 3-23-17 AK*/\n(function () {\n\twindow.bouncex = window.bouncex || {};\n\n\twindow.bouncex.bxISR = {\n\t\t/* --- INITIALIZATION --- */\n\t\tversion: 'Version 8.1 | 1/4/17',\n\t\tstartTime: Date.now(),\n\t\tsettings: {\n\t\t\tcurrentProduct: {},\n\t\t\tgeneral: {\n\t\t\t\tproductPageIdentifier: jQuery('.pt_product-details').length > 0 ,\n\t\t\t\tmaxProducts: 20,\n\t\t\t\tcategoryHistory: JSON.parse(window.localStorage.getItem('bxCatHist')) || [],\n\t\t\t\tproductHistory: JSON.parse(window.localStorage.getItem('bxProdHist')) || [],\n\t\t\t\tcategoryHistoryLength: 0,\n\t\t\t\tproductHistoryLength: 0\n\t\t\t}\n\t\t},\n\n\t\tinit: function () {\n\t\t\tthis.productMap();\n\t\t\tthis.setItemHistoryLengths();\n\t\t\tthis.trackProductHistory();\n\t\t\tthis.trackCategoryHistory();\n\t\t\tthis.maxProducts();\n\t\t// \tconsole.log(Date.now() - window.bouncex.bxISR.startTime, 'bxISR start');\n\t\t},\n\n\t\tproductMap: function () {\n\t\t\tif (!this.settings.general.productPageIdentifier) { return; }\n\t\t\t\n\t\t\tvar imageUrl = jQuery('.slider-item__image:eq(0)').attr('src');\n\t\t\tvar img;\n if(imageUrl && imageUrl.indexOf('https') === -1){\n img = jQuery('.slider-item__image:eq(0)').attr('src').replace('http','https');\n } else{\n img = imageUrl;\n }\n \n\t\t\tvar productValues = {\n\t\t\t\turl: window.location.href,\n\t\t\t\tname: jQuery('meta[itemprop=\"name\"]').prop('content'),\n\t\t\t\tsku: jQuery('meta[itemprop=\"productID\"]').prop('content'),\n\t\t\t\tcategory: [{ categoryName: '', categoryUrl: ('') }],\n\t\t\t\tdescription: jQuery('meta[itemprop=\"description\"]').prop('content'),\n\t\t\t\tprice: jQuery('meta[itemprop=\"price\"]').prop('content'),\n\t\t\t\tmainImgUrl: img,\n\t\t\t\ttimeStamp: Date.now(),\n\t\t\t\tviewCount: 1,\n\t\t\t\tsessionId: window.bouncex.cookie.vid\n\t\t\t};\n\n\t\t\tthis.settings.currentProduct = productValues;\n\t\t},\n\n\t\t/* --- END OF INITIALIZATION --- */\n\t\t/* --- HELPER FUNCTIONS --- */\n\n\t\taddProductToHistory: function (product) {\n\t\t\tvar productHistory = this.settings.general.productHistory;\n\t\t\tproductHistory.unshift(product);\n\t\t\tthis.setProductHistory(productHistory);\n\t\t},\n\n\t\taddCategoryToHistory: function (currentCategory) {\n\t\t\tvar categoryHistory = this.settings.general.categoryHistory;\n\t\t\tvar newCategory = {\n\t\t\t\tcategory: currentCategory,\n\t\t\t\tviewCount: 1,\n\t\t\t\ttimeStamp: Date.now()\n\t\t\t};\n\n\t\t\tcategoryHistory.unshift(newCategory);\n\t\t\twindow.bouncex.bxISR.setCategoryHistory(categoryHistory);\n\t\t},\n\n\t\tcompareProducts: function (productA, productB) {\n\t\t\tif (productA.mainImgUrl === productB.mainImgUrl) { return true; }\n\t\t\tif (productA.sku === productB.sku) { return true; }\n\t\t\tif (productA.name === productB.name) { return true; }\n\t\t\tif (productA.url === productB.url) { return true; }\n\t\t\treturn false;\n\t\t},\n\n\t\ttrackProductHistory: function () {\n\t\t\tvar productHistory = this.settings.general.productHistory;\n\t\t\tif (!this.settings.general.productPageIdentifier) { return; }\n\n\t\t\tif (this.settings.general.productHistoryLength > 0) {\n\t\t\t\tvar historyUpdated = false;\n\n\t\t\t\tfor (var i = 0; i < this.settings.general.productHistoryLength; i++) {\n\t\t\t\t\tif (this.compareProducts(productHistory[i], this.settings.currentProduct)) {\n\t\t\t\t\t\tproductHistory[i].viewCount++;\n\t\t\t\t\t\tproductHistory[i].timeStamp = Date.now();\n\t\t\t\t\t\tproductHistory.unshift(productHistory[i]);\n\n\t\t\t\t\t\tproductHistory.splice(i + 1, 1);\n\t\t\t\t\t\thistoryUpdated = true;\n\t\t\t\t\t\tthis.setProductHistory(productHistory);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!historyUpdated) {\n\t\t\t\t\tthis.addProductToHistory(this.settings.currentProduct);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.addProductToHistory(this.settings.currentProduct);\n\t\t\t}\n\t\t},\n\n\t\ttrackCategoryHistory: function () {\n\t\t\tvar categoryHistory = this.settings.general.categoryHistory;\n\t\t\tif (!this.settings.general.productPageIdentifier) { return; }\n\n\t\t\tvar currentCategoriesLength = this.settings.currentProduct.category.length;\n\t\t\tfor (var i = 0; i < currentCategoriesLength; i++) {\n\t\t\t\tvar currentCategory = this.settings.currentProduct.category[i];\n\n\t\t\t\tif (this.settings.general.categoryHistoryLength > 0) {\n\t\t\t\t\tvar historyUpdated = false;\n\t\t\t\t\tfor (var j = 0; j < this.settings.general.categoryHistoryLength; j++) {\n\t\t\t\t\t\tif (categoryHistory[j].category.categoryName === currentCategory.categoryName) {\n\t\t\t\t\t\t\tcategoryHistory[j].viewCount++;\n\t\t\t\t\t\t\tcategoryHistory[j].timeStamp = Date.now();\n\t\t\t\t\t\t\thistoryUpdated = true;\n\t\t\t\t\t\t\tthis.setCategoryHistory(categoryHistory);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!historyUpdated) {\n\t\t\t\t\t\tthis.addCategoryToHistory(currentCategory);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.addCategoryToHistory(currentCategory);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/* --- END OF HELPER FUNCTIONS --- */\n\t\t/* --- GETTER FUNCTIONS --- */\n\n\t\tgetTopCategories: function (criteria, number) {\n\t\t\tvar categories = this.settings.general.categoryHistory;\n\t\t\tif (!number) { number = categories.length; }\n\n\t\t\tif (criteria === 'views') {\n\t\t\t\treturn categories.sort(function (a, b) { return b.viewCount - a.viewCount; }).slice(0, number);\n\t\t\t} else if (criteria === 'time') {\n\t\t\t\treturn categories.sort(function (a, b) { return b.timeStamp - a.timeStamp; }).slice(0, number);\n\t\t\t} else if (criteria === 'recency') {\n\t\t\t\treturn categories.sort(function (a, b) { return b.viewCount - a.viewCount; }).slice(0, number).sort(function (c, d) { return d.timeStamp - c.timeStamp; });\n\t\t\t}\n\t\t},\n\n\t\tgetTopProducts: function (criteria, number) {\n\t\t\tvar products = this.settings.general.productHistory;\n\t\t\tif (!number) { number = products.length; }\n\t\t\tif (criteria === 'views') {\n\t\t\t\treturn products.sort(function (a, b) { return b.viewCount - a.viewCount; }).slice(0, number);\n\t\t\t} else if (criteria === 'time') {\n\t\t\t\treturn products.sort(function (a, b) { return b.timeStamp - a.timeStamp; }).slice(0, number);\n\t\t\t} else if (criteria === 'recency') {\n\t\t\t\treturn products.sort(function (a, b) { return b.viewCount - a.viewCount; }).slice(0, number).sort(function (c, d) { return d.timeStamp - c.timeStamp; });\n\t\t\t}\n\t\t},\n\n\t\tmaxProducts: function () {\n\t\t\tvar maxProducts = this.settings.general.maxProducts;\n\t\t\tif (this.settings.general.productHistoryLength > maxProducts) {\n\t\t\t\tvar topProducts = this.getTopProducts('time', maxProducts);\n\t\t\t\tthis.setProductHistory(topProducts);\n\t\t\t}\n\t\t},\n\n\t\t/* --- END GETTER FUNCTIONS --- */\n\t\t/* --- SETTER FUNCTIONS --- */\n\n\t\tsetItemHistoryLengths: function () {\n\t\t\tthis.settings.general.categoryHistoryLength = this.settings.general.categoryHistory.length;\n\t\t\tthis.settings.general.productHistoryLength = this.settings.general.productHistory.length;\n\t\t},\n\n\t\tsetProductHistory: function (productHistory) {\n\t\t\twindow.localStorage.setItem('bxProdHist', JSON.stringify(productHistory));\n\t\t\tthis.settings.general.productHistory = productHistory;\n\t\t\tthis.settings.general.productHistoryLength = productHistory.length;\n\t\t},\n\n\t\tsetCategoryHistory: function (categoryHistory) {\n\t\t\twindow.localStorage.setItem('bxCatHist', JSON.stringify(categoryHistory));\n\t\t\tthis.settings.general.categoryHistory = categoryHistory;\n\t\t\tthis.settings.general.categoryHistoryLength = categoryHistory.length;\n\t\t},\n\n\t\t/* --- END SETTER FUNCTIONS --- */\n\t\t/* --- CAMPAIGN TEMPLATING --- */\n\n\t\tpopulateCampaignProducts: function (params) {\n\t\t\tif (!params || !params.campaignId || !params.numberProducts || !params.campaignType) { return false; }\n\t\t\tif (!params.sortBy) { params.sortBy = 'time'; }\n\t\t\tif (!params.productAction) { params.productAction = 'link'; }\n\t\t\tif (!params.hoverState) { params.hoverState = false; }\n\n\n\t\t\tvar campaign = jQuery('#campaign_' + params.campaignId + '_container_' + params.campaignType);\n\t\t\tvar campaignProductArray = [];\n\n\t\t\tfor ( var i = 0; i < params.numberProducts; i++ ) {\n\t\t\t\tvar campaignProductObject = {\n\t\t\t\t\timg: jQuery('#campaign_' + params.campaignId + '_container_' + params.campaignType + ' a[href*=isr_img' + (i + 1) + ']'),\n\t\t\t\t\tlink: jQuery('#campaign_' + params.campaignId + '_container_' + params.campaignType + ' a[href*=isr_url' + (i + 1) + ']')\n\t\t\t\t};\n\n\t\t\t\tcampaignProductArray.push(campaignProductObject);\n\t\t\t}\n\n\t\t\tvar productArray = window.bouncex.bxISR.getTopProducts(params.sortBy, params.numberProducts);\n\t\t\tjQuery.each(productArray, function (x, y) {\n\t\t\t\tvar imgSrc = y.mainImgUrl,\n\t\t\t\t\tproductLink = (y.url.indexOf('http') > -1) ? y.url : window.top.location.origin + y.url,\n\t\t\t\t\tproductImageElem = jQuery(campaignProductArray[x].img),\n\t\t\t\t\tproductLinkElem = jQuery(campaignProductArray[x].link);\n\n\n\t\t\t\tvar css = {\n\t\t\t\t\t'background-image': 'url(\\'' + imgSrc + '\\')',\n\t\t\t\t\t'background-size': 'auto 100%',\n\t\t\t\t\t'background-repeat': 'no-repeat',\n\t\t\t\t\t'background-position': 'center'\n\t\t\t\t};\n\n\t\t\t\tproductImageElem.css(css).addClass('isr-image isr' + x + '');\n\t\t\t\tif (params.productAction === 'link') {\n\t\t\t\t\tif (params.reportClicks) {\n\t\t\t\t\t\tvar productAction = 'javascript:(function () { window.bouncex.report(' + params.campaignId + ', \\'clicks\\'); window.top.open(\\''+ productLink +'\\'); })();';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar productAction = 'javascript:(function () { window.top.open(\\''+ productLink +'\\'); })();';\n\t\t\t\t\t}\n\n\t\t\t\t} else if (params.productAction === 'submit') {\n\t\t\t\t\tvar productAction = 'javascript:void(0);';\n\t\t\t\t\tvar msg = JSON.stringify({ source: 'bouncex', action: 'submit' });\n\t\t\t\t\tproductImageElem.on('click', function () {\n\t\t\t\t\t\twindow.bouncex.report(params.campaignId, 'clicks');\n\t\t\t\t\t\tXD.postMessage(msg, campaign);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tproductImageElem.attr('href', productAction);\n\n\t\t\t\tif (params.reportClicks) {\n\t\t\t\t\tvar linkAction = 'javascript:(function () { window.bouncex.report(' + params.campaignId + ', \\'clicks\\'); setTimeout(function(){window.top.open(\\''+ productLink +'\\');}, 100); })();';\n\t\t\t\t} else {\n\t\t\t\t\tvar linkAction = 'javascript:(function () { window.top.open(\\''+ productLink +'\\'); })();';\n\t\t\t\t}\n\n\t\t\t\tproductLinkElem.attr('href', linkAction);\n\n\t\t\t\tif (params.hoverState) {\n\t\t\t\t\tif (params.reportClicks) {\n\t\t\t\t\t\tvar hoverLinkAction = 'javascript:(function () { window.bouncex.report(' + params.campaignId + ', \\'clicks\\'); setTimeout(function(){window.top.open(\\''+ productLink +'\\');}, 100); })();';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar hoverLinkAction = 'javascript:(function () { window.top.open(\\'' + productLink + '\\'); })();';\n\t\t\t\t\t}\n\n\t\t\t\t\tproductImageElem.parent().append('
' + y.name + '
');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tpopulateCampaignProductsV2: function (params) {\n\t\t\tif (!params || !params.campaignId || !params.numberProducts) { return false; }\n\t\t\tif (!params.sortBy) { params.sortBy = 'time'; }\n\t\t\tif (!params.productAction) { params.productAction = 'link'; }\n\t\t\tif (!params.linkAction) { params.linkAction = 'new'; }\n\n\t\t\tvar campaign = jQuery('#bx-campaign-' + params.campaignId);\n\t\t\tvar campaignProductArray = [];\n\n\t\t\tcampaignProductElements = {};\n\t\t\tjQuery.each(params.campaignSteps, function (x, y) {\n\n\t\t\t\tcampaignStepProductElements = [];\n\t\t\t\tfor ( var i = 0; i < params.numberProducts; i++ ) {\n\t\t\t\t\tvar campaignStepProductObject = {};\n\t\t\t\t\tif (y.productImages) {\n\t\t\t\t\t\tcampaignStepProductObject.img = campaign.find('#bx-form-' + params.campaignId + '-step-' + y.stepNumber + ' .bx-row-line-custom .bx-lineshape:eq(' + i +')');\n\t\t\t\t\t}\n\t\t\t\t\tif (y.productLinkElems) {\n\t\t\t\t\t\tcampaignStepProductObject.link = campaign.find('#bx-form-' + params.campaignId + '-step-' + y.stepNumber + ' .bx-group .bx-row-submit:eq('+i+')').find('button');\n\t\t\t\t\t}\n\t\t\t\t\tif (y.productHoverStates) {\n\t\t\t\t\t\tcampaignStepProductObject.hoverTitle = campaign.find('#bx-form-' + params.campaignId + '-step-' + y.stepNumber + ' .bx-group .bx-row-line-custom:eq(' + i +')').siblings('.bx-row-text').find('div');\n\t\t\t\t\t}\n\t\t\t\t\tcampaignStepProductElements.push(campaignStepProductObject);\n\t\t\t\t}\n\n\t\t\t\tcampaignProductElements['step-' +x] = campaignStepProductElements;\n\t\t\t});\n\n\t\t\tvar productArray = window.bouncex.bxISR.getTopProducts(params.sortBy, params.numberProducts);\n\n\t\t\tvar self = this;\n\t\t\tjQuery.each(campaignProductElements, function (x, y) {\n\t\t\t\tvar productAction = function () {};\n\n\t\t\t\tfor ( var i = 0; i < y.length; i++ ) {\n\t\t\t\t\tif (params.campaignSteps[(x.split('-')[1])].productsLink) {\n\t\t\t\t\t\tvar productLink = (productArray[i].url.indexOf('http') > -1) ? productArray[i].url : window.top.location.origin + productArray[i].url;\n\t\t\t\t\t\tproductAction = self.makeProductAction(productLink, params);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (y[i].img) {\n\t\t\t\t\t\tvar imgSrc = productArray[i].mainImgUrl,\n\t\t\t\t\t\t\tproductImageElem = jQuery(y[i].img);\n\n\t\t\t\t\t\tproductImageElem.css('background-image', 'url(' + imgSrc + ')').addClass('isr-image isr' + x + '').bind('click.bx_' + params.campaignId + '_isr_' + i, productAction);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (y[i].link) {\n\t\t\t\t\t\tvar productLink = (productArray[i].url.indexOf('http') > -1) ? productArray[i].url : window.top.location.origin + productArray[i].url,\n\t\t\t\t\t\t\tproductLinkElem = jQuery(y[i].link);\n\n\t\t\t\t\t\tproductLinkElem.attr('bx-href', productLink).bind('click.bx_' + params.campaignId + '_isr_' + i, productAction);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (y[i].hoverTitle) {\n\t\t\t\t\t\tvar productTitle = productArray[i].name,\n\t\t\t\t\t\t\tproductHoverTitleElem = jQuery(y[i].hoverTitle);\n\n\t\t\t\t\t\tproductHoverTitleElem.text(productTitle).bind('click.bx_' + params.campaignId + '_isr_' + i, productAction);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t});\n\t\t},\n\n\t\tmakeProductAction: function (productLink, campaignParams) {\n\t\t\tvar productAction = function () {};\n\n\t\t\t\tif (campaignParams.productAction === 'link') {\n\t\t\t\t\tif (campaignParams.linkAction === 'new') {\n\t\t\t\t\t\tif (campaignParams.reportClicks) {\n\t\t\t\t\t\t\tproductAction = function () {\n\t\t\t\t\t\t\t\twindow.bouncex.report(campaignParams.campaignId, 'click');\n\t\t\t\t\t\t\t\twindow.top.open(productLink);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tproductAction = function () {\n\t\t\t\t\t\t\t\twindow.top.open(productLink);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (campaignParams.linkAction === 'current') {\n\t\t\t\t\t\tif (campaignParams.reportClicks) {\n\t\t\t\t\t\t\tproductAction = function () {\n\t\t\t\t\t\t\t\twindow.bouncex.report(campaignParams.campaignId, 'click');\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\twindow.top.location.replace(productLink);\n\t\t\t\t\t\t\t\t}, 100);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tproductAction = function () {\n\t\t\t\t\t\t\t\twindow.top.location.replace(productLink);\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\n\t\t\treturn productAction;\n\t\t}\n\t};\n window.bouncex.bxISR.init();\n\n})();\n\nvar encodedEmail = sessionStorage.getItem('bxGuestEm');\nvar nativeEmailInput = jQuery('.form__item > input.email');\nvar checkoutPage = jQuery('#wrapper.pt_checkout').find('.step-1.active');\nvar personalDataForm = jQuery('#wrapper.pt_checkout').find('.onepagecheckout__checkout-section--active#checkout-section-address');\n// jQuery('#wrapper.pt_checkout').find('.onepagecheckout__checkout-section--active#checkout-section-address')\n\nif (checkoutPage.length && encodedEmail && nativeEmailInput.length) {\n /* auto fill guest checkout email, triggered by campaign 474216 e.g. -SK */\n try {\n nativeEmailInput.val( bouncex.lz.decompressFromURI(encodedEmail));\n sessionStorage.removeItem('bxGuestEm');\n } catch(e) {\n bouncex.err(e);\n }\n} else if (nativeEmailInput.length > 0 && checkoutPage.length > 0 || nativeEmailInput.length > 0 && personalDataForm.length > 0){\n /*MW: use boilerplate sessionstore to populate fields campaign: 680957 */\n console.log('t');\n try {\n bouncex.infoStore.populateFields({\n email: nativeEmailInput\n });\n nativeEmailInput.trigger('change');\n } catch(e) {\n bouncex.err(e);\n }\n}\n\n\n\n// (function() {\n// try { \n// var dressShirtProdPage = jQuery('meta[property=\"og:description\"]:contains(\"Dress Shirt\")');\n \n// // if (dressShirtProdPage) {\n// // listener for selected size\n// // var selectedShirtSize = selectedSize.text();\n// // bouncex.setv('shirt_size', selectedShirtSize);\n// // bouncex.setBounceCookie();\n// // }\n// } catch (e) {\n \n// }\n// })(); ","force_https":false,"waypoints":false,"content_width":0,"gai":"UA-31600317-2","swids":"","sd":0,"ljq":"auto","campaign_id":0,"is_preview":false,"aco":{"first_party_limit":"3500","local_storage":"1"},"cmp":{"gdpr":0,"gmp":0,"whitelist_check":0},"burls":[],"ple":false,"fbe":true,"mas":2,"map":1,"gar":true,"ete":0,"ettm":true,"etjs":"","dge":true,"bxidLoadFirst":false,"pie":true,"cme":true,"gbi_enabled":0,"bpush":false,"pt":{"cart":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname === \"/us/cart\";"}]]},"category":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"bouncex.utils.getNestedProp('DY.recommendationContext.type') === 'CATEGORY';"},{"activation":"js","prop":"","prop2":"","prop3":"","val":"bouncex.utils.getNestedProp('app.page.type') === 'category';"},{"activation":"js","prop":"","prop2":"","prop3":"","val":"document.querySelectorAll('#pdpMain[data-quickview=\"true\"]').length > 0;"}]]},"checkout":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname.indexOf('/CheckoutOnePage') >-1;"}]]},"home":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"bouncex.utils.getNestedProp('DY.recommendationContext.type') === 'HOMEPAGE';"}]]},"product":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"bouncex.utils.getNestedProp('DY.recommendationContext.type') === 'PRODUCT';"},{"activation":"js","prop":"","prop2":"","prop3":"","val":"bouncex.utils.getNestedProp('app.page.type') === 'product';"}],[{"activation":"js","prop":"","prop2":"","prop3":"","val":"document.querySelectorAll('#pdpMain[data-quickview=\"true\"]').length === 0"}]]},"search":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname === \"/us/search\";"}]]}},"els":{"header_banner":".header-content-wrapper","skip_link":"#skiplinkmain"},"vars":[{"name":"items_in_cart","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"0","code":"parseInt(jQuery('.js-cart-counter-ref, .summary-acordion__total-value span').eq(0).text().replace(/[^0-9.]/g, ''));","trigger":""},{"name":"cart_value","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"(function() {\n if (parseInt(jQuery('.js-cart-counter-ref').eq(0).text()) === 0) {\n return 0;\n }\n var subTotal = jQuery('.order-totals__col:contains(\"Subtotal\")').next('td.order-totals__col:first').text().trim().replace(/[^0-9.]/g, '');\n \n return subTotal || null; \n})();","trigger":""},{"name":"product_value","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tvar salePrice = jQuery('.product-price--price-sales__red').text().replace('$','').trim();\n\treturn (salePrice ? salePrice : jQuery('div.product-price').text().replace('$','').trim()) || false;\n})();","trigger":""},{"name":"product_val_10per_off","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tvar price = bouncex.vars.product_value;\n\tif (price) {\n\t\tvar _10off = parseFloat(price) * 0.1;\n\t\treturn (price - _10off).toFixed(2);\n\t}\n})();","trigger":""},{"name":"logged_in","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n if (bouncex.website.pts === 'checkout') {\n return null;\n }\n return jQuery('a[data-customer-is-loggedin=\"true\"]').length > 0;\n})();","trigger":""},{"name":"logged_in_dupe","polling":"none","persist":"no","page_types":[],"testmode":true,"default":"false","code":"//window.dataCollector[1] ? window.dataCollector[1].visitorType === 'logged in' : window.dataCollector[0].visitorType === 'logged in';","trigger":""},{"name":"ever_logged_in","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.logged_in || null;","trigger":""},{"name":"footer_email_signup","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"window.location.href.indexOf('dwfrm_newsletter_email') > -1 || null;","trigger":""},{"name":"product_name","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.product-stage__headline').text() || false;","trigger":""},{"name":"quickview_open","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.product-stage--quickview').length > 0;","trigger":""},{"name":"coupon_applied","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"cart","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"","code":"null;","trigger":""},{"name":"ibx_test","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"location.href.indexOf('ibx_test') >= 0 || null;","trigger":""},{"name":"category_url","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"products_tracked","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"JSON.parse(localStorage.bxProdHist ? localStorage.bxProdHist : '[]').length;","trigger":""},{"name":"req_email","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"/* set to true if user has triggered a request email this session via footer or new acct flow */\nnull;","trigger":""},{"name":"acct_em","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"","code":"/* set during account creation flow, to enable request email on success */\n(function () {\n if (document.location.pathname != '/us/account'){\n return '';\n }else{\n return null;\n }\n})();","trigger":""},{"name":"currently_on_product_page","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('#wrapper').hasClass('pt_product-details');","trigger":""},{"name":"no_target_element_selector","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"","code":"","trigger":""},{"name":"checkout_step","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"window.CE_SNAPSHOT_NAME && window.CE_SNAPSHOT_NAME.replace(/[^0-9]/g,'');","trigger":""},{"name":"shirt_size","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"product_on_sale","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.product-price--price-sales__red').length ? true : false;","trigger":""},{"name":"size_advisor","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var $sizeAdvisor = jQuery('#fitanalytics__button:visible');\n \n if ($sizeAdvisor.length > 0) {\n return $sizeAdvisor.text().toLowerCase().indexOf(\"your size is\") > -1;\n }\n \n return null;\n})()","trigger":""},{"name":"size_selected","polling":"vars","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.product-stage__control-item__selcted-size').length > 0 || !!bouncex.utils.getNestedProp('selectedSizeId',false,jQuery('[data-selected-size-id]').data());","trigger":"pageload"},{"name":"size_advisor_unselected","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('#fitanalytics__button a').text() === 'Size Advisor';","trigger":""},{"name":"has_only_one_size","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.product-stage__choose-size').text().toLowerCase().includes('one size');","trigger":""},{"name":"has_recommendations","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.currently_on_product_page ? jQuery('#pdp-dynamic-recos .product-tile').length > 0 : null;","trigger":""},{"name":"product_page","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"!!(jQuery(\"#add-to-cart\").length);","trigger":""},{"name":"filter_selected","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.search-result-options__refinement-image--checked').length > 0;","trigger":""},{"name":"item_sku","polling":"vars","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n try {\n return jQuery('article.pdp-stage').attr('data-itemid');\n } catch(e) {\n \treturn false;\n }\n})();","trigger":"pageload"},{"name":"item_group_id","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.utils.getNestedProp('dataLayer[0].productStyleID') || (jQuery('#pdpMain').attr('data-pid') || '').replace('_', '') || null;","trigger":"pageload"},{"name":"item_size","polling":"vars","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n try {\n if(jQuery('.product-stage__control-item__selcted-size').length > 0){\n return JSON.parse(jQuery('.product-variations').attr('data-current')).size.displayValue;\n }\n return '';\n } catch (e) {\n return false;\n }\n})()","trigger":"pageload"},{"name":"id_device","polling":"vars","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.dg.softID;","trigger":"pageload"},{"name":"id_cookie","polling":"vars","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.cookie.did;","trigger":"pageload"},{"name":"look","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"window.location.href.toLowerCase().indexOf('look') > -1;","trigger":"pageload"},{"name":"native_capture_prototype","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"true;","trigger":"pageload"},{"name":"sale_item_in_cart","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var cart_items = jQuery('.cart-product__wrapper').length, \n sale_items = jQuery('.base-price__price-sales.price-sales__red').length;\n \n if(jQuery('.sidebar__wrapper--active').length > 0){\n if(cart_items >= 1 && (cart_items === sale_items)){\n return true;\n } else if (cart_items === 0) {\n return false;\n }\n return false;\n }\n return null;\n})();","trigger":"pageload"},{"name":"item_sku_1","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n try {\n return window.dataLayer[0].productEAN;\n } catch(e) {\n \treturn false;\n }\n})();","trigger":"pageload"},{"name":"page_type","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts;","trigger":"pageload"},{"name":"category_title","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts === 'category' && jQuery('[property=\"og:title\"]').attr('content') ? jQuery('[property=\"og:title\"]').attr('content') : false;","trigger":"pageload"},{"name":"minicart_visible","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.sidebar__wrapper--active').length > 0;","trigger":"pageload"},{"name":"sku","polling":"vars","persist":"no","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"prev_sku","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"preferred_language","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"bouncex.utils.gtmLookup('pageLanguageCode');","trigger":"pageload"},{"name":"last_group_id","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"logged_in_identified","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"}],"dgu":"pixel.cdnwidget.com","dgp":false,"ba":{"enabled":0,"fbte":0},"biu":"assets.bounceexchange.com","bau":"api.bounceexchange.com","beu":"events.bouncex.net","ibx":{"tjs":"bouncex.util = {\n\n\taddNamespace: function(obj, name) {\n\t\tvar namespacedObj = {};\n\t\tfor (var k in obj) {\n\t\t\tif (obj.hasOwnProperty(k)) {\n\t\t\t\tvar namespacedKey = k;\n\t\t\t\tif (k.indexOf(':') === -1) {\n\t\t\t\t\tnamespacedKey = name + ':' + k;\n\t\t\t\t}\n\t\t\t\tnamespacedObj[namespacedKey] = obj[k];\n\t\t\t}\n\t\t}\n\t\treturn namespacedObj;\n\t},\n\n\t//copied from bouncex.ibx\n\tgetParam: function(name, qstring) {\n\t\tvar param_string = qstring ? ('?' + qstring) : window.location.href;\n\t\tname = name.replace(/[\\[]/,\"\\\\\\[\").replace(/[\\]]/,\"\\\\\\]\");\n\t\tvar regexS = \"[\\\\?&#]\"+name+\"=([^&#]*)\";\n\t\tvar regex = new RegExp( regexS );\n\t\tvar results = regex.exec( param_string );\n\t\tif( results == null ) return \"\";\n\t\telse return decodeURIComponent(results[1]);\n\t},\n\n\tgetTimeMs: function() {\n\t\treturn (new Date().getTime());\n\t},\n\n\tisValidInteger: function(val) {\n\t\t// returns true for 0, '0', 1, '1'. False for '', undefined\n\t\treturn !isNaN(parseInt(val));\n\t},\n\n\t//copied from bouncex.ibx\n\tisValidEmail: function(email) {\n\t\tvar regex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\t\treturn regex.test(email);\n\t},\n\n\tisValidUrl: function(url, type) {\n\t\t//JKMD: type could differentiate between absolute/relative, allow mailto links, etc\n\t\tvar regex = /^(http|https):\\/\\/(([a-zA-Z0-9$\\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])(\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])) {3})|localhost|([a-zA-Z0-9\\-\\u00C0-\\u017F]+\\.)+([a-zA-Z]{2,}))(:[0-9]+)?(\\/(([a-zA-Z0-9$\\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*(\\/([a-zA-Z0-9$\\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*)*)?(\\?([a-zA-Z0-9$\\-_.+!*'(),;:@&=\\/?]|%[0-9a-fA-F]{2})*)?(\\#([a-zA-Z0-9$\\-_.+!*'(),;:@&=\\/?]|%[0-9a-fA-F]{2})*)?)?$/;\n\t\treturn regex.test(url);\n\t},\n\n\tmakeQuerystring: function(o) {\n\t\tvar a=[],s='';\n\t\tfor(var k in o) {\n\t\t\tif(!o.hasOwnProperty(k)) continue;\n\t\t\ta.push(k+'='+encodeURIComponent(o[k]));\n\t\t}\n\t\treturn a.join('&');\n\t},\n\n\tmergeObject: function () {\n\t\tvar o = {};\n\t\tfor (var k in arguments) {\n\t\t\tvar a = arguments[k];\n\t\t\tif (typeof a == 'object') {\n\t\t\t\tfor (var k in a) {\n\t\t\t\t\tif (a.hasOwnProperty(k)) o[k] = a[k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn o;\n\t}\n};\n\nbouncex.util.cookies = {\n\n\tdomain: window.bouncex.cookie_domain,\n\n\tcreate: function(obj){\n\t\tdefaults = {\n\t\t\tname : '',\n\t\t\tvalue : '',\n\t\t\tdomain : false,\n\t\t\tdays : 14\n\t\t};\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\n\t\tif (!obj.name || !obj.value) { return false; }\n\n\t\tvar date = new Date();\n\t\tdate.setTime(date.getTime() + obj.days * 24 * 60 * 60 * 1e3);\n\t\tvar exp = '; expires=' + date.toGMTString();\n\n\t\tvar cookieString = obj.name + '=' + obj.value + exp + '; path=/;';\n\t\tif (obj.domain){\n\t\t\tcookieString += 'domain=' + obj.domain + ';';\n\t\t}\n\t\tdocument.cookie = cookieString;\n\t},\n\n\tdestroy: function (name) {\n\t\tthis.create({\n\t\t\tname : name,\n\t\t\tdays : -1,\n\t\t});\n\t},\n\n\tread: function (name) {\n\t\t//return this.multi.get(name);\n\t\tvar t = name + \"=\", vars = document.cookie.split(\";\");\n\t\tfor (var r = 0; r < vars.length; r++) {\n\t\t\tvar i = vars[r];\n\t\t\twhile (i.charAt(0) == \" \")i = i.substring(1, i.length);\n\t\t\tif (i.indexOf(t) == 0)return i.substring(t.length, i.length);\n\t\t}\n\t\treturn null;\n\t}\n};\n\n// if utk is already defined persist whatever listeners it has before wipe\nvar previousListeners = bouncex.utk && bouncex.utk.listeners;\n\nbouncex.utk = {\n\t\n\tlisteners: previousListeners || {},\n\n\taddMetadata: function(obj) {\n\t\tvar m = this.getMetadata();\n\t\treturn bouncex.util.mergeObject(obj, m);\n\t},\n\n\tgetMetadata: function() {\n\t\treturn {\n\t\t\t'page:type': this.getPageType(),\n\t\t\t'customer:hasconverted': (bouncex.cookie.lc?1:0)\n\t\t};\n\t},\n\n\tgetPageType: function() {\n\t\treturn \"\";\n\t},\n\t\n\tisIdentified: function(){\n\t\treturn !!(bouncex.cookie.uid || bouncex.getBounceCookie('__ibxu'));\n\t},\n\n\tquickviewItem: function(obj) {\n\t\tvar defaults = {\n\t\t\teventName: 'view item',\n\t\t\titemTracking: false,\n\t\t\tselector: '',\n\t\t\tgetItemData: function(el) { return null; }\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\t\t//validation here\n\t\tif (!obj.selector) { return null; }\n\n\t\tvar prevVisible = false,\n\t\t\tvisible;\n\n\t\treturn bouncex.utk.setInterval({\n\t\t\tcallback: function() {\n\t\t\t\tvisible = jQuery(obj.selector).is(':visible');\n\t\t\t\tif (visible && !prevVisible) {\n\t\t\t\t\tvar item = obj.getItemData(obj.selector);\n\t\t\t\t\tvar itemEventData = { eventName: obj.eventName, item: item };\n\t\t\t\t\tbouncex.setv('last_group_id', item.id);\n\t\t\t\t\tbouncex.utk.trackItemInteraction(itemEventData);\n\t\t\t\t\tbouncex.utk.setInterval({ callback : bouncex.utk.skuTrack() });\n\t\t\t\t\t//track the item\n\t\t\t\t\tif (obj.itemTracking) {\n\t\t\t\t\t\tbouncex.utk.trackItem(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tprevVisible = visible;\n\t\t\t}\n\t\t});\n\t},\n\n\trequestEmail: function(obj) {\n\t\t//JKMD: bouncex.push right now automatically adds namespacing, which would mess up \"campaignid\"\n\t\tparams = {};\n\t\tfor (var k in obj) {\n\t\t\tif (obj.hasOwnProperty(k)){\n\t\t\t\tparams[k.toLowerCase()] = obj[k];\n\t\t\t}\n\t\t}\n\t\tevent_stream_report('requestemail', params);\n\t},\n\n\t//JKMD: long-term plan is to put all of our polling into a single setInterval\n\tsetInterval: function(obj) {\n\t\tvar defaults = {\n\t\t\tmilliseconds: 1000,\n\t\t\tcallback: function() { return null; }\n\t\t};\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\t\tvar intervalId = setInterval(obj.callback, obj.milliseconds);\n\n\t\tobj.stop = removeInterval;\n\t\tvar trackerId = bouncex.utk.register(obj);\n\t\tfunction removeInterval() {\n\t\t\tclearInterval(intervalId);\n\t\t}\n\t\treturn trackerId;\n\t},\n\n\ttrackItem: function(item) {\n\t\tif (typeof(item.id) === 'string'){\n\t\t\titem.id = item.id.trim().toLowerCase();\n\t\t}\n\t\tif (!this.validateItem(item)) {\n\t\t\t//bouncex.log('item failed validation', item);\n\t\t\treturn false;\n\t\t}\n\t\titem = bouncex.util.addNamespace(item, 'item');\n\t\tbouncex.push(['item', item]);\n\t},\n\n\ttrackItemInteraction: function(obj) {\n \t\tvar id = obj.item.id;\n \t\tif (typeof(id) === 'string'){\n \t\t\tid = id.trim().toLowerCase();\n \t\t}\n \t\tvar o = { 'item:id': id };\n \t\to = this.addMetadata(o);\n \t\tbouncex.push([obj.eventName, o]);\n\t},\n\n\ttrackListPage: function(obj){\n\t\tvar defaults = {\n\t\t\teventName: 'view ' + this.getPageType(),\n\t\t\tmaxItems: 6,\n\t\t\tselector: '',\n\t\t\ttitle: '',\n\t\t\turl: jQuery('link[rel=canonical]').attr('href') || window.location.href.split('?')[0],\n\t\t\titemTracking : false,\n\t\t\tgetItemData: function(el) { return null;},\n\t\t\textraEventData: {}\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\n\t\tvar items = jQuery(obj.selector);\n\t\tif (!items || !items.length){\n\t\t\treturn false;\n\t\t}\n\t\tvar itemsTracked = 0;\n\t\tvar itemIds = [];\n\t\tfor (var i = 0; i < items.length && itemsTracked < obj.maxItems; i++) {\n\t\t\tvar item = obj.getItemData(items[i]);\n\t\t\tif (item.id){\n\t\t\t\tif (typeof(item.id) === 'string'){\n\t\t\t\t\titem.id = item.id.trim().toLowerCase();\n\t\t\t\t}\n\t\t\t\t// add id to list\n\t\t\t\titemIds.push(item.id);\n\t\t\t\tif (obj.itemTracking){\n\t\t\t\t\t//track full item\n\t\t\t\t\tthis.trackItem(item);\n\t\t\t\t}\n\t\t\t\titemsTracked++;\n\t\t\t}\n\t\t}\n\n\t\tvar o = {'items:ids' : itemIds.join(','), 'page:url' : obj.url};\n\t\tif (obj.title){\n\t\t\to['page:title'] = obj.title;\n\t\t}\n\t\to = this.addMetadata(o);\n\t\to = bouncex.util.mergeObject(o, obj.extraEventData);\n\t\tbouncex.push([obj.eventName, o]);\n\t},\n\n\ttrackUser: function(user) {\n\t\tif (!user.email && !user.emailHash) {\n\t\t\treturn false;\n\t\t}\n\t\tif (user.email && !bouncex.util.isValidEmail(user.email)){\n\t\t\treturn false;\n\t\t}\n\t\tvar params = bouncex.util.addNamespace(user, 'user');\n\t\tif (user.email) {\n\t\t\tparams['user:email'] = user.email;\n\t\t}\n\t\tif (user.emailHash) {\n\t\t\tparams['user:emailhash'] = user.emailHash;\n\t\t}\n\t\tif (user.campaignId) {\n\t\t\tparams['campaignid'] = user.campaignId;\n\t\t}\n\t\tparams['user:gcr'] = (bouncex && bouncex.cookie) ? bouncex.cookie.gcr : 99;\n\t\tparams['agent'] = 'js';\n\t\tparams['eq'] = 1;\n\n\t\tevent_stream_report('user', params);\n\n\t\tbouncex.cookie.uid = 1;\n\t\tsetBounceCookie();\n\t\t//legacy support\n\t\tbouncex.util.cookies.create({\n\t\t\tname: '__ibxu',\n\t\t\tvalue : '1',\n\t\t\tdomain : '.' + bouncex.util.cookies.domain,\n\t\t\tdays : 365,\n\t\t});\n\n\t},\n\n\tvalidateItem: function(item) {\n\t\tif (!item) { return false; }\n\t\tif (!item.id) { return false; }\n\t\tif (!item.copy) { return false; }\n\t\tif (!item.imageurl || !bouncex.util.isValidUrl(item.imageurl)) { return false; }\n\t\tif (!item.url || !bouncex.util.isValidUrl(item.url)) { return false; }\n\t\tif (bouncex.vars.look) { return false; }\n\t\treturn true;\n\t},\n\n\tviewItem: function(obj) {\n\t\tvar defaults = {\n\t\t\teventName: 'view item',\n\t\t\titemTracking: true,\n\t\t\tgetItemData: function() { return null; }\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\n\t\tvar item = obj.getItemData();\n\n\t\tif (obj.itemTracking) {\n\t\t\tthis.trackItem(item);\n\t\t}\n\n\t\tif (item.id && item.itemgroupid) {\n\t\t\tvar itemEventData = { eventName: obj.eventName, item: item };\n\t\t\tbouncex.utk.trackItemInteraction(itemEventData);\n\t\t} else {\n\t\t\t//bouncex.log('no item id', obj.eventName, item);\n\t\t}\n\t},\n\n\t//keeping track of the listeners inside tracking\n\tregister: function(obj) {\n\t\tvar id = bouncex.util.getTimeMs() + Math.random();\n\t\tbouncex.utk.listeners[id] = obj;\n\t\treturn id;\n\t},\n\n\t//remove single tracker\n\tstop: function(id) {\n\t\tif (bouncex.utk.listeners.hasOwnProperty(id)) {\n\t\t\tbouncex.utk.listeners[id].stop();\n\t\t\tdelete bouncex.utk.listeners[id];\n\t\t}\n\t},\n\n\t//remove all listeners\n\tstopAll: function() {\n\t\tfor (var id in bouncex.utk.listeners) {\n\t\t\tbouncex.utk.stop(id);\n\t\t}\n\t}\n};\n\nbouncex.utk.cart = {\n\n\tgetCart: function() {\n\t\tif (this.state) {\n\t\t//cached here once we look it up or save\n\t\t\treturn this.state;\n\t\t}else if (this.config.storeCartVariable && bouncex.vars[this.config.storeCartVariable]) {\n\t\t//look up from cvar if it exists\n\t\t\tthis.state = JSON.parse(bouncex.vars[this.config.storeCartVariable]);\n\t\t\treturn this.state;\n\t\t}else {\n\t\t\treturn {};\n\t\t}\n\t},\n\n\tgetCount: function(){\n\t\treturn bouncex.vars[this.config.cartCountVariable];\n\t},\n\n\tinferCount: function(cart) {\n\t\t// return cart.count if specified and valid\n\t\tif (bouncex.util.isValidInteger(cart.count)) {\n\t\t\treturn parseInt(cart.count);\n\t\t} else if (cart.items) {\n\t\t\t// deduce from items length (using qty property if specified)\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0; i < cart.items.length; i++) {\n\t\t\t\tvar qty = parseInt(cart.items[i].qty) || 1;\n\t\t\t\tcount += qty;\n\t\t\t}\n\t\t\treturn count;\n\t\t}else if (bouncex.util.isValidInteger(this.getCount())){\n\t\t\treturn parseInt(this.getCount());\n\t\t}else{\n\t\t\treturn 0;\n\t\t}\n\t},\n\n\tinit: function(obj) {\n\t\tvar defaults = {\n\t\t\t// lastReplenishment: false,\n\t\t\tstoreCartVariable: 'cart',\n\t\t\tcartCountVariable: 'cart_qty',\n\t\t\tmaxVariableSize: 400,\n\t\t\tstoreValues: ['count', 'items'],\n\t\t\tmaxItems: 10\n\t\t};\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\t\tthis.config = obj;\n\n\t\t//JKMD: should we do this via init, or just override explicitly...?\n\t\tthis.replenish = obj.replenish || this.replenish;\n\t\tthis.validateReplenishment = obj.validateReplenishment || this.validateReplenishment;\n\t\tthis.reportReplenishment = obj.reportReplenishment || this.reportReplenishment;\n\n\t\tthis.initFromQuerystring();\n\t\tthis.reportReplenishment();\n\t},\n\n\tinitFromQuerystring: function() {\n\t\tvar bx_cart = bouncex.util.getParam('bx_cart');\n\t\tvar ibx_cart = bouncex.util.getParam('ibx_cart');\n\t\tvar legacy = false;\n\t\tvar cart = {};\n\n\t\tif (bx_cart) {\n\t\t\t//JKMD: support base64\n\t\t\tif (bx_cart.charAt(0) !== '{') {\n\t\t\t\tbx_cart = atob(bx_cart);\n\t\t\t}\n\t\t\tcart = JSON.parse(bx_cart);\n\t\t} else if (ibx_cart) {\n\t\t\tcart = { value: ibx_cart };\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.validateReplenishment(cart)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.save(cart);\n\t\treturn this.replenish(cart);\n\t},\n\n\treplenish: function(cart) {\n\t\treturn null;\n\t},\n\n\tsave: function(cart) {\n\t\tif (!cart) { return false; }\n\t\tthis.state = cart;\n\t\tif (this.config.storeCartVariable) {\n\t\t\tvar storedCart = {};\n\t\t\tif (cart.count === 0) {\n\t\t\t\t// if count is 0, don't store any other info\n\t\t\t\tstoredCart = { count: 0 };\n\t\t\t}else{\n\t\t\t\t//store values specified in settings\n\t\t\t\tfor (var i = 0; i < this.config.storeValues.length; i++) {\n\t\t\t\t\tvar k = this.config.storeValues[i];\n\t\t\t\t\tif (cart.hasOwnProperty(k)) {\n\t\t\t\t\t\tstoredCart[k] = cart[k];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.checkAndSetVar(storedCart);\n\t\t}\n\t},\n\n\tcheckAndSetVar: function(storedCart) {\n\t\tvar cartString = JSON.stringify(storedCart);\n\t\tif (cartString.length <= this.config.maxVariableSize) {\n\t\t\tbouncex.setv(this.config.storeCartVariable, cartString);\n\t\t\tsetBounceCookie();\n\t\t} else if (storedCart.items && storedCart.items.length) {\n\t\t\tvar lastItemLength = JSON.stringify(storedCart.items[storedCart.items.length-1]).length;\n\t\t\tif ( lastItemLength >= this.config.maxVariableSize) {\n\t\t\t\tstoredCart.items.pop();\n\t\t\t} else {\n\t\t\t\tstoredCart.items.shift();\n\t\t\t}\n\t\t\tthis.checkAndSetVar(storedCart);\n\t\t}\n\t},\n\n\ttrack: function(cart) {\n\t\tvar trackCart = bouncex.util.mergeObject(cart);\n\t\tif (trackCart.items) trackCart.items = JSON.stringify(trackCart.items);\n \t\tif (trackCart.ids) trackCart.ids = trackCart.ids.join(',');\n\t\ttrackCart = bouncex.util.addNamespace(trackCart, 'cart');\n\t\tbouncex.push(['cart', trackCart]);\n\t},\n\n\tupdate: function (obj) {\n\t\tvar cart = {};\n\n\t\tif (obj.newItem) {\n\t\t\t//if partial, merge new item with stored items\n\t\t\tvar oldCart = this.getCart();\n\t\t\tvar allItems = oldCart.items || [];\n\t\t\tallItems.push(obj.newItem);\n\t\t\tobj.items = allItems;\n\t\t}\n\n\t\t// pass relevant properties to cart\n\t\tcart.count = obj.count;\n\t\tif (obj.items && obj.items.length) { cart.items = obj.items; }\n\t\tif (obj.ids && obj.ids.length) { cart.ids = obj.ids; }\n\t\tif (obj.token) { cart.token = obj.token; }\n\t\tif (obj.value) { cart.value = obj.value; }\n\n\n\t\t//set count\n\t\tcart.count = this.inferCount(cart);\n\n\t\t// remove items from beginning of items array if over limit\n\t\tif (this.config.maxItems && cart.items && cart.items.length > this.config.maxItems) {\n\t\t\tcart.items = cart.items.slice(cart.items.length - this.config.maxItems);\n\t\t}\n\n\t\t//auto parse ids from items variable if no ids specified\n\t\tif (!cart.ids && cart.items) {\n\t\t\tcart.ids = [];\n\t\t\tfor (var i = 0; i < cart.items.length; i++) {\n\t\t\t\tif (cart.items[i].id) {\n\t\t\t\t\tcart.ids.push(cart.items[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// save in cart.state, and in cvar if specified\n\t\tthis.save(cart);\n\t\t//track cart\n\t\tthis.track(cart);\n\t\t//fire add to cart event if new item or addToCart flag\n\t\tif (obj.newItem || obj.addToCart){\n\t\t\tbouncex.push(['add to cart', bouncex.utk.getMetadata()]);\n\t\t}\n\t},\n\n\tvalidateReplenishment: function(cart) {\n\t\tvar cartCount = bouncex.utk.cart.getCount();\n\t\tif (bouncex.util.isValidInteger(cartCount) && cartCount > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!cart) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!cart.value && !cart.token && !cart.items) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\treportReplenishment: function() {\n\t\tvar bx_replen = bouncex.util.getParam('bx_replen');\n\t\tif (bx_replen) {\n\t\t\tsetTimeout(function(){\n\t\t\t\tvar cartCount = bouncex.utk.cart.getCount();\n\t\t\t\tbouncex.push(['cart replenish', {'cart:count': cartCount, 'cart:success': cartCount > 0}]);\n\t\t\t}, 1100);\n\t\t}\n\t}\n};\n/* custom replen reporting: for param in referrer to account for native triggered reload after replen */\nbouncex.utk.cart.reportReplenishment = function() {\n\tvar bx_replen = bouncex.util.getParam('bx_replen', document.referrer);\n\tif (bx_replen) {\n\t\tsetTimeout(function(){\n\t\t\tvar cartCount = bouncex.utk.cart.getCount();\n\t\t\tbouncex.push(['cart replenish', {'cart:count': cartCount, 'cart:success': cartCount > 0}]);\n\t\t}, 1100);\n\t}\n};\n\n\nbouncex.utk.getPageType = function() {\n var gtmPageType = gtmLookup('pageCategory');\n \n\tif (jQuery('#pdpMain').length > 0 && gtmPageType == 'product' && gtmLookup('productStyleID')) {\n\t\treturn 'product';\n\t}\n\tif (document.location.pathname.indexOf('/cart') !== -1) {\n\t\treturn 'cart';\n\t}\n\tif (gtmPageType == 'search'){\n\t\treturn 'search';\n\t}\n\tif (gtmPageType == 'home'){\n\t\treturn 'home';\n\t}\n\tif (gtmPageType == 'category_producthits'){\n\t\treturn 'category';\n\t}\n\n\treturn '';\n\n};\n\n\nbouncex.utk.trackItemInteraction = function(obj) {\n\tvar id = obj.item.id;\n\tif (typeof(id) === 'string'){\n\t\tid = id.trim().toLowerCase();\n\t}\n\tvar o = { 'item:id': id };\n\tvar itemgroupid = obj.item.itemgroupid; \n\tif (typeof(itemgroupid) === 'string' && obj.eventName === 'view item'){\t\t\t\n\t\titemgroupid = itemgroupid.trim();\n\t\to['item:itemgroupid'] = itemgroupid;\n\t}\t\n\to = this.addMetadata(o);\n\tbouncex.push([obj.eventName, o]);\n}\n\nbouncex.utk.trackItem = function(item) {\n\tif (typeof(item.id) === 'string'){\n\t\titem.id = item.id.trim().toLowerCase();\n\t}\n\n\tif (!this.validateItem(item)) {\n\t\t//bouncex.log('item failed validation', item);\n\t\treturn false;\n\t}\n\titem = bouncex.util.addNamespace(item, 'item');\n\titem[\"item:itemgroupid\"] ? delete item[\"item:itemgroupid\"] : false\n\tbouncex.push(['item', item]);\n}\n\n\nfunction gtmLookup(param){\n\ttry {\n\t\treturn google_tag_manager[\"GTM-KPD539\"].dataLayer.get(param);\n\t} catch(e) {\n\t\tconsole.log(e);\n\t\treturn '';\n\t}\n}\n\nfunction requestEmailHelper(email){\n\tif (email && bouncex.util.isValidEmail(email)){\n\t\tvar BWParentId = 472236;\n\t\tvar requestData = { campaignId: BWParentId, \"user:email\": email, \"email\":email };\n\t\tif (bouncex.vars.ibx_test) { requestData.testmode = 1; } \n\t\tbouncex.utk.requestEmail(requestData);\n\t\tbouncex.setv('req_email', true);\n\t\tsetBounceCookie();\n\t}\n}\n/* replenishment helpers */\nfunction addItemToCart (pointer, items) {\n\tvar productData = items[pointer];\n\tif (productData.pid){\n\t\tvar replenishURL = '/on/demandware.store/Sites-US-Site/en_US/Cart-AddProduct';\n \t\tjQuery.ajax({\n \t\t\ttype:'POST',\n \t\t\turl: replenishURL,\n \t\t\tdata: {\n \t\t\t\t'pid' : productData.pid,\n \t\t\t\t'Quantity' : productData.qty || 1\n \t\t\t},\n \t\t\tcomplete: function (response) {\n \t\t\t\treplenishNext(pointer, items);\n \t\t\t}\n \t\t});\n\t\t\n\t}else{\n\t\treplenishNext(pointer, items);\n\t}\n}\nfunction replenishNext(pointer, items){\n\tpointer++;\n\tif (pointer < items.length) {\n\t\taddItemToCart(pointer, items);\n\t} else {\n\t\twindow.location.href = 'https://www.hugoboss.com/us/cart?bx_replen=true';\n\t}\n}\n\nbouncex.utk.ajaxComplete = function(obj){\n\tvar defaults = {\n\t\tcallback : function(){return null;},\n\t\ttarget : jQuery(document),\n\t};\n\tobj = bouncex.util.mergeObject(defaults, obj);\n\tobj.stop = function (){\n\t\tobj.target.off('ajaxComplete.bx-'+obj.id);\n\t};\n\tobj.id = bouncex.utk.register(obj);\n\tobj.target.on('ajaxComplete.bx-'+obj.id, function(event, xhr, settings){\n\t\ttry {\n\t\t\tobj.callback(event, xhr, settings);\n\t\t} catch(e) { console.log(e);}\n\t});\n};\n\nfunction trackCartAjax(event, xhr, settings){\n\tif(settings && settings.url.indexOf('/Cart-AddProduct') > -1){\n\t var checkExist = setInterval(function() {\n\t if(jQuery('.sidebar__wrapper--active .sidebar__content .shopping-bag__wrapper, .cart-sidebar__addedproduct-hint').length !== 0){\n\t clearInterval(checkExist);\n\t trackCartUpdate();\n\t }\n\t }, 300);\n\t}else if(settings && settings.url.indexOf('/us/cart?dwcont') > -1){\n trackCartUpdate()\n\t}\n}\n\nfunction trackEmptyCart(){\n\tif (bouncex.getVar(bouncex.utk.cart.config.cartCountVariable).code() === 0 && bouncex.utk.cart.getCart().count > 0){\n\t\tbouncex.utk.cart.update({\n\t\t\tcount : 0\n\t\t});\n\t}\n}\n\nfunction trackCartUpdate(){\n if(jQuery('.product-li ').length > 0){\n \tvar cart= {};\n cart.items = [];\n cart.count = 0;\n jQuery('.product-li').each(function(i,v){\n\tvar item = {\n\t\t'pid': JSON.parse(jQuery(v).attr('data-as-product')).sku, \n 'id': JSON.parse(jQuery(v).attr('data-as-product')).variant.replace('_', ''), \n 'qty': parseInt(jQuery(v).find('.product-li__quantity-select-input').val())\n\t}\n cart.items.push(item);\n cart.count += item.qty;\n });\n var oldCart = bouncex.utk.cart.getCart().count || 0;\n if(oldCart < cart.count){\n cart.addToCart = true;\n }\n bouncex.utk.cart.update(cart);\n }else{\n bouncex.utk.cart.update({\n count : 0\n });\n }\n}\n\nfunction isOnSale() {\n return jQuery('.product-price--price-sales__red').length > 0 && jQuery('.product-price--price-sales__red').text().length > 0;\n}\n\nfunction getCategoryIds() {\n\treturn jQuery('.search-result .product-tile-plp').map(function () {\n\t\tvar itemId = jQuery(this).data().asProduct.variant.replace('_', '');\n\t\t\n\t\tif(itemId) {\n\t\t\treturn itemId;\n\t\t}\n\t}).toArray().join();\n}\n\n// POLLING FUNCTION TO TRACK WHEN USER UPDATES VARIATION OF PRODUCT\nbouncex.utk.skuTrack = function () {\n bouncex.log(\"calling skuTrack\");\n\treturn function () {\n\t\tvar variantEl = jQuery('.size-select__list-element.size-select__list-element--selected.swatch-list__size--is-selected > a').data() || jQuery('.product-add-to-cart').data(),\n\t\t\tskuId = jQuery('article.pdp-stage').attr('data-itemid') || bouncex.utils.getNestedProp('pid',false,variantEl) || bouncex.utils.getNestedProp('itemid',false,variantEl),\n\t\t\titemId = bouncex.utils.getNestedProp('variationgroupid', '', variantEl).replace('_', '') || bouncex.vars.item_group_id || bouncex.vars.last_group_id;\n\n\t\t//bouncex.setVar('item_sku', skuId);\n\t\t\n\t\tif (bouncex.vars.prev_sku !== bouncex.vars.item_sku) {\n\t\t\tif (bouncex.vars.item_sku && bouncex.vars.size_selected && itemId) {\n\t\t\t\tbouncex.push([\n\t\t\t\t\t'select_sku',\n\t\t\t\t\t{\n\t\t\t\t\t\t'item:id': itemId.toLowerCase(),\n\t\t\t\t\t\t'item:itemgroupid': itemId,\n\t\t\t\t\t\t'item:feedid': bouncex.vars.item_sku\n\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tbouncex.setv('prev_sku', bouncex.vars.item_sku);\n\t\t\t}\n\t\t}\n\t};\n};\nbouncex.utk.initializeUserTracking = function() {\n\tif (!bouncex.vars.logged_in || !!bouncex.vars.logged_in_identified) {\n\t\treturn;\n\t }\n\t\n\t var userEmail;\n\t\n\t bouncex.et.onTrue(\n\t\tfunction () {\n\t\t userEmail = atob(bouncex.utils.getNestedProp('_bcai_em','',window.localStorage).slice(0, -1).substring(2));\n\t\t return bouncex.utils.validate.email(userEmail);\n\t\t},\n\t\tfunction () {\n\t\t bouncex.push([\n\t\t\t 'user',\n\t\t\t {\n\t\t\t\t 'email': userEmail,\n\t\t\t\t 'source': 'LoggedIn'\n\t\t\t }\n\t\t ]);\n\t\t bouncex.setVar('logged_in_identified', true);\n\t\t},\n\t\t5\n\t );\n }\n//required setup: define init function. All tracking code should go in here\nbouncex.utk.init = function() {\n if (window.location.hostname === 'stg.hugoboss.com'){ return false; }\n\t//Cancel any existing listeners. Crucial for Angular sites\n\tbouncex.utk.stopAll();\n\tbouncex.utk.initializeUserTracking();\n\t/* request email on native submits, only once per visit */\n\tif (!bouncex.vars.req_email){\n\t\t/* 1: native footer */\n\t\tif (document.location.pathname == '/us/newsletter' && bouncex.util.getParam('sid') == 'footer'){\n\t\t\tvar email1 = bouncex.util.getParam('dwfrm_newsletter_email');\n\t\t\trequestEmailHelper(email1);\n\t\t}\n\t\t/* 2: create account competion */\n\t\tif (document.location.pathname == '/us/account' && jQuery('#edit-profile-form').length > 0){\n\t\t/* on acct form submit store email */\n\t\t\tjQuery('#edit-profile-form').on('submit.bx-email-req', function(){\n\t\t\t\ttry {\n\t\t\t\t\tvar encodedEmail = bouncex.lz.compressToURI(jQuery('#dwfrm_profile_customer_email').val());\n\t\t\t\t\tbouncex.setv('acct_em', encodedEmail);\n\t\t\t\t\tsetBounceCookie();\n\t\t\t\t} catch(e) {\n\t\t\t\t\tconsole.log(e);\n\t\t\t\t}\n\t\t\t});\n\t\t}else if (document.location.pathname == '/us/account' && bouncex.util.getParam('registration') === 'true'){\n\t\t/* on account creation success, look up email and request email */\n\t\t\tvar email2 = bouncex.lz.decompressFromURI(bouncex.vars.acct_em);\n\t\t\trequestEmailHelper(email2);\n\t\t}\n\t}\n\n\tvar pageType = bouncex.utk.getPageType();\n\tif (pageType == 'product' && !bouncex.vars.look) {\n\t\tbouncex.et.onTrue(function(){\n\t\t\treturn bouncex.vars.item_group_id;\n\t\t}, \n\t\tfunction(){\n\t\t\tbouncex.utk.viewItem({\n\t\t\t\tgetItemData: function() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: gtmLookup('productStyleID'),\n\t\t\t\t\t\tcopy: gtmLookup('productName'),\n\t\t\t\t\t\timageurl: jQuery('meta[property=\"og:image\"]').attr('content').split('?')[0],\n\t\t\t\t\t\tcategory: gtmLookup('productCategory') + ' ' + gtmLookup('productGender'),\n\t\t\t\t\t\turl: jQuery('meta[property=\"og:url\"]').attr('content').split('?')[0],\n\t\t\t\t\t\tprice: gtmLookup('productPrice').toFixed(2),\n\t\t\t\t\t\titemgroupid: bouncex.vars.item_group_id,\n\t\t\t\t\t\ton_sale: isOnSale()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t\tbouncex.utk.setInterval({ callback : bouncex.utk.skuTrack() });\n\t\t}, 10)\n\t}\n\n\tif(pageType === 'category') {\n\t\tvar itemIds = getCategoryIds(),\n\t\t\tcategoryTitle = jQuery('h1.refinements__text-title').text().trim(),\n\t\t\tcategoryPageUrl = bouncex.utils.url.allowParams();\n\n\t\tif(itemIds.length > 0 && jQuery('div[id*=\"plpQuickshopBottomSheet\"]').length === 0){\n\t\t\tbouncex.push(['view category', {\n\t\t\t\t'items:ids': itemIds,\n\t\t\t\t'page:title': categoryTitle,\n\t\t\t\t'page:url': categoryPageUrl\n\t\t\t}]);\n\t\t}\t\n\t}\n\n\tif (pageType == 'category' || pageType == 'search' || pageType == 'home'){\n\t\tbouncex.utk.quickviewItem({\n\t\t\tselector: 'div[id*=\"plpQuickshopBottomSheet\"]',\n\t\t\titemTracking: false,\n\t\t\tgetItemData: function(el) {\n\t\t\t\tvar itemId = jQuery(el).find('.product-add-to-cart').data().variationgroupid.replace('_', '');\n\t\t\t\treturn {\n\t\t\t\t\tid: itemId,\n\t\t\t\t\titemgroupid: itemId\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\t/* cart tracking */\n\n\tbouncex.utk.cart.init({\n\t\tcartCountVariable: 'items_in_cart', \n\t\tstoreCartVariable: 'cart', \n\t\tstoreValues: ['count', 'items'], \n\t\tmaxVariableSize: 300,\n\t\tmaxItems: 10,\n\t\treplenish: function(cart) {\n\t\t\tbouncex.utk.cart.replenishing = true;\n\t\t\tvar items = cart.items;\n\t\t\taddItemToCart(0, items);\n\t\t}\n\t});\n\tif (!bouncex.utk.cart.replenishing){\n\t\ttrackEmptyCart();\n\t\tbouncex.utk.setInterval({ callback : trackEmptyCart });\n\n\t\tif (pageType != 'cart'){\n\t\t\tbouncex.utk.ajaxComplete({callback : trackCartAjax});\n\t\t}else if(pageType === 'cart'){\n\t\t\tjQuery(document).on('change.bx', '.cart-quantity-select', function(){\n \t\ttrackCartUpdate();\n \t\t});\n\n\t\t\tjQuery( window ).on( \"load\", function() {\n\t\t\t\tif(window.location.href.indexOf('?bx_replen=true') == -1){\n\t\t\t\t\ttrackCartUpdate();\n\t\t\t\t}else{\n\t\t\t \t\tsetTimeout(function(){\n\t\t\t\t var cartCount = bouncex.utk.cart.getCount();\n\t\t\t\t bouncex.push(['cart replenish', {'cart:count': cartCount, 'cart:success': cartCount > 0}]);\n\t\t\t \t}, 1100);\n\t\t\t\t}\n\t\t\t});\n\t\t\tjQuery(document).on('click.bx', '.close-button__delete-button', function(){\n\t\t\t \tsetTimeout(function(){\n\t\t\t \ttrackCartUpdate();\n\t\t\t \t}, 1000);\n\t\t\t});\n\t\t}\n\t}\n};\n\nbouncex.utk.init();\n\n/* KC 5.25.2017 Set ibx user if email exists in url since bouncex.utk.muu(); function is not here */\n\nif(location.href.match(/([a-zA-Z0-9._\\+-]+(?:@|%40)[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)/gi)!==null){\n\tbouncex.ibx.user(decodeURIComponent(location.href.match(/([a-zA-Z0-9._\\+-]+(?:@|%40)[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)/gi)[0]), {__src: 'URL'});\n}","cjs":"","miw":1,"mibcx":1,"te":1,"cart_rep":{"get":"","set":""},"ulpj":{"bxid":"espemailid"},"cus":"","miw_exclude":"","enabled":1},"etjson":null,"osre":true,"osru":"osr.bounceexchange.com/v1/osr/items","checkDfp":false,"gamNetwork":"","spa":1,"spatm":0,"preinit_cjs":"SinglePageApp.setCustomParams({\n shouldCheckSpa: function() {\n return bouncex.utils.getNestedProp('DY.recommendationContext.type') === 'CATEGORY' || bouncex.utils.getNestedProp('app.page.type') === 'category';\n }\n});\n\nSinglePageApp.setCustomParams({\n currentPageIdentifier: function() {\n return bouncex.utils.getNestedProp('DY.recommendationContext.type');\n }\n});\n\n/** \n * Segments - Cartridge Boilerplate\n * This code belongs in pre-init.js. If you want to write code\n * that runs when the page loads but does not leverage the intercept\n * or mirror methods use the Event Tracking code block. Don't forget\n * to change testMode to false to set your code live.\n */\n\nvar segments = {\n /* PROPERTIES */\n testMode: false,\n interceptEnabled: true,\n mirrorEnabled: true,\n dlWatcherEnabled: false,\n /* METHODS */\n /* Intercept Events */\n useIntercept: function() {\n if (this.interceptEnabled) {\n bouncex.utils.shqInterceptEvent = {\n // true blocks event, defined functions run in place of default\n 'productView': false,\n 'cartAdd': true,\n 'cartEmpty': true,\n 'categoryView': false,\n 'purchase': function() {\n var odObj = bouncex.utils.getNestedProp('window.dataLayer', []).filter(function(e) {\n return e.event === 'orderConfirmation';\n })[0],\n orderRevenue = bouncex.utils.getNestedProp('ecommerce.purchase.actionField.revenue', '', odObj),\n orderShipping = bouncex.utils.getNestedProp('ecommerce.purchase.actionField.shipping', '', odObj),\n orderTax = bouncex.utils.getNestedProp('ecommerce.purchase.actionField.tax', '', odObj),\n orderId = bouncex.utils.getNestedProp('ecommerce.purchase.actionField.id', '', odObj),\n orderItems = bouncex.utils.getNestedProp('ecommerce.purchase.products', '', odObj).map(function(x) {\n var prodId = bouncex.utils.getNestedProp('variant', '', x),\n prodPrice = bouncex.utils.getNestedProp('price', '', x),\n prodQty = bouncex.utils.getNestedProp('quantity', '', x);\n\n if (prodId && prodPrice && prodQty) {\n return {\n productId: prodId.replace(/\\_/gi, ''),\n price: prodPrice,\n qty: prodQty\n }\n }\n });\n\n if (orderRevenue && orderId && orderItems && orderItems.length > 0) {\n _shq.push(['pageView', {\n pageType: 'purchase',\n orderItems: orderItems,\n orderId: orderId,\n total: orderRevenue + orderShipping + orderTax\n }]);\n\n } else {\n // Purchase confirmation data couldn't be captured\n _shq.push(['pageView', {\n 'pageType': 'purchase',\n 'orderId': orderId || Math.floor(100 + Math.random() * 9000),\n 'usebasket': true\n }]);\n\n }\n\n },\n 'coupon': false,\n 'search': false,\n 'checkout': false,\n 'email': false,\n 'phone': false\n };\n }\n },\n /* Mirror Events */\n useMirror: function() {\n if (this.mirrorEnabled) {\n bouncex.utils.shqMirrorEvent = {\n // defined functions run after designated shq_wknd_event to process event or source names\n 'pageview': function() {\n // Search pageView\n var sp = bouncex.utils.getParam('q');\n\n if (bouncex.website.pts === 'search' && sp) {\n _shq.push(['pageView', {\n pageType: 'search',\n searchPhrase: sp.replace(/\\+/gi, ' ')\n }]);\n }\n },\n 'add to cart': function() {\n // Add To Cart - PDP/Quick View\n setTimeout(function() {\n var atcObj = bouncex.utils.getNestedProp('window.dataLayer', []).filter(function(e) {\n return e.event === 'addToCart';\n }).pop(),\n prodId = bouncex.utils.getNestedProp('ecommerce.add.products[0].variant', '', atcObj).replace('_',''),\n prodPrice = bouncex.utils.getNestedProp('ecommerce.add.products[0].price', '', atcObj),\n prodQty = bouncex.utils.getNestedProp('ecommerce.add.products[0].quantity', '', atcObj);\n\n if (prodId && prodPrice && prodQty) {\n _shq.push(['onCartAdd', {\n CartId: null,\n Items: [{\n ProductId: prodId,\n UnitPrice: prodPrice,\n Quantity: prodQty\n }],\n Total: prodPrice * +prodQty\n }]);\n\n }\n\n }, 1500);\n\n },\n 'reloadcampaigns': function() {\n // onCartEmpty\n var inCart = bouncex.vars.items_in_cart;\n\n if (bouncex.website.pts !== 'checkout' && inCart === 0) { //mini cart exist everywhere except checkout\n _shq.push(['onCartEmpty']);\n }\n\n },\n 'view category': function() {\n // Category pageView\n var href = window.location.href.split('/'),\n catName = href[href.length - 2];\n\n if (bouncex.website.pts === 'category' && href && catName) {\n _shq.push(['pageView', {\n pageType: 'category',\n catId: catName,\n catName: catName\n }]);\n }\n }\n };\n }\n },\n dlFuncs: function(e) {\n // Write handle methods here:\n //PDP\n if (e.PageType && e.PageType === 'ProductPage') {\n //do PDP event\n }\n },\n useDLWatcher: function() {\n if (!!this.dlWatcherEnabled) {\n window.bouncex.et.onTrue(function() {\n return window.bouncex.utils.getNestedProp('window._shq.loaded') && !!window.dataLayer && !!bouncex.et.setInterval;\n }, function() {\n // instantiate DataLayerHandler Object\n var dlWatcher = new _shq.DataLayerHandler(window.dataLayer);\n // invoke watch method\n dlWatcher.watch(function(e) {\n segments.dlFuncs(e);\n }, {});\n });\n }\n },\n /* Initialize Segments Tracking */\n init: function() {\n // test mode\n if (this.testMode && !bouncex.testmode.bxdev) return;\n // attach object to window & bouncex.utils\n if (window.bouncex.utils) bouncex.utils.segments = this;\n\n // initialize intercept and mirror, comment out if not needed\n this.useIntercept();\n this.useMirror();\n }\n}\n\nsegments.init();\n\n//To use dlFuncs call this in Event Tracking\n//bouncex.utils.segments.useDLWatcher();","crs":{"integrations":null,"pageCount":null},"mat":0,"math":0,"cpnu":"coupons.bounceexchange.com","dfpcms":0,"sms":{"optm":"Hit 'Send' to sign-up for automated, recurring HUGO BOSS mktg txts (like cart reminders) to this #, per terms.","eventSharing":true,"shqId":"qcaoal6y1f-1","enabled":1},"pde":true,"fmc":["US","CA"],"fme":true,"fmx":"","sdk":{"android":{"enabled":false,"enabledVersions":[],"eventModifications":null},"ios":{"enabled":false,"enabledVersions":[],"eventModifications":null}},"onsite":{"enabled":1},"ads":{"enabled":0},"pubs":{"enabled":0},"websdk":{"enabled":0},"ga4_property_id":"","ga4_measurement_id":""} ; bouncex.tag = 'tag3'; bouncex.$ = window.jQuery; bouncex.env = 'production'; bouncex.restrictedTlds = {"casl":{"ca":1},"gdpr":{"ad":1,"al":1,"at":1,"ax":1,"ba":1,"be":1,"bg":1,"by":1,"xn--90ais":1,"ch":1,"cy":1,"cz":1,"de":1,"dk":1,"ee":1,"es":1,"eu":1,"fi":1,"fo":1,"fr":1,"uk":1,"gb":1,"gg":1,"gi":1,"gr":1,"hr":1,"hu":1,"ie":1,"im":1,"is":1,"it":1,"je":1,"li":1,"lt":1,"lu":1,"lv":1,"mc":1,"md":1,"me":1,"mk":1,"xn--d1al":1,"mt":1,"nl":1,"no":1,"pl":1,"pt":1,"ro":1,"rs":1,"xn--90a3ac":1,"ru":1,"su":1,"xn--p1ai":1,"se":1,"si":1,"sj":1,"sk":1,"sm":1,"ua":1,"xn--j1amh":1,"va":1,"tr":1}}; bouncex.client = { supportsBrotli: 0 }; bouncex.assets = {"ads":"44fda29a3ca8b3798fe72ceb2caeade8","creativesBaseStyles":"a53944a2","gpsAuction":"1375a7b38c31e98d14fe7f396b72da14","inbox":"02aca5df0e176b8810a86da97ac05424","onsite":"0e56ab6ba004ee080ce3deb3edae35e9","sms":"e39203556bab2366e56296ce42e974a7","websdk":"0704dae1eb637cbeb4a847506058402d"}; bouncex.push = function(pushData) { bouncex.pushedData.push(pushData); } var runtime = document.createElement('script'); runtime.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/runtime_6459738026535cda4232dc813c61447d.js'); runtime.setAttribute('async', 'async'); runtime.setAttribute('onload', 'bouncex.initializeTag()'); bouncex.initializeTag = function() { var script = document.createElement('script'); script.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/main-v2_b0f9dea1e3910d3b6e492e0d6dab8565.js'); script.setAttribute('async', 'async'); document.body.appendChild(script); var deviceGraphScript = document.createElement('script'); deviceGraphScript.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/cjs_min_3a843477d8e318f67237a66d0a58c542.js'); deviceGraphScript.setAttribute('async', 'async'); var dgAttrs = [{"Key":"id","Value":"c.js"},{"Key":"async","Value":"true"},{"Key":"data-apikey","Value":"2^HIykD"},{"Key":"data-cb","Value":"bouncex.dg.initPostDeviceGraph"},{"Key":"data-bx","Value":"1"},{"Key":"data-gm","Value":"1"},{"Key":"data-fire","Value":"1"}]; if (dgAttrs) { for (var i = 0; i < dgAttrs.length; i++) { deviceGraphScript.setAttribute(dgAttrs[i].Key, dgAttrs[i].Value); } } document.body.appendChild(deviceGraphScript); bouncex.initializeTag = function() {}; }; document.body.appendChild(runtime); } window._shq = window._shq || []; var eventSharingCartridge = document.createElement('script'); eventSharingCartridge.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/wknd_audiences_2648fa8509e4b3a98a2790bb8171ddc1.js'); eventSharingCartridge.setAttribute('async', 'async'); document.body.appendChild(eventSharingCartridge); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", bxBootstrap); } else { bxBootstrap(); }})();