(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":6393,"name":"Banana Republic","cookie_name":"bounceClientVisit6393","domain":"gap.com","ct":"bind_to_domain","ally":0,"ei":0,"tcjs":"","cjs":"/* enable.feature.ALLOW_BIG_BANANA_COOKIES */\n// enable.feature.DISABLE_RELOAD_CAMPAIGNS_V2\n/* enable.feature.COMPLIANCE_REFACTOR_ENABLED */","force_https":false,"waypoints":false,"content_width":900,"gai":"","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":1},"burls":[],"ple":false,"fbe":true,"ffs":"","mas":2,"map":1,"gar":true,"ete":1,"ettm":false,"etjs":"/* ---------------------------- SHARED VARIABLES ---------------------------- */\n\nvar CLEAN_URL = bouncex.utils.url.allowParams(),\n excludedKeywords = ['candle', 'boxer', 'brief ', 'sock', 'underwear', 'giftcard', 'swim', 'tights', 'sleep', 'lounge', 'wallet', 'key chain', 'keychain', 'baby', 'hair', 'ring', 'bracelet', 'bangle', 'cuff', 'studs', 'boxers', 'trunk', 'cheeky', 'cuff links', 'tie bar', 'tie', 'collar stays', 'thong'];\n\n/* --------------------------------- HELPERS -------------------------------- */\n\nfunction isValidItemID(id) {\n return id && /\\d{9}/g.test(id) && id.length === 9;\n}\n\nfunction isValidSKU(sku) {\n return sku && /\\d{13}/g.test(sku) && sku.length === 13;\n}\n\nfunction getItemIDFromSKUSpecificURL(url) {\n var sku = url ? bouncex.utils.url.getParam('pid', url) : '';\n return sku.slice(0, 9);\n}\n\nfunction getSkuFromURL(url) {\n var sku = url ? bouncex.utils.url.getParam('pid', url) : '';\n return sku.slice(0, 13);\n}\n\nfunction getItemCategory() {\n var gender = bouncex.utils.getNestedProp('__PRODUCT_PAGE_STATE__.breadcrumbs.division.name', '').toLowerCase(),\n category = bouncex.utils.getNestedProp('__PRODUCT_PAGE_STATE__.breadcrumbs.category.name', '').toLowerCase(),\n productType = bouncex.utils.getNestedProp('__PRODUCT_PAGE_STATE__.productData.productType.styleColorDisplayName', '').toLowerCase();\n\n\n if (category && gender){\n return (gender + ' ' + category);\n }\n \n if (productType && productType != 'needs wpt'){\n return productType;\n }\n\n if (category){\n return category;\n }\n\n return 'global';\n}\n\nfunction getItemId(){\n var url = bouncex.utils.url.allowParams('pid');\n return bouncex.utils.url.getParam('pid', url).slice(0, 9);\n}\n\nfunction getItemImage(){\n var imgPath = jQuery('#product img:first').attr('src');\n return imgPath.indexOf(window.location.origin) === -1 ? window.location.origin + imgPath : imgPath;\n}\n\nfunction isOneSize(){\n return jQuery('.pdp-dimension__text').first().text().toLowerCase() === 'one size';\n}\n\n// if product price strike exists > item is on sale > strike price is the og price > amount price is the sale price \n// if no product price strike > item is not on sale > use amount price as original price > dont set a sale price \nfunction getPrices(){\n\tvar priceObj = {\n \t og: '',\n \t sp: '',\n \t},\n\t\tswatchGroup = jQuery('.swatch--color.swatch-color__selected').closest('.swatch-price-group'),\n\t\tog = swatchGroup.find('.product-price__markdown .product-price__strike'),\n\t\tsp = swatchGroup.find('.amount-price');\n\n\n\tif (!!og.length){\n\t\tpriceObj.og = og.first().text().replace(/[^0-9.]/g, '');\n\t\tpriceObj.sp = sp.first().text().replace(/[^0-9.]/g, '');\n\t\treturn priceObj;\n\t}\n\n\tpriceObj.og = sp.first().text().replace(/[^0-9.]/g, '');\n\treturn priceObj;\n}\n\nfunction isExcluded(itemCopy){\n var excluded = false;\n \n itemCopy = itemCopy.toLowerCase();\n excludedKeywords.forEach(function(elem){\n if (itemCopy.indexOf(elem) > -1) {\n excluded = true;\n }\n });\n return excluded;\n}\n\n/* ------------------------------ ITEM TRACKING ----------------------------- */\n\nfunction getItem() {\n var itemJson = bouncex.parseJSON(jQuery('script[type=\"application/ld+json\"]:contains(name)').first().text(), [{}])[0],\n itemId = getItemId(),\n copy = jQuery('h1[class^=\"pdp-\"]').first().text(),\n itemPrices = getPrices(),\n ogPrice = itemPrices.og,\n salePrice = itemPrices.sp;\n \n if (ogPrice == salePrice){ //failsafe\n salePrice = ''; \n }\n\n return {\n id: itemId,\n copy: copy,\n category: getItemCategory(),\n url: 'https://bananarepublic.gap.com/browse/product.do?pid=' + itemId,\n imageurl: getItemImage(),\n instock: JSON.stringify(itemJson.offers || '').indexOf('InStock') > -1,\n ogprice: ogPrice,\n saleprice: salePrice,\n excluded: isExcluded(copy)\n };\n}\n\nfunction fireViewItem(id) {\n bouncex.push(['view item', {\n 'item:id': id,\n 'item:itemgroupid': id.slice(0, 6)\n }]);\n}\n\nfunction initializeItemEvents() {\n var item;\n\n bouncex.et.onTrue(\n function () {\n item = getItem();\n return isValidItemID(item.id) &&\n !!item.copy &&\n !!item.category &&\n !!item.url &&\n !!item.imageurl;\n },\n function () {\n if (item.copy.toLowerCase().match(/gift ?card/g)) {\n return;\n }\n item.groupid = item.id.slice(0, 6);\n bouncex.push(['item', item]);\n initializeSkuEvents(item.id);\n fireViewItem(item.id);\n initializeATCClickTracking(item.id);\n },\n 10\n );\n}\n\n/* ------------------------------ SKU TRACKING ------------------------------ */\nfunction getSku() {\n var sku = bouncex.utils.getParam('pid');\n return isOneSize() && sku.length === 9 ? sku + '0000' : sku;\n}\n\nfunction initializeSkuEvents(itemId) {\n var lastSkuFired = getSku(),\n skuSelector = 'div[aria-labelledby=\"swatch-label--sizeDimension1\"] .pdp-dimension, div[aria-labelledby=\"swatch-label--Variant\"] .pdp-variant, div[aria-labelledby=\"swatch-label--sizeDimension2\"] .pdp-dimension',\n skuId;\n \n //fire selectSku on page load for items with only 1 SKU\n if (jQuery('.swatch').length === 1 && isOneSize() && isValidSKU(lastSkuFired)){\n fireSelectSku(itemId, lastSkuFired);\n return;\n }\n \n bouncex.et.on(bouncex.document, 'click.bxsku', function (e) {\n\n bouncex.et.onTrue(function(){\n skuId = getSku();\n return isValidSKU(skuId) && skuId !== lastSkuFired;\n }, function(){\n lastSkuFired = skuId;\n fireSelectSku(itemId, lastSkuFired);\n }, 5);\n }, skuSelector);\n}\n\nfunction fireSelectSku(itemId, sku) {\n bouncex.push([\n 'select_sku',\n {\n 'item:id': itemId,\n 'item:itemgroupid': itemId.slice(0, 6),\n 'item:feedid': sku\n }\n ]);\n}\n\n\n/* ---------------------------- CATEGORY TRACKING --------------------------- */\n\nfunction getItemIdsCat() {\n var ids = [];\n\n jQuery('.category-page-0, .cat_product-image a.css-0').each(function (i, e) {\n var id = getItemIDFromSKUSpecificURL(jQuery(e).attr('href'));\n\n if (isValidItemID(id) && ids.indexOf(id) < 0) {\n ids.push(id);\n }\n });\n\n return ids.join(',');\n}\n\nfunction getCategoryObject() {\n return {\n 'page:url': bouncex.utils.url.allowParams(['searchText', 'cid']),\n 'items:ids': getItemIdsCat()\n };\n}\n\nfunction initializeCategoryEvents() {\n var categoryObj;\n\n bouncex.et.onTrue(\n function () {\n categoryObj = getCategoryObject();\n return !!categoryObj['items:ids'].length &&\n !!categoryObj['page:url'];\n },\n function () {\n bouncex.push(['view category', categoryObj]);\n },\n 10\n );\n}\n\nfunction initializeQuickViewEvents() {\n var lastId,\n lastSku;\n bouncex.setInterval2(function () {\n var qvUrl = jQuery('#modal .full-product-info').attr('href') || jQuery('.quick-add__product-info a').attr('href'),\n qvId = getItemIDFromSKUSpecificURL(qvUrl);\n if (isValidItemID(qvId) && qvId !== lastId) {\n lastId = qvId;\n fireViewItem(lastId);\n }\n\n var skuId = jQuery('#size-select :checked').attr('data-sizebusid') || getSkuFromURL(qvUrl);\n if (isValidSKU(skuId) && skuId !== lastSku && isValidItemID(qvId)) {\n lastSku = skuId;\n fireSelectSku(lastId, lastSku);\n }\n }, 1000);\n\n bouncex.et.onVisible('.quick-add.add-to-bag [aria-label=\"Added to Bag\"],.atb-added-icon', function () {\n if (lastId && lastSku) {\n fireAddToCart(lastId, {\n sku: lastSku,\n qty: Number(jQuery('#quantity-btn').text().replace(/[^\\d]/g, '')) || 1\n });\n }\n });\n}\n\n/* ------------------------------- CART EVENTS ------------------------------ */\n\nfunction getCurrentCart() {\n return jQuery('.product-list-container:eq(0) .product-list-item').toArray().reduce(function (items, el) {\n var $card = jQuery(el),\n itemUrl = $card.find('a[href*=\"pid=\"]').attr('href'),\n itemId = getItemIDFromSKUSpecificURL(itemUrl),\n sku = getSkuFromURL(itemUrl);\n if (itemId && sku) {\n items.push({\n item_id: itemId,\n cart_item: {\n sku: sku,\n qty: Number($card.find('.quantity-selector li[aria-selected=\"true\"],.quantity-selector [aria-expanded=\"false\"]').first().text().replace(/[^\\d]/g, '')) || 1\n },\n });\n }\n\n return items;\n }, []);\n}\n\n// items from cart can only be removed on cart page. Any cart change will be tracked via the cart_update event.\n// For cart abandonment sends, the cart_update event's cart_items are combined with any ATC event with a later\n// timestamp. This will allow for the tracking of the removal of items from cart.\nfunction initializeCartChangeListener() {\n var previousCart = getCurrentCart();\n\n bouncex.setInterval2(function () {\n var newCart = getCurrentCart();\n if (JSON.stringify(previousCart) === JSON.stringify(newCart)) {\n return;\n }\n\n if (!newCart.length) {\n fireEmptyCart();\n }\n\n bouncex.push(['cart_update', {\n cart_items: JSON.stringify(newCart)\n }]);\n\n previousCart = newCart;\n\n }, 1000);\n}\n\nfunction fireAddToCart(itemId, replenItem) {\n bouncex.push([\n 'add to cart',\n {\n 'item:id': itemId,\n 'cart:item': bouncex.stringify(replenItem)\n }\n ]);\n\n if (bouncex.vars.cart) {\n return;\n }\n bouncex.setVar('cart', true);\n}\n\nfunction initializeATCClickTracking(itemId) {\n bouncex.et.on(bouncex.document, 'click.bxatc', function (e) {\n if (!jQuery(e.currentTarget).hasClass('add-to-bag-with-selected-size')) {\n return;\n }\n\n var sku = getSku();\n if (!isValidSKU(sku)) {\n return;\n }\n fireAddToCart(itemId, {\n sku: sku,\n qty: Number(jQuery('.pdp-quantity__control').first().text().replace(/[^\\d]/g, '')) || 1\n });\n }, '#AddToBag_add-to-bag__button');\n}\n\nfunction initializeEmptyCartListener() {\n bouncex.et.onVarChange('cart_qty', function (oldVal, newVal) {\n if (bouncex.vars.cart && newVal === 0 && oldVal > 0) {\n fireEmptyCart();\n }\n });\n}\n\nfunction fireEmptyCart() {\n bouncex.push(['empty_cart']);\n bouncex.setVar('cart', false);\n}\n\nfunction initializeCartEvents() {\n bouncex.et.cart.init({\n replenish: function () { },\n replenishmentType: 'single'\n });\n\n // CA - 10/11/2023 Removing Cart Replen for launch \n // bouncex.et.cart.init({\n // replenishmentType: 'ajax',\n // replenish: function (cart) {\n // var deferreds = [];\n\n // var items = cart.items.reduce(function (payload, item) {\n // payload.push({\n // quantity: item.qty,\n // sku: item.sku\n // });\n // return payload;\n // }, []);\n\n // deferreds.push(makeAjaxATCFunc(items));\n\n // deferreds.reduce(\n // function (promise, func) {\n // return promise.then(function () {\n // return func();\n // });\n // },\n // jQuery.Deferred().resolve([])\n // )\n // .then(replenComplete);\n // }\n // });\n\n // function makeAjaxATCFunc(items) {\n // var brand = 'BR',\n // market = 'US';\n\n // return function () {\n // return jQuery.ajax({\n // type: 'POST',\n // url: 'https://api.gap.com/commerce/shopping-bags/items/summary?locale=en_US',\n // data: JSON.stringify({\n // brand: brand,\n // market: market,\n // partialReservation: true,\n // items: items\n // }),\n // headers: {\n // 'Content-Type': 'application/json',\n // 'x-gap-apimode': 'leapfrog',\n // 'brand': brand,\n // 'market': market,\n // 'channel': 'WEB',\n // 'clientid': 'PDP',\n // },\n // contentType: 'application/json',\n // xhrFields: {\n // withCredentials: true\n // }\n // });\n // };\n // }\n\n // function replenComplete() {\n // var currentUrl = bouncex.utils.url.allowParams('pid'),\n // queryString = currentUrl.indexOf('?pid=') > -1 ? '&bx_replen=true#pdp-page-content' : '?bx_replen=true';\n \n // window.location.href = currentUrl + queryString;\n // }\n}\n\n/* --------------------------- INITIALIZE TRACKING -------------------------- */\n\nfunction isValidDomain() {\n return CLEAN_URL.indexOf('bananarepublic.gap.com') > -1;\n}\n\nfunction isEn() {\n return (bouncex.html.attr('lang') || '').indexOf('en') > -1;\n}\n\nfunction isValidForTracking() {\n return isValidDomain() && isEn();\n}\n\nfunction init() {\n if (!isValidForTracking()) {\n return;\n }\n\n initializeCartEvents();\n initializeQuickViewEvents();\n initializeEmptyCartListener();\n\n switch (bouncex.website.pts) {\n case 'category':\n case 'search':\n initializeCategoryEvents();\n break;\n case 'product':\n initializeItemEvents();\n break;\n case 'cart':\n initializeCartChangeListener();\n break;\n default:\n break;\n }\n}\n\ninit();","dge":true,"bxidLoadFirst":false,"pie":false,"cme":true,"gbi_enabled":0,"bpush":false,"pt":{"cart":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/shopping-bag"}]]},"category":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/category"}]]},"checkout":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/checkout"}]]},"home":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname === '/';"}]]},"product":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/product"}]]},"search":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/search"}]]}},"els":{"blank_site_element":""},"vars":[{"name":"logged_in","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"!bouncex.state.mobile && jQuery('#sitewide-account-button-greeting:contains(\"Sign In\")').length === 0;\n","trigger":""},{"name":"ever_logged_in","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.logged_in || null;","trigger":""},{"name":"cart_qty","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"(function () {\n if (bouncex.website.pts !== 'checkout') {\n var cartText = jQuery('[data-testid=\"bag-count\"]').first().text().replace(/[^\\d]/g, '');\n return cartText ? Number(cartText) : null;\n }\n\n return null;\n})();\n","trigger":""},{"name":"cart_value","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"(function () {\n if (bouncex.website.pts === 'cart' && !!jQuery('#subTotal-value .price').length) {\n return +jQuery('#subTotal-value .price').text().replace(/[^0-9.]/g, '');\n }\n\n var cartText = jQuery('.insitu-modal__subtotal').text().replace(/[^0-9.]/g, '');\n return cartText ? Number(cartText) : null;\n})();","trigger":""},{"name":"in_stock","polling":"none","persist":"no","page_types":[],"testmode":true,"default":"false","code":"","trigger":""},{"name":"submitted_onsite","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"jQuery('.emailSubmitBtn:disabled').length > 0 || null;","trigger":""},{"name":"page_url","polling":"none","persist":"no","page_types":["category","search"],"testmode":true,"default":"false","code":"","trigger":""},{"name":"logged_in_identified","polling":"none","persist":"visit","page_types":[],"testmode":true,"default":"false","code":"null;","trigger":"pageload"},{"name":"cart","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"cookie_modal_present","polling":"all","persist":"no","page_types":[],"testmode":true,"default":"false","code":"null;","trigger":"pageload"},{"name":"page_type","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts;","trigger":"pageload"},{"name":"attentive_visible","polling":"all","persist":"no","page_types":[],"testmode":true,"default":"false","code":"jQuery('#attentive_overlay').length > 0;","trigger":"pageload"},{"name":"items_in_cart","polling":"none","persist":"permanent","page_types":[],"testmode":true,"default":"false","code":"null;","trigger":"pageload"},{"name":"optimizely_visible","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"window.wknd_trigger;","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":"","cjs":"","miw":0,"mibcx":1,"te":1,"cart_rep":{"get":"","set":""},"ulpj":{},"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 currentPageIdentifier: function() {\n var url = bouncex.utils.url.allowParams('pid');\n return bouncex.utils.url.getParam('pid', url).slice(0, 9);\n },\n shouldCheckSpa: function() {\n return window.location.href.indexOf('/product') > -1;\n } \n});","crs":{"integrations":null,"pageCount":null},"mat":0,"math":0,"cpnu":"coupons.bounceexchange.com","dfpcms":0,"sms":{"optm":"","eventSharing":false,"shqId":"","enabled":0},"pde":true,"fmc":["US"],"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":"","tag_state_domain":"api.bounceexchange.com"} ; 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: 1 }; bouncex.assets = {"ads":"f1562c682b41d65d1608e7f2508f6d9b","creativesBaseStyles":"a53944a2","gpsAuction":"0aafcb326e2e52aae2936349578031e7","inbox":"02aca5df0e176b8810a86da97ac05424","onsite":"0e56ab6ba004ee080ce3deb3edae35e9","sms":"e39203556bab2366e56296ce42e974a7","websdk":"437a9f1c542faaacb49577b266dc4d73"}; 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.br.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_8898b9bce26384554e87ba533505520e.br.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"}]; 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); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", bxBootstrap); } else { bxBootstrap(); }})();