(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":2080,"name":"Biz Journals","cookie_name":"bounceClientVisit2080","domain":"bizjournals.com","ct":"fp_local_storage","ally":0,"ei":0,"tcjs":"","cjs":"/* enable.feature.DISABLE_RELOAD_CAMPAIGNS_V2 */\n/* enable.feature.COMPLIANCE_REFACTOR_ENABLED */\n\n// GO - Omniture event tracking\nbouncex.omnitureLinkTrack = function(campaignLabel, action) {\n try{\n var reformattedLabel = reformatLabel(campaignLabel);\n \n if (reformattedLabel) {\n var eventName = reformattedLabel + ' - ' + action;\n window.s.linkTrackVars = 'eVar40';\n window.s.eVar40 = eventName;\n window.s.tl();\n }\n } catch (e) {\n console.error('BX Omniture Error: ' + e);\n }\n};\n\n// GO: Reformat label to fit Omniture event max length\nfunction reformatLabel(ga_label) {\n var purposeRegxS = /(^(.*?)-)/g,\n parentIdRegxS = /( \\(\\d+\\)\\:.*?)/g,\n nameRegxS = /(?:variation -|control -)(.*)(?=)/;\n\n if (purposeRegxS.test(ga_label) && parentIdRegxS.test(ga_label) && nameRegxS.test(ga_label)) {\n return (ga_label.match(purposeRegxS) + ga_label.match(parentIdRegxS) + ga_label.match(nameRegxS)[1]);\n }\n return false;\n}\n\n// MW - set email_submitted CV\nif (!bouncex.vars.email_submitted) {\n jQuery(document).on('ajaxSuccess.bx-cv', function(event, xhr, settings){\n if (xhr.status === 200 && settings.url.indexOf('email/index.json') > -1){\n bouncex.setv('email_submitted', true);\n bouncex.setBounceCookie();\n bouncex.reload_campaigns();\n }\n });\n}\n\n// set event_qty via squad up \ndocument.addEventListener(\"shoppingCartUpdated\", function (e) {\n var shoppingCartData = e.detail;\n var ticketTypesSelected = shoppingCartData.length;\n var qty = 0;\n var counter = 0;\n \n if (ticketTypesSelected > 1){\n for (var i = 0; i < ticketTypesSelected; i++){\n qty += shoppingCartData[i].quantity;\n }\n } else {\n qty = shoppingCartData[0].quantity;\n }\n\n if (qty !== Number(bouncex.vars.event_qty)) {\n bouncex.setv('event_qty', qty);\n bouncex.setBounceCookie();\n bouncex.reload_campaigns();\n }\n}, false);\n \n// event conversion \ndocument.addEventListener(\"orderSuccessful\", function (e) {\n var orderData = e.detail;\n\n bouncex.push(['conversion', {\n amount: orderData.total,\n email: jQuery('input[name=\"email\"').val(),\n goal: 'Event', \n qty: orderData.items.length\n }]);\n \n}, false);\n\n// MW - marketo form https://www.wrike.com/open.htm?id=223554063\nbouncex.marketoForm = {\n init: function(ca_id) {\n if (typeof this.marketoCode === 'undefined') {\n this.setMarketoCode();\n }\n \n if (!!this.marketoCode) {\n this.loadScript();\n this.loadForm(ca_id);\n }\n },\n\t\n\t/* set marketoCode */\n\tsetMarketoCode: function() {\n\t\tvar marketo_map = { \"albany\": 1203, \"albuquerque\": 1239, \"atlanta\": 1241, \"austin\": 1243, \"baltimore\": 1244, \"birmingham\": 1245, \"boston\": 1248, \"buffalo\": 1249, \"charlotte\": 1260, \"chicago\": 1276, \"cincinnati\": 1277, \"columbus\": 1279, \"dallas\": 1280, \"dayton\": 1281, \"denver\": 1282, \"pacific\": 1283, \"houston\": 1284, \"jacksonville\": 1285, \"kansascity\": 1286, \"losangeles\": 1287, \"louisville\": 1288, \"memphis\": 1289, \"milwaukee\": 1290, \"twincities\": 1291, \"nashville\": 1292, \"newyork\": 1293, \"orlando\": 1294, \"philadelphia\": 1295, \"phoenix\": 1296, \"pittsburgh\": 1297, \"portland\": 1298, \"seattle\": 1299, \"sacramento\": 1300, \"sanantonio\": 1227, \"sanfrancisco\": 1301, \"sanjose\": 1302, \"southflorida\": 1303, \"stlouis\": 1304, \"tampabay\": 1305, \"triad\": 1306, \"triangle\": 1307, \"washington\": 1308, \"wichita\": 1309, \"bizjournals\": 1247 };\n\t \n\t var marketo_subdomain_map = { \"selectalent.bizjournals.com\": 1732};\n\n\t\tvar marketInfo, market;\n\t\t\n\t\tif (jQuery('meta[name=\"market:json\"]').length) {\n\t\t // market from meta tag\n\t\t marketInfo = bouncex.parseJSON(jQuery('meta[name=\"market:json\"]').attr('content'));\n\t\t market = marketInfo.market_code.toLowerCase();\n\t\t this.marketoCode = marketo_map[market] || false;\n\t\t} else {\n\t\t // market info from subdomain\n\t\t market = window.location.hostname.toLowerCase();\n\t\t this.marketoCode = marketo_subdomain_map[market] || false;\n\t\t}\n\t},\n \n // impress - set listeners\n impress: function(ca_id, campaignParams) {\n campaignParams = campaignParams || {}; // in case it's null\n \n var params = {\n $cta: campaignParams.$cta || bouncex.campaigns[ca_id].obj1.find('#bx-element-' + ca_id + '-ffHnYLj'),\n $marketoResponse: campaignParams.$marketoResponse || bouncex.campaigns[ca_id].obj1.find('input[name=\"marketo_response\"]'),\n map: campaignParams.map || { \"email\": \"Email\", \"zip\": \"PostalCode\", \"fname\": \"FirstName\", \"lname\": \"LastName\" }\n };\n \n // if impress happens before their form is done loading, wait\n clearInterval(bouncex.campaigns[ca_id].formReadyInterval);\n bouncex.campaigns[ca_id].formReadyInterval = bouncex.setInterval2(function() {\n if (bouncex.campaigns[ca_id].marketoForm) {\n clearInterval(bouncex.campaigns[ca_id].formReadyInterval);\n this.setListeners(ca_id, params);\n } \n }.bind(this));\n },\n \n // form loading functions\n loadScript: function() {\n if (!window.MktoForms2 && !this.loadedScript) {\n this.loadedScript = true; // only run this once\n var marketoScript = document.createElement('script');\n marketoScript.src = '//app-ab26.marketo.com/js/forms2/js/forms2.min.js';\n document.body.appendChild(marketoScript);\n }\n },\n \n loadForm: function(ca_id) {\n // wait form script to be ready, then load their form\n clearInterval(bouncex.campaigns[ca_id].scriptReadyInterval);\n bouncex.campaigns[ca_id].scriptReadyInterval = bouncex.setInterval2(function() {\n if (window.MktoForms2 && typeof MktoForms2.loadForm === 'function') {\n clearInterval(bouncex.campaigns[ca_id].scriptReadyInterval);\n this.loadMarketoForm(ca_id);\n }\n }.bind(this));\n },\n \n loadMarketoForm: function(ca_id) {\n MktoForms2.loadForm('//app-ab26.marketo.com', '673-UWY-229', this.marketoCode, function(form) {\n bouncex.campaigns[ca_id].marketoForm = form;\n }.bind(this));\n },\n \n setListeners: function(ca_id, params) {\n var marketoForm = bouncex.campaigns[ca_id].marketoForm;\n \n // as user fills out bx inputs, also fill out marketo inputs based on map object\n bouncex.campaigns[ca_id].obj1.find('input').on('change.bx-' + ca_id, function() {\n var name = jQuery(this).attr('name');\n if (params.map[name]) {\n marketoForm.setValues({\n [params.map[name]]: jQuery(this).val()\n });\n }\n });\n \n // set validation listener\n marketoForm.onValidate(function(resp) {\n clearTimeout(bouncex.campaigns[ca_id].submissionTimeout);\n if (!resp) {\n // do a campaign submit so we can see errors\n params.$marketoResponse.val('');\n bouncex.submitCampaignStep(ca_id);\n bouncex.log('not validated');\n } else {\n // if the form times out/server errors, cleared in onSuccess and beginning of onValidate\n bouncex.campaigns[ca_id].submissionTimeout = setTimeout(function() {\n bouncex.log('timed out');\n params.$marketoResponse.val('timed out');\n bouncex.submitCampaignStep(ca_id);\n }, 4000);\n }\n });\n \n marketoForm.onSubmit(function(form){\n // Get the form email field values\n var sEmail = form.vals().Email;\n var chunks = sEmail.split('@');\n var emaildomain = chunks[1];\n \n form.vals({\"Email\":sEmail.toLowerCase(),\"acbj_emailDomain__c\":emaildomain.toLowerCase()});\n bouncex.log(\"Submitted values: \" + JSON.stringify(form.vals()));\n });\n \n // set success listener\n marketoForm.onSuccess(function(resp) {\n bouncex.log('success');\n clearTimeout(bouncex.campaigns[ca_id].submissionTimeout);\n resp = bouncex.stringify(resp);\n params.$marketoResponse.val(resp);\n bouncex.submitCampaignStep(ca_id);\n return false; // prevents reloading of page\n });\n \n // submit marketo form on click of CTA (set to custom!)\n params.$cta.on('click.bx-' + ca_id, function() {\n marketoForm.submit();\n });\n }\n};\n\n/* Custom Trigger Patch - Wrike 1090359338 */\n(function(){\n /* For any of the maxActivationExceptions below, the user should only see one of them per visit. */\n var maxActivationExceptions = ['2099447', '2099416', '2099417'],\n eligibleCampaigns = bouncex.campaigns,\n bypassMaxActivations = false,\n ca_id = '';\n \n for (var campaign in eligibleCampaigns) {\n if (maxActivationExceptions.indexOf(campaign) > -1) {\n bypassMaxActivations = true;\n ca_id = campaign;\n }\n }\n\n if (eligibleCampaigns[ca_id] && bypassMaxActivations && !bouncex.vars.set_custom_max_activation) {\n bouncex.website.mat = 2;\n bouncex.setv('set_custom_max_activation', true);\n bouncex.reload_campaigns('custom', 'manual');\n }\n})();","force_https":false,"waypoints":false,"content_width":0,"gai":"","swids":"","sd":1000,"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":1,"map":1,"gar":true,"ete":0,"ettm":true,"etjs":"","dge":true,"bxidLoadFirst":false,"pie":true,"cme":true,"gbi_enabled":1,"bpush":false,"pt":{"article":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"jQuery('.promo--wide--active').length === 0;"}],[{"activation":"js","prop":"","prop2":"","prop3":"","val":"jQuery('.detail__headline').length > 0;"}]]},"cart":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname.includes('cart');"}]]},"category":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"$('.breadcrumbs__nav').length > 0;"}]]},"checkout":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname.includes('checkout');"}]]},"gallery":{"testmode":true,"val":[[{"activation":"current_page_url","prop":"contains"}]]},"home":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"jQuery('meta[name=\"page:type\"]').attr('content') === 'homepage';"}]]},"subscriber":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"jQuery('.promo--wide--active').length > 0;"}]]},"subscription":{"testmode":false,"val":[[{"activation":"js","prop":"","prop2":"","prop3":"","val":"window.location.pathname.includes('subscribe');"}]]}},"els":{"inline_ecap":"#NewsRiver > div > section:nth-child(1) > div > ol > li:nth-child(6) + li:nth-child(7), #NewsRiver > div > section:nth-child(1) > div > ol > li:nth-child(7) + li:nth-child(8), #section-layout .primary .item--container a:eq(4), #NewsRiver > div > section:nth-child(1) > div > ol > li:nth-child(6), #NewsRiver > div > section:nth-child(2) > div:nth-child(1) > div, #NewsRiver > div > section:nth-child(1) > div > div:eq(0), #NewsRiver > div > section:nth-child(2) > div:nth-child(1) > ol > li:nth-child(1) + li:nth-child(2)","masthead":"#v-article-header"},"vars":[{"name":"journal_name","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[property=\"og:site_name\"]').attr('content');","trigger":""},{"name":"market_name","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var json = jQuery('meta[name=\"market:json\"]').attr('content');\n var marketData;\n if (json) {\n try {\n marketData = JSON.parse(json);\n } catch (e) { return; }\n return marketData.market_name;\n }\n})();","trigger":""},{"name":"article_industry","polling":"none","persist":"no","page_types":[],"testmode":true,"default":"false","code":"jQuery('.detail__header .meta-list dd:eq(0)').text().trim().replace(/,$/, '');","trigger":""},{"name":"home_page","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[name=\"page:type\"]').attr('content') === 'homepage';","trigger":""},{"name":"subscriber_article","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[property=\"og:type\"]').attr('content') === 'article' && jQuery('.meta-item:contains(\"Subscriber Content\")').length > 0 || (typeof window.aaData !== 'undefined' && aaData.isPremium === 'yes') || (typeof window.__page__ !== 'undefined' && __page__.isPremium);","trigger":""},{"name":"free_article","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[property=\"og:type\"]').attr('content') === 'article' && jQuery('.paywall--premium').length === 0 && typeof aaData !== 'undefined' && aaData.isPremium === 'no' && (typeof window.__page__ !== 'undefined' && !__page__.isPremium);","trigger":""},{"name":"sponsored_article","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[property=\"og:type\"]').attr('content') === 'article' && jQuery('.meta-item:contains(\"Sponsored Content\")').length > 0;","trigger":""},{"name":"logged_in","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var log_value = localStorage[\"bizj.user\"] ? JSON.parse(localStorage[\"bizj.user\"]).type : null; \n var logged_in = false;\n\n if (log_value === 'loggedin' || log_value === 'premium' && log_value !== 'anonymous' && log_value !== 'light'){\n logged_in = true;\n } \n\n return logged_in;\n})();","trigger":""},{"name":"ever_logged_in","polling":"none","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 $prods = '';\n if (window.location.href.indexOf('/checkout') > -1) {\n\t\t$prods = jQuery('.product_qty');\n } else if (window.location.href.indexOf('/cart') > -1) {\n $prods = jQuery('.cart-item__quantity-price div.px-lg-4');\n }\n if ($prods.length > 0) {\n var qty = 0;\n $prods.each(function(){\n qty += parseInt(jQuery(this).text());\n });\n return qty;\n }\n})();","trigger":""},{"name":"logos","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var json = jQuery('meta[name=\"market:json\"]').attr('content');\n var filtered_logos = {};\n var marketData;\n if (json) {\n try {\n marketData = JSON.parse(json);\n } catch (e) {return false;}\n filtered_logos[marketData.market_code] = bouncex.logos[marketData.market_code];\n return JSON.stringify(filtered_logos);\n }\n})();","trigger":""},{"name":"subscriber_any","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var user = JSON.parse(localStorage.getItem(\"bizj.user\"));\n if (user && user.noembargo && user.noembargo.length > 0) {\n\t\treturn true;\n }\n})();\n","trigger":""},{"name":"subscriber_market","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var user = JSON.parse(localStorage.getItem(\"bizj.user\"));\n var market = jQuery('meta[name=\"market\"]').attr(\"content\");\n if (market && user && user.noembargo && user.noembargo.length > 0) {\n\t\tvar embargoList = user.noembargo;\n\t\treturn embargoList.indexOf(market.toLowerCase()) !== -1;\n }\n})();\n","trigger":""},{"name":"articles_this_visit","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"(function(){\n var articlesThisVisit = bouncex.vars.articles_this_visit || null;\n\n if (bouncex.vars.free_article){\n articlesThisVisit += 1;\n }\n\n return articlesThisVisit || null;\n\n})();","trigger":""},{"name":"article_meter","polling":"all","persist":"permanent","page_types":[],"testmode":true,"default":"false","code":"(function(){\n try {\n var paywallHistory = JSON.parse(localStorage.getItem('bizj.paywallMeter'));\n\t return paywallHistory && paywallHistory.pageIds ? paywallHistory.pageIds.length : null;\n } catch(e) {\n return 0;\n }\n})();","trigger":""},{"name":"market_code","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"","code":"(function() {\n var code = bouncex.utils.getNestedProp('aaData.contentCity', '') || '';\n \n if (!code || code === 'subscribe'){\n code = jQuery('meta[name=\"market\"]').attr('content');\n }\n \n if (code === 'subscribe') {\n code = null;\n }\n return code;\n})();","trigger":""},{"name":"subscription_in_cart","polling":"none","persist":"visit","page_types":[],"testmode":true,"default":"false","code":"(function() {\n if (bouncex.website.pts === 'cart') {\n var itemsInCart = bouncex.utils.getNestedProp('aaData.items', []);\n for (var i = 0; i < itemsInCart.length; i++) {\n if (itemsInCart[i].item_name) {\n return itemsInCart[i].item_name.indexOf('Subscription') > -1;\n }\n }\n return false;\n }\n return null;\n})();","trigger":""},{"name":"email_submitted","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"subscription_market_in_cart","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n if (window.aaData && window.aaData.products) {\n var sku = window.aaData.products[0].split(';').filter(function(s){ return /000[1-4][a-zA-Z][a-zA-Z]/.test(s); })[0];\n \n var data={\"BZ\":\"bizjournals\", \"AL\":\"albany\", \"AQ\":\"albuquerque\", \"AT\":\"atlanta\", \"AU\":\"austin\", \"BA\":\"baltimore\", \"BB\":\"birmingham\", \"BO\":\"boston\", \"BU\":\"buffalo\", \"CH\":\"charlotte\", \"CG\":\"chicago\", \"CI\":\"cincinnati\", \"CO\":\"columbus\", \"DA\":\"dallas\", \"DY\":\"dayton\", \"DE\":\"denver\", \"HO\":\"houston\", \"JA\":\"jacksonville\", \"KA\":\"kansascity\", \"LA\":\"losangeles\", \"LO\":\"louisville\", \"MB\":\"memphis\", \"ML\":\"milwaukee\", \"NA\":\"nashville\", \"NY\":\"newyork\", \"OR\":\"orlando\", \"HI\":\"pacific\", \"PL\":\"philadelphia\", \"PH\":\"phoenix\", \"PI\":\"pittsburgh\", \"PO\":\"portland\", \"SA\":\"sacramento\", \"AN\":\"sanantonio\", \"FR\":\"sanfrancisco\", \"JO\":\"sanjose\", \"PS\":\"seattle\", \"FL\":\"southflorida\", \"SL\":\"stlouis\", \"TA\":\"tampabay\", \"GR\":\"triad\", \"RA\":\"triangle\", \"MN\":\"twincities\", \"WA\":\"washington\", \"WI\":\"wichita\"};\n \n if (typeof sku !== \"undefined\"){\n var code = sku.slice(-2);\n return data[code];\n }\n }\n})();","trigger":""},{"name":"on_subscription_in_cart_market","polling":"all","persist":"no","page_types":[],"testmode":true,"default":"false","code":"bouncex.vars.subscription_market_in_cart === bouncex.vars.market_code;","trigger":""},{"name":"skulist_in_cart","polling":"none","persist":"visit","page_types":[],"testmode":true,"default":"false","code":"(typeof window.aaData !== 'undefined' && typeof window.aaData.skuList !== 'undefined') ? aaData.skuList : null;","trigger":""},{"name":"last_article_title","polling":"none","persist":"permanent","page_types":[],"testmode":true,"default":"false","code":"/* most recently viewed article title */\n(function() {\n var headline = jQuery('.detail__headline').text().trim();\n return headline.replace(/[\\u2018\\u2019]|%u2019|%u2018/g, \"'\").replace(/%u2014|[\\u2014]/g,'-').replace(/%u2026|[\\u2026]/g,'...') || null;\n})();","trigger":""},{"name":"event_name","polling":"none","persist":"permanent","page_types":[],"testmode":true,"default":"false","code":"window.location.href.indexOf('/event/') > -1 ? encodeURIComponent(jQuery('h1.d-hero__title').text().trim()) : null;","trigger":""},{"name":"event_time","polling":"none","persist":"permanent","page_types":[],"testmode":true,"default":"false","code":"(function(){\n var eventPage = jQuery('meta[content=\"event\"]').length > 0 ? true : false;\n var eventDate; \n\n if (eventPage){\n eventDate = jQuery('.module h3.item__title:eq(0)').text();\n eventDate = new Date(eventDate.substr(eventDate.indexOf(',') + 1).trim()).toUTCString();\n return eventDate;\n }\n})();","trigger":""},{"name":"event_qty","polling":"none","persist":"visit","page_types":[],"testmode":true,"default":"false","code":"null;","trigger":""},{"name":"event_link","polling":"none","persist":"permanent","page_types":[],"testmode":true,"default":"false","code":"window.location.href.indexOf('/event/') > -1 ? window.location.href + '?ana=bx_ev' : null;","trigger":""},{"name":"days_to_event","polling":"none","persist":"visit","page_types":[],"testmode":true,"default":"false","code":"(function(){\n var days_until; \n if (bouncex.vars.event_time){\n var today = new Date();\n var eventTime = new Date(bouncex.vars.event_time);\n var day = 1000*60*60*24;\n\n if (today.getMonth() == eventTime.getMonth() && today.getDate() > eventTime.getDate()){\n eventTime.setFullYear(eventTime.getFullYear()+1);\n }\n\n days_until = Math.ceil((eventTime.getTime() - today.getTime()) / day) - 1;\n }\n return days_until;\n})();","trigger":""},{"name":"sub_articles_read","polling":"none","persist":"devicegraph","page_types":[],"testmode":true,"default":"0","code":"(function () {\n\t/* variables for account manager to fill in */\n\tvar frequency = 'daily', /* hourly, daily, monthly, yearly */\n\t\tinterval = 1, /* for weekly, change to 7*/\n\t\tstart = 'current', /* current date, start of month, start of year */\n\t\tcvar_name = \"sub_articles_read\", /* name of this cvar (needs to self reference)*/\n\t\t\n\t/* scrape page for subscriber article */\n\t\tsubscriberArticle = jQuery('meta[property=\"og:type\"]').attr('content') === 'article' && jQuery('.meta-item:contains(\"Subscriber Content\")').length > 0 || (typeof window.aaData !== 'undefined' && aaData.isPremium === 'yes') || (typeof window.__page__ !== 'undefined' && __page__.isPremium),\n\t\t\n\t/* DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING! */\n\t\t\n\t\tnow = new Date(),\n\t\texpired = false;\n\t\n\t/* returns start date based on variables */\n\tvar getStartDate = function() {\n\t\tswitch (start) {\n\t\t\tcase 'current date': return now;\n\t\t\tcase 'start of month': return new Date(now.getFullYear(), now.getMonth(), 1);\n\t\t\tcase 'start of year': return new Date(now.getFullYear(), 1, 1);\n\t\t\tdefault: return now;\n\t\t}\n\t};\n\t\n\t/* sets a new expiration date */\n\tvar setExpiration = function() {\n\t\tvar startDate = getStartDate(),\n\t\t\texpYear = frequency === 'yearly' ? startDate.getFullYear() + interval : startDate.getFullYear(),\n\t\t\texpMonth = frequency === 'monthly' ? startDate.getMonth() + interval : startDate.getMonth(),\n\t\t\texpDay = frequency === 'daily' ? startDate.getDate() + interval : startDate.getDate(),\n\t\t\texpHour = frequency === 'hourly' ? startDate.getHours() + interval : startDate.getHours();\n\t\t\t\n\t\t/* stores the expiration date in the DG store */\n\t\tbouncex.dg.store.paywallExpires = (new Date(expYear, expMonth, expDay, expHour)).toDateString();\n\t\tbouncex.dg.updateDeviceGraphCookie();\n\t};\n\t\n\t/* check expiration if exists and reset if necessary */\n\tif (bouncex.dg.store.paywallExpires) {\n\t\tvar expiration = new Date(bouncex.dg.store.paywallExpires);\n\t\t\n\t\t/* expired! set new expiration */\n\t\tif (now > expiration) {\n\t\t\texpired = true;\n\t\t\tsetExpiration();\n\t\t}\n\t}\n\n\tif (subscriberArticle) {\n\t\tvar prevCount = expired ? 0 : bouncex.vars[cvar_name];\n\t\t\n\t\t/* set expiration if this is the first subscriber article read */\n\t\tif (!bouncex.dg.store.paywallExpires) {\n\t\t\tsetExpiration();\n\t\t}\n\t\t\n\t\treturn prevCount + 1;\n\t}\n\t\n\tif (expired) {\n\t\treturn 0;\n\t}\n})();","trigger":""},{"name":"market_abbrev","polling":"none","persist":"no","page_types":[],"testmode":true,"default":"false","code":"(function() {\n var marketMap = {\n \talbany: \"AL\",\n \talbuquerque: \"AQ\",\n \tatlanta: \"AT\",\n \taustin: \"AU\",\n \tbaltimore: \"BA\",\n \tbirmingham: \"BB\",\n \tbizjournals: \"ZB\",\n \tboston: \"BO\",\n \tbuffalo: \"BU\",\n \tcharlotte: \"CH\",\n \tchicago: \"CG\",\n \tcincinnati: \"CI\",\n \tcolumbus: \"CO\",\n \tdallas: \"DA\",\n \tdayton: \"DY\",\n \tdenver: \"DE\",\n \thouston: \"HO\",\n \tjacksonville: \"JA\",\n \tkansascity: \"KA\",\n \tlosangeles: \"LA\",\n \tlouisville: \"LO\",\n \tmemphis: \"MB\",\n \tmilwaukee: \"ML\",\n \tnashville: \"NA\",\n \tnewyork: \"NY\",\n \torlando: \"OR\",\n \tpacific: \"HI\",\n \tphiladelphia: \"PL\",\n \tphoenix: \"PH\",\n \tpittsburgh: \"PI\",\n \tportland: \"PO\",\n \tsacramento: \"SA\",\n \tsanantonio: \"AN\",\n \tsanfrancisco: \"FR\",\n \tsanjose: \"JO\",\n \tseattle: \"PS\",\n \tsouthflorida: \"FL\",\n \tstlouis: \"SL\",\n \ttampabay: \"TA\",\n \ttriad: \"GR\",\n \ttriangle: \"RA\",\n \ttwincities: \"MN\",\n \twashington: \"WA\",\n \twichita: \"WI\"\n };\n return marketMap[jQuery('meta[name=\"market\"]').attr('content')];\n})();","trigger":"pageload"},{"name":"articles_read_this_month","polling":"none","persist":"devicegraph","page_types":[],"testmode":false,"default":"0","code":"(function () {\n if (!bouncex.vars.free_article) { return; }\n\n /* variables for account manager to fill in */\n var frequency = 'monthly'; /* hourly, daily, monthly, yearly */\n var interval = 1; /* for weekly, change frequency to daily and interval to 7*/\n var start = 'current date'; /* current date, start of month, start of year */\n var cvar_name = 'articles_read_this_month'; /* name of this cvar (needs to self reference)*/\n \n /* set up additional persisted values on dg.store object */\n bouncex.dg.store.cc = bouncex.dg.store.cc || {};\n bouncex.dg.store.cc.exp = bouncex.dg.store.cc.exp || false;\n bouncex.dg.store.cc.articlesArr = bouncex.dg.store.cc.articlesArr || [];\n\n /* scrape page for subscriber article */\n var articleId = bouncex.parseJSON(localStorage.getItem('bizj.paywallMeter')) && bouncex.utils.getNestedProp('window.__page__.id') ? window.__page__.id : false;\n var subscriberArticle = articleId !== '';\n \n /* DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING! */\n var now = new Date();\n var expired = false;\n \n /* returns start date based on variables */\n var getStartDate = function() {\n switch (start) {\n case 'current date': return now;\n case 'start of month': return new Date(now.getFullYear(), now.getMonth(), 1);\n case 'start of year': return new Date(now.getFullYear(), 1, 1);\n default: return now;\n }\n };\n \n /* sets a new expiration date */\n var setExpiration = function() {\n var startDate = getStartDate(),\n expYear = frequency === 'yearly' ? startDate.getFullYear() + interval : startDate.getFullYear(),\n expMonth = frequency === 'monthly' ? startDate.getMonth() + interval : startDate.getMonth(),\n expDay = frequency === 'daily' ? startDate.getDate() + interval : startDate.getDate(),\n expHour = frequency === 'hourly' ? startDate.getHours() + interval : startDate.getHours(),\n expMinute = frequency === 'hourly' ? startDate.getMinutes() : 0; // only set minute if expiration is hourly\n \n /* stores the expiration date in the DG store and clears out articles read */\n bouncex.dg.store.cc.exp = (new Date(expYear, expMonth, expDay, expHour, expMinute)).toUTCString();\n bouncex.dg.store.cc.articleArr = [];\n bouncex.dg.updateDeviceGraphCookie();\n };\n \n /* checks if the article has been read */\n var alreadyRead = function(articleId) {\n return bouncex.dg.store.cc.articleArr.indexOf(articleId) > -1;\n };\n \n /* adds articles to articleArr */\n var readArticle = function(articleId) {\n bouncex.dg.store.cc.articleArr.push(articleId);\n };\n \n /* check expiration if exists and reset if necessary */\n if (bouncex.dg.store.cc.exp) {\n var expiration = new Date(bouncex.dg.store.cc.exp);\n \n /* expired! set new expiration */\n if (now > expiration) {\n expired = true;\n setExpiration();\n }\n }\n \n if (subscriberArticle) {\n var prevCount = expired ? 0 : bouncex.vars[cvar_name];\n \n /* set expiration if this is the first subscriber article read */\n if (!bouncex.dg.store.cc.exp) {\n setExpiration();\n }\n \n /* if article hasn't been read, add to read articles list and return incremented number */\n if (!alreadyRead(articleId)) {\n readArticle(articleId);\n return prevCount + 1;\n }\n }\n \n if (expired) {\n return 0;\n }\n})();","trigger":"pageload"},{"name":"article_category","polling":"none","persist":"no","page_types":["article"],"testmode":false,"default":"false","code":"jQuery('meta[name=\"page:primary_channel\"]').attr('content') || false;","trigger":"pageload"},{"name":"ecap_seen_visit","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"single_list_page","polling":"none","persist":"no","page_types":[],"testmode":true,"default":"false","code":"(function(){\n var keywords = jQuery('meta[name=\"news_keywords\"]').attr('content');\n return !!keywords ? keywords.indexOf('Lists') > -1 : false;\n})();","trigger":"pageload"},{"name":"articles_remaining","polling":"all","persist":"no","page_types":[],"testmode":true,"default":"false","code":"Math.abs(3-bouncex.vars.articles_read_this_month);","trigger":"pageload"},{"name":"login_modal_present","polling":"all","persist":"no","page_types":[],"testmode":true,"default":"false","code":"jQuery('.sheet-container .is-open').is(':visible');","trigger":"pageload"},{"name":"author_name","polling":"none","persist":"no","page_types":["article"],"testmode":false,"default":"false","code":"jQuery('a[rel=author]').text();","trigger":"pageload"},{"name":"homepage","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[name=\"page:type\"]').attr('content') === 'homepage' && window.location.pathname !== '/';","trigger":"pageload"},{"name":"logged_in_subscriber","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tvar user = localStorage[\"bizj.user\"] ? JSON.parse(localStorage[\"bizj.user\"]) : null;\n\tif (user) {\n\t\treturn bouncex.utils.getNestedProp('analytics.accountType', null, user) === 'Subscribed';\n\t}\n\treturn null;\n})();","trigger":"pageload"},{"name":"ever_logged_in_subscriber","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.logged_in_subscriber || null;","trigger":"pageload"},{"name":"logged_in_nonsubscriber","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tvar user = localStorage[\"bizj.user\"] ? JSON.parse(localStorage[\"bizj.user\"]) : null;\n\tif (user) {\n\t\treturn bouncex.vars.logged_in && bouncex.utils.getNestedProp('analytics.accountType', null, user) !== 'Subscribed';\n\t}\n\treturn null;\n})();","trigger":"pageload"},{"name":"ever_logged_in_nonsubscriber","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.vars.logged_in_nonsubscriber || null;","trigger":"pageload"},{"name":"bottom_bar_visible","polling":"all","persist":"no","page_types":[],"testmode":true,"default":"false","code":"jQuery('div[id*=\"ccad-adhesion-\"] div div[draggable=\"false\"]').length > 0 ? jQuery('div[id*=\"ccad-adhesion-\"] div div[draggable=\"false\"]').css('display') != \"none\" : false;","trigger":"pageload"},{"name":"elite_or_unlimited_present","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n if(jQuery('div.h2').text().indexOf(\"don't have\") > -1) { return false }\n return jQuery('strong.d-block').text().indexOf('Elite') > -1 || jQuery('strong.d-block').text().indexOf('Unlimited') > -1 || null;\n})()","trigger":"pageload"},{"name":"acb_special_category","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('meta[name=\"cxenseparse:acb-specialcategory\"]').length && jQuery('meta[name=\"cxenseparse:acb-specialcategory\"]').attr('content') || false;","trigger":"pageload"},{"name":"article_name","polling":"none","persist":"no","page_types":["article"],"testmode":false,"default":"false","code":"jQuery('h1.detail__headline').text();","trigger":"pageload"},{"name":"industry_name","polling":"all","persist":"no","page_types":["article","category"],"testmode":false,"default":"false","code":"jQuery('meta[name=\"cxenseparse:acb-primarychannel\"]').attr('content');","trigger":"pageload"},{"name":"page_type","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"bouncex.website.pts;","trigger":"pageload"},{"name":"set_custom_max_activation","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"/* Custom Trigger Patch - Wrike 1090359338 */\nnull;","trigger":"pageload"},{"name":"has_visited_checkout","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n if (location.hash.indexOf('#/payment') > -1) {\n return true;\n }\n return null;\n})();","trigger":"pageload"}],"dgu":"pixel.cdnwidget.com","dgp":true,"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":0,"cart_rep":{"get":"","set":""},"ulpj":null,"cus":"","miw_exclude":"","enabled":0},"etjson":null,"osre":false,"osru":"osr.bounceexchange.com/v1/osr/items","checkDfp":false,"gamNetwork":"","spa":1,"spatm":1,"preinit_cjs":"bouncex.logos = {\"atlanta\":\"15721d48db73dab8a9b144dd60c74ba8\",\"albany\":\"c281d229e71fd95354350da07750d049\",\"albuquerque\":\"f114f253de918fd06eb3f7336ffee6a0\",\"austin\":\"27f11f4b18637f59981e9d8ca032bf69\",\"baltimore\":\"51e5f2207c9c4a0f2a71ea99364529d2\",\"birmingham\":\"140ad61d5d764cce3644aaebb73eae37\",\"bizjournals\":\"8f8c1eeab177fe346cabe9f2ffc3bee1\",\"boston\":\"eec87b9f82e5ac240a610f711c108211\",\"buffalo\":\"e7b523fffbd42b640db7ecfd73b6ecc7\",\"charlotte\":\"0857355bc6e67e30b12976df3865a81b\",\"chicago\":\"d18a03e2c78fe17819e99012e3873217\",\"cincinnati\":\"bbee286338e59217c7f72bf5edf036fe\",\"columbus\":\"3f6430d9dc1d627d4f57d4f65a5bb85d\",\"dallas\":\"4ad5f71edc4f49fe30b9e269540feacc\",\"dayton\":\"4686a4082a85059cbf76b3abcfd04eaa\",\"denver\":\"66db765dd4e0b496f4786841a4a4cff5\",\"triad\":\"5eab636ed23abb4d2d89182ddd2a2e16\",\"houston\":\"3e593c58f14a7bc12a948cccaa6f6323\",\"jacksonville\":\"3a37c7972fec749fc44aa9ff26f177ef\",\"kansascity\":\"f6fadb96d550f953065c06ead73dd265\",\"losangeles\":\"29bd2b6b40f6ec8fa8ca82146439da10\",\"louisville\":\"8dc55e1b82749d162638ac3eac638eb2\",\"memphis\":\"034447b0398381058111daaaf376d4a0\",\"milwaukee\":\"ee2e326a4de3f5ef8f4e9d4549dff38e\",\"twincities\":\"2e57344acf539fc8823588b15524fc14\",\"nashville\":\"729852f3301530e97f4e6b02c2327898\",\"newyork\":\"21d71b399c974f12fa3c3a0f3b051707\",\"orlando\":\"38d213507a3a22871c9b538c547597f0\",\"pacific\":\"bf5fca7d558f8af616e54846bd293195\",\"philadelphia\":\"f949691e7f501f60e6ecb6c29f5a0827\",\"phoenix\":\"62c009574842f6f69d50cdd9bff1e9fb\",\"pittsburgh\":\"4a003e157f3d309eb0d1bc91af4a907d\",\"portland\":\"9e50b1dad038468250679d3a80382935\",\"triangle\":\"cd05faccaf7d2bdcd497ed671c99e07f\",\"sacramento\":\"5760a890d2634c99584b1e1503fd137e\",\"sanantonio\":\"72e6ad5f7eb763ae2af1292d9f1a22d1\",\"sanfrancisco\":\"e0798b60caccdc0fbcd977c8f99faa9c\",\"seattle\":\"0345cb198bfadaa1ffc74373bc98aa9f\",\"sanjose\":\"01b94d8e4f72ea90d58e122d3194d834\",\"southflorida\":\"08d3247a355a5a3e468e234d8ec0d083\",\"stlouis\":\"d5bbac9d4cd8ab9fd40536a63a8ce027\",\"tampabay\":\"65a76db29dcc82bd2d6d223870e3a6bc\",\"washington\":\"9fd05fb70a4fb905ffe8a58419d1e0c2\",\"wichita\":\"a308cca22155ae9e7af1bb3dc7cc7529\", \"sapphire\": \"84d75404ba5a030f70bc1df9a03411d2\", \"ruby\": \"7a8bf5ed55538b1a5d9c201f429842fd\", \"emerald\": \"1fcd34c5ac143df44ac05b1110eaaab6\"};\n\n\n//https://www.wrike.com/open.htm?id=1091802014\n// NOTE: Only runs SPA fix on checkout page\nSinglePageApp.setCustomParams({\n currentPageIdentifier: function() {\n if (bouncex.website.pts === 'checkout') {\n return window.location.hash;\n }\n }\n});","crs":{"integrations":null,"pageCount":null},"mat":1,"math":4,"cpnu":"coupons.bounceexchange.com","dfpcms":0,"sms":{"optm":"","eventSharing":false,"shqId":"","enabled":0},"pde":true,"fmc":["UM","US","CA"],"fme":false,"fmx":"","sdk":{"android":{"enabled":false,"enabledVersions":[],"eventModifications":null},"ios":{"enabled":false,"enabledVersions":[],"eventModifications":null}},"onsite":{"enabled":1},"ads":{"enabled":1},"pubs":{"enabled":1},"websdk":{"enabled":0},"ga4_property_id":"","ga4_measurement_id":""} ; bouncex.tag = 'tag3'; bouncex.$ = window.jQuery; bouncex.env = 'production'; bouncex.restrictedTlds = {"casl":{"ca":1},"gdpr":{"ad":1,"al":1,"at":1,"ax":1,"ba":1,"be":1,"bg":1,"by":1,"xn--90ais":1,"ch":1,"cy":1,"cz":1,"de":1,"dk":1,"ee":1,"es":1,"eu":1,"fi":1,"fo":1,"fr":1,"uk":1,"gb":1,"gg":1,"gi":1,"gr":1,"hr":1,"hu":1,"ie":1,"im":1,"is":1,"it":1,"je":1,"li":1,"lt":1,"lu":1,"lv":1,"mc":1,"md":1,"me":1,"mk":1,"xn--d1al":1,"mt":1,"nl":1,"no":1,"pl":1,"pt":1,"ro":1,"rs":1,"xn--90a3ac":1,"ru":1,"su":1,"xn--p1ai":1,"se":1,"si":1,"sj":1,"sk":1,"sm":1,"ua":1,"xn--j1amh":1,"va":1,"tr":1}}; bouncex.client = { supportsBrotli: 0 }; bouncex.assets = {"ads":"0109586821763416266dd874f087ef69","creativesBaseStyles":"a53944a2","inbox":"749c9ccd613f1a40075d1e7b59caea42","onsite":"0e56ab6ba004ee080ce3deb3edae35e9","sms":"e39203556bab2366e56296ce42e974a7","websdk":"0704dae1eb637cbeb4a847506058402d"}; bouncex.push = function(pushData) { bouncex.pushedData.push(pushData); } var runtime = document.createElement('script'); runtime.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/runtime_6459738026535cda4232dc813c61447d.js'); runtime.setAttribute('async', 'async'); runtime.setAttribute('onload', 'bouncex.initializeTag()'); bouncex.initializeTag = function() { var script = document.createElement('script'); script.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/main-v2_f63930b37a25405c0fe14c50976210bb.js'); script.setAttribute('async', 'async'); document.body.appendChild(script); var deviceGraphScript = document.createElement('script'); deviceGraphScript.setAttribute('src', '//assets.bounceexchange.com/assets/smart-tag/versioned/cjs_min_3a843477d8e318f67237a66d0a58c542.js'); deviceGraphScript.setAttribute('async', 'async'); var dgAttrs = [{"Key":"id","Value":"c.js"},{"Key":"async","Value":"true"},{"Key":"data-apikey","Value":"2^HIykD"},{"Key":"data-cb","Value":"bouncex.dg.initPostDeviceGraph"},{"Key":"data-bx","Value":"1"},{"Key":"data-gm","Value":"1"},{"Key":"data-fire","Value":"1"},{"Key":"data-adcb","Value":"bouncex.dg.getAdsOptStatus"},{"Key":"data-pe","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(); }})();