var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); function bxBootstrap() { if (!(window.bouncex&&bouncex.website)) { var pushedData = []; if(window.bouncex && bouncex.push && bouncex.length){ pushedData = bouncex; } window.bouncex = {}; bouncex.pushedData = pushedData; bouncex.website = {"id":2010,"cookie_name":"bounceClientVisit2010","domain":"cokesbury.com","ct":"bind_to_domain","uwc":1,"ally":0,"ei":0,"tcjs":"","cjs":"var checkFreeShipping =function(){\n jQuery.ajax({\n type: \"POST\",\n url: \"/Forms/AjaxHost.aspx/GetFreeShipping\",\n data: \"{}\",\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n success: function (m) {\n var toFreeShipping = m.d.AddToQualify.replace(/[^0-9\\.]/g,\"\");\n if (m.d.AddToQualify[0] === \"(\") toFreeShipping *= -1;\n bouncex.setv('to_free_shipping',toFreeShipping);\n }\n });\n};\n\nif ( bouncex.cookie.vpv == 1 || window.location.href.indexOf('Checkout/ShoppingCart.aspx') > -1 ) {\n checkFreeShipping();\n bouncex.setBounceCookie();\n}\n\n\njQuery(document).on('ajaxComplete.bx-cv', function(event,xhr,settings) {\n if (xhr.status === 200) {\n if (settings.url.indexOf('/forms/AddToCart') > -1) {\n var cartTotal = +jQuery('#divCartSubtotal').text().trim().replace(/[^0-9\\.]/g,''),\n prodImages = jQuery('.ATC_divImageWrapper img').attr('src') + (bouncex.vars.cart_product_images === '' ? '' : '|') + bouncex.vars.cart_product_images;\n bouncex.setv('value_in_cart', cartTotal);\n bouncex.setv('cart_product_images', prodImages);\n checkFreeShipping();\n\n bouncex.setBounceCookie();\n }\n\n if (settings.url.indexOf('/NewsletterSubscription/AddSingleEmail') > -1) {\n bouncex.setv('submitted_email_onsite', true);\n bouncex.setBounceCookie();\n }\n }\n}); \n\njQuery('.inputSearchButton').on('click.bx', function(){\n //console.log('click');\n localStorage.setItem('used_search', true);\n});\n\nif((window.location.href.split('&')[0] !== document.referrer.split('&')[0] || window.location.href.split('&')[1] !== document.referrer.split('&')[1]) && localStorage.getItem('used_search') === \"true\"){\n console.log(localStorage.getItem('used_search'));\n localStorage.setItem('used_search', false);\n}\n// window.location.href.split('&')\n// document.referrer.split('&')\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('meta[name=\"productid\"]').length > 0 && window.location.href.indexOf('product') > -1,\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\n\t\t\tvar productValues = {\n\t\t\t\turl: jQuery('meta[property=\"og:url\"]').prop('content'),\n\t\t\t\tname: jQuery('meta[property=\"og:title\"]').prop('content'),\n\t\t\t\tsku: jQuery('meta[name=\"productid\"]').prop('content'),\n\t\t\t\tcategory: [{ categoryName: jQuery('meta[name=\"SiteSectionName\"]').prop('content'), categoryUrl: (' ') }],\n\t\t\t\tdescription: jQuery('meta[name=\"description\"]').prop('content'),\n\t\t\t\tprice: jQuery('meta[name=\"cokesburyprice\"]').prop('content'),\n\t\t\t\tmainImgUrl: 'https:'+jQuery('#imgLargeProductImage').attr('src'),\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-default .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","force_https":false,"waypoints":false,"content_width":0,"gai":"","swids":"","ots":0,"sd":0,"ljq":"auto","campaign_id":0,"is_preview":false,"aco":{"first_party_limit":"3500","local_storage":"1"},"cmp":{"gdpr":1,"gmp":0,"whitelist_check":0},"burls":[],"ple":false,"fbe":false,"mas":2,"map":1,"gar":true,"ete":0,"ettm":true,"etjs":"","dge":true,"gbi_enabled":0,"gbi":{"rblocks":null},"bpush":false,"pt":null,"els":null,"acts":null,"vars":[{"name":"ibx_test","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"location.href.indexOf('ibx_test')>=0 || null;","trigger":""},{"name":"logged_in","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('#MyAccount').length > 0;","trigger":""},{"name":"ever_logged_in","polling":"vars","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.logged_in || null;","trigger":""},{"name":"items_in_cart","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"(function() {\n var items = +jQuery('#lblShoppingCartItems').text().trim();\n if (items !== '') {\n return items\n } else {\n return null;\n }\n})();","trigger":""},{"name":"value_in_cart","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"0","code":"(function() {\n\tif (window.location.href.indexOf('/ShoppingCart') > -1 || window.location.href.indexOf('ShippingInformation') > -1) {\n\t\treturn jQuery('#tdSubtotalContents').text().trim().replace('$','');\n\t}\n})();","trigger":""},{"name":"submitted_email_onsite","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"to_free_shipping","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"35","code":"null;","trigger":""},{"name":"discount","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"0","code":"(function(){\n var $discountLabel = jQuery('meta[name=\"discountpricelabel\"]');\n if ( $discountLabel.length && $discountLabel.attr('content').trim() !== 'Retail Price' ) {\n var origPrice = parseFloat(jQuery('meta[name=\"suggestedprice\"]').attr('content'));\n var discountPrice = parseFloat(jQuery('meta[name=\"cokesburyprice\"]').attr('content'));\n return (origPrice - discountPrice).toFixed(2);\n }\n}());\n","trigger":""},{"name":"iframe","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"window!=window.top","trigger":""},{"name":"login_modal","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"!!jQuery('.iFrameLogin').length;","trigger":""},{"name":"dollar_savings_threshold","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"0","code":"(function(){\n\tvar _ogPrice = jQuery('#ctl00_Content_ctl00_ProductOrderBox1_divRetailPrice').text().trim().replace(/[^0-9\\.]/g,'');\n\tvar _discount = jQuery('#ctl00_Content_ctl00_ProductOrderBox1_divCokesburyPrice').text().trim().replace(/[^0-9\\.]/g,'');\n\tvar position;\n\tvar insert = '.';\n\n\n\tif(_discount.length == 3){\n\t\tposition = 1;\n\t}else if (_discount.length == 4) {\n\t\tposition = 2;\n\t} else if (_discount.length == 5) {\n\t\tposition = 3;\n\t}\n\n var formattedDiscount = [_discount.slice(0,position), insert,_discount.slice(position)].join('');\n\n if(_ogPrice.length){\n\t\treturn parseInt(_ogPrice - formattedDiscount);\n }\n\n})();","trigger":""},{"name":"percentage_savings","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"0","code":"(function(){\n\tvar _ogPrice = jQuery('#ctl00_Content_ctl00_ProductOrderBox1_divRetailPrice').text().trim().replace(/[^0-9\\.]/g,'');\n\tvar _discount = jQuery('#ctl00_Content_ctl00_ProductOrderBox1_divCokesburyPrice').text().trim().replace(/[^0-9\\.]/g,'');\n\tvar position;\n\tvar insert = '.';\n\n\tif(_discount.length == 3){\n\t\tposition = 1;\n\t}else if (_discount.length == 4) {\n\t\tposition = 2;\n\t} else if (_discount.length == 5) {\n\t\tposition = 3;\n\t}\n\n var formattedDiscount = [_discount.slice(0,position), insert,_discount.slice(position)].join('');\n\n if(_ogPrice.length){\n\t\treturn parseInt(100 - (formattedDiscount/_ogPrice * 100));\n }\n})();","trigger":""},{"name":"cart_product_images","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"","code":"(function() {\n\tif (window.location.href.indexOf('/Checkout/ShoppingCart') > -1) {\n\t\tvar prodImages = jQuery('.tdShoppingCartImage img'),\n\t\t\timagesString = '';\n\t\tif (prodImages.length) {\n\t\t\tfor (i=0; i < prodImages.length; i++) {\n\t\t\t\tprodImage = prodImages.eq(i);\n\t\t\t\timagesString = prodImage.attr('src').replace('/Small', '/MediumNoCanvas') + (imagesString === '' ? '' : '|') + imagesString;\n\t\t\t}\n\n\t\t\treturn imagesString;\n\t\t}\n\t}\n})();","trigger":""},{"name":"user_first_name","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":0,"code":"window.lpTag ? window.lpTag.sdes.get().personal[0].personal.firstname : false;","trigger":""},{"name":"out_of_stock","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"!!jQuery('.divOrderBoxNotifyWrapper:visible').length;","trigger":""},{"name":"other_formats","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"!!jQuery('#ctl00_Content_ctl00_ProductDetailFormView_lblOtherFormats').length;","trigger":""},{"name":"days_to_lent","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n\tvar date1 = new Date();\n\tvar date2 = new Date(\"3/1/2017\");\n\tvar timeDiff = Math.abs(date2.getTime() - date1.getTime());\n\tvar diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); \n\treturn diffDays;\t\n})();","trigger":""},{"name":"products_tracked","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n if (window.localStorage.getItem('bxProdHist')) {\n return JSON.parse(window.localStorage.getItem('bxProdHist')).length;\n }\n})()","trigger":""},{"name":"cart_quantity","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"0","code":"parseInt(jQuery('#lblShoppingCartItems').text())","trigger":""},{"name":"cart","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"used_search","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"payment_method","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"jQuery('#PaymentInfo').find('input[id*=PayMethod]:checked').length > 0 || null;","trigger":""},{"name":"user_identified","polling":"vars","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"!!(bouncex.cookie.uid || bouncex.getBounceCookie('__ibxu'));","trigger":""},{"name":"logged_in_new","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n if (jQuery('a[href=\"/logout\"]').length > 0) {\n return true;\n } else {\n return false;\n }\n})();","trigger":"pageload"},{"name":"ever_logged_in_new","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.logged_in_new ? true : null;","trigger":"pageload"},{"name":"cart_qty_new","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"0","code":"(function(){\n if (jQuery('.headerLinksCartQty:eq(0)').text() === '0') {\n return 0;\n } else {\n return jQuery('.headerLinksCartQty:eq(0)').text();\n }\n})();","trigger":"pageload"},{"name":"cart_value_new","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"0","code":"(function(){\n if (bouncex.vars.cart_qty_new === 0){\n return 0;\n } else if (jQuery('.flyoutSubTotal').text() !== \"\"){\n return jQuery('.flyoutSubTotal').text().replace(/[^0-9.]/g,'');\n }\n})();","trigger":"pageload"},{"name":"prod_price_new","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n if (window.google_tag_parameters && window.google_tag_parameters.ecomm_pagetype && window.google_tag_parameters.ecomm_pagetype === 'product'){\n return window.google_tag_parameters.ecomm_totalvalue; \n }\n})();","trigger":"pageload"},{"name":"prod_name_new","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[property=\"og:type\"]').attr('content') === 'product' ? jQuery('meta[property=\"og:title\"]').attr('content') : false;","trigger":"pageload"},{"name":"payment_method_new","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"jQuery('.divSavedPaymentMethods input[type=radio]:checked').length > 0 ? true : null;","trigger":"pageload"},{"name":"percentage_savings_new","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var original = parseFloat(jQuery('.old-product-price span').text().trim().replace(/[^0-9\\.]/g,''));\n var salePrice = parseFloat(jQuery('.product-price span').text().trim().replace('$',''));\n \n return Math.floor(parseFloat(100 - (salePrice/original * 100)));\n})();","trigger":"pageload"},{"name":"dollar_savings_new","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"parseFloat(jQuery('.old-product-price span').text().trim().replace(/[^0-9\\.]/g,'')) - parseFloat(jQuery('.product-price span').text().trim().replace('$',''));","trigger":"pageload"}],"dgs":{"tagData":{"async":"true","data-fire":"1","data-gm":"0","data-wt":"0","id":"c.js","src":"//web.archive.org/web/20180831115520/https://pixel.cdnwidget.com/cdn/c.min.js"},"trafficPercentage":100},"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":"/**\n * Integration Section: Dynamic Parts - Only this should need to be edited\n * Sample Site: www.loft.com\n */\n/* Required: product page variables */\nbouncex.ibx.cvar.productPageIdentifier = jQuery('meta[name=\"primarynumber\"]').length > 0 && jQuery('meta[name=\"binding\"]').attr('content') !== \"Electronic Download\" && jQuery('meta[name=\"binding\"]').attr('content') !== \"Streaming Video\" && jQuery('meta[name=\"binding\"]').attr('content') !== \"Electronic Media\"; // required, identify product page\nbouncex.ibx.getProductPageData = function() {\n\tvar itemData = bouncex.ibx.cvar.productPageIdentifier ? {\n\t\tcreative: jQuery('meta[property=\"og:image\"]').attr('content').replace(/Small|MediumNoCanvas|Medium/, 'Large'), // required, item image src\n\t\tsku: jQuery('meta[name=\"productid\"]').attr('content'), // required, item unique identifier\n\t\tcategory: jQuery('meta[name=\"SiteSectionName\"]').attr('content') || 'Assorted', // required, item category/segment\n\t\tcopy: jQuery('meta[name=\"title\"]').length > 0 ? jQuery('meta[name=\"title\"]').attr('content') : jQuery('.divProductDetailContentWrapper h1').text().trim(), // required, item title\n\t\t__url: jQuery('link[rel=canonical]').attr('href'), // required, item url (exclude unneccessary query parameters)\n\t\tsubcopy: jQuery('meta[property=\"og:description\"]').attr('content'), // optional, item detailed description\n\t\tprice: jQuery('meta[name=\"cokesburyprice\"]').attr('content') // optional\n\t} : false;\n\n\treturn itemData;\n};\n\n/* Mobile site Item tracking, required if mobile site is different from desktop site */\nbouncex.ibx.cvar.mobileSite = jQuery('html.k-mobile').length > 0;\nbouncex.ibx.cvar.mobileProductPageIdentifier = jQuery('meta[name=\"primarynumber\"]').length > 0;\nbouncex.ibx.getMobileProductPageData = function() {\n\tvar itemData = bouncex.ibx.cvar.mobileProductPageIdentifier ? {\n\t\tcreative: jQuery('meta[property=\"og:image\"]').attr('content').replace(/Small|MediumNoCanvas|Medium/, 'Large'), // required, item image src\n\t\tsku: jQuery('meta[name=\"productid\"]').attr('content'), // required, item unique identifier\n\t\tcategory: jQuery('meta[name=\"SiteSectionName\"]').attr('content') || 'Assorted', // required, item category/segment\n\t\tcopy: jQuery('meta[name=\"title\"]').length > 0 ? jQuery('meta[name=\"title\"]').attr('content') : jQuery('.divProductDetailContentWrapper h1').text().trim(), // required, item title\n\t\t__url: jQuery('link[rel=canonical]').attr('href'), // required, item url (exclude unneccessary query parameters)\n\t\tsubcopy: jQuery('meta[property=\"og:description\"]').attr('content'), // optional, item detailed description\n\t\tprice: jQuery('meta[name=\"cokesburyprice\"]').attr('content') // optional\n\t} : false;\n\treturn itemData;\n};\n\n/* category/search page hover-tracking variables: required */\nbouncex.ibx.cvar.hoverTimeThreshold = 1000; // int: time threshold, track item only if user has hovered on it for certain time\nbouncex.ibx.cvar.hoverTrackedMax = 5; // int: number of items that could be tracked at most\n\nbouncex.ibx.cvar.categoryHoverTrackOn = true; // boolean: set true to turn on category hovering tracking\nbouncex.ibx.cvar.categoryPageIdentifier = jQuery('.divProductListingWrapper:not(.CurriculumSearchHit)').length > 0; // boolean: identify category page\nbouncex.ibx.cvar.categoryItems = jQuery('.divProductListingWrapper'); // object: individual item identifier\n\nbouncex.ibx.cvar.searchHoverTrackOn = false; // boolean: set true to turn on search hovering tracking\nbouncex.ibx.cvar.searchPageIdentifier = false; // boolean: identify search page\nbouncex.ibx.cvar.searchItems = false; // object: individual item section\n\nbouncex.ibx.getCategoryItemData = function($item) { //get category page item data \n\tvar priceArray = $item.find('.RetailPriceDecoration, .discountPrice b, .CokesburyPrice').text().trim().split('$');\n\titemData = {\n\t\tcreative: 'http:' + $item.find('.divImageWrapper img').attr('src').replace(/Small|MediumNoCanvas|Medium/, 'Large'),\n\t\tsku: $item.find('input[type=\"submit\"]').attr('data-product-or-style-id'),\n\t\tcategory: jQuery('meta[property=\"og:title\"]').attr('content') || jQuery('meta[name=\"title\"]').attr('content') || decodeURIComponent(bouncex.ibx._getparam('txtSearchQuery')) || 'Assorted',\n\t\tcopy: $item.find('.listingTitleLink').text().trim() || $item.find('.listProductTitle').text().trim(),\n\t\tprice: priceArray[priceArray.length - 1].replace(/[^0-9\\.]/g, ''),\n\t\t__url: window.location.protocol + '//' + window.location.hostname + ($item.find('.listingTitleLink').attr('href') || $item.find('.listProductTitle').attr('href'))\n\t};\n\treturn itemData;\n};\n\n\n/* Cart Quantity Variable * IMPORTANT! Must make sure: 1. works at cart/checkout flow; 2. works on mobile if client site has mobile version */\nbouncex.ibx.getCartCount = function() {\n\treturn parseInt(jQuery('#lblShoppingCartItems').text());\n};\n/*** Integration Section ENDS ***/\n\n/**\n * Boilerplate Section: This should not need to be changed \n */\n\nif (!window.location.origin) { // Some browsers (mainly IE) does not have this property, so we need to build it manually...\n\twindow.location.origin = window.location.protocol + '//' + window.location.hostname + (window.location.port ? (':' + window.location.port) : '');\n}\n/* Preset Variables */\nbouncex.ibx.cvar.customerType = (typeof(bouncex.cookie.lc) === 'undefined' || !bouncex.cookie.lc) ? ' prospect' : ' customer';\n/* Set ibx user if email exists in url */\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]), {\n\t\t__src: 'URL'\n\t});\n}\n\n/* Tracking item and viewed item events */\nbouncex.ibx.trackItem = function(itemData, pageType) {\n\tif (!itemData) {\n\t\treturn false;\n\t}\n\tvar itemImg = new Image();\n\titemImg.src = itemData.creative;\n\titemImg.onload = function() {\n\t\titemData.__width = itemImg.width; // read actual width of item image\n\t\titemData.__height = itemImg.height; // read actual height of item image\n\n\t\tbouncex.ibx.track('item', itemData.sku, itemData, itemData.category);\n\t\tbouncex.ibx.track('event', 'viewed item');\n\t\tbouncex.ibx.track('event', 'viewed item on ' + pageType); // viewed item on category, viewed item on search, viewed item on product, etc\n\t\tbouncex.ibx.track('event', 'viewed item on ' + pageType + bouncex.ibx.cvar.customerType);\n\t};\n};\n\n/* Product Page Tracking */\nif (bouncex.ibx.cvar.productPageIdentifier) {\n\tbouncex.ibx.trackItem(bouncex.ibx.getProductPageData(), 'product');\n}\n/* PRODUCT PAGE TRACKING END */\n\n/* Mobile Product Page Tracking */\nif (bouncex.ibx.cvar.mobileSite && bouncex.ibx.cvar.mobileProductPageIdentifier) {\n\tbouncex.ibx.trackItem(bouncex.ibx.getMobileProductPageData(), 'mobile');\n}\n/* MOBILE PRODUCT PAGE TRACKING END */\n\n/* QuickView Tracking */\nbouncex.ibx.monitorQuickviewItem = function(quickviewContainerSelector) {\n\t//assume quickview starts off not visible\n\tbouncex.ibx.cvar.quickviewVisible = false;\n\tsetInterval(function() {\n\t\tvis = jQuery(quickviewContainerSelector).is(':visible');\n\t\t//if it's visible, but wasn't visible before, then track the event\n\t\tif (vis && !bouncex.ibx.cvar.quickviewVisible) {\n\t\t\tsetTimeout(function() {\n\t\t\t\tvar quickviewData = bouncex.ibx.getQuickviewData(quickviewContainerSelector);\n\t\t\t\tbouncex.ibx.trackItem(quickviewData, 'quickview');\n\t\t\t}, 1000);\n\t\t}\n\t\tbouncex.ibx.cvar.quickviewVisible = vis;\n\t}, 500);\n};\nif (bouncex.ibx.cvar.quickviewTrackOn && bouncex.ibx.cvar.quickviewContainerSelector) {\n\tbouncex.ibx.monitorQuickviewItem(bouncex.ibx.cvar.quickviewContainerSelector);\n}\n/* QUICKVIEW TRACKING END */\n\n\n/* Category Page Tracking */\nif (bouncex.ibx.cvar.categoryHoverTrackOn && bouncex.ibx.cvar.categoryPageIdentifier) {\n\tbouncex.ibx.cvar.catHoverStart = new Date(); // time when user hover on item\n\tbouncex.ibx.cvar.catHoverFinish = new Date(); // time when user hover off item\n\tbouncex.ibx.cvar.catHoverTrackedNum = 0; // number of items that have been tracked\n\tbouncex.ibx.cvar.categoryItems.hover(\n\t\tfunction() {\n\t\t\tbouncex.ibx.cvar.catHoverStart = new Date();\n\t\t},\n\t\tfunction() {\n\t\t\tbouncex.ibx.cvar.catHoverFinish = new Date();\n\t\t\tvar $item = jQuery(this);\n\t\t\tif (bouncex.ibx.cvar.catHoverFinish - bouncex.ibx.cvar.catHoverStart > bouncex.ibx.cvar.hoverTimeThreshold && bouncex.ibx.cvar.catHoverTrackedNum < bouncex.ibx.cvar.hoverTrackedMax && $item.attr('bxtracked') != 'true') {\n\t\t\t\t$item.attr('bxtracked', 'true');\n\t\t\t\tvar itemData = bouncex.ibx.getCategoryItemData($item);\n\t\t\t\tbouncex.ibx.cvar.catHoverTrackedNum++;\n\t\t\t\tbouncex.ibx.trackItem(itemData, 'category');\n\t\t\t}\n\t\t}\n\t);\n}\n\n/* Search Page Tracking */\nif (bouncex.ibx.cvar.searchHoverTrackOn && bouncex.ibx.cvar.searchPageIdentifier) {\n\tbouncex.ibx.cvar.searchHoverStart = new Date(); // time when user hover on item\n\tbouncex.ibx.cvar.searchHoverFinish = new Date(); // time when user hover off item \n\tbouncex.ibx.cvar.searchHoverTrackedNum = 0; // number of items that have been tracked\n\tbouncex.ibx.cvar.searchItems.hover(\n\t\tfunction() {\n\t\t\tbouncex.ibx.cvar.searchHoverStart = new Date();\n\t\t},\n\t\tfunction() {\n\t\t\tbouncex.ibx.cvar.searchHoverFinish = new Date();\n\t\t\tvar $item = jQuery(this);\n\t\t\tif (bouncex.ibx.cvar.searchHoverFinish - bouncex.ibx.cvar.searchHoverStart > bouncex.ibx.cvar.hoverTimeThreshold && bouncex.ibx.cvar.searchHoverTrackedNum < bouncex.ibx.cvar.hoverTrackedMax && $item.attr('bxtracked') != 'true') {\n\t\t\t\t$item.attr('bxtracked', 'true');\n\t\t\t\tvar itemData = bouncex.ibx.getSearchItemData($item);\n\t\t\t\tbouncex.ibx.cvar.searchHoverTrackedNum++;\n\t\t\t\tbouncex.ibx.trackItem(itemData, 'search');\n\t\t\t}\n\t\t}\n\t);\n}\n/* SEARCH ITEM TRACKING END */\n\n/* Cart Event: Ajax tracking cart */\n\n/* KF: fix issue with cartCount returning NaN and breaking cart tracking */\nvar cartInt;\ncartInt = setInterval(function() {\n\tvar cartCount = bouncex.ibx.getCartCount();\n\tif (!isNaN(cartCount)) {\n\t\tbouncex.ibx.cvar.cartCount = cartCount;\n\t\tclearInterval(cartInt);\n\t}\n}, 500);\n\n\nvar iframeTrackingSet = false;\nibxIICPoll = setInterval(function() {\n\t/*\n\tKK: custom tracking for inside of iframe\n\tmore details why this was implemented see: https://www.wrike.com/open.htm?id=135908520\n\t */\n\tvar iframe = jQuery('.iFrameLogin');\n\tif (iframe.length && iframe[0].contentDocument && iframe[0].contentDocument.body) {\n\t\tvar $inputs = jQuery(iframe[0].contentDocument.body).find('input:not(input[type=button], :input[type=submit], :input[type=reset], :input[type=hidden], :input[type=radio], :input[type=checkbox], :input[type=image], :input[type=password])');\n\t\tif ($inputs.length && !iframeTrackingSet) {\n\t\t\tiframeTrackingSet = true;\n\t\t\t$inputs.on('blur', function() {\n\t\t\t\tvar source = jQuery(this).attr(\"id\");\n\t\t\t\tbouncex.ibx.user(jQuery(this).val(), {\n\t\t\t\t\t__src: source\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t} else {\n\t\tiframeTrackingSet = false;\n\t}\n\n\n\tvar itemCount = bouncex.ibx.getCartCount(),\n\t\ttrackEvent = false;\n\n\tif (isNaN(itemCount) || isNaN(bouncex.ibx.cvar.cartCount)) {\n\t\treturn;\n\t} else if (bouncex.ibx.cvar.cartCount > 0 && itemCount === 0) {\n\t\ttrackEvent = 'cart emptied';\n\t} else if (itemCount < bouncex.ibx.cvar.cartCount) {\n\t\ttrackEvent = 'removed from cart';\n\t} else if (itemCount > bouncex.ibx.cvar.cartCount) {\n\t\ttrackEvent = 'added to cart';\n\t}\n\tif (trackEvent) {\n\t\tbouncex.ibx.track('event', trackEvent, {\n\t\t\toldCount: bouncex.ibx.cvar.cartCount,\n\t\t\tnewCount: itemCount\n\t\t});\n\t\tbouncex.ibx.track('event', trackEvent + bouncex.ibx.cvar.customerType, {\n\t\t\toldCount: bouncex.ibx.cvar.cartCount,\n\t\t\tnewCount: itemCount\n\t\t});\n\t\tif (bouncex.ibx.cvar.mobileSite) {\n\t\t\tbouncex.ibx.track('event', trackEvent + ' on mobile' + bouncex.ibx.cvar.customerType, {\n\t\t\t\toldCount: bouncex.ibx.cvar.cartCount,\n\t\t\t\tnewCount: itemCount\n\t\t\t});\n\t\t}\n\t\tbouncex.ibx.cvar.cartCount = itemCount;\n\t\tbouncex.ibx._cookies.create('_ccnt', itemCount);\n\t}\n}, 1000);\n\n/* Cart Event: Non-Ajax tracking cart */\nbouncex.ibx.processCartEvents = function(cart) {\n\n\tvar oldCount = parseInt(bouncex.ibx._cookies.read('_ccnt')),\n\t\tnewCount = parseInt(cart.count),\n\t\ttrackEvent = false;\n\tif (isNaN(oldCount) || isNaN(newCount)) {\n\t\treturn;\n\t}\n\tif (oldCount > 0 && newCount === 0) {\n\t\ttrackEvent = 'cart emptied';\n\t} else if (oldCount > newCount) {\n\t\ttrackEvent = 'removed from cart';\n\t} else if (oldCount < newCount) {\n\t\ttrackEvent = 'added to cart';\n\t}\n\tif (trackEvent) {\n\t\tbouncex.ibx.track('event', trackEvent, {\n\t\t\toldCount: oldCount,\n\t\t\tnewCount: newCount\n\t\t});\n\t\tbouncex.ibx.track('event', trackEvent + bouncex.ibx.cvar.customerType, {\n\t\t\toldCount: oldCount,\n\t\t\tnewCount: newCount\n\t\t});\n\t\tif (bouncex.ibx.cvar.mobileSite) {\n\t\t\tbouncex.ibx.track('event', trackEvent + ' on mobile' + bouncex.ibx.cvar.customerType, {\n\t\t\t\toldCount: oldCount,\n\t\t\t\tnewCount: newCount\n\t\t\t});\n\t\t}\n\t\tbouncex.ibx._cookies.create('_ccnt', newCount);\n\t}\n\treturn trackEvent;\n};\nsetTimeout(function() {\n\tbouncex.ibx.processCartEvents({\n\t\tcount: bouncex.ibx.getCartCount()\n\t});\n}, 1000);\n\n/*** BOILERPLATE ENDS */\n\n\n// Cart replenishment tracking\njQuery(document).on('ajaxComplete.bx-ca', function(e, xhr, settings) {\n\tif (xhr.status === 200 && settings.url.indexOf('/forms/AddToCart') > -1) {\n\t\tvar cartVal = bouncex.ibx._cookies.read('cartid');\n\t\tbouncex.ibx._cookies.create('_ibx_ci', cartVal);\n\t\tvar ibx_ci = getBounceCookie('_ibx_ci');\n\t\tbouncex.ibx.track('cart', 'all', {\n\t\t\tvalue: encodeURIComponent(ibx_ci)\n\t\t});\n\t}\n});\n\n\n//check if replenishment worked, open login if not\nif (window.location.href.indexOf('bx-check-replen=true') > 1 && jQuery('.trShoppingCartItem').length === 0 && !bouncex.vars.logged_in) {\n\tvar loginButtonInterval;\n\tif (!clickLoginButtonOnLoad()) {\n\t\tloginButtonInterval = setInterval(clickLoginButtonOnLoad, 300);\n\t}\n\n\tfunction clickLoginButtonOnLoad() {\n\t\tvar loginButton = jQuery('#lnkBtnLogin');\n\t\tif (loginButton.length) {\n\t\t\tloginButton.click();\n\t\t\tclearInterval(loginButtonInterval);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n}\n\nbouncex.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\tgetOrigin: function() {\n\t\treturn window.location.origin || window.location.protocol + '//' + window.location.hostname + (window.location.port ? (':' + window.location.port) : '');\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 = [],\n\t\t\ts = '';\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) {\n\t\t\treturn false;\n\t\t}\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\treturn this.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 + \"=\",\n\t\t\tvars = 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\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\n\thoverItem: function(obj) {\n\t\tvar defaults = {\n\t\t\teventName: 'hover item',\n\t\t\titemTracking: false,\n\t\t\tselector: '',\n\t\t\tmaxItems: 5,\n\t\t\ttimeoutMs: 1000,\n\t\t\tgetItemData: function(el) {\n\t\t\t\treturn null;\n\t\t\t},\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\n\t\t//validation here\n\t\tif (!obj.selector) {\n\t\t\treturn null;\n\t\t}\n\n\t\t//register the tracker\n\t\tobj.stop = removeHoverTracking;\n\t\tvar trackerId = bouncex.utk.register(obj);\n\t\tvar timeout;\n\t\tvar ids = [];\n\n\t\tfunction onMouseenter() {\n\t\t\tclearTimeout(timeout);\n\t\t\tvar el = this;\n\t\t\ttimeout = setTimeout(function() {\n\t\t\t\tvar item = obj.getItemData(el);\n\t\t\t\tif (!item.id) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t//if not already tracked\n\t\t\t\tif (ids.indexOf(item.id) === -1) {\n\t\t\t\t\t//add id to list of tracked items\n\t\t\t\t\tids.push(item.id);\n\t\t\t\t\t//track the event\n\t\t\t\t\tvar itemEventData = {\n\t\t\t\t\t\teventName: obj.eventName,\n\t\t\t\t\t\titem: item\n\t\t\t\t\t};\n\t\t\t\t\tbouncex.utk.trackItemInteraction(itemEventData);\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\t//check limits\n\t\t\t\t\tif (ids.length >= obj.maxItems) {\n\t\t\t\t\t\tremoveHoverTracking();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, obj.timeoutMs);\n\t\t}\n\n\t\tfunction onMouseleave() {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\n\t\tfunction addHoverTracking() {\n\t\t\tjQuery(document).on('mouseenter.bx-tracking-hover.' + trackerId, obj.selector, onMouseenter);\n\t\t\tjQuery(document).on('mouseleave.bx-tracking-hover.' + trackerId, obj.selector, onMouseleave);\n\t\t}\n\n\t\tfunction removeHoverTracking() {\n\t\t\tjQuery(document).off('mouseenter.bx-tracking-hover.' + trackerId, obj.selector);\n\t\t\tjQuery(document).off('mouseleave.bx-tracking-hover.' + trackerId, obj.selector);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\n\t\taddHoverTracking();\n\t\treturn trackerId;\n\t},\n\n\tisIdentified: function() {\n\t\treturn !!(bouncex.cookie.uid || bouncex.getBounceCookie('__ibxu'));\n\t},\n\n\tmiw: function(obj) {\n\t\t//'input:not([type=button],[type=password],[type=submit],[type=reset],[type=radio],[type=checkbox],[type=image],[id=q],[id^=gift],[type=\"image\"],[type=hidden])'\n\t\tvar defaults = {\n\t\t\tselector: 'input:not(input[type=button], :input[type=submit], :input[type=reset], :input[type=hidden], :input[type=radio], :input[type=checkbox], :input[type=image], :input[type=password],[type=hidden])',\n\t\t\tgetUserData: function(el) {\n\t\t\t\treturn {\n\t\t\t\t\temail: jQuery(el).val(),\n\t\t\t\t\tsource: el.id,\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\t\tif (!obj.selector) {\n\t\t\treturn null;\n\t\t}\n\n\t\t//register the tracker\n\t\tobj.stop = removeUserTracking;\n\t\tvar trackerId = bouncex.utk.register(obj);\n\n\t\tfunction onBlur() {\n\t\t\tvar user = obj.getUserData(this);\n\t\t\tbouncex.utk.trackUser(user);\n\t\t}\n\n\t\tfunction removeUserTracking() {\n\t\t\tjQuery(document).off('blur.miw.' + trackerId, obj.selector);\n\t\t}\n\n\t\tjQuery(document).on('blur.miw.' + trackerId, obj.selector, onBlur);\n\n\t\treturn trackerId;\n\t},\n\n\tmuu: function() {\n\t\tvar match = location.href.match(/([a-zA-Z0-9._\\+-]+(?:@|%40)[a-zA-Z0-9._-]+\\.[a-zA-Z0-9._-]+)/gi);\n\t\tif (match) {\n\t\t\tbouncex.utk.trackUser({\n\t\t\t\temail: decodeURIComponent(match[0]),\n\t\t\t\tsource: 'URL'\n\t\t\t});\n\t\t}\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) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\t\t//validation here\n\t\tif (!obj.selector) {\n\t\t\treturn null;\n\t\t}\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\n\t\t\t\t\tif (item.id) {\n\t\t\t\t\t\tvar itemEventData = {\n\t\t\t\t\t\t\teventName: obj.eventName,\n\t\t\t\t\t\t\titem: item\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbouncex.utk.trackItemInteraction(itemEventData);\n\t\t\t\t\t}\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//make sure email is specified and valid\n\t\tif (!obj['email'] && !obj['user:email']) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (obj['email'] && !bouncex.util.isValidEmail(obj['email'])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (obj['user:email'] && !bouncex.util.isValidEmail(obj['user:email'])) {\n\t\t\treturn false;\n\t\t}\n\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() {\n\t\t\t\treturn null;\n\t\t\t}\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\n\t\tfunction removeInterval() {\n\t\t\tclearInterval(intervalId);\n\t\t}\n\t\treturn trackerId;\n\t},\n\n\ttrackItem: function(item) {\n\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 = {\n\t\t\t'item:id': id\n\t\t};\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) {\n\t\t\t\treturn null;\n\t\t\t},\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\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\n\t\t\t\tif (itemIds.indexOf(item.id) == -1) {\n\t\t\t\t\titemIds.push(item.id);\n\t\t\t\t\tif (obj.itemTracking) {\n\t\t\t\t\t\t//track full item\n\t\t\t\t\t\tthis.trackItem(item);\n\t\t\t\t\t}\n\t\t\t\t\titemsTracked++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar o = {\n\t\t\t'items:ids': itemIds.join(','),\n\t\t\t'page:url': obj.url\n\t\t};\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) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!item.id) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!item.copy) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!item.imageurl || !bouncex.util.isValidUrl(item.imageurl)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!item.url || !bouncex.util.isValidUrl(item.url)) {\n\t\t\treturn false;\n\t\t}\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() {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tobj = bouncex.util.mergeObject(defaults, obj);\n\n\t\tvar item = obj.getItemData();\n\n\t\tif (!this.validateItem(item)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (obj.itemTracking) {\n\t\t\tthis.trackItem(item);\n\t\t}\n\n\t\tif (item.id) {\n\t\t\tvar itemEventData = {\n\t\t\t\teventName: obj.eventName,\n\t\t\t\titem: item\n\t\t\t};\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\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\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', 'token', 'ids'],\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 cart = {};\n\t\tthis.replenishing = false;\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\ttry {\n\t\t\t\tcart = JSON.parse(bx_cart);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(e);\n\t\t\t\treturn false;\n\t\t\t}\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\tvar cartCopy = jQuery.extend(true, {}, cart);\n\t\tthis.save(cartCopy);\n\t\tthis.replenishing = true;\n\t\treturn this.replenish(cart);\n\t},\n\n\treplenish: function(cart) {\n\t\treturn null;\n\t},\n\n\t//modified\n\tsave: function(cart) {\n\t\tif (!cart) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.state = cart;\n\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 = {\n\t\t\t\t\tcount: 0\n\t\t\t\t};\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} 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(cart) {\n\n\t\tif (this.replenishing) {\n\t\t\t/* don't fire cart events while replenishing */\n\t\t\treturn false;\n\t\t}\n\n\t\t//Modified\n\t\tif (cart.newItem) {\n\t\t\t//if partial, merge new item with stored items\n\t\t\tvar oldCart = this.getCart();\n\n\t\t\tvar allIds = oldCart.ids || [];\n\t\t\tallIds.push(cart.newItem)\n\t\t\tcart.ids = allIds;\n\t\t}\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//set count\n\t\tcart.count = this.inferCount(cart);\n\n\t\t//auto parse ids from items variable if no ids specified\n\t\tif (!cart.ids && cart.items) {\n\t\t\tvar 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\tids.push(cart.items[i].id);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ids.length) {\n\t\t\t\tcart.ids = ids;\n\t\t\t}\n\t\t}\n\n\t\tif (cart.newItem || cart.addToCart) {\n\t\t\tbouncex.push(['add to cart', bouncex.utk.getMetadata()]);\n\t\t}\n\n\t\tcart.token = (bouncex.vars.logged_in || jQuery('#MyAccount').length > 0) ? 'logged in' : bouncex.ibx._cookies.read('cartid');\n\n\t\tdelete cart.newItem;\n\t\t//delete cart.items;\n\t\tdelete cart.addToCart;\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},\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\t//var cartCount = bouncex.utk.cart.getCount();\n\t\t\t\tvar cartCount = JSON.parse(bouncex.vars.cart).count;\n\n\t\t\t\tif (JSON.parse(bouncex.vars.cart).token !== \"logged in\") {\n\t\t\t\t\tbouncex.push(['cart replenish', {\n\t\t\t\t\t\t'cart:count': cartCount,\n\t\t\t\t\t\t'cart:success': cartCount > 0\n\t\t\t\t\t}]);\n\t\t\t\t}\n\t\t\t}, 1100);\n\t\t}\n\t}\n};\n\n\nbouncex.utk.getPageType = function() {\n\n\tvar search;\n\tif (window.location.href.split('&')[0] !== document.referrer.split('&')[0] || window.location.href.split('&')[1] !== document.referrer.split('&')[1]) {\n\t\t//localStorage.setItem('used_search', false);\n\t\tsearch = false;\n\t} else {\n\t\tsearch = true;\n\t}\n\tif (jQuery('meta[name=\"primarynumber\"]').length > 0 || window.location.href.indexOf('/forms/curriculumBuilder') > -1) {\n\t\treturn 'product';\n\t}\n\tif (window.location.href.indexOf('/forms/search') > -1 && ((localStorage.getItem('used_search') === \"false\" || localStorage.getItem('used_search') === null) || search === false)) {\n\t\tif (window.location.href.indexOf('/forms/search') > -1) {\n\t\t\treturn 'category';\n\t\t}\n\t}\n\tif (window.location.href.indexOf('/forms/search') > -1 && ((localStorage.getItem('used_search') === \"true\") || search === true)) {\n\t\tif (window.location.href.indexOf('/forms/search') > -1) {\n\t\t\treturn 'search';\n\t\t}\n\t}\n\tif ((window.location.href.indexOf('/forms/DynamicContent') > -1 && jQuery('.twoColumnBody').length > 0)) {\n\t\treturn 'category';\n\t}\n\tif ((window.location.href.indexOf('/forms/DynamicContent') > -1 && jQuery('.divProductListingWrapper').length > 0)) {\n\t\treturn 'category';\n\t}\n\tif ((window.location.href.indexOf('/forms/Finders') > -1 && jQuery('.divProductListing').length > 0)) {\n\t\treturn 'category';\n\t}\n\tif (window.location.href.indexOf('/Checkout/ShoppingCart') > -1) {\n\t\treturn 'cart';\n\t}\n\tif (jQuery('title').text().trim().indexOf('Home') > -1) {\n\t\treturn 'home';\n\t}\n\t//&& (jQuery('title').text().trim().indexOf('Search for') > -1 && window.location.href.indexOf('categoryTiered') === -1 &&\n\tif ((window.location.href.indexOf('/forms/DynamicContent') > -1 && jQuery('meta[property=\"og:title\"]').attr('content') === \"Books\")) {\n\t\treturn 'books';\n\t}\n\tif (window.location.href.indexOf('forms/GiftCards') > -1 || window.location.href.indexOf('GiftRegistry') > -1) {\n\t\treturn 'gift-card';\n\t}\n};\n\nfunction autoUpdate(cart) {\n\tvar currentCount = cart.count;\n\tvar oldCount = getOldCount();\n\tif (bouncex.util.isValidInteger(currentCount) && currentCount != oldCount) {\n\n\t\tif (currentCount > oldCount) {\n\t\t\tcart.addToCart = true;\n\t\t}\n\n\t\tcart.token = (bouncex.vars.logged_in || jQuery('#MyAccount').length > 0) ? 'logged in' : bouncex.ibx._cookies.read('cartid');\n\t\tbouncex.utk.cart.update(cart);\n\t}\n\tthis.oldCount = currentCount;\n}\n\nfunction getOldCount() {\n\treturn bouncex.utk.cart.getCart().count || 0;\n}\n\nbouncex.utk.init = function() {\n\t//https://www.cokesbury.com/?ibx_test&bx_cart=eyJjb3VudCI6MSwidG9rZW4iOiJsb2dnZWQgaW4ifQ==\n\tbouncex.utk.stopAll();\n\n\tbouncex.utk.miw();\n\n\tvar pageType = bouncex.utk.getPageType();\n\tbouncex.utk.cart.init({\n\t\tstoreCartVariable: 'cart',\n\t\tcartCountVariable: 'cart_quantity',\n\t\tmaxVariableSize: 1000,\n\t\tstoreValues: ['count', 'token', 'ids'],\n\t\tmaxItems: 10,\n\t\treplenish: function(cart) {\n\n\t\t\tbouncex.util.cookies.create({\n\t\t\t\tname: 'cartid',\n\t\t\t\tvalue: cart.token,\n\t\t\t});\n\t\t\twindow.location = \"https://www.cokesbury.com/Forms/Checkout/ShoppingCart.aspx?bx_replen=true\";\n\n\t\t},\n\t});\n\tif (pageType === 'product') {\n\t\t//jQuery('meta[name=isbn13]').attr('content')\n\t\tif (window.location.href.indexOf('/forms/curriculumBuilder') === -1 && jQuery('.divError').text() !== \"Pre-Order This Title\" && jQuery('#imgLargeProductImage').attr('src').indexOf('noimage') === -1 && jQuery('#divMainAddtoCartWrapper .divAddToCartButtonContainer input').val() !== \"BackĀ Order\") {\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: jQuery('meta[name=\"productid\"]').attr('content'),\n\t\t\t\t\t\tcopy: jQuery('meta[name=\"title\"]').length > 0 ? jQuery('meta[name=\"title\"]').attr('content') : jQuery('.divProductDetailContentWrapper h1').text().trim() !== \"\" ? jQuery('.divProductDetailContentWrapper h1').text().trim() : jQuery('title').text().trim().split(' | ')[0],\n\t\t\t\t\t\tcategory: jQuery('meta[name=\"SiteSectionName\"]').attr('content') || 'Assorted',\n\t\t\t\t\t\timageurl: jQuery('#imgLargeProductImage').attr('src').indexOf('noimage') === -1 ? window.location.protocol + jQuery('#imgLargeProductImage').attr('src') : '',\n\t\t\t\t\t\turl: jQuery('link[rel=canonical]').attr('href').split('&utm')[0],\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tif (pageType === 'category' || pageType === 'search') {\n\t\tfunction getItemData(el) {\n\t\t\tvar j = jQuery(el);\n\n\t\t\tif (j.find('input[value!=\"Pre-Order\"]').length !== 0) {\n\t\t\t\treturn {\n\t\t\t\t\tid: j.find('input[type=\"submit\"]').attr('data-product-or-style-id')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\tid: false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\tif (jQuery('.divProductListingWrapper').length > 0) {\n\t\t\tif (jQuery('.selectedFilters .genericFilterValue[for=\"isComingSoon---opt100\"]').length === 0) {\n\t\t\t\tbouncex.utk.hoverItem({\n\t\t\t\t\tselector: '.divProductListingWrapper',\n\t\t\t\t\titemTracking: false,\n\t\t\t\t\tgetItemData: getItemData\n\t\t\t\t});\n\n\t\t\t\tbouncex.utk.trackListPage({\n\t\t\t\t\tselector: '.divProductListingWrapper input[value!=\"Pre-Order\"]',\n\t\t\t\t\titemTracking: false,\n\t\t\t\t\teventName: 'view ' + pageType,\n\t\t\t\t\turl: window.location.href.split('&utm')[0],\n\t\t\t\t\tgetItemData: function(el) {\n\t\t\t\t\t\tvar j = jQuery(el);\n console.log\n\t\t\t\t\t\tif (j.closest('.divProductListingWrapper').find('.productRecommended').length !== 0) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: j.attr('data-product-or-style-id')\n\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (j.closest('.divProductListingWrapper').find('.divCompareWrapper').length !== 0) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: j.attr('data-product-or-style-id')\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} else {\n\t\t\tif (jQuery('.selectedFilters .genericFilterValue[for=\"isComingSoon---opt100\"]').length === 0) {\n\t\t\t\tbouncex.utk.hoverItem({\n\t\t\t\t\tselector: '.divListingWrapper',\n\t\t\t\t\titemTracking: false,\n\t\t\t\t\tgetItemData: getItemData\n\t\t\t\t});\n\n\t\t\t\tbouncex.utk.trackListPage({\n\t\t\t\t\tselector: '.divListingWrapper input[value!=\"Pre-Order\"]',\n\t\t\t\t\titemTracking: false,\n\t\t\t\t\teventName: 'view ' + pageType,\n\t\t\t\t\turl: window.location.href.split('&utm')[0],\n\t\t\t\t\tgetItemData: function(el) {\n\t\t\t\t\t\tvar j = jQuery(el);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: j.find('input[type=\"submit\"]').attr('data-product-or-style-id')\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif (pageType === 'home' || pageType === 'books') {\n\t\tfunction getItemData(el) {\n\t\t\tvar j = jQuery(el);\n\t\t\treturn {\n\t\t\t\tid: j.find('input[type=\"submit\"]').attr('data-product-or-style-id')\n\t\t\t}\n\n\t\t}\n\n\t\tbouncex.utk.hoverItem({\n\t\t\tselector: '.divSliderWrapper li',\n\t\t\titemTracking: false,\n\t\t\tgetItemData: getItemData\n\t\t});\n\t}\n\n\tif (pageType === 'cart') {\n\n\t\tif (window.location.href.indexOf('bx_replen=true') > 1 && jQuery('.trShoppingCartItem').length === 0 && !bouncex.vars.logged_in && JSON.parse(bouncex.vars.cart).token === \"logged in\") {\n\t\t\t//window.location = \"https://www.cokesbury.com/Forms/Checkout/ShoppingCart.aspx?bx_replen=true\"\n\t\t\tvar loginButtonInterval;\n\t\t\tif (!clickLoginButtonOnLoad()) {\n\t\t\t\tloginButtonInterval = setInterval(clickLoginButtonOnLoad, 300);\n\t\t\t}\n\n\t\t\tfunction clickLoginButtonOnLoad() {\n\t\t\t\tvar loginButton = jQuery('#lnkBtnLogin');\n\t\t\t\tif (loginButton.length) {\n\t\t\t\t\tloginButton.click();\n\t\t\t\t\tclearInterval(loginButtonInterval);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t /*This dont know */\n\t\t\tsetTimeout(function() {\n\t\t\t\tvar cart = {};\n\t\t\t\t//var count = 0;\n\t\t\t\tvar cartIds = [];\n\t\t\t\tif(jQuery('.trShoppingCartItem').length === 0){\n cart.count = 0;\n\n\t\t\t\t cart.token = (bouncex.vars.logged_in || jQuery('#MyAccount').length > 0) ? 'logged in' : bouncex.ibx._cookies.read('cartid');\n\t\t\t\t// bouncex.utk.cart.update(cart);\n \t\t\t\tif ((bouncex.vars.logged_in || jQuery('#MyAccount').length > 0) && JSON.parse(bouncex.vars.cart).token !== \"logged in\") {\n \t\t\t\t\tbouncex.utk.cart.update(cart);\n \t\t\t\t} else {\n \t\t\t\t\tautoUpdate(cart);\n \t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 2000);\n\t\t}\n\t}\n\n// \tvar checkExist = setInterval(function() {\n// \t\tif ((jQuery('.divNewHeaderWrapper #lnkBtnCartItems').length > 0 || bouncex.cookie.d === \"p\") && pageType !== 'cart') {\n// \t\t\tclearInterval(checkExist);\n// \t\t\tif ((bouncex.vars.logged_in || jQuery('#MyAccount').length > 0) && JSON.parse(bouncex.vars.cart).token !== \"logged in\") {\n// \t\t\t\tcart = {};\n// \t\t\t\tvar cartIds = [];\n// \t\t\t\tif (JSON.parse(bouncex.vars.cart).ids !== undefined) {\n// \t\t\t\t\tcart.ids = JSON.parse(bouncex.vars.cart).ids;\n// \t\t\t\t} else if (jQuery('.trShoppingCartItem').length > 0) {\n\n// \t\t\t\t\tjQuery('.trShoppingCartItem').each(function(i, v) {\n// \t\t\t\t\t\tcartIds.push(jQuery(v).find('.divCartNumber:last').text().split(' ')[1]);\n// \t\t\t\t\t});\n// \t\t\t\t\tif (count != 0) {\n// \t\t\t\t\t\tcart.ids = cartIds;\n// \t\t\t\t\t}\n// \t\t\t\t}\n\n// \t\t\t\tcart.token = (bouncex.vars.logged_in || jQuery('#MyAccount').length > 0) ? 'logged in' : bouncex.ibx._cookies.read('cartid');\n// \t\t\t\tcart.count = parseInt(jQuery('#lblShoppingCartItems').text());\n// \t\t\t\tbouncex.utk.cart.update(cart);\n// \t\t\t} else if (JSON.parse(bouncex.vars.cart).token === \"logged in\" && bouncex.vars.logged_in === false && jQuery('#MyAccount').length === 0 && window.location.href.indexOf('bx_replen=true') === -1) {\n// \t\t\t\tbouncex.setv('cart', JSON.stringify({\n// \t\t\t\t\t\"count\": 0,\n// \t\t\t\t\t\"token\": bouncex.ibx._cookies.read('cartid')\n// \t\t\t\t}));\n// \t\t\t\tbouncex.setBounceCookie();\n// \t\t\t}\n// \t\t}\n// \t}, 1000);\n\tjQuery(document).on('ajaxComplete.bx-ca', function(e, xhr, settings) {\n\t\tif (xhr.status === 200 && settings.url.indexOf('/forms/AddToCart') > -1) {\n\t\t console.log('add to cart 1')\n\t\t\tvar checkExist = setInterval(function() {\n\t\t\t\tif (jQuery('.NewCart').length > 0 && (jQuery('.divNewHeaderWrapper #lnkBtnCartItems').length > 0 || bouncex.cookie.d === \"p\")) {\n\t\t\t\t\tclearInterval(checkExist);\n\t\t\t\t\tif (pageType === 'product' && jQuery('.divError').text() !== \"Pre-Order This Title\" && jQuery('#imgLargeProductImage').attr('src').indexOf('noimage') === -1 && jQuery('#divMainAddtoCartWrapper .divAddToCartButtonContainer input').val() !== \"BackĀ Order\") {\n\t\t\t\t\t\tvar cart = {};\n\t\t\t\t\t\tvar count = 0;\n\n\t\t\t\t\t\tif (jQuery('#lblShoppingCartItems').text() !== \"\") {\n\t\t\t\t\t\t\tcount = parseInt(jQuery('#lblShoppingCartItems').text());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery('.tdShoppingCartQty').each(function(i, v) {\n\t\t\t\t\t\t\t\tcount += parseInt(jQuery(v).find('input').val());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcart.newItem = jQuery('meta[name=\"productid\"]').attr('content');\n\t\t\t\t\t\tcart.count = count;\n\n\t\t\t\t\t\tautoUpdate(cart);\n\t\t\t\t\t} else if (pageType !== 'product') {\n\t\t\t\t\t\tvar cart = {};\n\t\t\t\t\t\tvar count = 0;\n\n\t\t\t\t\t\tif (jQuery('#lblShoppingCartItems').text() !== \"\") {\n\t\t\t\t\t\t\tcount = parseInt(jQuery('#lblShoppingCartItems').text());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery('.tdShoppingCartQty').each(function(i, v) {\n\t\t\t\t\t\t\t\tcount += parseInt(jQuery(v).find('input').val());\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//console.log(jQuery('#divIsbn13 .ATC_divContentTableText').text())\n\t\t\t\t\t\tcart.newItem = jQuery('.divListingContentHolder').filter(function(i,v){\n \treturn jQuery(v).find('.ProductNumber .ContentText').text() == jQuery('#divIsbn13 .ATC_divContentTableText').text();\n }).closest('.divProductListingWrapper').find('input[type=\"submit\"]').attr('data-product-or-style-id');\n\t\t\t\t\t\t//cart.newItem = jQuery('meta[name=\"productid\"]').attr('content');\n\t\t\t\t\t\tcart.count = count;\n\n\t\t\t\t\t\tif (jQuery('.ContentText:contains(' + jQuery('#divIsbn13 .ATC_divContentTableText').text() + ')').closest('.divProductListingWrapper').find('input').val() !== \"Pre-Order\") {\n\t\t\t\t\t\t\tautoUpdate(cart);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\n\t\t\t\t}\n\t\t\t}, 100);\n\n\t\t} else if (xhr.status === 200 && settings.url.indexOf('CurriculumRecommendations/AddToCart') > -1) {\n\t\t\tvar checkExist = setInterval(function() {\n\t\t\t\tif (jQuery('.NewCart').length > 0 && (jQuery('.divNewHeaderWrapper #lnkBtnCartItems').length > 0 || bouncex.cookie.d === \"p\")) {\n\t\t\t\t\tvar cart = {};\n\t\t\t\t\tvar count = 0;\n\t\t\t\t\tvar items = jQuery('.divProductListingWrapper').filter(function(i, v) {\n\t\t\t\t\t\tif (jQuery(v).find('.inputQty').attr('value') != 0) {\n\t\t\t\t\t\t\treturn jQuery(v)\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tvar newIds = []\n\t\t\t\t\titems.each(function(i, v) {\n\t\t\t\t\t\tnewIds.push(jQuery(v).find('.curriculumRecommendedProductLink').attr('data-product-id'));\n\t\t\t\t\t});\n\n\n\t\t\t\t\tif (jQuery('#lblShoppingCartItems').text() !== \"\") {\n\t\t\t\t\t\tcount = parseInt(jQuery('#lblShoppingCartItems').text());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery('.tdShoppingCartQty').each(function(i, v) {\n\t\t\t\t\t\t\tcount += parseInt(jQuery(v).find('input').val());\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tcart.newItem = newIds;\n\t\t\t\t\tcart.count = count;\n\n\t\t\t\t\tautoUpdate(cart);\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t});\n\njQuery(document).ajaxComplete(function(e,x,s){\n if(s.url == \"/mvc/NewsletterSubscription/AddSingleEmail\" && x.status == 200){\n var parentInboxCampaign = 563251; \n var email = jQuery('#txtFooterCokesburyNewsSignUp').val();\n var requestData = { campaignId: parentInboxCampaign, 'user:email': email, 'email':email }; \n if (bouncex.vars.ibx_test) { requestData.testmode = 1; } \n bouncex.utk.requestEmail(requestData);\n }\n});\n\n\tjQuery(document).on('blur.bx-ibx', 'input:not([type=button],[type=password],[type=submit],[type=reset],[type=radio],[type=checkbox],[type=image],[id=q],[id^=gift],[type=\"image\"],[type=hidden],[id=ctl00_Content_txtGiftRegistry])', function() {\n\t\tvar source = jQuery(this).attr(\"id\");\n\t\tif (pageType !== \"gift-card\" || (pageType === \"gift-card\" && source === \"ctl00_Content_txtEmail\")) {\n\t\t\tbouncex.ibx.user(jQuery(this).val(), {\n\t\t\t\t__src: \"v2\"\n\t\t\t});\n\t\t}\n\t});\n\n\n}\n\nbouncex.utk.init();","cjs":"bouncex.ibx.track('event','bouncex conversion');","miw":1,"mibcx":1,"te":1,"cart_rep":{"get":"","set":"var ibxCart = decodeURIComponent(bouncex.ibx._getparam('ibx_cart')),\n cartCount = parseInt(jQuery('.trShoppingCartItem').length);\n\nif (ibxCart && window.location.href.indexOf('/ShoppingCart') > -1 && cartCount === 0){\n\tvar overrideCookie = function (name, value, time) {\n\t\tif(!time) time = 365;\n\t\tvar dt = new Date();\n\t\tdt.setTime(dt.getTime() + time * 24 * 60 * 60 * 1e3);\n\t\tvar exp = \"; expires=\" + dt.toGMTString(),\n\t\tcookie_domain = this.domain ? \"domain=www.\" + this.domain + \";\" : '';\n\t\tdocument.cookie = name + \"=\" + value + exp + \"; path=/;\" + cookie_domain;\n};\n \n overrideCookie('cartid', ibxCart);\n var delimiter = window.location.href.indexOf('?') > -1 ? '&' : '?';\n window.location = window.location.href + delimiter + 'bx-check-replen=true';\n}"},"ulpj":{"spUserID":"espemailid"},"cus":"","miw_exclude":""},"etjson":null,"isre":true,"isru":"isr.bouncex.net/v1/isr/items"} ; bouncex.tag = 'tag3'; bouncex.v2css = '//web.archive.org/web/20180831115520/https://assets.bounceexchange.com/assets/bounce/css/bouncev2.fe6ed2d9bf.css'; 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.push = function(pushData) { bouncex.pushedData.push(pushData); } var script = document.createElement('script'); script.setAttribute('src', '//web.archive.org/web/20180831115520/https://assets.bounceexchange.com/assets/tags/versioned/i_all_12391398b9c37cc37cf6d02bd97e03e5.js'); script.setAttribute('id', 'c.js'); script.setAttribute('data-warpspeed', 'trvU'); document.body.appendChild(script); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", bxBootstrap); } else { bxBootstrap(); } } /* FILE ARCHIVED ON 11:55:20 Aug 31, 2018 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 18:59:48 Apr 28, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ /* playback timings (ms): captures_list: 0.528 exclusion.robots: 0.065 exclusion.robots.policy: 0.059 cdx.remote: 0.048 esindex: 0.007 LoadShardBlock: 474.676 (3) PetaboxLoader3.datanode: 89.915 (4) PetaboxLoader3.resolve: 679.663 (2) load_resource: 308.754 */