(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":2252,"name":"Avis","cookie_name":"bounceClientVisit2252","domain":"avis.com","ct":"fp_local_storage","ally":0,"ei":0,"tcjs":"","cjs":"// Start infoStore code\nbouncex.infoStore = {\n sessionStorageIdentifier: 'bxInfoStore',\n set: function(data) {\n var hashedData = bouncex.lz.compressToURI(JSON.stringify(data));\n try {\n sessionStorage.setItem(this.sessionStorageIdentifier, hashedData);\n } catch(e) {\n bouncex.err('session storage failure');\n }\n },\n \n get: function() {\n var info = sessionStorage.getItem(this.sessionStorageIdentifier);\n return info ? JSON.parse(bouncex.lz.decompressFromURI(info)) : '';\n },\n \n infoIsStored: function() {\n return !!sessionStorage.getItem(this.sessionStorageIdentifier);\n },\n \n populateFields: function(fields) {\n if (!this.infoIsStored()) return;\n \n var data = this.get();\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n fields[field].val(data[field]);\n }\n }\n }\n};\n// End infoStore code\n\n// jQuery('#res-vehicles-pay-later.btn.btn-default-avis').on('click.bx', function(){\n// bouncex.setv('pay_later_selected', true);\n// setBounceCookie();\n// });\n/** https://www.wrike.com/open.htm?id=941872568 **/\nif (bouncex.cookie.vpv === 1) {\n if (bouncex.vars.reserved_this_visit) {\n bouncex.setVar('reserved_last_visit', true);\n bouncex.setVarAndReload('reserved_this_visit', false);\n }\n}\n\njQuery(document).on('click.bx', '#res-vehicle-select.btn.btn-default-avis', function(){\n bouncex.setv('pay_later_selected', true);\n setBounceCookie();\n});\n\njQuery(document).on('click.bx', '#res-vehicles-pay-later.btn.btn-default-avis', function(){\n bouncex.setv('pay_later_selected', true);\n setBounceCookie();\n});\n\n\n(function () {\n //KK: frontend frameworks fix \n if (window.angular) {\n var ele = angular.element(document.querySelector('body')),\n rootScope = ele.injector() ? ele.injector().get('$rootScope') : false,\n initBx;\n if (rootScope) {\n rootScope.$on('$locationChangeSuccess', function (event, next, current) {\n clearTimeout(initBx);\n initBx = setTimeout(function () {\n init_vars();\n bouncex.cookie.vpv++;\n bouncex.pa = 0;\n setBounceCookie();\n for (var ca_id in bouncex.campaigns) {\n if (bouncex.campaigns.hasOwnProperty(ca_id)) {\n bouncex.destroy_ad(ca_id);\n }\n }\n bouncex.body = jQuery('body').eq(0);\n bouncex.calling_url = encodeURIComponent(window.location.href);\n bouncex.reload_campaigns();\n bouncex.et.init();\n }, 600);\n });\n } else {\n //bouncex.log('bouncex: check rootscope');\n }\n }\n})();\n\n\n// clicktale integration 6/8/2018, old integrations have this in pre-activation and will overwrite this\nbouncex.clicktaleReport = function(label) {\n // check old format (new format has \"BounceX: Impression [label]\")\n var oldFormat = label.indexOf('BounceX: ') !== 0;\n if (oldFormat) {\n label = 'BounceX: ' + label;\n label = label.replace('BounceX: Impression', 'BounceX: Impression ');\n label = label.replace('BounceX: Click', 'BounceX: Click ');\n label = label.replace('BounceX: Submit', 'BounceX: Submit ');\n label = label.replace(' ', ' '); // inconsistent spaces in campaigns;\n }\n\n if (window.ClicktaleIntegrationExperienceHandler) {\n ClicktaleIntegrationExperienceHandler(label);\n }\n};\n\n/* wrike: 659162879 custom reporting */\nif (window.ga && typeof window.ga === \"function\") {\n window.ga('create', bouncex.website.gai, { name: \"wknd\" });\n \n bouncex.report_ga = function(action, label, bypass) {\n if (typeof action !== 'string' || typeof label !== 'string') return;\n \n var formattedAction = action;\n var bypassCasing = typeof bypass !== 'undefined' && !!bypass;\n \n if (!bypassCasing) {\n formattedAction = 'Wunderkind ' + action.charAt(0).toUpperCase() + action.slice(1).toLowerCase();\n }\n \n var interaction = /Impression$/.test(formattedAction);\n window.ga('wknd.send', 'event', 'Wunderkind', action, label, { 'nonInteraction': interaction });\n };\n}\n\n// auto-apply coupon\nvar $step1ModalLink = jQuery('.res-discFld.form-controlD'),\n $step2ModalLink = jQuery('.discount-dropdown.s-dropdown'),\n $step3ModalLink = jQuery('.edit-icon[data-target=\".discountCodeModal\"]'),\n step1ModalHidden = jQuery('.res-discount:visible').length === 0,\n step2ModalHidden = jQuery('.res-discount.container-fluid:visible').length === 0,\n summaryContainerExpanded = jQuery('.summary-container').hasClass('expand-mode'),\n isMobileSite = jQuery('html').hasClass('mobile'),\n couponValue = bouncex.utils.url.getParam('text_coupon_code');\n\nfunction autoApplyCoupon($input, $submit) {\n $input.val(couponValue);\n $input.trigger('input');\n $input.trigger('change');\n if ($submit) {\n $submit.trigger('click');\n }\n}\n\nfunction showMobileModal() {\n if ($step1ModalLink.length > 0) {\n if (step1ModalHidden) {\n jQuery('#triggerRes').trigger('click');\n if (!jQuery('.filterCon:visible').length) {\n jQuery('.fullSection .sortFilter.col-sm-12').trigger('click');\n }\n }\n autoApplyCoupon(jQuery('#awd'), null);\n }\n else if ($step2ModalLink.length > 0) {\n if (step2ModalHidden) {\n jQuery('#res-mobile-vehicles-sort').trigger('click');\n }\n autoApplyCoupon(jQuery('input[name=\"DiscAWDMob\"]'), jQuery('.vehUpdateBtn:eq(0)'));\n }\n else if ($step3ModalLink.length > 0) {\n if (summaryContainerExpanded) {\n $step3ModalLink.trigger('click');\n }\n else {\n jQuery('.modify-rental .modify-link').trigger('click');\n $step3ModalLink.trigger('click');\n }\n autoApplyCoupon(jQuery('#awd'), jQuery('.awd-space .btn-submit:eq(0)'));\n }\n}\n\nif (bouncex.cookie.vpv === 1 && !jQuery('#awd').val() && jQuery('#awd').val() !== couponValue && isMobileSite) {\n showMobileModal();\n}","force_https":false,"waypoints":false,"content_width":0,"gai":"UA-6997633-3","swids":"","sd":0,"ljq":"auto","campaign_id":0,"is_preview":false,"aco":{"first_party_limit":"3500","local_storage":"1"},"cmp":{"gdpr":0,"gmp":0,"whitelist_check":0},"burls":[{"prop":"contains","val":"/fr"},{"prop":"contains","val":"/es/"},{"prop":"contains","val":"/pt"}],"ple":false,"fbe":true,"mas":2,"map":1,"gar":true,"ete":1,"ettm":false,"etjs":"/* -------------------------------- CONFIG -------------------------------- */\nvar getLocalConfig = (\n function () {\n var etConfigs = {\n 2252: {\n hostname: 'www.avis.com',\n countryCode: 'US',\n smpCID: 1400791, // Save My Progress campaign ID\n smrCID: 842686, // Save My Reservation campaign ID\n },\n 4625: {\n hostname: 'www.avis.ca',\n countryCode: 'CA',\n }\n },\n defaultConfig = {\n hostname: '',\n countryCode: '',\n stepConfig: getStepConfig(),\n replenSessionStorageKey: 'bx_replen'\n },\n config = etConfigs[bouncex.website.id] || {};\n for (var key in defaultConfig) {\n if (config[key]) { continue; }\n config[key] = defaultConfig[key];\n }\n\n return function () {\n return config;\n };\n }\n)();\n\nfunction getStepConfig() {\n var steps = {\n 'vehicles': 3,\n 'extras': 4,\n 'review-and-book': 5\n };\n\n for (var step in steps) {\n if (window.location.hash.indexOf(step) > -1) {\n return {\n name: step,\n code: steps[step]\n };\n }\n }\n return {\n name: '',\n code: 0\n };\n}\n\n// initUTK adds functions to bouncex.utk for use in onsite campaigns.\n// request email functions are used in Save My Progress, Save My Reservation and \n// any other ecap campaigns requiring event metadata in submission js.\n// makeReservationEvent returns all reservation data, including item:ids\n// The metadata in the return object is used in request emails, specifically\n// the keys 'token', 'timestamp', and 'item:ids'\n// for ease of use and to make the code maintable, the addition of configurable\n// IBX campaign ids have been added to the return object. This will allow for\n// updates of campaign ids to be made in etjs.\nfunction initUTK() {\n var localConfig = getLocalConfig();\n bouncex.utk = bouncex.utk || {};\n bouncex.utk.makeReservationEvent = makeReservationEvent;\n bouncex.utk.makeRequestEmailEvent = function (cid, ids) {\n ids = ids || '';\n var event = makeReservationEvent(ids);\n event['campaignid'] = cid;\n event['requestemail:testmode'] = bouncex.testmode.bxdev ? 1 : 0;\n return event;\n };\n bouncex.utk.makeSaveMyProgressEvent = function () {\n return bouncex.utk.makeRequestEmailEvent(\n localConfig.smpCID,\n getItemIds()\n );\n };\n bouncex.utk.makeSaveMyReservationEvent = function () {\n return bouncex.utk.makeRequestEmailEvent(\n localConfig.smrCID,\n getReservationItemId()\n );\n };\n\n return;\n}\n\n/* --------------------- CUSTOM CLIENT CONTEXT HELPERS ---------------------- */\nfunction getCustomClientContext() {\n var ccc = bouncex.parseJSON(\n sessionStorage['customClientContext']\n );\n ccc.geoLocationCountry = ccc.geoLocationCountry || '';\n return ccc;\n}\n\n/* -------------------------- RESERVATION HELPERS -------------------------- */\nfunction getMonth(month) {\n var monthNum = window.parseInt(month) - 1;\n return window.isNaN(monthNum) ? '' : monthNum.toString();\n}\n\n// input example \"YYYY-MM-DD\"\nfunction makeDateConfig(date) {\n date = date || '';\n var dateInfo = date.split('-');\n return {\n day: dateInfo[2] || '',\n month: getMonth(dateInfo[1]),\n year: dateInfo[0],\n };\n}\n\n// input example \"12:00 AM\"\nfunction makeTimeConfig(time) {\n time = time || '';\n var times = time.split(/:|\\s/g),\n config = {\n minute: times[1] || '',\n hour: times[0] || '',\n meridiem: times[2] || ''\n };\n config.militaryHour = getMiltaryHour(config);\n return config;\n}\n\nfunction getMiltaryHour(config) {\n var milHour = window.parseInt(config.hour);\n switch (config.meridiem) {\n case \"AM\":\n if (milHour === 12) { milHour = 0; }\n break;\n case \"PM\":\n if (milHour !== 12) { milHour += 12; }\n break;\n default:\n break;\n }\n return milHour.toString();\n}\n\nfunction makeReservationTimeConfig(date, time) {\n var dateConfig = makeDateConfig(date),\n timeConfig = makeTimeConfig(time),\n config = Object.assign({}, dateConfig, timeConfig);\n config.timeStamp = new Date(\n config.year,\n config.month,\n config.day,\n config.militaryHour,\n config.minute,\n '00'\n ).getTime();\n return config;\n}\n\nfunction makeFullReservationTimeConfig(reservationInfo) {\n return {\n pickUp: makeReservationTimeConfig(\n reservationInfo.pickUpDate,\n reservationInfo.pickUpTime\n ),\n dropOff: makeReservationTimeConfig(\n reservationInfo.dropDate,\n reservationInfo.dropTime\n )\n };\n}\n\nfunction makeReservationInfo() {\n var reservationInfo = bouncex.parseJSON(\n sessionStorage['ngStorage-reservationModel']\n );\n reservationInfo.personalInfoRQ = reservationInfo.personalInfoRQ ||\n {\n residency: '',\n age: 0\n };\n reservationInfo.coupon = reservationInfo.coupon || { discountNumber: '' };\n reservationInfo.selectedInsurances = reservationInfo\n .selectedInsurances || [];\n reservationInfo.selectedProducts = reservationInfo.selectedProducts ||\n [];\n reservationInfo.pickUpLocation = reservationInfo.pickUpLocation ||\n { suggDescription: '' };\n return reservationInfo;\n}\n\nfunction makeSelectionInsuranceQP(insurances) {\n var iQp = {},\n i = 0;\n\n for (i; i < insurances.length; i++) {\n var code = insurances[i].code;\n if(code) {\n iQp[code + '_ACCEPT'] = \"true\";\n }\n }\n return iQp;\n}\n\nfunction makeSelectedProducstQP(sps) {\n var spsQp = {},\n product,\n i = 0;\n\n for (i; i < sps.length; i++) {\n product = sps[i];\n switch (product.code) {\n case 'RSN':\n case 'XMR':\n spsQp[product.code + '_ACCEPT'] = 'true';\n break;\n case 'GPS':\n spsQp['AVIS_ASSIST'] = 'true';\n break;\n case 'CSS':\n spsQp['CHILD_SAFETY_SEAT'] = 'true';\n spsQp['CHILD_SAFETY_SEAT_QUANTITY'] = product.quantity;\n break;\n case 'CBS':\n spsQp['CHILD_BOOSTER_SEAT'] = 'true';\n spsQp['CHILD_BOOSTER_SEAT_QUANTITY'] = product.quantity;\n break;\n default:\n break;\n }\n }\n return spsQp;\n}\n\n// makeReservationEvent creates an event with used for all user interaction\n// events. The user interaction events: 'view progress', 'add to cart'\n// 'requestemail' all happen in the same scope using data from\n// sessionStorage['ngStorage-reservationModel']. To simplify eligibility,\n// all events will have the same meta data. Here is an example\n// {\n// cart:accountType: \"L\" /* businsess \"B\" or lesiure \"L */\n// cart:ancillaryItems: false\n// cart:carCode: \"A\"\n// cart:pickuptimestamp: 1632412800000\n// cart:step: 4 /* step code in checkout flow according to getStepConfig */\n// cart:token: /* validated params for reservaion rehydration */\n// items:ids: \"comma, separated, item ids\" \n// page:title: \"Vehicles\"\n// page:url: /* current URL */\n// pickup:date: \"Thu, Aug 12, 12:00 PM\"\n// pickup:location: \"Piedmont Triad Intl Airport, Greensboro, NC, US-(GSO)\"\n// }\nfunction makeReservationEvent(ids) {\n var reservationInfo = makeReservationInfo(),\n pickUpTime = makeReservationTimeConfig(\n reservationInfo.pickUpDate,\n reservationInfo.pickUpTime\n ),\n returnTime = makeReservationTimeConfig(\n reservationInfo.dropDate,\n reservationInfo.dropTime\n ),\n reservationTimeQp = {\n 'PICKUP_DAY': pickUpTime.day,\n 'PICKUP_MONTH': pickUpTime.month,\n 'PICKUP_YEAR': pickUpTime.year,\n 'PICKUP_MINUTE': pickUpTime.minute,\n 'PICKUP_HOUR': pickUpTime.hour,\n 'PICKUP_AM_PM': pickUpTime.meridiem,\n 'RETURN_DAY': returnTime.day,\n 'RETURN_MONTH': returnTime.month,\n 'RETURN_YEAR': returnTime.year,\n 'RETURN_MINUTE': returnTime.minute,\n 'RETURN_HOUR': returnTime.hour,\n 'RETURN_AM_PM': returnTime.meridiem\n },\n insurancesQP = makeSelectionInsuranceQP(\n reservationInfo.selectedInsurances\n ),\n selectedProductsQP = makeSelectedProducstQP(\n reservationInfo.selectedProducts\n ),\n stepConfig = getLocalConfig().stepConfig,\n businessLeisureCode = reservationInfo.coupon && reservationInfo.coupon.discountNumberType || bouncex.vars.discount_number_type,\n qp = {\n 'DEFAULT_OPTIONS': 'true',\n 'RENTAL_ONEWAY': !!reservationInfo.dropInfo,\n 'STEP_CODE': stepConfig.code,\n 'PICKUP_LOCATION_CODE': reservationInfo.pickInfo || '',\n 'RETURN_LOCATION_CODE': reservationInfo.dropInfo || '',\n 'COUNTRY_OF_RESIDENCE_CODE': reservationInfo\n .personalInfoRQ\n .residency,\n 'AGE': reservationInfo.personalInfoRQ.age,\n 'CAR_GROUP_CODE': reservationInfo.userSelectedCar ||\n reservationInfo.carClass ||\n '',\n 'AWD_NUMBER': reservationInfo.coupon.discountNumber || '',\n 'BUSINESS_LEISURE': businessLeisureCode !== 'M' && businessLeisureCode !== '' ? 'B' : 'L'\n },\n params = Object.assign(\n {},\n reservationTimeQp,\n insurancesQP,\n selectedProductsQP,\n qp\n );\n\n return {\n 'cart:token': bouncex.utils.url.generateQuerystring(params),\n 'cart:pickuptimestamp': pickUpTime.timeStamp,\n 'cart:step': stepConfig.code,\n 'cart:carCode': params['CAR_GROUP_CODE'],\n 'cart:accountType': params['BUSINESS_LEISURE'],\n 'cart:ancillaryItems': reservationInfo.selectedProducts.length > 0 ||\n reservationInfo.selectedInsurances.length > 0,\n 'cart:hasconverted': bouncex.cookie.lc ? 1 : 0,\n 'pickup:location': reservationInfo.pickUpLocation.suggDescription\n || jQuery('.location-info').eq(0).text().trim().split(',').shift(),\n 'pickup:date': jQuery('.day-time-info').eq(0).text().trim() ||\n reservationInfo.pickUpDateDisplay,\n 'page:title': stepConfig.name.replace(/-/g, ' ').toLowerCase(),\n 'page:url': jQuery('link[rel=\"canonical\"]').attr('href') || '',\n 'items:ids': ids,\n 'item:id': ids\n };\n}\n\nfunction isValidQP(qp) {\n var requiredParams = [\n 'STEP_CODE',\n 'PICKUP_DAY',\n 'PICKUP_MONTH',\n 'PICKUP_YEAR',\n 'PICKUP_HOUR',\n 'PICKUP_MINUTE',\n 'PICKUP_AM_PM',\n 'RETURN_DAY',\n 'RETURN_MONTH',\n 'RETURN_YEAR',\n 'RETURN_HOUR',\n 'RETURN_MINUTE',\n 'RETURN_AM_PM',\n 'PICKUP_LOCATION_CODE'\n ];\n i = 0;\n for (i; i < requiredParams.length; i++) {\n if (!qp[requiredParams[i]]) { return false; }\n }\n return true;\n}\n\n/* --------------------------------- ITEM ---------------------------------- */\n// removes item url smart tag validation. Emails drive user back to reservation\n// page. Vehicle PDP's do not exists.\nfunction setItemTrackingRequirements() {\n var requirements = bouncex.et.item.requirements || [],\n excludedReqs = ['url'],\n newReqs = [],\n i = 0;\n\n for (i; i < requirements.length; i++) {\n if (excludedReqs.indexOf(requirements[i].name) > - 1) { continue; }\n newReqs[newReqs.length] = requirements[i]\n }\n bouncex.et.item.requirements = newReqs;\n return;\n}\n\nfunction slugify(copy) {\n copy = copy || '';\n return copy.replace(/\\s/g, '_').toLowerCase();\n}\n\nfunction getItem($item) {\n var copy = $item.find('.featurecartxt').text().trim(),\n src = $item.find('img').attr('src') || '',\n imageurl = '';\n\n if (src) { imageurl = bouncex.utils.getOrigin() + src; }\n return {\n id: slugify(copy),\n copy: copy.replace(/ or similar$/g, ''),\n imageurl: imageurl,\n instock: true\n };\n}\n\nfunction getItems() {\n var $items = jQuery('.featured-car-box, .available-car-box'),\n items = [],\n i = 0;\n\n for (i; i < $items.length; i++) {\n items[items.length] = getItem(jQuery($items[i]));\n }\n return items;\n}\n\nfunction getItemIds(items) {\n var ids = [],\n i = 0;\n items = items || getItems();\n for (i; i < items.length; i++) {\n if (!items[i].id) { continue; }\n ids[ids.length] = items[i].id;\n }\n return ids.join(',');\n}\n\nfunction isValidItem(item) {\n item = item || {};\n return !!item.id && !!item.copy && !!item.imageurl;\n}\n\n/* ----------------------- RESERVATION INITIALIZERS ------------------------ */\nfunction isValidReservationEvents(resEvent) {\n resEvent = resEvent || { 'cart:token': '' };\n return !!resEvent['items:ids'] &&\n !!resEvent['page:url'] &&\n !!resEvent['pickup:location'] &&\n !!resEvent['pickup:date'] &&\n isValidQP(\n bouncex.utils.url.queryStringToObject(resEvent['cart:token'])\n );\n}\n\nfunction initializeReservationEvents() {\n var items = getItems(),\n ids = getItemIds(items),\n event = makeReservationEvent(ids),\n i = 0;\n\n setItemTrackingRequirements();\n for (i; i < items.length; i++) {\n if (!isValidItem(items[i])) { continue; }\n bouncex.push(['item', items[i]]);\n }\n\n if (!isValidReservationEvents(event)) { return; }\n bouncex.push(['view progress', event]);\n return;\n}\n\nfunction getReservationItemId() {\n return slugify(jQuery('.vehicle-info span').first().text().trim());\n}\n\n/* --------------------------------- CART ---------------------------------- */\nfunction initializeAddToCart() {\n // itemId of single reservation\n var itemId = getReservationItemId(),\n event = makeReservationEvent(itemId);\n\n if (!isValidReservationEvents(event)) { return; }\n bouncex.push(['add to cart', event]);\n return;\n}\n\n/* ------------------------------- CART ------------------------------------ */\nfunction getMillisecondsFromHours(hours) {\n return 1000 * 60 * 60 * hours;\n}\n\n// replenish makes a request to an initialize-reservation endpoint with\n// reservation paramters. The server then redirects to the avis main site with\n// rehydrated reservation info.\nfunction replenish(cart) {\n var hours = 3,\n staleEmailHourLimit = getMillisecondsFromHours(hours),\n pickupTimestamp = cart.pickupTimestamp,\n now = Date.now();\n if (pickupTimestamp - now < staleEmailHourLimit) {\n bouncex.setv('res_passed', true);\n bouncex.reload_campaigns();\n bouncex.push(['cart replenish',\n {\n 'cart:success': 'NA',\n 'cart:reason': 'reservation less than ' + hours + ' hours'\n }\n ]);\n return;\n }\n try {\n sessionStorage.setItem(\n getLocalConfig().replenSessionStorageKey,\n cart.stepCode\n );\n } catch (e) { }\n var cartToken = cart.token;\n if (bouncex.utils.url.getParam('CAR_GROUP_CODE', cartToken).length == 2) {\n cartToken = cartToken.replace(/(STEP_CODE=)(\\d+)/, '$13');\n }\n\n bouncex.setTimeout2(\n function () {\n window.location.href = bouncex.utils.getOrigin() +\n '/car-rental/reservation/initialize-reservation.ac?' +\n cartToken;\n return;\n },\n 300\n );\n return;\n}\n\n// repportReplenishment checks for a session storage value set during\n// replenishment to determine if replenishment was successful. Replenishment\n// involves making a request with reservation parameters that redirects to the\n// site with the rservation details. Because of this redirect, sustaining a\n// parameter of 'bx_replen' is not possible. \nfunction reportReplenishment() {\n var replenStep = parseInt(\n sessionStorage.getItem(getLocalConfig().replenSessionStorageKey)\n );\n if (!replenStep) { return; }\n sessionStorage.removeItem(getLocalConfig().replenSessionStorageKey);\n var failReason = jQuery('.res-PageError:visible').text().trim();\n if (failReason) {\n pushCartReplensih(false, failReason);\n return;\n }\n var stepConfig = getLocalConfig().stepConfig;\n\n if (stepConfig.name === 'vehicles' && jQuery('.available-car-box').length) {\n pushCartReplensih(false, 'no cars');\n return;\n }\n\n if (window.location.href.indexOf('reservation#/oneclick') > -1) {\n pushCartReplensih(false, 'bad step');\n return;\n }\n\n if (replenStep !== stepConfig.code) {\n var reason = 'should be step ' + replenStep +\n ' on step ' + stepConfig.code;\n pushCartReplensih(false, reason);\n return;\n }\n\n pushCartReplensih(true, false);\n return;\n}\n\nfunction pushCartReplensih(success, reason) {\n bouncex.push(['cart replenish',\n {\n 'cart:success': success,\n 'cart:reason': reason\n }\n ]);\n return;\n}\n\n/* ------------------------------ USER TRACKING ----------------------------- */\n\nfunction initializeUserTracking() {\n\tvar loginFormEmail, loggedInEmail;\n\n\tif (!bouncex.vars.logged_in_identified) {\n bouncex.et.onVisible('form[name=\"loginForm\"]', function(){\n // store email from returning user login form\n bouncex.et.on(jQuery('button#res-login-profile'), 'click.bx', function() {\n loginFormEmail = jQuery('form[name=\"loginForm\"] input#username').val();\n if (bouncex.infoStore && bouncex.utils.validate.email(loginFormEmail)) {\n bouncex.infoStore.set({\n email: loginFormEmail\n });\n }\n });\n return;\n })\n\t}\n\n if (!bouncex.vars.logged_in || !!bouncex.vars.logged_in_identified) {\n return;\n }\n\n bouncex.et.onTrue(\n function(){\n loggedInEmail = bouncex.infoStore && bouncex.infoStore.get().email || jQuery('#email1').attr('prefilledemail');\n return loggedInEmail;\n }, \n function(){\n if(!loggedInEmail || !bouncex.utils.validate.email(loggedInEmail)) {\n return;\n }\n \n bouncex.push([\n 'user',\n {\n 'email': loggedInEmail,\n 'source': 'LoggedIn'\n }\n ]);\n bouncex.setVar('logged_in_identified', true);\n },\n 20\n );\n}\n\n/* ------------------------------- INIT ------------------------------------ */\nfunction init() {\n var localConfig = getLocalConfig(),\n stepConfig = localConfig.stepConfig;\n initUTK();\n if (\n window\n .location\n .hostname\n .indexOf(localConfig.hostname) === -1 ||\n getCustomClientContext().geoLocationCountry !==\n localConfig.countryCode\n ) {\n return;\n }\n bouncex.et.cart.init({\n replenish: replenish,\n reportReplenishment: reportReplenishment\n });\n\n initializeUserTracking();\n\n // progess abandonment\n if (\n window.location.href.indexOf('/reservation#') === -1 ||\n !stepConfig.code\n ) { return; }\n\n if (stepConfig.code === 3) {\n initializeReservationEvents();\n return;\n }\n\n // fire add to cart with specific item id\n if (stepConfig.code === 4 || stepConfig.code === 5) {\n initializeAddToCart();\n }\n return;\n}\n\ninit();\n","dge":true,"bxidLoadFirst":false,"pie":true,"cme":true,"gbi_enabled":0,"bpush":false,"pt":null,"els":null,"vars":[{"name":"cart_count","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"","trigger":""},{"name":"logged_in","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function () {\n\tvar customer = JSON.parse(sessionStorage.getItem('ngStorage-customer'));\n\tif (customer) {\n\t\treturn customer.userState === 'AUTHENTICATED' && customer.membershipStatus === 'Preferred';\n\t} else if (jQuery('.my-logout').length > 0) {\n\t\treturn true;\n\t}\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":"no","page_types":[],"testmode":false,"default":"0","code":"","trigger":""},{"name":"cart_value","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"0","code":"","trigger":""},{"name":"vehicle_type_selected","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function () {\n\tvar reservation = JSON.parse(sessionStorage.getItem('ngStorage-reservationModel'));\n\tif (reservation && typeof reservation.selectedCar\t!== 'undefined' && typeof reservation.selectedCar[0] !== 'undefined'){\n\t\treturn reservation.selectedCar[0].carGroup;\n\t}\n})();","trigger":""},{"name":"airport","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){ \n\tvar sourceIsAirport = (/airport/i).test(jQuery('#vehicleTeaser').find('.source').find('.location-info').eq(0).text());\n\tvar destinationIsAirport = (/airport/i).test(jQuery('#vehicleTeaser').find('.destination').find('.location-info').eq(0).text());\n\tif (sourceIsAirport && destinationIsAirport ) {\n\t\treturn 'round';\n\t}\n\tif ( destinationIsAirport ) {\n\t\treturn 'return';\n\t}\n\tif (sourceIsAirport ) {\n\t\treturn 'pickup';\n\t}\n})();","trigger":""},{"name":"length_of_rental","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){ \n\tvar context = JSON.parse(sessionStorage.getItem('customClientContext'));\n\tif (context && context.lor) {\n\t\treturn context.lor;\n\t}\n})();","trigger":""},{"name":"booking_days_out","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function(){ \n\tvar context = JSON.parse(sessionStorage.getItem('customClientContext'));\n\tif (context && context.pickupDatetime) {\n\t\tvar secondDate = new Date(context.pickupDatetime);\n\t\tvar firstDate = new Date();\n\t\treturn Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(24*60*60*1000)));\n\t}\n})();","trigger":""},{"name":"ancillaries_selected","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tif (window.location.href.indexOf('reservation#/extras') !== -1) {\n\t\tvar selected = [];\n\t\tjQuery('.reservation-extras').find('.checkbox-custom:checked').filter( function(){\n\t\t\tselected.push(jQuery(this).attr('id').replace('chk',''));\n\t\t});\n\t\treturn (selected.length === 0) ? false : selected.join(', ');\n\t}\n})();\n","trigger":""},{"name":"ancillaries_disabled","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tif (window.location.href.indexOf('reservation#/extras') !== -1) {\n\t\tvar selected = [];\n\t\tjQuery('.reservation-extras').find('.checkbox-custom:disabled').filter( function(){\n\t\t\tselected.push(jQuery(this).attr('id').replace('chk',''));\n\t\t});\n\t\treturn (selected.length === 0) ? false : selected.join();\n\t}\n})();","trigger":""},{"name":"carclass_selected","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function () {\n\tvar reservation = JSON.parse(sessionStorage.getItem('ngStorage-reservationModel'));\n\tif (reservation && typeof reservation.selectedCar\t!== 'undefined' && typeof reservation.selectedCar[0] !== 'undefined'){\n\t\treturn reservation.selectedCar[0].carClass;\n\t}\n})();","trigger":""},{"name":"cart","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"two_pay_options","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n\tif (window.location.href.indexOf('/vehicles') > -1) {\n\t\treturn jQuery('#res-vehicles-pay-later').length > 0 && jQuery('#res-vehicles-pay-now').length > 0;\n\t}\n})();","trigger":""},{"name":"ancillary_requested","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"awd_applied","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var excludedDiscounts = ['S087100', 'D486601', 'Mobile rate'];\n \n /* car selection page */\n var context = JSON.parse(sessionStorage.getItem('customClientContext'));\n var discountNumberVisible = context && context.discountNumber && context.discountNumber.length > 0 && excludedDiscounts.indexOf(context.discountNumber) === -1;\n \n /* home and reservation pages */\n var discountInput = jQuery('#AWD, #awd').first().val();\n var discountInputApplied = discountInput && excludedDiscounts.indexOf(discountInput) === -1 ? discountInput.length > 0 : false;\n\n var bcdCoupon = jQuery('.discount-summary-section:contains(AWD)').text();\n var bcdApplied = /(?!BCD:)\\w+?\\d+/.test(bcdCoupon) && excludedDiscounts.every(x => bcdCoupon.indexOf(x) === -1);\n \n if (window.location.pathname.indexOf('home') > -1) {\n return false;\n }\n\n return discountNumberVisible || discountInputApplied || bcdApplied || false;\n })();","trigger":""},{"name":"onsite_submit","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(window.location.pathname.indexOf('/offers/') !== -1 && bouncex.ibx._getparam('flag', window.location.hash).toLowerCase() === \"success\") || null;","trigger":""},{"name":"corp_awd_applied","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(function () {\n\tvar reservation = JSON.parse(sessionStorage.getItem('ngStorage-reservationModel'));\n\n\tif (window.location.pathname.indexOf('home') > -1) {\n return false;\n }\n\n\tif (reservation && typeof reservation.corporateAWD !== 'undefined' && reservation.corporateAWD){\n\t\treturn reservation.corporateAWD;\n\t}\n})();","trigger":""},{"name":"ancillary_selected_confirmation","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function () {\n\tvar reservation = JSON.parse(sessionStorage.getItem('ngStorage-reservationModel'));\n\tif (reservation && typeof reservation.selectedInsurances !== 'undefined' && typeof reservation.selectedProducts !== 'undefined') {\n\t\tvar insurances = reservation.selectedInsurances;\n\t\tvar products = reservation.selectedProducts;\n\t\tvar ret = [];\n\t\tfor (var i = 0; i < products.length; i++) {\n\t\t\tif( products[i].code !== 'undefined' ) {\n\t\t\t\tret.push(products[i].code);\n\t\t\t}\n\t\t}\n\t\tfor (var j = 0; j < insurances.length; j++) {\n\t\t\tif( insurances[j].code !== 'undefined' ) {\n\t\t\t\tret.push(insurances[j].code);\n\t\t\t}\n\t\t}\n\t\tif (ret.length > 0) {\n\t\t\treturn ret.join();\n\t\t}\n\t}\n})();","trigger":""},{"name":"ancillary_disabled_confirmation","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n\tvar pcOptions = jQuery('#protectionCoveragesForm .wrap-decline input'),\n\t\tdeclined = [];\n\n\tif (pcOptions.length > 0){\n\t\tfor (var i = 0; i < pcOptions.length; i++) {\n\t\t var currentOption = pcOptions[i];\n\t\t if (currentOption.checked){\n\t\t declined.push(jQuery(currentOption).attr('id').replace('_dec', ''));\n\t\t }\n\t\t}\n\t\treturn declined.join(',');\n\t}\n\n\treturn null;\n\t\t\n})();","trigger":""},{"name":"res_passed","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":""},{"name":"search_date","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var $pickUpDateField = jQuery('[message-id=fDate]');\n \n if ($pickUpDateField.length > 0 && $pickUpDateField.val()) {\n var pickUpDateString = $pickUpDateField.val();\n var pickUpDate = new Date(pickUpDateString);\n var textMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var month = textMonths[pickUpDate.getMonth()];\n var dayOfMonth = pickUpDate.getDate().toString();\n var ordinalSuffix=(function(day){\n switch(day){\n case '1': case '21': case '31':\n return 'st';\n case '2': case '22':\n return 'nd';\n case '3': case '23':\n return 'rd';\n default:\n return 'th';\n }\n })(dayOfMonth);\n return (month + ' ' + dayOfMonth + ordinalSuffix) || null;\n }\n})()","trigger":""},{"name":"valid_wizard_num","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var reservation = JSON.parse( sessionStorage.getItem(\"ngStorage-reservationModel\"));\n if ( reservation && typeof reservation.WizardNumberUnmasked !== \"undefined\" && reservation.WizardNumberUnmasked) {\n return reservation.WizardNumberUnmasked.length > 0;\n }\n})();\n","trigger":""},{"name":"pickup_location","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.source .location-info').contents().filter(function(){return this.nodeType == 3}).text().trim().replace(/\\s+/g, ' ');","trigger":""},{"name":"ldw_price","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"jQuery('#CDWchk').closest('div').text().trim().replace(/[^0-9.]/g, '') || null;","trigger":"pageload"},{"name":"coupon_code_applied","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"!!JSON.parse(window.sessionStorage.getItem(\"customClientContext\")).coupon || jQuery('#coupon.ng-not-empty.ng-valid').length > 0;","trigger":""},{"name":"awd_type","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){ \n\tvar context = JSON.parse(sessionStorage.getItem('customClientContext'));\n\tif (context && context.discountNumberType) {\n\t\treturn context.discountNumberType;\n\t}\n})();","trigger":"pageload"},{"name":"pickup_state","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){ \n\tvar context = JSON.parse(sessionStorage.getItem('customClientContext'));\n\tif (context && context.pulState) {\n\t\treturn context.pulState;\n\t}\n})();","trigger":"pageload"},{"name":"num_viewing_nonstatic","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"Math.floor(Math.random() * (90-50+1)) + 50;","trigger":"pageload"},{"name":"awd_number","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var excludedDiscounts = ['S087100', 'D486601', 'Mobile rate'],\n awd = jQuery('#awd').val();\n \n if (window.location.pathname.indexOf('home') > -1) {\n return false;\n }\n\n if(awd && excludedDiscounts.indexOf(awd) === -1) {\n return awd;\n }\n\n return null;\n})();","trigger":"pageload"},{"name":"ancillary_social_proof_number","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"Math.floor(Math.random() * 200) + 300;","trigger":"pageload"},{"name":"pickup_state_full","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(() => {\n var statesObj = {AL :'Alabama',AK:'Alaska',AZ:'Arizona',AR:'Arkansas',CA:'California',CO:'Colorado',CT:'Connecticut',DE:'Delaware',FL: 'Florida',GA:'Georgia',HI:'Hawaii',ID:'Idaho',IL:'Illinois',IN:'Indiana',IA:'Iowa',KS:'Kansas',KY:'Kentucky',LA:'Louisiana',ME:'Maine',MD:'Maryland',MA:'Massachusetts',MI:'Michigan',MN:'Minnesota',MS:'Mississippi',MO:'Missouri',MT:'Montana',NE:'Nebraska',NV:'Nevada',NH:'New Hampshire',NJ:'New Jersey',NM:'New Mexico',NY:'New York',NC:'North Carolina',ND:'North Dakota',OH:'Ohio',OK:'Oklahoma',OR:'Oregon',PA:'Pennsylvania',RI:'Rhode Island',SC:'South Carolina',SD: 'South Dakota',TN: 'Tennessee',TX: 'Texas',UT: 'Utah',VT: 'Vermont',VA: 'Virginia',WA: 'Washington',WV: 'West Virginia',WI: 'Wisconsin',WY: 'Wyoming',\n },\n context = JSON.parse(sessionStorage.getItem('customClientContext'));\n\tif (context && context.pulState) {\n\t\tvar state = context.pulState;\n if(statesObj[state]){\n return statesObj[state];\n } \n\t} \n})();","trigger":"pageload"},{"name":"pay_later_selected","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"location_code","polling":"none","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.location-info:first').length > 0 ? jQuery('.location-info:first').text().trim().split('\\n')[1].trim() : false","trigger":"pageload"},{"name":"pickup_month","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(function() {\r\n var cartParams = bouncex.utk && typeof bouncex.utk.makeReservationEvent() === 'object' && bouncex.utk.makeReservationEvent()['cart:token'] || null,\r\n pickupMonth = !!cartParams && bouncex.utils.getParam('PICKUP_MONTH', cartParams),\r\n monthsFormatted = {\r\n '0': 'January ', \r\n '1': 'February', \r\n '2': 'March', \r\n '3': 'April', \r\n '4': 'May', \r\n '5': 'June', \r\n '6': 'July', \r\n '7': 'August', \r\n '8': 'September', \r\n '9': 'October', \r\n '10': 'November', \r\n '11': 'December'\r\n };\r\n\r\n return monthsFormatted[pickupMonth] || null;\r\n})();","trigger":"pageload"},{"name":"pay_now_savings","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var savings;\n try {\n savings = angular.element(document).injector().get('getDataService').getAvailableExtras().reservationSummary.vehicle.savedAmt;\n } catch (e) {\n savings = false;\n }\n return savings || null;\n})();\n","trigger":"pageload"},{"name":"vehicle_name","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"jQuery('.vehicle-text-info .vehicle-name:eq(0)').text().trim().toLowerCase() || null;","trigger":"pageload"},{"name":"res_last_name","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"jQuery('#lastname').val() || null;","trigger":"pageload"},{"name":"pickup_day_of_week","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var data = sessionStorage['ngStorage-reservationModel'].length > 0 && sessionStorage['ngStorage-reservationModel'];\n if (data) {\n var parsed = data.length > 0 && JSON.parse(data);\n var pickup = parsed.pickUpDateDisplay !== undefined && parsed.pickUpDateDisplay;\n var date = new Date(pickup).getDay();\n var weekday = new Array(7);\n weekday[0] = \"Sunday\";\n weekday[1] = \"Monday\";\n weekday[2] = \"Tuesday\";\n weekday[3] = \"Wednesday\";\n weekday[4] = \"Thursday\";\n weekday[5] = \"Friday\";\n weekday[6] = \"Saturday\";\n return weekday[date];\n }\n return null;\n})();","trigger":"pageload"},{"name":"return_day_of_week","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var data = sessionStorage['ngStorage-reservationModel'].length > 0 && sessionStorage['ngStorage-reservationModel'];\n if (data) {\n var parsed = data.length > 0 && JSON.parse(data);\n var dropoff = parsed.dropDateDisplay !== undefined && parsed.dropDateDisplay;\n var date = new Date(dropoff).getDay();\n var weekday = new Array(7);\n weekday[0] = \"Sunday\";\n weekday[1] = \"Monday\";\n weekday[2] = \"Tuesday\";\n weekday[3] = \"Wednesday\";\n weekday[4] = \"Thursday\";\n weekday[5] = \"Friday\";\n weekday[6] = \"Saturday\";\n return weekday[date];\n }\n return null;\n})();","trigger":"pageload"},{"name":"cart_token","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"bouncex.utk && typeof bouncex.utk.makeReservationEvent() === 'object' && bouncex.utk.makeReservationEvent()['cart:token'] || null;","trigger":"pageload"},{"name":"reservation_in_future","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(function(){\n var reservation = bouncex.utils.getNestedProp('dataLayer[0].pkupdate'),\n today = new Date(),\n dd = today.getDate(),\n mm = today.getMonth()+1,\n yyyy = today.getFullYear();\n\n if (dd < 10){\n dd = '0' + dd;\n }\n if (mm < 10){\n mm = '0' + mm;\n }\n today = yyyy + mm + dd;\n if (reservation !== undefined){\n return Number(reservation) > Number(today);\n }\n return null;\n})();","trigger":"pageload"},{"name":"preferred_member","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"(function(){\n if (window.bouncex && !bouncex.vars.logged_in) {\n return false;\n }\n else if (jQuery('.avis-preferred h3').first().text().toLowerCase() === 'avis preferred points') {\n return true || null;\n }\n return null;\n}());","trigger":"pageload"},{"name":"pickup_date","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var cartParams = bouncex.utk && typeof bouncex.utk.makeReservationEvent() === 'object' && bouncex.utk.makeReservationEvent()['cart:token'] || null,\n pickupDay = !!cartParams && bouncex.utils.getParam('PICKUP_DAY', cartParams),\n datesOfMonthFormatted = {\n '01': '1st',\n '02': '2nd',\n '03': '3rd',\n '04': '4th',\n '05': '5th',\n '06': '6th',\n '07': '7th',\n '08': '8th',\n '09': '9th',\n '10': '10th',\n '11': '11th',\n '12': '12th',\n '13': '13th',\n '14': '14th',\n '15': '15th',\n '16': '16th',\n '17': '17th',\n '18': '18th',\n '19': '19th',\n '20': '20th',\n '21': '21st',\n '22': '22nd',\n '23': '23rd',\n '24': '24th',\n '25': '25th',\n '26': '26th',\n '27': '27th',\n '28': '28th',\n '29': '29th',\n '30': '30th',\n '31': '31st'\n };\n\n return datesOfMonthFormatted[pickupDay] || null;\n})();","trigger":"pageload"},{"name":"reserved_this_visit","polling":"none","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(window.location.href.indexOf('reservation') > -1 && window.location.href.indexOf('confirmation') > -1 && jQuery('.confirmation-info-holder-text').length > 0) || null;","trigger":"pageload"},{"name":"reserved_last_visit","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"logged_in_identified","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"pickupcity_persist","polling":"all","persist":"permanent","page_types":[],"testmode":false,"default":"false","code":"(function(){\n try {\n var city = JSON.parse(sessionStorage['ngStorage-reservationModel'])['pickCity'];\n return city || null;\n } catch(e){\n return null;\n }\n})();","trigger":"pageload"},{"name":"login_visible","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('.optLoginContainer, .optAnonBannerContainer').is(':visible');","trigger":"pageload"},{"name":"discount_number_type","polling":"all","persist":"visit","page_types":[],"testmode":false,"default":"","code":"window.angular && angular.element('#reservation-partial') && angular.element('#reservation-partial').controller() && angular.element('#reservation-partial').controller().response && angular.element('#reservation-partial').controller().response.webHeader && angular.element('#reservation-partial').controller().response.webHeader.p13nDetailsMap && angular.element('#reservation-partial').controller().response.webHeader.p13nDetailsMap.discountNumberType || null;","trigger":"pageload"},{"name":"cookie_modal_present","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"jQuery('#onetrust-banner-sdk').is(':visible');","trigger":"pageload"},{"name":"opt_in_ancillary","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"declined_coverage","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"false","code":"null;","trigger":"pageload"},{"name":"exitecapeligilble_avis","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"true","code":"null;","trigger":"pageload"},{"name":"nonecapeligible_count","polling":"none","persist":"visit","page_types":[],"testmode":false,"default":"0","code":"null;","trigger":"pageload"},{"name":"ldw_awd_applied","polling":"all","persist":"no","page_types":[],"testmode":false,"default":"false","code":"(function() {\n var excludedPrefixes = ['A3598', 'A1772'];\n var excludedDiscounts = ['AARP Discount', 'A828300'];\n\n /* car selection page */\n var context = bouncex.parseJSON(sessionStorage.getItem('customClientContext'), { discountNumber: false });\n var discountNumberVisible = context.discountNumber && excludedPrefixes.indexOf(context.discountNumber.substring(0,5)) === -1 && excludedDiscounts.indexOf(context.discountNumber) === -1;\n \n\n /* home and reservation pages */\n var discountInput = jQuery('#AWD, #awd').first().val();\n var discountInputApplied = discountInput && excludedPrefixes.indexOf(discountInput.substring(0,5)) === -1 && excludedDiscounts.indexOf(discountInput) === -1 ? discountInput.length > 0 : false;\n\n return discountNumberVisible || discountInputApplied || 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":1,"mibcx":1,"te":1,"cart_rep":{"get":"","set":""},"ulpj":{"et_rid":"espemailid"},"cus":"","miw_exclude":"","enabled":1},"etjson":null,"osre":true,"osru":"osr.bounceexchange.com/v1/osr/items","checkDfp":false,"gamNetwork":"","spa":1,"spatm":0,"preinit_cjs":"// make order IDs unique https://www.wrike.com/open.htm?id=417211060\nvar psh = bouncex.push;\n\nbouncex.push = function(pushData) {\n if (pushData[0] === 'conversion' && pushData[1] && pushData[1].order_id) {\n var timestamp = new Date().getFullYear();\n \n if(pushData[1].order_id.indexOf(\"-\"+timestamp) == -1){\n var orderIdTimestamp = encodeURIComponent(pushData[1].order_id) + '-' + timestamp;\n pushData[1].order_id = orderIdTimestamp;\n }\n }\n psh(pushData);\n};","crs":{"integrations":null,"pageCount":null},"mat":0,"math":0,"cpnu":"coupons.bounceexchange.com","dfpcms":0,"sms":{"optm":"Hit 'Send' to sign-up for automated, recurring Avis mktg txts (like cart reminders) to this #, per terms.","eventSharing":false,"shqId":"","enabled":1},"pde":true,"fmc":["US","CA"],"fme":true,"fmx":"","sdk":{"android":{"enabled":false,"enabledVersions":["1.2.0","1.2.1","1.2.5","1.3.0","1.3.2","1.3.3"],"eventModifications":[]},"ios":{"enabled":false,"enabledVersions":["1.0.6","1.0.7","1.0.8","1.2.0","1.2.5","1.3.0","1.3.2","1.3.3"],"eventModifications":[]}},"onsite":{"enabled":1},"ads":{"enabled":0},"pubs":{"enabled":0},"websdk":{"enabled":0},"ga4_property_id":"387490677","ga4_measurement_id":"G-GV632QC56N"} ; 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":"017beb97750bef416a5bb7eef3394ee1","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_c24410c35e5d87b630f3d54a49f2b820.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_1e55b565811f11b08485230cf1d150d6.js'); deviceGraphScript.setAttribute('async', 'async'); var dgAttrs = [{"Key":"id","Value":"c.js"},{"Key":"async","Value":"true"},{"Key":"data-apikey","Value":"2^HIykD"},{"Key":"data-cb","Value":"bouncex.dg.initPostDeviceGraph"},{"Key":"data-bx","Value":"1"},{"Key":"data-gm","Value":"1"},{"Key":"data-fire","Value":"1"}]; if (dgAttrs) { for (var i = 0; i < dgAttrs.length; i++) { deviceGraphScript.setAttribute(dgAttrs[i].Key, dgAttrs[i].Value); } } document.body.appendChild(deviceGraphScript); bouncex.initializeTag = function() {}; }; document.body.appendChild(runtime); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", bxBootstrap); } else { bxBootstrap(); }})();