(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":3838,"name":"Huda Beauty INTL","cookie_name":"bounceClientVisit3838","domain":"hudabeauty.com","ct":"fp_local_storage","ally":0,"ei":0,"tcjs":"","cjs":"/* cart_value & cart_currency updates */\n(function() {\n $(document).ajaxComplete(function(event, xhr, settings) {\n if (settings.url.indexOf('Cart-AddProduct') > -1) {\n var subTotal = xhr.responseJSON.cart.totals.subTotal\n bouncex.setVarAndReload('cart_value', subTotal.replace(/[^0-9.]/g,''));\n bouncex.setVarAndReload('cart_currency', subTotal.replace(/[0-9\\n.]/g,''));\n }\n });\n })();\n \n /* enable.feature.COMPLIANCE_REFACTOR_ENABLED */\n ","force_https":false,"waypoints":false,"content_width":900,"gai":"UA-80303403-1","swids":"","sd":0,"ljq":"auto","campaign_id":0,"is_preview":false,"aco":{"first_party_limit":"3500","local_storage":"1"},"cmp":{"gdpr":1,"whitelist_check":1},"burls":[],"ple":false,"fbe":true,"ffs":"","mas":2,"map":1,"gar":true,"ete":1,"ettm":false,"etjs":"/* ---------------------------- SHARED VARIABLES ---------------------------- */\nvar SKU_SELECTOR = '.color-guide-swatch',\n ATC_SELECTOR = '.add-to-cart',\n CATEGORY_TITLE_SELECTOR = 'h1.page-title, h1.display-heading',\n EMPTY_CART_SELECTOR = 'h1.f-fpm:visible';\n/******** helper functions *********/\nfunction getUrl() {\n return bouncex.utils.url.allowParams();\n}\nfunction isValidDomain() {\n return getUrl().indexOf(\"hudabeauty\") > -1;\n}\n\nfunction isEnglish() {\n return jQuery('html').attr('lang') === 'en';\n}\n\nfunction checkValidLanguage(text) {\n return /^[0-9a-zA-Z@!#$%^&*()-_/\\\\<>?:;\"'\\{\\[\\}\\]|~`]+$/.test(text.replace(/ /g, ''));\n}\n\nfunction getPageUrl() {\n var url = bouncex.utils.url.allowParams('cgid, srule');\n\n var defaultUrl = url.split('/').map(function (el) {\n if (el.indexOf('en_') > -1) {\n return 'default';\n } else if (el !== ' ') {\n return el;\n }\n }).join('/');\n\n return defaultUrl;\n}\n\nfunction getSku() {\n var sku = jQuery('.product-id').text().toString();\n\n if (sku.indexOf('Set_') > -1) {\n sku = jQuery('.product-detail[data-pid]').attr('data-pid');\n }\n return sku;\n}\n\nfunction getItemCopy() {\n return jQuery('h1.product-name').not('.hidden-sm-down').text().trim();\n}\n\nfunction getCategoryTitle() {\n return jQuery(CATEGORY_TITLE_SELECTOR).text().trim();\n}\n\nfunction getItemImage() {\n return jQuery('#zoom-v')[0].href || '';\n}\n\nfunction getPageType() {\n if (document.querySelectorAll('.product-detail').length > 0) {\n return 'product';\n }\n if (document.querySelectorAll('.search-results').length > 0 && getCategoryTitle().toLowerCase() !== 'search') {\n return 'category';\n }\n if (document.querySelectorAll('.search-results').length > 0 && getCategoryTitle().toLowerCase() === 'search') {\n return 'search';\n }\n}\n\nfunction getIdFromUrl(url) {\n var noParam = url ? bouncex.utils.url.allowParams([], url) : \"\";\n return noParam.split('/').pop().split('-').pop().split('.').shift();\n}\n\nfunction inStock(){\n\tif (!!jQuery('.product-attributes div[data-attr=\"size\"]').length){\n\t\treturn sizesInStock();\n\t}\n\n\treturn jQuery('.bisn-label:visible').length === 0 && jQuery('button[data-addtocarttext=\"OUT OF STOCK\"]').length === 0;\n}\n\nfunction sizesInStock(){\n\tvar sizeInStock = false;\n\tjQuery('.product-attributes div[data-attr=\"size\"] .attr-main-wrapper a').each(function(e, i){\n\t\tif (jQuery(i).hasClass('selectable')){\n\t\t\tsizeInStock = true;\n\t\t}\n\t});\n\treturn sizeInStock;\n}\n\nfunction buildItem() {\n var url = getPageUrl();\n return {\n id: getIdFromUrl(url),\n copy: getItemCopy(),\n category: bouncex.vars.item_category,\n price: bouncex.vars.prod_price,\n imageurl: getItemImage(),\n url: url,\n instock: inStock(),\n };\n}\n\n/******** item tracking *********/\nfunction trackItem(id) {\n var item = buildItem(),\n url = jQuery('link[rel=\"canonical\"]').attr('href');\n\n if (checkValidLanguage(item.category)) {\n bouncex.push(['item', item]);\n bouncex.push(['view item', {\n 'item:id': item.id,\n // 'item:itemgroupid': item.id, //getIdFromUrl(url)\n }]);\n }\n\n // not tracking select sku on item sets \n if (item.id.indexOf('Set_') === -1) {\n trackViewItem();\n trackSku();\n }\n // fire select_sku if landing on a PDP with no variations\n if (jQuery('.product-attributes').length === 0) {\n firSelectSku();\n }\n}\n\nfunction trackViewItem() {\n bouncex.on(jQuery(SKU_SELECTOR), 'click.bx', colorSpecificViewItem);\n}\n\nfunction colorSpecificViewItem() {\n bouncex.setTimeout2(function () {\n var sku = getSku(),\n item = buildItem();\n item.id = sku;\n item.url = 'https://hudabeauty.com/us/default/-' + sku + '.html';\n\n bouncex.push(['item', item]);\n bouncex.push(['view item', {\n 'item:id': item.id,\n }]);\n }, 2000)\n}\n\n/******** sku tracking *********/\nfunction trackSku() {\n bouncex.on(jQuery(SKU_SELECTOR), 'click.bx', firSelectSku);\n}\n\nfunction firSelectSku() {\n bouncex.setTimeout2(function () {\n var sku = getSku(),\n prevSku = bouncex.vars.previous_sku.toString(),\n url = jQuery('link[rel=\"canonical\"]').attr('href');\n bouncex.push(['select_sku', {\n 'item:id': sku,\n 'item:itemgroupid': sku, //getIdFromUrl(url)\n 'item:feedid': sku\n }]);\n bouncex.setv('previous_sku', sku);\n setBounceCookie();\n }, 1000);\n}\n\n/*************** Category Tracking ***************/\nfunction trackCategory() {\n if (jQuery('.productItem').length > 0 && bouncex.vars.items_ids) {\n bouncex.push(['view category', {\n 'items:ids': bouncex.vars.items_ids,\n 'page:url': bouncex.utils.url.allowParams(['q', 'lang']),\n }]);\n }\n}\n\n/******** track Add To Cart & User Email *********/\nfunction trackCartAndUserEmail(e, xhr, s) {\n if (s.url.indexOf('Cart-AddProduct') > -1) {\n var itemId = bouncex.utils.url.getParam('pid', s.data);\n\n if (itemId.indexOf('Set_') > -1) {\n itemId = bouncex.utils.url.getParam('productSetId', s.data);\n }\n\n bouncex.push(['add to cart', { 'item:id': itemId }]);\n bouncex.setv('cart_set', true);\n setBounceCookie();\n }\n\n if (s.url.indexOf('Account-Login') > -1) {\n var email = bouncex.utils.url.getParam('loginEmail', s.data);\n\n bouncex.setv('user_email', email);\n setBounceCookie();\n }\n}\n\n/******** track logged in user *********/\nfunction trackLoggedInUser() {\n if (window.location.href.indexOf('account') > -1 && !bouncex.vars.logged_in_identified) {\n bouncex.push(['user', {\n email: bouncex.vars.user_email,\n source: 'LoggedIn'\n }]);\n bouncex.setv('logged_in_identified', true);\n setBounceCookie();\n }\n}\n\n/******** track empty cart *********/\nfunction trackEmptyCart() {\n if (bouncex.vars.cart_set && bouncex.vars.cart_qty === 0) {\n bouncex.push(['empty_cart', {}]);\n bouncex.setv('cart_set', false);\n setBounceCookie();\n }\n}\n\n/*************** Cart Tracking ***************/\nfunction cartValueChangeTracker() {\n bouncex.et.onVarChange('cart_value', function (oldV, newV) {\n bouncex.push([\"cart_value\", { \"value\": newV }]);\n })\n}\n\nfunction initCartAndUserTracking() {\n bouncex.et.cart.init({\n replenish: function () { },\n replenishmentType: 'single'\n });\n bouncex.et.on(jQuery(document), 'ajaxComplete', trackCartAndUserEmail);\n bouncex.et.onVarChange('cart_qty', trackEmptyCart);\n trackLoggedInUser();\n cartValueChangeTracker();\n}\n\n/******** itiniate tracking code *********/\nif (isValidDomain() && isEnglish()) {\n bouncex.setTimeout2(function () {\n initCartAndUserTracking();\n switch (getPageType()) {\n case 'product':\n trackItem();\n break;\n case 'category':\n trackCategory();\n break;\n default:\n break;\n }\n }, 1000);\n}","dge":false,"bxidLoadFirst":false,"pie":false,"cme":false,"gbi_enabled":0,"bpush":false,"pt":{"cart":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/cart"}]]},"category":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"not_contains","prop2":"","prop3":"","val":"/Search-Show?"}],[{"activation":"js","prop":"","prop2":"","prop3":"","val":"document.querySelectorAll('.search-results').length > 0 && window.location.href.indexOf('/search') === -1;"}]]},"checkout":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/checkout"}]]},"home":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/home"},{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.pagetype === \"home\";"}]]},"product":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"document.querySelectorAll('.product-detail').length > 0;"}]]},"search":{"testmode":false,"val":[[{"activation":"current_page_url","prop":"contains","prop2":"","prop3":"","val":"/search?"}]]}},"els":{"CART - Checkout Button":"","CART - Promo Code Apply Button":"","CART - Promo Code Box":"","CAT - Product Grid Image":"","CAT - Quickview Box":"","CAT-AddtoCartButton":"","CAT-QuickviewAddtoCart":"","Footer":"","Navigation bar":"","PDP - Add to Cart Button":"","PDP - Color Option":"","PDP - Hero Image":"","PDP - Product Name":"","PDP - Product Price":"","PDP - Quantity Option":"","PDP - Review Stars":"","PDP - Size Option":"","PDP - Thumbnail Image":"","SEARCH - Product Grid Image":""},"vars":[{"name":"logged_in","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tvar user = bouncex.utils.gtmLookup('user');\n\tif (user) {\n\t\treturn bouncex.utils.gtmLookup('user.type') === 'Logged in';\n\t}\n\treturn null;\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":"jQuery('.minicart-quantity:visible').text().replace(/[^0-9]/g, '') || null;","trigger":""},{"name":"cart_value","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"(function() {\n /* If cart is empty */\n\tif (jQuery('.minicart-quantity:visible').text().replace(/[^0-9]/g, '') === \"0\") {\n\t\treturn 0;\n\t}\n\t/* If minicart modal displays a subtotal */\n\tif (jQuery('li.minicart p.text-right.sub-total').length > 0) {\n\t return Number(jQuery('li.minicart p.text-right.sub-total').text().replace(/[^0-9.]/g, ''));\n\t}\n\t/* Cartpage and checkout page are sources of truth for cart_value. Minicart modal does not update correctly */\n if (bouncex.website.pts === 'cart') {\n /* Toggling the shipping threshold on and then removing it will leave subtotal with shipping costs included. If that happens, the site provides an incorrect subtotal. The following code checks for the correct cart_value and runs a computation if it is wrong */\n var $subtotal = Number(jQuery('span.price').text().replace(/[^0-9.]/g, ''));\n var $shippingCost = Number(jQuery('p.shipping-cost').eq(0).text().replace(/[^0-9.]/g, ''));\n\t\tvar $shippingDiscount = Number(jQuery('.shipping-discount p.shipping-discount-total:visible').eq(0).text().replace(/[^0-9.]/g, ''));\n\t\tvar $taxes = Number(jQuery('p.tax-total').eq(0).text().replace(/[^0-9.]/g, ''));\n var $estimatedTotal = Number(jQuery('.grand-total-container span.grand-total, .grand-total-container p.grand-total').eq(0).text().replace(/[^0-9.]/g, ''));\n /* Runs when subtotal is wrong and below shipping threshold. */\n if (($subtotal + $shippingCost + $taxes) > $estimatedTotal && $shippingDiscount === 0) {\n \treturn ($subtotal - $shippingCost).toFixed(2);\n /* Runs when subtotal is right or above shipping threshold. */\n } else if (($subtotal + $shippingCost + $taxes) <= $estimatedTotal || $shippingDiscount > 0) {\n \treturn $subtotal;\n }\n }\n if (bouncex.website.pts === 'checkout') {\n return Number(jQuery('.sub-total').eq(0).text().replace(/[^0-9.]/g, ''));\n }\n return null;\n})();","trigger":""},{"name":"prod_price","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts === 'product' ? Number(jQuery('.prices .price .value').last().text().replace(/[^0-9\\.]/g, '')) : null;","trigger":""},{"name":"prod_name","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts === 'product' && jQuery('h1.product-name:visible').text().trim();","trigger":""},{"name":"in_stock","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts === 'product' && jQuery('.add-to-cart').text().toLowerCase().indexOf('sold out') <= -1;","trigger":""},{"name":"submitted_onsite","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"jQuery('.f-viva.thankyou-message:visible').length > 0 || null;","trigger":""},{"name":"item_id","polling":"none","persist":"no","page_types":["product"],"testmode":false,"default":"false","code":"jQuery('.product-detail[data-pid]').attr('data-pid');","trigger":""},{"name":"items_ids","polling":"none","persist":"no","page_types":["category","search"],"testmode":false,"default":"false","code":"jQuery('.product[data-pid]').toArray().map(function(element) {\n\treturn jQuery(element).attr('data-pid');\n}).join(',');","trigger":""},{"name":"item_url","polling":"none","persist":"no","page_types":["product"],"testmode":true,"default":"false","code":"","trigger":""},{"name":"item_image_url","polling":"none","persist":"no","page_types":["product"],"testmode":false,"default":"false","code":"jQuery('#zoom-v')[0].href.split('?')[0] + '?' + jQuery('#zoom-v')[0].href.split('?')[1].split('&').map(function(text){\n\tvalues = text.split('=')\n\tif(values[0] === 'sw' || values[0] === 'sh') {\n\t\tvalues[1] = '300'\n }\t\n\treturn values.join('=')\n}).join('&')","trigger":""},{"name":"item_category","polling":"none","persist":"no","page_types":["product"],"testmode":false,"default":"false","code":"jQuery('.breadcrumb').find('li').slice(-1)[0].innerText.trim() || 'other';","trigger":""},{"name":"page_url","polling":"none","persist":"no","page_types":["category","search"],"testmode":false,"default":"false","code":"window.location.origin + window.location.pathname;","trigger":""},{"name":"item_copy","polling":"none","persist":"no","page_types":["product"],"testmode":false,"default":"false","code":"jQuery('.product-name').not('.hidden-sm-down').text()","trigger":"pageload"},{"name":"cart","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"previous_sku","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"item_groupid","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('#yotpo-bottomline-top-div').attr('data-product-id');","trigger":"pageload"},{"name":"user_email","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"cart_set","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"us_domain","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('button[data-id=\"hudaCountrySelector\"]').text().toLowerCase().indexOf('united states') > -1;","trigger":"pageload"},{"name":"cart_set_international","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"logged_in_identified","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"wknd_modal_esp_datafield","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var blog = jQuery('body.page-blog');\n var wishful = jQuery('div.page[data-querystring=\"cgid=wishful\"]');\n if (blog.length > 0) {\n return 'Blog';\n } else if (wishful.length > 0) {\n return 'Wishful';\n }\n return 'Huda';\n})();","trigger":"pageload"},{"name":"cart_currency","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"atc_modal_visible","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('#addedToCartModal.show').length > 0;","trigger":"pageload"},{"name":"cart_item_images","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var cartQty = jQuery('.minicart-quantity:visible').text().replace(/[^0-9]/g, '');\n \n if(cartQty === '' || cartQty === '0') {\n return false;\n }\n \n\tvar $itemImages = jQuery('.cart .product-image'),\n\t\timagesArr = [],\n\t\timage;\n\n\tif(!$itemImages.length) {\n\t\treturn null;\n\t}\n\t\n\tfor (var i = 0; i < $itemImages.length; i++) {\n\t var $itemImg = $itemImages.eq(i);\n\n\t // if ($itemImg.closest('.product-line-item, .product-info').find('.line-item-total-price-amount').text().trim().replace(/[^0-9.]/g,'') !== '0.00') {\n \t\timage = $itemImg.attr('src').split('?')[0].trim();\n \n \t\tif (i < 3) {\n \t\t\timagesArr.push(image);\n \t\t}\n\t // }\n\t}\n\t\n\treturn imagesArr.join(', ') || false;\n}());","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":0,"te":1,"cart_rep":{"get":"","set":""},"ulpj":{"bxid":"espemailid"},"cus":"","miw_exclude":"","enabled":1},"etjson":null,"osre":true,"osru":"osr.bounceexchange.com/v1/osr/items","checkDfp":false,"gamNetwork":"","spa":0,"spatm":1,"preinit_cjs":"","crs":{"integrations":null,"pageCount":null},"mat":0,"math":0,"cpnu":"coupons.bounceexchange.com","dfpcms":0,"sms":{"optm":"","eventSharing":false,"shqId":"","enabled":0},"pde":false,"fme":false,"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":"261345588","ga4_measurement_id":"G-M81FB0W6BW","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":"581f60941d61db08a2ebc76b84116dcd","creativesBaseStyles":"a53944a2","gpsAuction":"bbb80866120d17013073bb6d284cbd6b","inbox":"8b00c97e2219e5686c0a4fcd0a475cf3","onsite":"0e56ab6ba004ee080ce3deb3edae35e9","sms":"e39203556bab2366e56296ce42e974a7","websdk":"fb3da6ba1a7a78e95cf94d2dc9e22138"}; 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_21ccd07868faedfb910eb6abb0bce064.br.js'); script.setAttribute('async', 'async'); document.body.appendChild(script); bouncex.initializeTag = function() {}; }; document.body.appendChild(runtime); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", bxBootstrap); } else { bxBootstrap(); }})();