{"version":3,"sources":["location-maps.js","location-single.js","utilty.js","block/wf-menu-list.js","block/wf-order-details.js","block/wf-ordering-view-account.js","block/wf-ordering-view-checkout.js","block/wf-ordering-view-menu.js","block/wf-ordering-view-order-complete.js","block/wf-ordering-view-start-order.js","block/wf-ordering.js","what-input.js","scripts.js","foundation.core.js","foundation.util.box.js","foundation.util.box.min.js","foundation.util.imageLoader.js","foundation.util.imageLoader.min.js","foundation.util.keyboard.js","foundation.util.keyboard.min.js","foundation.util.mediaQuery.js","foundation.util.mediaQuery.min.js","foundation.util.motion.js","foundation.util.motion.min.js","foundation.util.nest.js","foundation.util.nest.min.js","foundation.util.timer.js","foundation.util.timer.min.js","foundation.util.touch.js","foundation.util.touch.min.js","foundation.util.triggers.js","foundation.util.triggers.min.js","foundation.abide.js","foundation.accordion.js","foundation.accordionMenu.js","foundation.drilldown.js","foundation.dropdown.js","foundation.dropdownMenu.js","foundation.equalizer.js","foundation.interchange.js","foundation.offcanvas.js","foundation.orbit.js","foundation.responsiveMenu.js","foundation.responsiveToggle.js","foundation.reveal.js","foundation.slider.js","foundation.smoothScroll.js","foundation.magellan.js","foundation.sticky.js","foundation.tabs.js","foundation.responsiveAccordionTabs.js","foundation.toggler.js","foundation.tooltip.js","contactus.js","customer-alerts.js","faq.js","global.js","init-foundation.js","menu.js","posts.js","wp-foundation.js","block/wf-favorites-recents.js","block/wf-ingredient-gallery.js","block/wf-slick-slider-hero-slider.js"],"names":["isMobileOrTablet","check","a","test","substr","navigator","userAgent","vendor","window","opera","initMap","longitude","latitude","$","jQuery","length","tt","setProductInfo","ttmap","map","key","tomtom_api_key","container","center","zoom","language","addControl","FullscreenControl","NavigationControl","showLoading","addClass","removeClass","hideLoading","showZoomPrompt","hideZoomPrompt","showEmptyPrompt","hideEmptyPrompt","getMarkersInView","systemZoomChange","getZoom","bounds","getBounds","mCenter","getCenter","neCorner","getNorthEast","lat1","lat","lat2","lon1","lng","lon2","R","φ1","Math","PI","φ2","Δφ","Δλ","sin","cos","c","atan2","sqrt","distance","getLocations","clearAllMarkers","dist","setBounds","arguments","undefined","ajax","type","url","ajax_url","data","action","long","success","response","result","JSON","parse","status","setLocationGrid","restaurants","fitToMarkerBounds","animate","scrollTop","error","i","getLocationInfo","locationGroups","locationItemClone","clone","attr","find","experienceOptInStores","includes","html","Foundation","Tooltip","click","localStorage","setItem","this","setAsStore","getItem","text","remove","toString","militaryBaseIds","doordashLink","parseFloat","toFixed","removeAttr","append","popupHTML","markers","push","createMarker","prop","split","e","preventDefault","location","href","markerIndex","parent","index","getPopup","isOpen","togglePopup","isFirstLoad","pid","position","ttmapObj","markerElement","document","createElement","className","markerContentElement","appendChild","markerHeight","markerRadius","linearOffset","popupOffsets","top","top-left","top-right","bottom","bottom-left","bottom-right","left","right","popup","Popup","offset","setHTML","Marker","element","anchor","setLngLat","setPopup","addTo","each","m","bbox","lats","lngs","lnglat","getLngLat","minlat","min","apply","maxlat","max","minlng","maxlng","fitBounds","padding","maxZoom","geolocateUser","setFindingLocation","geolocation","getCurrentPosition","coords","stores","unsetFindingLocation","options","locationID","title","order_url","permalink","store_num","location_groups","set_store_location","unsetLocationLS","setLocation","location_id","hideFakeMenuIfAddedLocation","removeItem","reload","decodeEntities","showFoodMenu","currentStoreNumber","currentLocGroups","showcats","showElement","s","ss","hidestores","hidecats","hideElement","displaySingleCurrentLocation","setLoadingCoverScreen","message","clickToClose","hideLoadingCoverScreen","isUrl","expression","regexp","RegExp","string_to_slug","str","replace","toLowerCase","from","to","l","charAt","debounce","fn","threshold","timeout","delayed","_this","args","clearTimeout","setTimeout","formatMoney","number","decPlaces","decSep","thouSep","isNaN","abs","sign","String","parseInt","Number","j","slice","urlParam","name","results","exec","decodeURI","noConflict","storeLocationName","deliveryMode","storeLocationURL","data-close","setMenuPageItems","imagePath","imagepath","productCats","categories","isFirst","$menuTabClone","$menuTabDropdownClone","$menuContentClone","menuCatName","menuCatSlug","prepend","products","jj","currProduct","$menuProductClone","menuProdSlug","imageURL","imagefilename","description","descrString","cost","calories","join","Reveal","foundation","showOrderStatus","order_data","formatAMPM","date","hours","getHours","minutes","getMinutes","ampm","formatDate","month","getMonth","day","getDate","year","getFullYear","isToday","currentTime","deliverymode","Date","timeOrderReady","readytime","substring","oneHourLater","setHours","formatted_time","formatted_date","progress","step","statusSwitch","deliverystatus","deliveries","css","timeDifference","minutesLeft","floor","percentLeft","on","view_account","charleys_show_loading","$contentContainer","load","templateRoot","when","olo_get_user_details","done","user_details_json","user_details","firstname","lastname","emailaddress","charleys_hide_loading","hide","fadeIn","transitionDuration","view_account_manage","inputmask","mask","phonesMasks","greedy","definitions","#","validator","cardinality","olo_get_user_contact_details","olo_get_user_communication_details","olo_get_billing_accounts","user_contact_json","user_communication_json","user_billing_accounts_json","user_contact","user_communication","user_billing_accounts","console","log","Accordion","val","contactdetails","optin","marketingsms","upsell","emailreceipts","followups","Abide","billingaccounts","account","$savedSchemesContainer","$savedScheme","off","cardTypes","cardtype","paymentlabel","balance","accountidstring","isdefault","accounttype","olo_default_billing_account","default_billing_json","change_view","billingAccountId","olo_delete_billing_account","deleted_billing_json","submit","bind","authtoken","accesstoken","errorMessage","errors","show","complete","current_password","password","password_confirmation","$editButton","$cancelButton","$formFields","$displayFields","inputName","view_account_recent","totalLoadBeforeComplete","startRecentOrder","startFavoriteOrder","change","clearLocationList","populate_user_restaurants","todaysDate","tomorrowsDate","addDays","scheduleDates","getDates","daysOfWeek","dayValue","zeroPad","dayLabel","getDay","getTime","timeSelection","createQuarterHourIntervals","ii","convert12to24Hour","roundToNearest15","trigger","inputD","fields","strictBounds","autocompleteD","google","maps","places","Autocomplete","addListener","place","getPlace","geometry","olo_get_nearby_locations","components","address_components","k","v1","types","k2","v2","long_name","street_number","route","locality","administrative_area_level_2","postal_code","blur","address","geocoder","Geocoder","geocode","GeocoderStatus","OK","isUserLoggedIn","orders","menu_results_cache","order_locations","forEach","order","vendorid","menus_cached","order_location","restaurant_id","$recent_order","id","vendorname","timeplaced","status_processed","menu_results","product","product_calories","product_image_filename","matched","every","category","cat_product","basecalories","product_image_path","$recent_item","choiceArray","choices","choice","scrollTo","orderid","basketid","fave_result","code","alert","faves","view_account_favorite","fave","$fave_order","productid","$fave_item","faveid","view_account_rewards","Tabs","punchh_get_user_points","points_json","rewards","pointsToNext","account_balance","unbanked_points","lifetime_points","banked_currency","notifications","value","$historyList","$historyItem","created_at","displayDate","toLocaleDateString","toLocaleTimeString","validateCheckoutBasket","deferred","validBasket","num","setCheckoutError","resolve","basketGuid","timewanted","earliestreadytime","apiData","earliestReadyYear","earliestReadyMonth","earliestReadyDay","earliestReadyHour","earliestReadyMinute","currentDateJs","ismanualfire","hour","minute","clearCheckoutError","promise","view_checkout","charleys_hide_topnav","canCheckout","olo_validate_basket","olo_get_ccsf_payment_token","validBasket_json","ccsf_payment_token_json","ccsf_payment_token","$backBtn","validateCheckoutBasketDeferred","doneTyping","olo_set_tip_amount","tipValue","typingTimer","doneTypingInterval","keyup","dateMasks","inputmode","setCCFields","validateOn","validateOnBlur","ev","el","configPaymentOptions","alias","allowMinus","digits","olo_get_restaurant","olo_get_billing_schemes","olo_get_rewards_schemes","restaurant_data_json","user_contact_details_json","billing_schemes_json","reward_schemes_json","restaurant_data","streetaddress","city","state","zip","scheduledTime","customer_schedule","user_contact_details","accountid","cardsuffix","removePayment","usePayment","billing_schemes","$bs_container","billingschemes","scheme","$bs_item","$paymentModalContainer","$paymentRevealTemplate","$schemeForm","field","inputField","label","maxlength","minlength","isMandatory","schemeName","cardNumber","cardPin","schemeType","schemeID","saveOnFile","olo_get_gift_card_balance","cardBalance_json","cardBalance","parents","couponcode","updateBasketDisplay","billingAccounts","tipTotal","paymentSplits","paymentsLessThanTipSplit","amount","ceil","tipSplit","tipSplitFinal","isLastElement","paymentTipSplit","billing_amount","expirationDate","postalCode","tipPortion","billingMethod","expiryMonth","expiryYear","card_number","card_pin","card_scheme_id","billingFields","billingSchemeId","billing_account_id","submissionPacket","accessToken","firstName","lastName","emailAddress","contactNumber","guestOptIn","olo_set_delivery_instructions","olo_set_custom_fields","delivery_inst","custom_fields","validate_return","checkoutFrame","orderguid","gtmDLProducts","ga4DLProducts","sku","price","totalcost","quantity","item_id","item_name","affiliation","orderUserType","orderTaxes","taxes","tax","orderFees","iii","fees","customerhandoffcharge","orderCoupon","iv","discounts","ga4CustomerEmail","event","transactionId","oloid","transactionTotal","total","transactionTax","transactionProducts","shipping","transactionShipping","transactionAffiliation","coupon","userType","orderType","ga4PhoneNumber","ga4UserID","ga4DL","ecommerce","transaction_id","currency","items","user_data","user_id","email_address","phone_number","dataLayer","clearBasketSession","stringify","view_menu","openCart","nutritionDocumentURL","$detailView","$shippingCartView","history","replaceState","pathname","editBasketItem","editBasketProduct","hash","calculateProductTotal","labels","toUpperCase","hoursCalendar","calendarMatched","calendar","startDateRaw","ranges","start","endDateRaw","end","jsStartDate","jsEndDate","startTimeFormatted","toLocaleString","hour12","endTimeFormatted","olo_create_basket","ocb","validAddress","isDelivery","Boolean","setAddressComponents","olo_set_basket_settings","osbs_json","osbs","dispatchaddress","createMenuCategories","menu_cat","normalize","sanitize","trim","readOnlyCategoryMenuItemCarryOver","matchFound","matchProductID","$cat_template","menuCatImage","menuCatImageAlt","menu","images","image","groupname","filename","image_url","$menu_category","menu_item","readOnlyMenuItemCarryOver","$menu_category_item","chainproductid","minimumquantity","maximumquantity","quantityincrement","availability","now","isdisabled","unavailablehandoffmodes","menuImage","menuImageDetail","maxcalories","caloriesseparator","onCategoryChange","$radioInput","showID","$defaultBackAction","readOnlyCategoryMenuItemCarryOverImg","readOnlyMenuItemCarryOverImg","singleusecategories","productId","chainProductId","productCost","productMinQty","productMaxQty","productIncrement","setQuantityElem","menuItemDesc","$basePrice","clearProductOptions","optionGroups","optiongroups","group","setItemOptions","$inputElementForComboMeal","$inputElementForNotComboMeal","is","validateItemForm","basketProducts","bProduct","optionid","recipient","$fieldset","$inputElement","$ingredientModal","post_id","info","empty","spicy","labelText","undoConditionFormattingChanges","$comboMealFormattingSelector","$drinkAddonFormattingSelector","$addAccordianConditionalFormattingSelector","$bigGameBundleComboConditionalFormattingSelector","$classicComboConditionalFormattingSelectorWings","$classicComboConditionalFormattingSelectorDrinkAddon","$classicComboConditionalFormattingSelectorCheesesteak","$classicComboConditionalFormattingSelector","$wingsConditionalFormattingSelector","$wingsConditionalFormattingSelectorForS","pushState","keydown","target","closest","charleys_show_overloading","$button","charleys_hide_overloading","$label","addItemToBasket","updateItemInBasket","setGoogleReferral","backwardsCompatibility","fieldsetLegend","$groupTemplate","chainmodifierid","mandatory","supportschoicequantities","minselects","maxselects","minchoicequantity","maxchoicequantity","choicequantityincrement","selectMin","selectMax","isValid","isRequired","explanationtext","option","$optionField","src","domain","URL","hostname","fileName","chainoptionid","labelCost","labelCalories","has_description","setItemModifiers","isSecondEach","modifierLevel","wingOption","wingsComboOption","comboDrinksModifiersToppingsConditionalSelector","drinksModifiersToppingsConditionalSelector","sidesModifiersToppingsConditionalSelector","modifiers","modifier","collectModifierIds","idArray","modifierID","justSidesConditionalSelector","sidesModifiersConditionalSelector","sidesModifiersToppingsChildConditionalSelector","comboDrinksModifiersToppingsChildConditionalSelector","drinksModifiersToppingsChildConditionalSelector","justDrinksConditionalSelector","drinksModifiersConditionalSelector","justIngredientsConditionalSelector","selectDrinkID","selectSideID","ingredientsModifiersConditionalSelector","$modifierGroup","selectIngredientsID","m_option","$m_optionField","_typeof","background-image","sideLabelId","sideLabelIdNested","sideCorrispondingLabel","sideDirectParent","sideDirectParentOfParent","drinkLabelId","drinkCorrispondingLabel","drinkDirectParent","drinkDirectParentOfParent","ingredientLabelId","ingredientCorrispondingLabel","ingredientDirectParent","allOtherLabelId","allOtherCorrispondingLabel","allOtherDirectParent","view_order_complete","session_order_data","displayFinalOrder","deliveryaddress","building","zipcode","specialinstructions","$timeText","delivermode","get_calendar","locationHours","storeCalendar","startDate","endDate","hourslabel","resturantNameWithReplacedSpaced","googleAddressLink","handoff_mode_label","manual_fire_label","thanks_instructions","supportsArrivalMessage","supportedarrivalmessagehandoffmodes","mode","arrivalstatus","telephone","slug","indexOf","innerWidth","mapContainer","getElementById","style","width","height","canvas","querySelector","setAttribute","resize","marker","subtotal","salestax","tip","discount","$product_item","productsIdForGettingImg","productsOrderImgs","existingProduct","item","getMenuItemImages","categoryType","formattedImagePath","rawProductData","qty","choicesText","show_edit_section","iseditable","cancel_result","hasClass","basket_result","view_start_order","charleys_hide_topnav_location","ttmap_order","startReferralOrder","nearbyData","is_in_dispatch_range","location_item_vendor_id","restaurant","supportsbaskettransfers","selectLocation","googleStoreSlug","getCookie","googleHandoffMode","supportsdinein","supportsdispatch","supportscurbside","fitToMarkerBounds_order","order_markers","toTitleCase","txt","charleys_get_route","charleys_show_topnav","charleys_show_topnav_location","view_signup","view_login","view_forgotpassword","view_signout","softCheck","isLoggedIn","async","signout","view_context","hideOverlay","overlay","classList","add","location_count","locations_processed","set_location_selections","fetchRestaurantInfo","restaurantId","then","processRestaurants","restaurantIds","fetchPromises","Array","prototype","call","exists","some","customerStoreId","filter","favelocations","closeButton","addEventListener","startOrderInput","activeCount","setPaymentSplit","activateSignUp","activateSignIn","$formItem","olo_get_all_restaurants","restaurants_json","$locationDropdown","signup_channel","punchh_signup_channel","signup_data","first_name","last_name","email","phone","charleys_set_form_errors","access_token","punchh_olo_sso","login_data","recaptcha","formerrors","base","activateForgotPassword","view_home","$sliderContainer","heroSliderData","slider","$sliderItem","background_image_url","decodeURIComponent","overlay_text","slick","slidesToShow","slidesToScroll","arrows","dots","autoplay","cookie","parts","pop","shift","eraseCookie","setTime","expires","toGMTString","order_id","restaurant_json","showcartdialog","fave_id","splitCount","calcSplitPayment","balanceSplitPayment","fillEmptySplitPayment","totalToSplit","totalSplits","remainingBalance","cardFieldStyle","Olo","CheckoutFrame","cardElement","cvvElement","checkoutFrameInit","brandAccessId","styles","cvv","placeholder","initialize","schemes","membership","olo_get_applied_rewards","membershipid","olo_get_qualifying_rewards","olo_add_reward_to_basket","reward_reference","references","olo_remove_reward_to_basket","rewardid","rewardId","cardnumber","pin","productSelections","$productView","productVariant","choiceQty","choiceID","chainOptionID","chainchoiceid","modChoices","getSelectedModifiers","itemPrice","addToCartData","item_variant","selectedModifiers","subChoiceQty","subChoiceId","subChoice","subChoiceChainID","choiceid","next","selectAllDefaultSelectsion","currentInputId","$matchingChildFieldset","$defaultInputBoxes","$defaultInputBox","defaultInputBoxesId","$matchingChildChildFieldset","siblings","$childDefaultInputBoxes","$matchingChildChildIngredientFieldset","validateDrinkAndSidePopupPresentation","$drinkComboButton","$sideComboButton","comboChange","inputChanged","$noSelectedOptions","legendsName","labelsName","$transferNoSelectedOptionsToMe","legendMatch","matchingLabel","children","uniqueTextA","$selectedInfo","validateSideOrDrinkSelection","drinkOrSide","$parentPopup","$childModifiers","$validationFooter","$mandatoryLabel","removeSelectedFromOtherElements","thisPassedObject","not","labelHtml","backgroundImage","mainIngredientHideShowCont","fieldsets","sideIsTriggered","drinkIsTriggered","legendText","existingItem","$this","showComboSelections","parentElement","$productOptionGroup","$productOptions","minSelects","maxSelects","fieldsetValid","selectedQty","itemQty","numSelected","selectedItem","formValid","itemTotal","itemCalories","$itemSelectorContainer","$itemSelectorItem","itemID","itemName","unselectID","productQty","errorData","$form","Object","keys","$inputErrorMessage","punchh_get_user_offers","providertoken","provideruserid","isNewAccount","olo_sso_creds","provider","contactnumber","olo_set_fave_location","olo_login_route","olo_delete_fave_location","userHasSearched","processedIds","Set","has","isavailable","order_popupHTML","supportedOrderTypes","canDispatch","canCurbside","canPickup","canpickup","canDinein","$locationItem","extref","customerfacingmessage","storeAddress","stopPropagation","supportedOrderType","fadeOut","thisOrderTypeContainer","appendTo","thisLocationItem","documentElement","body","ocb_json","leadtimeestimateminutes","googleReferralToken","address_selected","openBasket","timemode","timeWanted","scheduledDate","leadTime","leadTimeHours","leadTimeMinutes","timeWantedString","timeWantedDisplay","displaySignInForm","loginRewardsPromptView","displaySignUpForm","displayForgotPasswordForm","signupRewardsPromptView","upsells","$upsellContainer","groups","itemAdded","$upsellItem","shortdescription","olo_add_upsell_items","upsell_item_json","infinite","responsive","breakpoint","settings","_loop","$cartProduct","productsOrderMetaData","existingProductMetaData","metadata","formattedMetaData","metaDataValue","recipientSpan","productSelectionsQty","choiceJSON","match","indent","char","fullText","hideAtIndentOf2","$dataChoicesContainer","$dataSizeChoiceContainer","currentGroup","firstIndentOneName","firstIndentOneProcessed","colonNames","choiceName","lastChoice","splice","productName","productPrice","productQuantity","basketProductId","$taxRow","v","allowstip","tipAmount","round","customfields","customFields","b","scope","sort","$cField","fieldLabel","isrequired","cartItems","ga4Data","appliedrewards","updateRewardsList","reference","qual_rewards_json","qual_rewards","$couponItem","$couponDescription","applied_rewards","$rewards_list","$rewards_list_cart","rewardChange","$isSelected","reward_json","reward","applied_reward_ids","remove_reward_json","$reward_template","quanityAvailable","quantityavailable","fineprint","$reward_template_cart","itemid","first","reset","existingbasketguid","existingvendorid","basket","olo_check_delivery_coverage","delivery_details","handoffmode","timewantedmode","street","timewantedutc","getCalendar","scheduleDate","scheduleTime","schedule","d","padLeft","phonenumber","$newloader","strTime","stopDate","dateArray","currentDate","zero","earliestToday","until","time","intervals","setMinutes","ms","AMPM","sHours","sMinutes","$elem","$input","$btnMinus","$btnPlus","qtyminus","current","newval","qtyplus","root","factory","exports","module","define","amd","modules","__webpack_require__","moduleId","installedModules","loaded","p","ask","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","docElem","currentElement","currentInput","currentIntent","currentTimestamp","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","touchstart","touchend","isScrolling","mousePos","x","y","pointerMap","2","3","4","supportsPassive","opts","defineProperty","get","setUp","detectWheel","addListeners","passive","capture","setPersist","PointerEvent","setInput","setIntent","MSPointerEvent","setElement","clearElement","getAttribute","sessionStorage","doUpdate","eventKey","which","pointerType","ignoreMatch","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","activeElement","notFormInput","nodeName","checkClosest","fireFunctions","detectScrolling","removeAttribute","timestamp","touchIsValid","wheelType","onmousewheel","len","objPos","screenX","screenY","elem","tag","ElementPrototype","Element","matches","msMatchesSelector","webkitMatchesSelector","parentNode","nodeType","opt","arr","eventType","clearStorage","clear","_typeof2","Symbol","iterator","obj","constructor","require","__WEBPACK_EXTERNAL_MODULE_jquery__","getter","o","enumerable","r","toStringTag","t","__esModule","ns","create","n","object","property","hasOwnProperty","./js/entries/plugins/foundation.core.js","__webpack_exports__","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","_foundation_core__WEBPACK_IMPORTED_MODULE_1__","_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__","addToJquery","Plugin","rtl","GetYoDigits","transitionend","RegExpEscape","onLoad","./js/foundation.core.js","functionName","Function","funcNameRegex","parseValue","hyphenate","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__","_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__","FOUNDATION_VERSION","version","_plugins","_uuids","plugin","_plugin","attrName","registerPlugin","pluginName","uuid","$element","concat","unregisterPlugin","removeData","reInit","plugins","isJQ","_init","fns","plgs","string","err","reflow","addBack","$el","er","getFnName","method","$noJS","TypeError","plugClass","ReferenceError","util","throttle","func","delay","timer","context","vendors","requestAnimationFrame","vp","cancelAnimationFrame","lastTime","callback","nextTime","performance","oThis","aArgs","fToBind","fNOP","fBound","./js/foundation.core.plugin.js","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","getPluginName","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_0__","_setup","_destroy","./js/foundation.core.utils.js","namespace","chars","charsLength","random","transitions","transition","WebkitTransition","MozTransition","OTransition","triggerHandler","handler","didLoad","readyState","cb","one","ignoreMousedisappear","_ref","_ref$ignoreLeaveWindo","ignoreLeaveWindow","_ref$ignoreReappear","ignoreReappear","eLeave","_len","rest","_key","relatedTarget","hasFocus","eReenter","currentTarget","./js/foundation.util.mediaQuery.js","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_i","_s","_e","_arr","_n","_d","isArray","parseStyleToObject","styleObject","reduce","ret","param","MediaQuery","matchMedia","styleMedia","media","script","getElementsByTagName","insertBefore","head","getComputedStyle","currentStyle","matchMedium","styleSheet","cssText","textContent","queries","isInitialized","self","$meta","namedQueries","extractedStyles","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","_parts","bpSize","_parts$","bpModifier","Error","queryIndex","findIndex","q","_getQueryName","nextQuery","_this2","newSize","currentSize","0","jquery","__WEBPACK_EXTERNAL_MODULE__foundation_core__","./foundation.core","./js/entries/plugins/foundation.util.box.js","_foundation_core__WEBPACK_IMPORTED_MODULE_0__","_foundation_util_box__WEBPACK_IMPORTED_MODULE_1__","Box","./js/foundation.util.box.js","ImNotTouchingYou","lrOnly","tbOnly","ignoreBottom","OverlapArea","topOver","bottomOver","leftOver","rightOver","eleDims","GetDimensions","parDims","windowDims","rect","getBoundingClientRect","parRect","winRect","winY","pageYOffset","winX","pageXOffset","parentDims","GetExplicitOffsets","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","21","__FOUNDATION_EXTERNAL__","f","u","./js/entries/plugins/foundation.util.imageLoader.js","_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__","onImagesLoaded","./js/foundation.util.imageLoader.js","singleImageLoaded","unloaded","naturalWidth","Image","events","me","22","./js/entries/plugins/foundation.util.keyboard.js","_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__","Keyboard","./js/foundation.util.keyboard.js","findFocusable","aTabIndex","bTabIndex","parseKey","keyCodes","keyCode","fromCharCode","shiftKey","ctrlKey","altKey","getKeyCodes","kcs","kc","9","13","27","32","35","36","37","38","39","40","commands","handleKey","component","functions","cmds","command","commandList","warn","zfIsKeyHandled","ltr","extend","returnValue","handled","unhandled","register","componentName","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","focus","releaseFocus","23","./js/entries/plugins/foundation.util.mediaQuery.js","_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__","24","./js/entries/plugins/foundation.util.motion.js","_foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__","Motion","Move","./js/foundation.util.motion.js","duration","move","ts","prog","anim","isIn","animation","finish","initClass","activeClass","initClasses","activeClasses","offsetWidth","animateIn","animateOut","25","./js/entries/plugins/foundation.util.nest.js","_foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__","Nest","./js/foundation.util.nest.js","Feather","role","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","firstItem","aria-haspopup","aria-label","aria-expanded","data-submenu","aria-hidden","Burn","26","./js/entries/plugins/foundation.util.timer.js","_foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__","Timer","./js/foundation.util.timer.js","nameSpace","remain","isPaused","restart","pause","./js/entries/plugins/foundation.util.touch.js","_foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__","_foundation_core__WEBPACK_IMPORTED_MODULE_2__","init","Touch","./js/foundation.util.touch.js","onTouchEnd","removeEventListener","onTouchMove","didMoved","tapEvent","Event","startEvent","isMoving","spotSwipe","dir","touches","pageX","dx","startPosX","elapsedTime","startTime","moveThreshold","timeThreshold","assign","onTouchStart","SpotSwipe","enabled","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","changedTouches","eventTypes","touchmove","MouseEvent","bubbles","cancelable","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","28","h","w","__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__","./foundation.util.motion","./js/entries/plugins/foundation.util.triggers.js","jquery__WEBPACK_IMPORTED_MODULE_1__","jquery__WEBPACK_IMPORTED_MODULE_1___default","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__","./js/foundation.util.triggers.js","debounceGlobalListener","listener","Triggers","_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__","MutationObserver","prefixes","triggers","Listeners","Basic","Global","Initializers","openListener","closeListener","toggleListener","closeableListener","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","addClosemeListener","yetiBoxes","plugNames","listeners","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","attributeName","elementObserver","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","__","triggersInitialized","IHearYou","29","./js/entries/plugins/foundation.abide.js","_foundation_abide__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.abide.js","_inherits","subClass","superClass","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","sham","Proxy","valueOf","getPrototypeOf","_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__","_Plugin","_super","defaults","isEnabled","formnovalidate","$inputs","merge","$submits","$globalErrors","a11yAttributes","input","addA11yAttributes","addGlobalErrorA11yAttributes","_events","_this3","resetForm","validateForm","validateInput","liveValidate","isGood","checked","failedValidators","_this4","$error","formErrorSelector","$els","_this5","_this6","findLabel","$formError","findFormError","labelErrorClass","formErrorClass","inputErrorClass","data-invalid","aria-invalid","addA11yErrorDescribe","$errors","$labels","elemId","errorId","a11yErrorLevel","groupName","findRadioLabels","$formErrors","findCheckboxLabels","removeRadioErrorClasses","removeCheckboxErrorClasses","_this7","clearRequire","requiredCheck","manageErrorClasses","_validationIsDisabled","validateRadio","validateCheckbox","validateText","required","validators","equalTo","goodToGo","dependentElements","removeErrorClasses","addErrorClasses","checkboxGroupName","_this8","acc","initialized","noError","pattern","inputText","valid","patterns","$group","_this9","minRequired","_this10","alpha","alpha_numeric","integer","card","datetime","dateISO","month_day_year","day_month_year","color","website","__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__","./foundation.util.keyboard","./js/entries/plugins/foundation.accordion.js","_foundation_accordion__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.accordion.js","_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__","ENTER","SPACE","ARROW_DOWN","ARROW_UP","HOME","END","_isInitializing","$tabs","idx","$content","linkId","aria-controls","aria-labelledby","$initActive","_initialAnchor","prev","_openSingleTab","_checkDeepLink","$anchor","$link","isOwnAnchor","_closeAllTabs","deepLinkSmudge","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","$tabContent","toggle","$a","multiExpand","previous","last","up","down","updateHistory","_openTab","$targetItem","$othersItems","allowAllClosed","_closeTab","$activeContents","targetContentId","slideDown","slideSpeed","slideUp","$activeTabs","stop","1","__WEBPACK_EXTERNAL_MODULE__foundation_util_nest__","./foundation.util.nest","./js/entries/plugins/foundation.accordionMenu.js","_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.accordionMenu.js","AccordionMenu","_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__","ARROW_RIGHT","ARROW_LEFT","ESCAPE","aria-multiselectable","multiOpen","$menuLinks","subId","isActive","parentLink","prependTo","wrap","submenuToggle","after","submenuToggleText","initPanes","$submenu","$prevElement","$nextElement","$elements","open","close","closeAll","hideAll","$targetBranch","parentsUntil","$othersActiveSubmenus","$submenus","$allmenus","detach","__WEBPACK_EXTERNAL_MODULE__foundation_util_box__","./foundation.util.box","./js/entries/plugins/foundation.drilldown.js","_foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.drilldown.js","Drilldown","_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__","autoApplyClass","$submenuAnchors","$menuItems","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","tabindex","$menu","$back","backButtonPosition","backButton","_back","autoHeight","$wrapper","wrapper","animateHeight","_getMaxDims","max-width","min-height","_show","closeOnClick","$body","contains","_hideAll","_bindHandler","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollPos","scrollTopOffset","animationDuration","animationEasing","_hide","calcHeight","parentSubMenu","autoFocus","$expandedSubmenus","_setHideSubMenuClasses","isLastChild","_setShowSubMenuClasses","maxHeight","unwrap","__WEBPACK_EXTERNAL_MODULE__foundation_util_touch__","./foundation.util.touch","./js/entries/plugins/foundation.dropdown.js","_foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.dropdown.js","_get","receiver","_superPropBase","desc","getOwnPropertyDescriptor","Dropdown","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__","_foundation_positionable__WEBPACK_IMPORTED_MODULE_3__","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__","_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__","_Positionable","$id","$anchors","data-is-focus","data-yeti-box","_setCurrentAnchor","parentClass","$parent","$currentAnchor","data-resize","horizontalPosition","hasTouch","ontouchstart","open.zf.trigger","close.zf.trigger","toggle.zf.trigger","resizeme.zf.trigger","_setPosition","forceFollow","hover","bodyData","whatinput","hoverDelay","hoverPane","_addBodyHandler","allowOverlap","allowBottomOverlap","./js/foundation.positionable.js","nextItem","array","currentIdx","Positionable","_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","_reposition","./js/entries/plugins/foundation.dropdownMenu.js","_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.dropdownMenu.js","DropdownMenu","_foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__","subs","verticalClass","rightClass","changed","parClass","handleClickFn","hasSub","hasClicked","clickOpen","stopImmediatePropagation","closeOnClickInside","disableHoverOnTouch","disableHover","autoclose","closingTime","isTab","nextSibling","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","isItself","$sibs","oldClass","$parentLi","$toClose","somethingToClose","$activeItem","data-is-click","5","__WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__","__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__","./foundation.util.imageLoader","./foundation.util.mediaQuery","./js/entries/plugins/foundation.equalizer.js","_foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.equalizer.js","Equalizer","_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__","eqId","$watched","hasNested","isNested","isOn","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","tooSmall","imgs","equalizeOn","_checkMQ","_reflow",".zf.equalizer","mutateme.zf.trigger","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","offsetHeight","lastElTopOffset","elOffsetTop","ln","groupsILength","lenJ","6","./js/entries/plugins/foundation.interchange.js","_foundation_interchange__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.interchange.js","Interchange","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__","rules","currentPath","_parseOptions","_addBreakpoints","_generateRules","rule","path","SPECIAL_QUERIES","rulesList","landscape","portrait","retina","7","./js/entries/plugins/foundation.offcanvas.js","_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.offcanvas.js","OffCanvas","_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__","contentClasses","reveal","$lastTrigger","$triggers","nested","$sticky","isInCanvas","contentId","contentOverlay","overlayPosition","$overlay","insertAfter","revealOnRegExp","revealClass","revealOnClass","isRevealed","revealOn","_setMQChecker","transitionTime","contentScroll","inCanvasFor","inCanvasOn","_checkInCanvas","_removeContentClasses","keydown.zf.offCanvas","_handleKeyboard","click.zf.offCanvas","onLoadListener","hasReveal","_","absoluteTopVal","stickyData","_addContentClasses","lastY","pageY","delta","_canScroll","allowUp","allowDown","scrollHeight","clientHeight","forceTo","_stopScrolling","_recordScrollable","_preventDefaultAtEdges","_scrollboxTouchMoved","canvasFocus","_fixStickyElements","_unfixStickyElements","__WEBPACK_EXTERNAL_MODULE__foundation_util_timer__","./foundation.util.timer","./js/entries/plugins/foundation.orbit.js","_foundation_orbit__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.orbit.js","Orbit","_foundation_util_timer__WEBPACK_IMPORTED_MODULE_3__","_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_5__","_foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__","_reset","containerClass","$slides","slideClass","$images","initActive","useMUI","_prepareForOrbit","bullets","_loadBullets","autoPlay","geoSync","accessible","$bullets","boxOfBullets","timerDelay","changeSlide","_setWrapperHeight","temp","counter","display","pauseOnHover","navButtons","$controls","nextClass","prevClass","$slide","_updateBullets","isLTR","chosenSlide","$curSlide","$newSlide","$firstSlide","$lastSlide","dirIn","dirOut","infiniteWrap","$oldBullet","$othersBullets","$newBullet","activeStateDescriptor","spans","spanCountInOthersBullets","toArray","count","animInFromRight","animOutToRight","animInFromLeft","animOutToLeft","10","__WEBPACK_EXTERNAL_MODULE__foundation_accordionMenu__","__WEBPACK_EXTERNAL_MODULE__foundation_drilldown__","__WEBPACK_EXTERNAL_MODULE__foundation_dropdownMenu__","./foundation.accordionMenu","./foundation.drilldown","./foundation.dropdownMenu","./js/entries/plugins/foundation.responsiveMenu.js","_foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.responsiveMenu.js","ResponsiveMenu","_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__","_foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__","_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__","MenuPlugins","dropdown","cssClass","drilldown","accordion","currentMq","currentPlugin","rulesTree","ruleSize","rulePlugin","isEmptyObject","_checkMediaQueries","matchedMq","destroy","12","./js/entries/plugins/foundation.responsiveToggle.js","_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.responsiveToggle.js","ResponsiveToggle","_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__","targetID","$targetMenu","$toggler","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","./js/entries/plugins/foundation.reveal.js","_foundation_reveal__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.reveal.js","_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__","cached","mq","fullScreen","_makeOverlay","additionalOverlayClasses","outerWidth","outerHeight","margin","_updatePosition","_handleState","$activeAnchor","visibility","multipleOpened","_disableScroll","afterAnimation","_addGlobalClasses","focusableElements","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","closeOnEsc","finishUp","_removeGlobalClasses","_enableScroll","hideDelay","resetOnClose","urlWithoutHash","search","14","./js/entries/plugins/foundation.slider.js","_foundation_slider__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.slider.js","percent","frac","absPosition","$handle","clickPos","baseLog","Slider","_foundation_util_touch__WEBPACK_IMPORTED_MODULE_4__","SHIFT_ARROW_RIGHT","SHIFT_ARROW_UP","SHIFT_ARROW_DOWN","SHIFT_ARROW_LEFT","inputs","handles","$fill","vertical","disabled","disabledClass","binding","_setInitAttr","doubleSided","$handle2","$input2","setHandles","_setHandlePos","pctOfBar","positionValueFunction","_logTransform","_powTransform","nonLinearBase","pow","$hndl","isDbl","h2Val","h1Val","vert","hOrW","lOrT","handleDim","elemDim","_pctOfBar","pxToMove","movement","decimal","_setValues","dim","isLeftHndl","handlePct","handlePos","initialStart","moveTime","changedDelay","initVal","initialEnd","aria-valuemax","aria-valuemin","aria-valuenow","aria-orientation","_adjustValue","direction","eventOffset","barDim","windowScroll","scrollLeft","elemOffset","barXY","eventFromBar","offsetPct","_value","firstHndlPos","secndHndlPos","previousVal","nextVal","div","_eventsForHandle","curHandle","handleChangeEvent","_handleEvent","clickSelect","draggable","newValue","_$handle","oldValue","decrease","increase","decreaseFast","increaseFast","invertVertical","15","./js/entries/plugins/foundation.smoothScroll.js","_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.smoothScroll.js","SmoothScroll","_linkClickListener","_handleLinkClick","arrival","_inTransition","scrollToLoc","loc","$loc","16","__WEBPACK_EXTERNAL_MODULE__foundation_smoothScroll__","./foundation.smoothScroll","./js/entries/plugins/foundation.magellan.js","_foundation_magellan__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.magellan.js","Magellan","_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_2__","calcPoints","$targets","$links","data-scroll","$active","points","winHeight","innerHeight","docHeight","$tar","pt","targetPoint","deepLinking","_updateActive","scrollme.zf.trigger","_deepLinkScroll","newScrollPos","isScrollingUp","activeIdx","visibleLinks","$oldActive","activeHash","isNewActive","isNewHash","8","./js/entries/plugins/foundation.sticky.js","_foundation_sticky__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.sticky.js","emCalc","em","fontSize","Sticky","$container","wasWrapped","stickyClass","data-mutate","scrollCount","checkEvery","isStuck","containerHeight","elemHeight","_parsePoints","_setSizes","scroll","_calc","_removeSticky","topPoint","reverse","topAnchor","btm","btmAnchor","pts","breaks","canStick","_eventsHandler","_pauseListeners","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","stickyOn","newElemWidth","comp","pdngl","pdngr","dynamicHeight","newContainerHeight","_setBreakPoints","mTop","marginTop","mBtm","marginBottom","17","./js/entries/plugins/foundation.tabs.js","_foundation_tabs__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.tabs.js","_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__","$tabTitles","linkClass","linkActiveClass","aria-selected","matchHeight","_setHeight","anchorNoHash","selectTab","_collapse","_addKeyHandler","_addClickHandler","_setHeightMqHandler","_handleTabChange","wrapOnKeys","historyHandled","activeCollapse","$oldTab","$tabLink","$targetContent","_collapseTab","panelActiveClass","$targetAnchor","$activeTab","idStr","hashIdStr","panelClass","panel","18","__WEBPACK_EXTERNAL_MODULE__foundation_accordion__","__WEBPACK_EXTERNAL_MODULE__foundation_tabs__","./foundation.accordion","./foundation.tabs","./js/entries/plugins/foundation.responsiveAccordionTabs.js","_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.responsiveAccordionTabs.js","ResponsiveAccordionTabs","_foundation_accordion__WEBPACK_IMPORTED_MODULE_3__","_foundation_tabs__WEBPACK_IMPORTED_MODULE_4__","tabs","storezfData","currentRule","_getAllOptions","allOptions","dummyPlugin","tmpPlugin","keyKey","objObj","_changedZfMediaQueryHandler","_handleMarkup","toSet","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","$tabsContent","$placeholder","tempValue","_this$currentRule","_this$currentRule2","_this$currentRule3","11","./js/entries/plugins/foundation.toggler.js","_foundation_toggler__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.toggler.js","Toggler","toggler","$trigger","controls","containsId","_updateARIA","19","./js/entries/plugins/foundation.tooltip.js","_foundation_tooltip__WEBPACK_IMPORTED_MODULE_1__","./js/foundation.tooltip.js","_foundation_positionable__WEBPACK_IMPORTED_MODULE_4__","isClick","tipText","template","_buildTemplate","allowHtml","aria-describedby","data-toggle","triggerClass","elementClassName","SVGElement","baseVal","tooltipWidth","tooltipHeight","templateClasses","tooltipClass","$template","data-is-active","showOn","fadeInDuration","fadeOutDuration","isFocus","disableForTouch","touchCloseText","20","ready","updateLabels1","selectedOption","dropdownField1","labelField1_1","labelField1_2","updateLabels2","dropdownField2","labelField2_1","labelField2_2","surveyScriptID","$targetForm","radioStarsGroups","querySelectorAll","updateStars","selectedIndex","radioButtons","radio","Cookies","alertBannerID","set","homeMarker","markerClusterer","mapLoadingScreenRequestText","mapLoadingScreenText","mapLoadingScreenNotFound","infowindow","$locationGrid","markerIcon","markerIconSelected","charleysDefaultOrderURL","inputM","autocompleteM","location_title","titleText","firstCalories","lastCalories","combinedCalories","urlReplace","referrer","go","pkwRegex","updateFilterButtons","dataSlug","updateFilterSelect","isotopeEqualHeights","row","itemTop","listingHeight","absContent","selectedContainer","itemHeight","$postsGrid","isotope","layoutMode","chosenOne","$pkeywordsearch","filteredItems","pagePath","linkPath","elementID","before","rlabel","speed","decodeHTMLEntities","innerHTML","chr","maxToShow","maxFavToShow","Deferred","toggleCustomizerPopup","$popup","setupCustomizer","parentSelector","handlePopupToggle","safariOverlayFixSelector","handlePopupClose","elementTop","clickPosition","scrollPosition","accountNavDropdown","days","setDate","centerMode","prevArrow","nextArrow","initialSlide","currentSlide","nextSlide","slides","slide","problemObject"],"mappings":"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4BjE,YAAY,SAM7DupC,EAActlC,KAAK,kBAAkBM,MAAM,aAI3C,IAAIU,GAAe,sBACnB,QAAQ3B,EAAYK,GAAZ,IACN,IAAK,QACHsB,EAAe,4FACf,MACF,KAAK,QACHA,EAAe,qFACf,MACF,KAAK,QACHA,EAAe,kFACf,MACF,KAAK,QACHA,EAAe,gGACf,MACF,KAAK,QACHA,EAAe,2FACf,MACF,KAAK,QACHA,EAAe,kFACf,MACF,KAAK,QACHA,EAAe,oFACf,MACF,KAAK,QACHA,EAAe,qFACf,MACF,KAAK,QACHA,EAAe,+FACf,MACF,KAAK,QACHA,EAAe,sFACf,MACF,KAAK,QACHA,EAAe,6EACf,MACF,KAAK,QACHA,EAAe,kFACf,MACF,KAAK,QACHA,EAAe,0EACf,MACF,KAAK,QACHA,EAAe,8FACf,MACF,KAAK,QACHA,EAAe,yEACf,MACF,KAAK,QACHA,EAAe,yFACf,MACF,KAAK,QACHA,EAAe,uEACf,MACF,KAAK,QACHA,EAAe,yEACf,MACF,KAAK,QACHA,EAAe,4EACf,MACF,KAAK,QACHA,EAAe,0EACf,MACF,KAAK,QACHA,EAAe,8EACf,MACF,KAAK,QACHA,EAAe,2EACf,MACF,KAAK,QACHA,EAAe,uFACf,MACF,KAAK,QACHA,EAAe,yEACf,MACF,KAAK,QACHA,EAAe,iFACf,MACF,KAAK,QACHA,EAAe,oFACf,MACF,KAAK,QACHA,EAAe,yEACf,MACF,KAAK,QACHA,EAAe,4EACf,MACF,KAAK,QACHA,EAAe,2EACf,MACF,KAAK,QACHA,EAAe,4EACf,MACF,KAAK,QACHA,EAAe,0EACf,MACF,KAAK,QACHA,EAAe,mFACf,MACF,KAAK,QACHA,EAAe,mFACf,MACF,KAAK,QACHA,EAAe,+EACf,MACF,KAAK,QACHA,EAAe,mFACf,MACF,KAAK,QACHA,EAAe,iGACf,MACF,KAAK,QACHA,EAAe,kFACf,MACF,KAAK,QACHA,EAAe,sFACf,MACF,KAAK,QACHA,EAAe,mFACf,MACF,KAAK,QACHA,EAAe,mFACf,MACF,KAAK,QACHA,EAAe,kFACf,MAEF,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","file":"scripts.js","sourcesContent":["// Location Map\nvar ttmap;\n// The home marker\nvar homeMarker;\n// clusterer\nvar markerClusterer;\n\n// Message for the allow location message\nconst mapLoadingScreenRequestText =\n \"Allow us to use your location and we'll find your nearest CHARLEYS.\";\n// Message for the location loading screen\nconst mapLoadingScreenText = \"Finding your location...\";\n// Message for not found\nconst mapLoadingScreenNotFound = \"Location not found. Try please again.\";\n\n// Container for marker popups\nvar infowindow;\n\n// Location isotope grid on locations page\nvar $locationGrid;\n\n// Map location markers\nvar markers = [];\n\nvar markerIcon = {};\nvar markerIconSelected = {};\n// determine if map is being loaded for the first time.\nvar isFirstLoad = true;\n\n/*\nconst mapStyle = [{\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#f5f5f5\"}]},{\"elementType\":\"labels.icon\",\"stylers\":[{\"visibility\":\"off\"}]},{\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#616161\"}]},{\"elementType\":\"labels.text.stroke\",\"stylers\":[{\"color\":\"#f5f5f5\"}]},{\"featureType\":\"administrative.land_parcel\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#bdbdbd\"}]},{\"featureType\":\"poi\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#eeeeee\"}]},{\"featureType\":\"poi\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#757575\"}]},{\"featureType\":\"poi.park\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#e5e5e5\"}]},{\"featureType\":\"poi.park\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#9e9e9e\"}]},{\"featureType\":\"road\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#ffffff\"}]},{\"featureType\":\"road.arterial\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#757575\"}]},{\"featureType\":\"road.highway\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#dadada\"}]},{\"featureType\":\"road.highway\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#616161\"}]},{\"featureType\":\"road.local\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#9e9e9e\"}]},{\"featureType\":\"transit.line\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#e5e5e5\"}]},{\"featureType\":\"transit.station\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#eeeeee\"}]},{\"featureType\":\"water\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#c9c9c9\"}]},{\"featureType\":\"water\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#9e9e9e\"}]}];\n*/\n\nfunction isMobileOrTablet() {\n var check = false;\n // eslint-disable-next-line\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n}\n\nwindow.isMobileOrTablet = window.isMobileOrTablet || isMobileOrTablet;\n\n// Elements that fire once dom is ready\njQuery(document).ready(function ($) {\n //Re-route from menu \n const storeLocationName = localStorage.getItem('charleys_customer_store_location_name');\n const deliveryMode = localStorage.getItem('charleys_customer_deliverymode');\n if (jQuery(\".menu-root-page, body:not(.term-74) .menu-category-taxonomy-page\").length) {\n if(storeLocationName && deliveryMode) {\n change_view(\"menu\");\n } else if (storeLocationName){\n change_view(\"order\");\n\n } else {\n $('.menu-root-page').removeClass('invisible');\n $('.menu-category-taxonomy-page').removeClass('invisible');\n }\n } else if ($('.menu-category-taxonomy-page')) {\n $('.menu-category-taxonomy-page').removeClass('invisible');\n \n }\n // Initialize TomTom Map\n if (!window.location.href.includes(\"/order/\")) {\n initMap(-98.5556199, 39.8097343);\n }\n // Set Default order URL\n $(\"[data-order-link]\").each(function () {\n $(this).attr(\"href\", charleysDefaultOrderURL);\n });\n\n if ($(\"#tt-map\").length) {\n const inputD = $(\"#location-search .search-field\")[0];\n const inputM = $(\"#location-search-m .search-field\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n // fields: [\"address_components\", \"geometry\", \"icon\", \"name\", \"zipcode\"],\n strictBounds: false,\n types: [\"(regions)\"],\n };\n const autocompleteD = new google.maps.places.Autocomplete(inputD, options);\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n ttmap.systemZoomChange = true;\n getLocations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n true\n );\n }\n });\n\n const autocompleteM = new google.maps.places.Autocomplete(inputM, options);\n autocompleteM.addListener(\"place_changed\", function () {\n const place = autocompleteM.getPlace();\n if (place.geometry) {\n ttmap.systemZoomChange = true;\n getLocations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n true\n );\n }\n });\n\n // If a user ignores suggestions, this will catch and gecode the input\n $(\"#location-search, #location-search-m\").submit(function (e) {\n e.preventDefault();\n $(this).find(\".search-field\").blur();\n\n var address = $(this).find(\".search-field\").val();\n var geocoder = new google.maps.Geocoder();\n\n geocoder.geocode(\n {\n address: address,\n },\n function (results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n ttmap.systemZoomChange = true;\n getLocations(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng(),\n \"\",\n true\n );\n } else {\n $(this).find(\".search-field\").val(\"\");\n }\n }\n );\n });\n $(\"#wingsLocationsCheckbox\").change(function () { \n // console.log(\"I submitted\");\n if ($(window).width() < 1025) {\n $(\"#location-search-m\").submit();\n }\n else {\n $(\"#location-search\").submit();\n }\n\n if ($(this).prop(\"checked\")) {\n $(\".wingsContainer\").addClass(\"checked\");\n } else {\n $(\".wingsContainer\").removeClass(\"checked\");\n }\n getMarkersInView();\n\n });\n }\n\n if ($('#tt-map').length) {\n //\n // var options = {\n // placeholder: 'Search City, State, or ZIP Code',\n // searchOptions: {\n // key: tomtom_api_key,\n // language: 'en-US',\n // limit: 15,\n // idxSet: 'Geo',\n // maxFuzzyLevel: 1,\n // center: {longitude: -98.5556199, latitude: 39.8097343}\n // },\n // autocompleteOptions: {\n // key: tomtom_api_key,\n // language: 'en-US',\n // resultSet: 'category'\n // },\n // filterSearchResults: function(result) {\n // console.log(result);\n // if(result.type == 'Geography') {\n // return true;\n // } else {\n // return false;\n // }\n // }\n // };\n //\n // // if(true) {\n // // options.searchOptions.countrySet = 'US';\n // // }\n //\n // var ttSearchBoxM = new tt.plugins.SearchBox(tt.services, options);\n // var searchBoxHTMLM = ttSearchBoxM.getSearchBoxHTML();\n // $('.search-container.hide-for-large').append(searchBoxHTMLM);\n //\n // var ttSearchBoxD = new tt.plugins.SearchBox(tt.services, options);\n // var searchBoxHTMLD = ttSearchBoxD.getSearchBoxHTML();\n // $('.search-container.show-for-large').append(searchBoxHTMLD);\n //\n // ttSearchBoxM.on('tomtom.searchbox.resultselected', function(response) {\n // var lat = response.data.result.position.lat;\n // var lng = response.data.result.position.lng;\n // ttmap.systemZoomChange = true;\n // getLocations( lat, lng, '', true );\n // });\n //\n // ttSearchBoxD.on('tomtom.searchbox.resultselected', function(response) {\n // console.log(response);\n // var lat = response.data.result.position.lat;\n // var lng = response.data.result.position.lng;\n // ttmap.systemZoomChange = true;\n // getLocations( lat, lng, '', true );\n // });\n //\n // $('.tt-search-box-input').keyup(function(e) {\n // if(e.keyCode == 13) { // enter key\n // var $submittingform = $(this);\n // var address = $(this).val();\n //\n // console.log(tt, address, tomtom_api_key);\n //\n // tt.services.geocode({\n // key: tomtom_api_key,\n // query: address,\n // countrySet: 'US'\n // })\n // .then(function(response) {\n // console.log('success', response);\n // if (response.results.length > 0) {\n // ttmap.systemZoomChange = true;\n // var lat = response.results[0].position.lat;\n // var lng = response.results[0].position.lng;\n // getLocations( lat, lng, '', true );\n // } else {\n // $submittingform.val('');\n // }\n // })\n // .catch(function(response) {\n // console.log('error', response);\n // });\n // }\n // });\n //\n ttmap.on('dragend', getMarkersInView);\n ttmap.on('zoomend', getMarkersInView);\n }\n\n $(\"[data-tap-to-explore]\").click(function () {\n $(this).addClass(\"hide\");\n hideLoading();\n showZoomPrompt();\n });\n\n // attempt to geolocate user\n if (!localStorage.getItem(\"charleys_visitor_nearest_location_id\")) {\n geolocateUser();\n } else {\n if (ttmap) {\n ttmap.systemZoomChange = true;\n }\n setLocation(true);\n }\n if (\n $(\".menu-grid\").length &&\n !localStorage.getItem(\"charleys_visitor_nearest_location_id\")\n ) {\n // console.log('no location');\n\n $(\".menu-grid .food-item[data-is-default-cps], .menu-grid .food-item[data-is-read_only_menu]\").each(function () {\n $(this).removeClass(\"hide\");\n });\n $(\".menu-grid .food-item:not([data-is-default-cps], .menu-grid .food-item[data-is-read_only_menu])\").each(function () {\n $(this).addClass(\"hide\");\n }); \n } else if ($(\".menu-grid\").length &&\n localStorage.getItem(\"charleys_visitor_nearest_location_id\")) {\n // console.log('location');\n $(\".menu-grid .food-item[data-is-default-cps], .menu-grid .food-item[data-is-read_only_menu]\").each(function () {\n $(this).removeClass(\"hide\");\n });\n }\n}); // end jQuery ready\n\n// Fires to prep the TOMTOM map\nfunction initMap(longitude, latitude) {\n // console.log(\"initMap\");\n var $ = jQuery;\n\n if ($(\"#tt-map\").length) {\n tt.setProductInfo(\"Charleys Location Map\", \"2.0.0\");\n ttmap = tt.map({\n key: tomtom_api_key,\n container: \"tt-map\",\n // style: 'tomtom://vector/1/basic-main',\n // dragPan: !isMobileOrTablet(),\n // Center on the USA\n center: [-98.5556199, 39.8097343],\n zoom: 15,\n language: \"en-US\",\n });\n ttmap.addControl(new tt.FullscreenControl());\n ttmap.addControl(new tt.NavigationControl());\n // console.log('adsgdsagasg');\n\n } // end if\n} // end initMap\n\n// Shows loading cover elements\nfunction showLoading() {\n // console.log(\"showLoading\");\n var $ = jQuery;\n\n $(\"[data-tap-to-explore]\").addClass(\"hide\");\n $(\"[data-loading-icon]\").removeClass(\"hide\");\n $(\"[data-map-cover]\").removeClass(\"hide\");\n $(\"[data-search-column-cover]\").removeClass(\"hide\");\n} // end showLoading\n\n// Hides loading cover elements\nfunction hideLoading() {\n // console.log(\"hideLoading\");\n var $ = jQuery;\n $(\"[data-map-cover]\").addClass(\"hide\");\n $(\"[data-search-column-cover]\").addClass(\"hide\");\n} // end hideLoading\n\n// Shows the Zoom prompt covering the map\nfunction showZoomPrompt() {\n // console.log(\"showZoomPrompt\");\n var $ = jQuery;\n $(\"[data-map-zoom-prompt]\").removeClass(\"hide\");\n} // end showZoomPrompt\n\n// Hides the zoom in prompt for map\nfunction hideZoomPrompt() {\n // console.log(\"hideZoomPrompt\");\n var $ = jQuery;\n $(\"[data-map-zoom-prompt]\").addClass(\"hide\");\n} // end hideZoomPrompt\n\n// Shows the prompt for no markers within range\nfunction showEmptyPrompt() {\n // console.log(\"showEmptyPrompt\");\n var $ = jQuery;\n $(\"[data-map-empty-prompt]\").removeClass(\"hide\");\n} // end showEmptyPrompt\n\n// Hides the prompt for no markers within range\nfunction hideEmptyPrompt() {\n // console.log(\"hideEmptyPrompt\");\n var $ = jQuery;\n $(\"[data-map-empty-prompt]\").addClass(\"hide\");\n} // end showEmptyPrompt\n\n// Gets the markers within map view - plus a bit outside view.\nfunction getMarkersInView() {\n // console.log(\"getMarkersInView\");\n if (!ttmap.systemZoomChange) {\n if (ttmap.getZoom() >= 7) {\n var bounds = ttmap.getBounds();\n var mCenter = bounds.getCenter();\n var neCorner = bounds.getNorthEast();\n\n var lat1 = mCenter.lat,\n lat2 = neCorner.lat,\n lon1 = mCenter.lng,\n lon2 = neCorner.lng;\n\n const R = 6371e3; // metres\n const φ1 = (lat1 * Math.PI) / 180; // φ, λ in radians\n const φ2 = (lat2 * Math.PI) / 180;\n const Δφ = ((lat2 - lat1) * Math.PI) / 180;\n const Δλ = ((lon2 - lon1) * Math.PI) / 180;\n\n const a =\n Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +\n Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\n const distance = R * c * 0.000621371192; // convert meters to miles\n\n // console.log(distance);\n\n getLocations(mCenter.lat, mCenter.lng, distance);\n hideZoomPrompt();\n } else {\n clearAllMarkers();\n showZoomPrompt();\n hideEmptyPrompt();\n }\n } else {\n ttmap.systemZoomChange = false;\n }\n} // end getMarkersInView\n// Gets locations from center to distance.\nfunction getLocations(lat, lng, dist, setBounds = false) {\n // console.log(\"getLocations\", lat, lng, dist);\n var $ = jQuery;\n\n showLoading();\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n // action: \"get_nearby_locations\",\n action: \"get_blended_nearby_locations\",\n lat: lat,\n long: lng,\n distance: dist,\n },\n success: function (response) {\n // console.log(response);\n var result = JSON.parse(response);\n // console.log(\"a\", result);\n if (result.status == \"success\") {\n hideEmptyPrompt();\n setLocationGrid(result.data.restaurants);\n if (setBounds) {\n fitToMarkerBounds(ttmap);\n $(\".results-container\").animate(\n {\n scrollTop: 0,\n },\n 500\n );\n }\n } else {\n showEmptyPrompt();\n clearAllMarkers();\n }\n hideLoading();\n },\n error: function () { },\n });\n} // end getLocations\n\n// Sets the grid list of locations\nfunction setLocationGrid(data) {\n // console.log(\"setLocationGrid\");\n var $ = jQuery;\n\n clearAllMarkers();\n\n if (data && data.length > 0) {\n $(\"[data-search-cover]\").addClass(\"hide\");\n $(\"[data-nearby-heading]\").removeClass(\"hide\");\n hideZoomPrompt();\n\n // console.log(\"Data\", data);\n\n for (var i = 0; i < data.length; i++) {\n if ($('#wingsLocationsCheckbox').prop('checked')) {\n //only wings\n if (data[i]['location_groups'].split(',').includes('cpsw')) {\n // console.log(\"only wings\");\n getLocationInfo();\n }\n } else {\n //all stores\n // console.log(\"not only wings\");\n getLocationInfo();\n }\n function getLocationInfo() {\n var locationGroups = data[i]['location_groups'];\n var locationItemClone = $('#location-grid [data-location-template]').clone();\n\n locationItemClone.attr('id', 'location-' + data[i]['id']);\n locationItemClone.attr('data-store-number', data[i]['extref']);\n\n locationItemClone.find('#location-select-').attr('value', 'location-select-' + data[i]['id']);\n locationItemClone.find('#location-select-').attr('id', 'location-select-' + data[i]['id']);\n locationItemClone.find('label').attr('for', 'location-select-' + data[i]['id']);\n\n locationItemClone.find('label').attr('data-location-id', data[i]['id']);\n locationItemClone.find('label').attr('data-title', data[i]['name']);\n\n locationItemClone.find('label').attr('data-permalink', data[i]['permalink']);\n locationItemClone.find('label').attr('data-store-id', data[i]['extref']);\n locationItemClone.find('label').attr('data-location-groups', locationGroups);\n\n if (experienceOptInStores === null || (experienceOptInStores !== null && experienceOptInStores.includes(locationItemClone.attr('data-store-number')))) {\n locationItemClone.find('label').attr('data-order-url', '/order/?store=' + data[i]['slug']);\n } else {\n locationItemClone.find('label').attr('data-order-url', data[i]['url']);\n }\n\n locationItemClone.find('.location-title strong').html(data[i]['name']);\n\n if (locationItemClone.find('.set-location-button').length) {\n\n locationItemClone.find('.set-location-button').attr('data-location-id', data[i]['id']);\n locationItemClone.find('.set-location-button').attr('data-title', data[i]['name']);\n locationItemClone.find('.set-location-button').attr('data-order-url', data[i]['url']);\n locationItemClone.find('.set-location-button').attr('data-permalink', data[i]['permalink']);\n locationItemClone.find('.set-location-button').attr('data-store-id', data[i]['extref']);\n locationItemClone.find('.set-location-button').attr('data-location-groups', locationGroups);\n\n locationItemClone.find('.set-location-button').attr('data-show-on', 'large');\n locationItemClone.find('.set-location-button').attr('title', 'Make My Store');\n locationItemClone.find('.set-location-button').attr('aria-label', 'Make My Store');\n\n if (experienceOptInStores === null || (experienceOptInStores !== null && experienceOptInStores.includes(locationItemClone.attr('data-store-number')))) {\n locationItemClone.find('.set-location-button').attr('data-order-url', '/order/?store=' + data[i]['slug']);\n } else {\n locationItemClone.find('.set-location-button').attr('data-order-url', data[i]['url']);\n }\n\n new Foundation.Tooltip(locationItemClone.find('.set-location-button'), {});\n\n locationItemClone.find('.set-location-button').click(function () {\n localStorage.setItem('charleys_location_page_location_id', $(this).attr('data-location-id'));\n setAsStore($(this).attr('data-location-id'), $(this).attr('data-title'), $(this).attr('data-order-url'), $(this).attr('data-permalink'), $(this).attr('data-store-id'), $(this).attr('data-location-groups'), false);\n });\n }\n\n if (localStorage.getItem('charleys_visitor_nearest_location_id') == data[i]['id']) {\n locationItemClone.find('.set-location-button').addClass('current-location');\n }\n\n locationItemClone.find('.location-address strong').html(data[i]['streetaddress'] + '
' + data[i]['city'] + ', ' + data[i]['state'] + ' ' + data[i]['zip']);\n\n if (data[i]['telephone']) {\n locationItemClone.find('.location-phone a').attr('href', 'tel:' + data[i]['telephone']);\n locationItemClone.find('.location-phone a').text(data[i]['telephone']);\n } else {\n locationItemClone.find('.location-phone a').remove();\n }\n\n locationItemClone.find('.learn-more').attr('href', data[i]['permalink']);\n\n // Is a non OLO Store\n if (data[i]['id'].toString().includes('wp_')) {\n locationItemClone.find('.order-now-details').attr('href', data[i]['url']);\n locationItemClone.find('.order-now-details').addClass('hide');\n // Check if opted-in to new experience\n } else if (experienceOptInStores === null || (experienceOptInStores !== null && experienceOptInStores.includes(locationItemClone.attr('data-store-number')))) {\n locationItemClone.find('.order-now-details').attr('href', '/order/?store=' + data[i]['slug']);\n locationItemClone.find('.order-now-details').attr('data-customer-store-location-id', data[i]['id']);\n locationItemClone.find('.order-now-details').removeClass('hide');\n // If not opted-in, set link dependent on availability of access token and URL\n } else {\n if (data[i]['url'].length) {\n if (localStorage.getItem('charleys_access_token')) {\n locationItemClone.find('.order-now-details').attr('href', 'https://order.charleys.com/login/punchh/' + localStorage.getItem('charleys_access_token'));\n locationItemClone.find('.order-now-details').removeClass('hide');\n } else {\n locationItemClone.find('.order-now-details').attr('href', data[i]['url']);\n locationItemClone.find('.order-now-details').removeClass('hide');\n }\n }\n }\n\n // military base alt. flow\n let militaryBaseIds = [\n 226114,\n 226115,\n 226116,\n 226117,\n 226118,\n 226119,\n 226120,\n 226121,\n 226122,\n 226123\n ];\n\n locationItemClone.find('.order-now-pickup-military').attr('href', data[i]['url']);\n\n let doordashLink = 'https://doordash.com';\n switch (data[i][\"id\"]) {\n case 226114:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-meade-2466507/';\n break;\n case 251343:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-lewis-1841146/29765746/';\n break;\n case 226115:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672000/29134952/';\n break;\n case 226116:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-tacoma-1841808/29165348/';\n break;\n case 226117:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672038/29130357/';\n break;\n case 226118:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-joint-base-lewis-mcchord-1841832/29157347/';\n break;\n case 226119:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-hood-1624506/29154949/';\n break;\n case 226120:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-campbell-1897032/29139351/';\n break;\n case 226121:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672652/29129355/';\n break;\n case 226122:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672005/29158152/';\n break;\n case 226123:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-hood-1624917/29167948/';\n break;\n }\n\n locationItemClone.find('.order-now-delivery-military').attr('href', doordashLink);\n\n if (militaryBaseIds.includes(data[i][\"id\"])) {\n locationItemClone.find('.order-now-details').addClass('hide');\n locationItemClone.find('.order-now-pickup-military').removeClass('hide');\n locationItemClone.find('.order-now-delivery-military').removeClass('hide');\n }\n\n locationItemClone.find('.location-distance [data-miles-away]').text(parseFloat(data[i]['distance']).toFixed(1));\n locationItemClone.find('.location-distance').removeClass('invisible');\n\n locationItemClone.removeAttr('data-location-template');\n locationItemClone.removeClass('hide');\n\n if (data[i][\"location_groups\"].includes(\"cpsw\")) {\n locationItemClone.find(\".location-indicators\").removeClass(\"hidden\");\n locationItemClone.find(\".location-indicator-wing\").removeClass(\"hide\");\n }\n\n if (data[i][\"location_groups\"].includes(\"frozen-treats\")) {\n locationItemClone.find(\".location-indicators\").removeClass(\"hidden\");\n locationItemClone.find(\".location-indicator-ice-cream\").removeClass(\"hide\");\n }\n\n $('#location-grid').append(locationItemClone);\n\n var popupHTML = '
' +\n '' + data[i]['name'] + '' +\n '
' +\n '
' + data[i]['streetaddress'] + '
' + data[i]['city'] + ', ' + data[i]['state'] + ' ' + data[i]['zip'] + '
' +\n '
' + data[i]['telephone'] + '
';\n\n // Check if the wings condition is met\n if (data[i][\"location_groups\"].includes(\"cpsw\")) {\n popupHTML += '

WINGS AVAILABLE

';\n }\n popupHTML += '
Store Info
'; \n\n // Format is lng , lat ... WHICH IS BACKWARDS TOMTOM\n markers.push(createMarker([parseFloat(data[i]['longitude']), parseFloat(data[i]['latitude'])], popupHTML, ttmap));\n }\n\n }\n\n\n }\n\n\n\n $('#location-grid .location-item:not(.hide) a[data-customer-store-location-id]').click(function (e) {\n e.preventDefault();\n localStorage.setItem('charleys_location_page_location_id', $(this).attr('data-customer-store-location-id'));\n window.location.href = $(this).attr('href');\n });\n\n $('#location-grid input[type=\"radio\"] + label').click(function () {\n var markerIndex = $(this).parent().index() - 1; // account for template\n //\n // var marker = new google.maps.Marker({});\n // new google.maps.event.trigger(markers[markerIndex], 'click');\n\n // Close any open popups\n for (var i = 0; i < markers.length; i++) {\n if (markers[i].getPopup().isOpen()) {\n markers[i].togglePopup();\n }\n }\n // Open popup\n markers[markerIndex].togglePopup();\n\n setAsStore($(this).attr('data-location-id'), $(this).attr('data-title'), $(this).attr('data-order-url'), $(this).attr('data-permalink'), $(this).attr('data-store-id'), $(this).attr('data-location-groups'), false);\n\n // Zoom in to location\n // ttmap.setCenter(markers[markerIndex].position);\n // ttmap.setZoom(11);\n });\n\n if (localStorage.getItem('charleys_visitor_nearest_location_id') && isFirstLoad) {\n var pid = localStorage.getItem('charleys_visitor_nearest_location_id');\n if ($('#location-' + pid).length) {\n var markerIndex = $('#location-' + pid).index() - 1; // account for template\n // markers[markerIndex].click();\n // var marker = new google.maps.Marker({});\n // new google.maps.event.trigger(markers[markerIndex], 'click');\n\n // Close any open popups\n for (var i = 0; i < markers.length; i++) {\n if (markers[i].getPopup().isOpen()) {\n markers[i].togglePopup();\n }\n }\n // Open popup\n markers[markerIndex].togglePopup();\n\n $('#location-select-' + pid).prop('checked', true);\n }\n isFirstLoad = false;\n }\n\n // setClusters();\n} // end setLocationGrid\n\n// Creates a marker on the map\nfunction createMarker(position, popupHTML, ttmapObj) {\n // console.log('add marker', popupHTML, position);\n var markerElement = document.createElement(\"div\");\n markerElement.className = \"marker\";\n\n var markerContentElement = document.createElement(\"div\");\n markerContentElement.className = \"marker-content\";\n\n markerElement.appendChild(markerContentElement);\n\n // console.log('Create Marker', position);\n\n var markerHeight = 50,\n markerRadius = 25,\n linearOffset = 0;\n\n var popupOffsets = {\n top: [markerHeight / 2, 0],\n \"top-left\": [0, 0],\n \"top-right\": [0, 0],\n bottom: [0, -markerHeight],\n \"bottom-left\": [\n linearOffset,\n (markerHeight - markerRadius + linearOffset) * -1,\n ],\n \"bottom-right\": [\n -linearOffset,\n (markerHeight - markerRadius + linearOffset) * -1,\n ],\n left: [markerRadius, (markerHeight - markerRadius) * -1],\n right: [-markerRadius, (markerHeight - markerRadius) * -1],\n };\n\n var popup = new tt.Popup({ offset: popupOffsets }).setHTML(popupHTML);\n\n // console.log(position, popup, ttmapObj);\n // add marker to map\n return new tt.Marker({ element: markerElement, anchor: \"bottom\" })\n .setLngLat(position)\n .setPopup(popup)\n .addTo(ttmapObj);\n}\n\n// Clears all markers on the map\nfunction clearAllMarkers() {\n // console.log(\"clearAllMarkers\");\n var $ = jQuery;\n // Set location grid heading\n $(\"[data-search-cover]\").removeClass(\"hide\");\n $(\"[data-nearby-heading]\").addClass(\"hide\");\n // clear out location items\n $(\"#location-grid .location-item:not(.hide)\").each(function () {\n $(this).remove();\n });\n // Clear all map markers\n for (var m = 0; m < markers.length; m++) {\n markers[m].remove();\n }\n markers = [];\n} // end clearAllMarkers\n\n// Fits bounds to markers\nfunction fitToMarkerBounds(ttmapObj) {\n // console.log(\"fitToMarkerBounds\");\n\n if (markers.length) {\n var bbox = [\n [0, 0],\n [0, 0],\n ];\n var lats = [];\n var lngs = [];\n\n for (var i = 0; i < markers.length; i++) {\n var lnglat = markers[i].getLngLat();\n lats.push(lnglat.lng);\n lngs.push(lnglat.lat);\n }\n\n var minlat = Math.min.apply(null, lats),\n maxlat = Math.max.apply(null, lats);\n var minlng = Math.min.apply(null, lngs),\n maxlng = Math.max.apply(null, lngs);\n\n bbox = [\n [minlat, minlng],\n [maxlat, maxlng],\n ];\n\n ttmapObj.fitBounds(bbox, {\n padding: { top: 75, bottom: 75, left: 75, right: 75 },\n maxZoom: 12,\n });\n }\n} // end fitToMarkerBounds\n\n// Geolocates the user if permission is given\nfunction geolocateUser() {\n // console.log(\"geolocateUser\");\n var $ = jQuery;\n // console.log('Get Location');\n\n setFindingLocation();\n\n navigator.geolocation.getCurrentPosition(\n function (position) {\n\n var latitude = position.coords.latitude;\n var longitude = position.coords.longitude;\n // console.log('latitude', latitude); \n // console.log('longitude', longitude);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n // action: \"get_nearby_locations\",\n action: \"get_blended_nearby_locations\",\n lat: latitude,\n long: longitude,\n distance: \"\",\n },\n success: function (response) {\n var data = JSON.parse(response);\n // console.log(\"data\", data);\n\n if (data.data.restaurants.length > 0) {\n\n // setAsStore(data.data[0]['ID'], data.data[0]['title'], data.data[0]['order_url'], data.data[0]['location_details']);\n setAsStore(data.data.restaurants[0]['id']);\n // set 3 other nearby stores--per request of Drew\n\n const stores = data.data.restaurants;\n\n for (let i = 1; i <= 3; i++) {\n if (stores.length > i) {\n localStorage.setItem(`nearByStore${i}`, stores[i]['id']);\n }\n }\n } else {\n\n unsetFindingLocation();\n }\n },\n error: function () {\n\n },\n });\n },\n function (error) {\n if (!localStorage.getItem(\"charleys_visitor_nearest_location_id\")) {\n unsetFindingLocation();\n // setLoadingCoverScreen(mapLoadingScreenRequestText, true);\n }\n // console.log('denied: ', error);\n // $('#wf-store-locator-get-location').prop('disabled', true);\n // setAlertMessage('Error: ' + error.message);\n },\n function (options) {\n // console.log('options: ', options);\n }\n );\n} // end geolocateUser\n\n// Sets selectd store\nfunction setAsStore(\n locationID,\n title = \"\",\n order_url = \"\",\n permalink = \"\",\n store_num = \"\",\n location_groups = \"\",\n set_store_location = true\n) {\n // console.log(\"setAsStore\");\n var $ = jQuery;\n unsetLocationLS();\n\n // Unset all location buttons\n $(\".set-location-button\").each(function () {\n $(this).removeClass(\"current-location\");\n });\n\n localStorage.setItem(\"charleys_visitor_nearest_location_id\", locationID);\n\n if (\n !title.length ||\n !order_url.length ||\n !permalink.length ||\n !store_num.length ||\n !location_groups.length\n ) {\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_location\",\n location_id: locationID,\n },\n success: function (response) {\n // console.log(response);\n var result = JSON.parse(response);\n\n var location_groups = '';\n\n if (result.data) {\n localStorage.setItem('charleys_visitor_nearest_location', result.data['name']);\n localStorage.setItem('charleys_visitor_order_url', result.data['url']);\n localStorage.setItem('charleys_visitor_location_details', result.data['permalink']);\n localStorage.setItem('charleys_visitor_location_store', result.data['extref']);\n localStorage.setItem('charleys_visitor_location_groups', result.data['location_groups']);\n if (set_store_location) {\n localStorage.setItem('charleys_customer_store_location_id', result.data['id']);\n }\n\n if (experienceOptInStores === null || (experienceOptInStores !== null && experienceOptInStores.includes(result.data['extref']))) {\n localStorage.setItem('charleys_visitor_order_url', '/order/?store=' + result.data['slug']);\n hideFakeMenuIfAddedLocation();\n } else {\n if (localStorage.getItem('charleys_access_token')) {\n localStorage.setItem('charleys_visitor_order_url', 'https://order.charleys.com/login/punchh/' + localStorage.getItem('charleys_access_token'));\n }\n }\n\n //set 3 other nearby stores--per request of Drew\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n // action: \"get_nearby_locations\",\n action: \"get_blended_nearby_locations\",\n lat: result.data['latitude'],\n long: result.data['longitude'],\n distance: \"\",\n },\n success: function (response) {\n var data = JSON.parse(response);\n // console.log(\"data\", data);\n\n if (data.data.restaurants.length > 0) {\n // \n const stores = data.data.restaurants;\n\n for (let i = 1; i <= 3; i++) {\n if (stores.length > i) {\n localStorage.setItem(`nearByStore${i}`, stores[i]['id']);\n }\n }\n }\n },\n error: function () {\n\n },\n });\n //\n // let visitorOrderUrl = result.data['url'];\n // hideFakeMenuIfAddedLocation(visitorOrderUrl);\n //\n setLocation();\n }\n },\n error: function () { },\n });\n } else {\n localStorage.setItem(\"charleys_visitor_nearest_location\", title);\n localStorage.setItem(\"charleys_visitor_order_url\", order_url);\n localStorage.setItem(\"charleys_visitor_location_details\", permalink);\n localStorage.setItem(\"charleys_visitor_location_store\", store_num);\n localStorage.setItem(\"charleys_visitor_location_groups\", location_groups);\n if (set_store_location) {\n localStorage.setItem('charleys_customer_store_location_id', locationID);\n }\n setLocation();\n }\n\n} // end setAsStore\n\n// Unsets location Local Storage\nfunction unsetLocationLS() {\n // console.log(\"unsetLocationLS\");\n localStorage.removeItem(\"charleys_visitor_nearest_location_id\");\n localStorage.removeItem(\"charleys_visitor_nearest_location\");\n localStorage.removeItem(\"charleys_visitor_order_url\");\n localStorage.removeItem(\"charleys_visitor_delivery_url\");\n localStorage.removeItem(\"charleys_visitor_delivery_off\");\n localStorage.removeItem(\"charleys_visitor_location_details\");\n localStorage.removeItem(\"charleys_visitor_location_store\");\n localStorage.removeItem(\"charleys_visitor_location_groups\");\n localStorage.removeItem('nearByStore1');\n localStorage.removeItem('nearByStore2');\n localStorage.removeItem('nearByStore3');\n}\n\n// Sets location\nfunction setLocation(reload = false) {\n // console.log(\"setLocation\");\n var $ = jQuery;\n\n // Set Location Button to reflect current store.\n $(\"[data-find-location-button]\").each(function () {\n $(this).find(\"[data-find-location]\").addClass(\"hide\");\n $(this).find(\"[data-find-location-show]\").addClass(\"hide\");\n $(this).find(\"[data-find-location-finding]\").removeClass(\"hide\");\n\n $(this)\n .find(\"[data-find-location-name] strong\")\n .text(\n decodeEntities(\n localStorage.getItem(\"charleys_visitor_nearest_location\")\n )\n );\n $(this).find(\"[data-find-location-finding]\").addClass(\"hide\");\n $(this).find(\"[data-find-location-show]\").removeClass(\"hide\");\n\n $(this).removeClass(\"hide\");\n });\n\n // Set location buttons\n $(\n '.set-location-button[data-location-id=\"' +\n localStorage.getItem(\"charleys_visitor_nearest_location_id\") +\n '\"]'\n ).each(function () {\n $(this).addClass(\"current-location\");\n });\n\n // Set Order Buttons\n if (localStorage.getItem(\"charleys_visitor_order_url\")) {\n $(\"[data-order-link]\").each(function () {\n $(this).attr(\"href\", localStorage.getItem(\"charleys_visitor_order_url\"));\n });\n }\n\n // Set map\n if ($(\"#tt-map\").length && reload) {\n showLoading();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_location\",\n location_id: localStorage.getItem(\n \"charleys_visitor_nearest_location_id\"\n ),\n },\n success: function (response) {\n // console.log(response);\n var data = JSON.parse(response);\n if (data.data) {\n getLocations(data.data[\"latitude\"], data.data[\"longitude\"], \"\", true);\n }\n },\n error: function () { },\n });\n }\n\n showFoodMenu();\n}\n\n// Sets finding location message elements\nfunction setFindingLocation() {\n // console.log(\"setFindingLocation\");\n var $ = jQuery;\n\n // $(\"[data-please-set-location]\").addClass(\"hide\");\n // $(\"[data-finding-your-location]\").removeClass(\"hide\");\n\n $(\"[data-find-location-button]\").each(function () {\n $(this).find(\"[data-find-location]\").addClass(\"hide\");\n $(this).find(\"[data-find-location-show]\").addClass(\"hide\");\n $(this).find(\"[data-find-location-finding]\").removeClass(\"hide\");\n $(this).removeClass(\"hide\");\n });\n\n $(\"[data-show-for-no-location]\").each(function () {\n $(this).removeClass(\"hide\");\n });\n} // end setFindingLocation\n\nfunction unsetFindingLocation() {\n // console.log(\"unsetFindingLocation\");\n\n \n // console.log('unset finding location');\n var $ = jQuery;\n $(\"[data-find-location-button]\").each(function () {\n $(this).find(\"[data-find-location-show]\").addClass(\"hide\");\n $(this).find(\"[data-find-location-finding]\").addClass(\"hide\");\n $(this).find(\"[data-find-location]\").removeClass(\"hide\");\n $(this).removeClass(\"hide\");\n });\n\n if (!localStorage.getItem(\"charleys_visitor_location_store\") || !localStorage.getItem(\"charleys_customer_store_location_name\")) {\n // Hide all location dependent elements\n $('[data-show-for-stores*=\"yes\"]').each(function() {\n $(this).removeClass('hide');\n });\n // console.log('no location');\n // $(\"[data-please-set-location]\").removeClass(\"hide\");\n // $(\"[data-finding-your-location]\").addClass(\"hide\");\n }\n} // end unsetFindingLocation\n\n// Shows food menu items depending on location .\nfunction showFoodMenu() {\n // console.log(\"showFoodMenu\");\n\n var $ = jQuery;\n\n var currentStoreNumber = localStorage.getItem(\n \"charleys_visitor_location_store\"\n );\n var currentLocGroups = localStorage.getItem(\n \"charleys_visitor_location_groups\"\n );\n\n // console.log(currentStoreNumber, currentLocGroups);\n\n // patch for previous bug where store # and groups were blanks\n // if (!currentStoreNumber || !currentLocGroups) {\n if (!currentStoreNumber) {\n setAsStore(localStorage.getItem(\"charleys_visitor_nearest_location_id\"));\n\n currentStoreNumber = localStorage.getItem(\n \"charleys_visitor_location_store\"\n );\n currentLocGroups = localStorage.getItem(\"charleys_visitor_location_groups\");\n }\n\n if (currentLocGroups) {\n currentLocGroups = currentLocGroups.split(\",\");\n }\n // console.log(currentStoreNumber, currentLocGroups);\n\n // $(\"[data-please-set-location]\").addClass(\"hide\");\n // $(\"[data-finding-your-location]\").addClass(\"hide\");\n\n // // Display elements related to stores\n $('[data-show-for-stores]').each(function () {\n if ($(this).attr('data-show-for-stores').includes('yes')) {\n $(this).removeClass('hide');\n } else {\n $(this).addClass('hide');\n }\n });\n\n // Display elements related to store category\n $(\"[data-show-for-category]\").each(function () {\n if (currentLocGroups) {\n var showcats = $(this).attr(\"data-show-for-category\").split(\",\");\n if (showcats.length !== 0) {\n var showElement = false;\n\n // console.log(currentLocGroups, showcats);\n\n if (currentLocGroups && showcats.length) {\n for (var s = 0; s < showcats.length; s++) {\n for (var ss = 0; ss < currentLocGroups.length; ss++) {\n if (showcats[s] == currentLocGroups[ss]) {\n showElement = true;\n break;\n }\n }\n }\n }\n\n if (showElement) {\n $(this).removeClass(\"hide\");\n } else {\n $(this).addClass(\"hide\");\n }\n } else {\n // show for all\n $(this).removeClass(\"hide\");\n }\n }\n });\n\n // console.log($('[data-show-for-stores]:not(.hide), [data-show-for-category]:not(.hide)').length);\n\n // Show default menu items if location is chosen and is not attached to olo menu data.\n if (\n $(\n \".menu-grid [data-show-for-stores]:not(.hide), .menu-grid [data-show-for-category]:not(.hide)\"\n ).length == 0 &&\n localStorage.getItem(\"charleys_visitor_nearest_location_id\")\n ) {\n $('[data-show-for-stores]').each(function () {\n if ($(this).attr('data-show-for-stores').includes('yes')) {\n $(this).removeClass('hide');\n } else {\n $(this).addClass('hide');\n }\n });\n }\n\n // Exception for customer alerts\n // if($('.alert-banner[data-show-for-category]:not(.hide)').length) {\n // $('.alert-banner[data-show-for-all]').addClass('hide');\n // }\n\n // Hide elements that must be hidden for stores\n $(\"[data-hide-for-stores]\").each(function () {\n var hidestores = $(this).attr(\"data-hide-for-stores\");\n if (hidestores.length !== 0) {\n if (hidestores.includes(currentStoreNumber + \",\")) {\n $(this).addClass(\"hide\");\n } else {\n $(this).removeClass(\"hide\");\n }\n } else {\n $(this).removeClass(\"hide\");\n }\n });\n\n // Hide elements related to store category\n $(\"[data-hide-for-category]\").each(function () {\n if (currentLocGroups) {\n var hidecats = $(this).attr(\"data-hide-for-category\").split(\",\");\n if (hidecats.length !== 0) {\n var hideElement = false;\n\n // console.log(currentLocGroups, hidecats);\n\n if (currentLocGroups && hidecats.length) {\n for (var s = 0; s < hidecats.length; s++) {\n for (var ss = 0; ss < currentLocGroups.length; ss++) {\n if (hidecats[s] == currentLocGroups[ss]) {\n hideElement = true;\n break;\n }\n }\n }\n }\n\n // console.log(hideElement);\n\n if (hideElement) {\n $(this).addClass(\"hide\");\n } else {\n $(this).removeClass(\"hide\");\n }\n } else {\n $(this).addClass(\"hide\");\n }\n }\n });\n\n // console.log(currentLocGroups.length);\n\n if (currentLocGroups == 0) {\n $(\"[data-show-for-no-location]\").each(function () {\n $(this).removeClass(\"hide\");\n });\n }\n\n if ($('.menu-list-container').find('.food-item.hide').length >= $('.menu-list-container').find('.food-item').length) {\n $('.category-empty-copy').removeClass('hide');\n }\n} // showFoodMenu\n ","jQuery(document).ready(function($) {\n displaySingleCurrentLocation();\n $('button[data-set-location]').click(function() {\n // var distance = $(this).attr('data-distance');\n var location_title = $(this).attr('data-title');\n var location_id = $(this).attr('data-location-id');\n var order_url = $(this).attr('data-order-url');\n var permalink = $(this).attr('data-permalink');\n\n setAsStore(location_id, location_title, order_url, permalink);\n });\n});\n\nfunction displaySingleCurrentLocation() {\n var $ = jQuery;\n var locationID = localStorage.getItem('charleys_visitor_nearest_location_id');\n\n $('.set-location-button').each(function() {\n $(this).removeClass('current-location');\n });\n\n if(locationID) {\n $('.set-location-button[data-location-id=\"'+locationID+'\"]').addClass('current-location');\n }\n}\n","jQuery(document).ready(function($) {\n\n // Remove the doing_wp_cron thing\n setTimeout(function() {\n var hash = $(location).attr(\"hash\");\n history.replaceState && history.replaceState(\n null, '', location.pathname + location.search.replace(/[\\?&]doing_wp_cron=[^&]+/, '').replace(/^&/, '?') + hash\n );\n }, 500);\n\n $('.loading-cover [data-close]').click(function() {\n Cookies.set('charleys_dismiss_location_prompt', true);\n hideLoadingCoverScreen();\n });\n\n // Smooth scroll for anchor links\n $(document).on('click', 'a[href*=\"#\"]:not(.noscroll):not([role=\"tab\"])', function (event) {\n\n var pagePath = window.location.pathname,\n linkPath = $.attr(this, 'href').substring(0, $.attr(this, 'href').indexOf(\"#\"));\n elementID = $.attr(this, 'href').substring($.attr(this, 'href').indexOf(\"#\"));\n\n\n if( (pagePath === linkPath || linkPath.length === 0) && $(elementID).length) {\n event.preventDefault();\n\n if($(elementID).length) {\n $('html, body').animate({\n scrollTop: $(elementID).offset().top - ($('header.header').outerHeight() || 0)\n }, 500);\n }\n }\n });\n\n if($('.gfield_required').length) {\n $('.gfield_required').each(function() {\n $(this).attr('aria-hidden', 'true');\n });\n }\n\n if($('.ginput_container_phone input').length) {\n $('.ginput_container_phone input').each(function() {\n $(this).before('Please enter a 10 digit phone number.');\n $(this).attr('aria-describedby', $(this).attr('id')+'Desc');\n });\n }\n\n if($('.ginput_container_radio').length) {\n $('.ginput_container_radio').each(function() {\n var rlabel = $(this).prev().text().replace('*', '');\n // console.log(rlabel);\n $(this).find('input[type=\"radio\"]').each(function() {\n $(this).before(''+rlabel+': '+$(this).val()+'');\n $(this).attr('aria-describedby', $(this).attr('id')+'Desc');\n });\n });\n }\n\n $('a:not([data-toggle])').each(function() {\n // var elementText = $(this).text();//.replace((/ |\\r\\n|\\n|\\r/gm),\"\");\n // if(isUrl(elementText)) {\n // var desc = elementText.replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, \"\").split('/')[0];\n // $(this).attr('aria-label', desc);\n // }\n\n // Catch order links with store ids\n // $(this).on('click', function(e) {\n // console.log('link click');\n // e.preventDefault();\n //\n // var linkHREF = $(this).attr('href');\n // if(linkHREF.indexOf('?storeid=') != -1) {\n // var storeID = new RegExp('[\\?&]storeid=([^&#]*)').exec(linkHREF);\n // if(storeID !== null) {\n // // console.log(storeID[1]);\n // setAsStore(storeID[1]);\n // setTimeout(function () {\n // window.location.href = linkHREF;\n // }, 500);\n // } else {\n // window.location.href = linkHREF;\n // }\n // } else {\n // window.location.href = linkHREF;\n // }\n // });\n });\n\n // Accessibility stuff for gutenberg buttons\n $('.wp-block-button__link').each(function() {\n $(this).attr('tabindex', '0');\n });\n\n // ADA thing with the cookies prompt\n $('#moove_gdpr_strict_cookies').removeAttr('aria-label');\n\n});\n\nfunction setLoadingCoverScreen(message, clickToClose) {\n var $ = jQuery;\n\n if(clickToClose) {\n $('.loading-cover [data-close]').removeClass('hide');\n } else {\n $('.loading-cover [data-close]').addClass('hide');\n }\n\n $('.loading-cover [data-message] strong').text(message);\n $('.loading-cover').removeClass('hidden');\n}\n\n\nfunction hideLoadingCoverScreen() {\n var $ = jQuery;\n $('.loading-cover [data-message]').text('');\n $('.loading-cover').addClass('hidden');\n}\n\njQuery.fn.scrollTo = function(elem, offset, speed) {\n var $ = jQuery;\n $(this).animate({\n scrollTop: $(this).scrollTop() - $(this).offset().top + $(elem).offset().top - offset\n }, speed == undefined ? 1000 : speed);\n return this;\n};\n\nfunction isUrl(s) {\n // var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/\n var expression = /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/gi;\n var regexp = new RegExp(expression);\n return regexp.test(s);\n}\n\nfunction string_to_slug(str) {\n str = str.replace(/^\\s+|\\s+$/g, ''); // trim\n str = str.toLowerCase();\n\n // remove accents, swap ñ for n, etc\n var from = \"àáäâèéëêìíïîòóöôùúüûñç·/_,:;\";\n var to = \"aaaaeeeeiiiioooouuuunc------\";\n for (var i=0, l=from.length ; i]*>([\\S\\s]*?)<\\/script>/gmi, '');\n str = str.replace(/<\\/?\\w(?:[^\"'>]|\"[^\"]*\"|'[^']*')*>/gmi, '');\n element.innerHTML = str;\n str = element.textContent;\n element.textContent = '';\n }\n\n return str;\n }\n\n return decodeHTMLEntities;\n})();\n\nfunction formatMoney(number, decPlaces=\"2\", decSep=\".\", thouSep=\",\") {\n decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces,\n decSep = typeof decSep === \"undefined\" ? \".\" : decSep;\n thouSep = typeof thouSep === \"undefined\" ? \",\" : thouSep;\n var sign = number < 0 ? \"-\" : \"\";\n var i = String(parseInt(number = Math.abs(Number(number) || 0).toFixed(decPlaces)));\n var j = (j = i.length) > 3 ? j % 3 : 0;\n\n return sign +\n (j ? i.substr(0, j) + thouSep : \"\") +\n i.substr(j).replace(/(\\decSep{3})(?=\\decSep)/g, \"$1\" + thouSep) +\n (decPlaces ? decSep + Math.abs(number - i).toFixed(decPlaces).slice(2) : \"\");\n}\n\nfunction urlParam(name){\n var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);\n if (results==null) {\n return null;\n }\n return decodeURI(results[1]) || 0;\n}\n\nNumber.prototype.padLeft = function(base,chr){\n var len = (String(base || 10).length - String(this).length)+1;\n return len > 0? new Array(len).join(chr || '0')+this : this;\n}\n","jQuery(document).ready(function ($) {\n setMenuPageItems();\n hideFakeMenuIfAddedLocation();\n});\nfunction hideFakeMenuIfAddedLocation() {\n var $ = jQuery.noConflict();\n\n // Get values from localStorage\n const storeLocationName = localStorage.getItem('charleys_customer_store_location_name');\n const deliveryMode = localStorage.getItem('charleys_customer_deliverymode');\n const storeLocationURL = localStorage.getItem('charleys_visitor_order_url');\n\n if (storeLocationName && deliveryMode) {\n // console.log('Both items are set.');\n\n // Hide all general menu items and show all specific menu items\n $('ul>li.general-menu').each(function() {\n $(this).addClass('hide');\n });\n $('ul>li.specific-menu').each(function() {\n $(this).removeClass('hide');\n $(this).find('a').attr({\n 'href': '/order/#menu',\n 'data-close': '' // Adds the data-close attribute\n });\n }); \n\n } else if (storeLocationURL) {\n // console.log('storeLocationURL', storeLocationURL);\n // Hide all general menu items and show all specific menu items\n $('ul>li.general-menu').each(function() {\n $(this).addClass('hide');\n });\n $('ul>li.specific-menu').each(function() { \n $(this).removeClass('hide');\n $(this).find('a').attr('href', storeLocationURL); \n });\n // $('ul>li.general-menu').each(function() {\n // $(this).addClass('hide');\n // });\n // $('ul>li.specific-menu').each(function() {\n // $(this).removeClass('hide');\n // $(this).find('a').attr('href', '/order/'); \n // }); \n } else {\n // console.log('Both items are not set.', visitorOrderUrl);\n\n // Show all general menu items and hide all specific menu items\n $('ul>li.general-menu').each(function() {\n $(this).removeClass('hide');\n });\n $('ul>li.specific-menu').each(function() {\n $(this).addClass('hide');\n $(this).find('a').attr({\n 'href': '/order/#menu',\n 'data-close': '' // Adds the data-close attribute\n });\n });\n }\n}\n\nfunction setMenuPageItems() {\n var $ = jQuery;\n if ($('.wf-menu-list').length) {\n var locIndex = -1;\n var locMenu = [];\n\n // if(localStorage.getItem('charleys_visitor_nearest_location_id') && localStorage.getItem('charleys_visitor_nearest_location_id') !== 'null') {\n // for(var i = 0; i < loc.length; i++) {\n // if(loc[i][3] ==localStorage.getItem('charleys_visitor_nearest_location_id')) {\n // locIndex = i;\n // break;\n // }\n // }\n // var locMenu = $.parseJSON(loc[locIndex][9]);\n // }\n\n if (localStorage.getItem('charleys_visitor_nearest_location_id') && localStorage.getItem('charleys_visitor_nearest_location_id') !== 'null') {\n\n $('[data-loading-spinner-container]').removeClass('hide');\n\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action: 'get_olo_menu',\n location_id: localStorage.getItem('charleys_visitor_nearest_location_id')\n },\n success: function (response) {\n // console.log(JSON.parse(response));\n\n var result = JSON.parse(response);\n var imagePath = result.data.imagepath;\n var productCats = result.data.categories;\n\n var isFirst = true;\n\n for (var j = 0; j < productCats.length; j++) {\n var $menuTabClone = $('.wf-menu-list #menu-tabs [data-menu-tab-template]').clone(),\n $menuTabDropdownClone = $('.wf-menu-list #menu-tabs-dropdown [data-menu-tab-template]').clone(),\n $menuContentClone = $('.wf-menu-list [data-menu-tab-content-template]').clone();\n\n var menuCatName = productCats[j].name;\n var menuCatSlug = string_to_slug(menuCatName) + \"_\" + j;\n\n\n if (isFirst) {\n $menuTabClone.addClass('is-active');\n $menuTabClone.find('a').attr('aria-selected', 'true');\n\n $menuTabDropdownClone.addClass('is-active');\n $menuTabDropdownClone.find('a').attr('aria-selected', 'true');\n }\n\n $menuTabClone.find('a').attr('href', '#' + menuCatSlug);\n $menuTabClone.find('a').attr('aria-controls', menuCatSlug);\n $menuTabClone.find('a').attr('id', menuCatSlug + '-label');\n $menuTabClone.find('a').text(menuCatName);\n\n $menuTabDropdownClone.find('a').attr('href', '#' + menuCatSlug);\n $menuTabDropdownClone.find('a').attr('aria-controls', menuCatSlug);\n $menuTabDropdownClone.find('a').attr('id', menuCatSlug + '-label');\n $menuTabDropdownClone.find('a').text(menuCatName);\n\n\n if (isFirst) {\n $menuContentClone.addClass('is-active');\n }\n\n $menuContentClone.attr('id', menuCatSlug);\n $menuContentClone.attr('aria-labelledby', menuCatSlug + '-label');\n $menuContentClone.prepend('

' + menuCatName + '

');\n\n\n var products = productCats[j].products;\n\n for (var jj = 0; jj < products.length; jj++) {\n\n var currProduct = products[jj];\n var $menuProductClone = $menuContentClone.find('[data-menu-product-template]').clone();\n\n var menuProdSlug = string_to_slug(currProduct.name) + \"_\" + j + \"_modal\";\n\n var imageURL = imagePath + products[jj].imagefilename;\n\n // Main Element\n $menuProductClone.find('[data-menu-image-modal]').attr('style', 'background-image:url(' + imageURL + ')');\n $menuProductClone.find('[data-menu-image]').attr('src', imageURL);\n $menuProductClone.find('[data-menu-image]').attr('alt', currProduct.name + ' Primary Image');\n\n $menuProductClone.find('[data-menu-title]').text(currProduct.name);\n $menuProductClone.find('[data-product-description]').text(currProduct.description);\n\n var descrString = [];\n if (currProduct.cost && currProduct.cost !== '0') {\n descrString.push('$' + parseFloat(currProduct.cost).toFixed(2));\n }\n if (currProduct.calories) {\n descrString.push(currProduct.calories);\n }\n $menuProductClone.find('[data-menu-description]').html(descrString.join(\" • \"));\n\n // Modal\n $menuProductClone.find('[data-menu-modal-button]').attr('data-open', menuProdSlug);\n $menuProductClone.find('[data-menu-modal]').attr('id', menuProdSlug);\n\n if (menuCatName.toLowerCase().includes('sides') || menuCatName.toLowerCase().includes('sauce') || menuCatName.toLowerCase().includes('drink') || menuCatName.toLowerCase().includes('kit') ||\n currProduct.name.toLowerCase().includes('sides') || currProduct.name.toLowerCase().includes('sauce') || currProduct.name.toLowerCase().includes('drink') || currProduct.name.toLowerCase().includes('kit')) {\n $menuProductClone.find('[data-product-build-bowl]').remove();\n }\n\n if (currProduct.cost && currProduct.cost !== '0') {\n $menuProductClone.find('[data-menu-price]').text('$' + parseFloat(currProduct.cost).toFixed(2) + '**');\n } else {\n $menuProductClone.find('[data-price-disclaimer]').remove();\n }\n\n if (currProduct.calories) {\n $menuProductClone.find('[data-nutrition-data]').html('
  • Calories: ' + currProduct.calories + '*
  • ')\n } else {\n $menuProductClone.find('[data-nutrition]').remove();\n $menuProductClone.find('[data-nutrition-disclaimer]').remove();\n }\n\n // $menuProductClone.find('[data-order-link]').attr('href', loc[locIndex][7]);\n\n // Foundation init on element\n var modalElem = new Foundation.Reveal($menuProductClone.find('[data-menu-modal]'));\n\n $menuProductClone.removeClass('hide');\n $menuProductClone.removeAttr('data-menu-product-template');\n\n $menuContentClone.find('> .grid-x').append($menuProductClone);\n\n }\n\n $menuTabClone.removeAttr('data-menu-tab-template');\n $menuTabDropdownClone.removeAttr('data-menu-tab-template');\n $menuContentClone.removeAttr('data-menu-tab-content-template');\n\n $menuTabClone.removeClass('hide');\n $menuTabDropdownClone.removeClass('hide');\n $menuContentClone.removeClass('hide');\n\n $('.wf-menu-list #menu-tabs[data-menu-tabs]').append($menuTabClone);\n $('.wf-menu-list #menu-tabs-dropdown[data-menu-tabs]').append($menuTabDropdownClone);\n $('.wf-menu-list [data-menu-tab-contents]').append($menuContentClone);\n\n isFirst = false;\n\n }\n\n $('.wf-menu-list #menu-tabs [data-menu-tab-template]').remove();\n $('.wf-menu-list #menu-tabs-dropdown [data-menu-tab-template]').remove();\n $('.wf-menu-list [data-menu-tab-content-template]').remove();\n\n $('.wf-menu-list .menu-container').removeClass('hide');\n $('.wf-menu-list [data-no-location-set]').addClass('hide');\n\n\n $('#menu-tabs-dropdown a').click(function (e) {\n e.preventDefault();\n // console.log('blort', $(this).attr('href'), $('#menu-tabs a[href=\"' + $(this).attr('href') + '\"]'));\n $('#menu-tabs a[href=\"' + $(this).attr('href') + '\"]').click();\n $('#menu-tabs-dropdown').foundation('close');\n });\n\n $(\".menu-tab-all a\").click(function () {\n // console.log('add');\n $(\".tabs-panel\").addClass(\"all-active\");\n $(\".menu-tab-all\").find('a').attr('aria-selected', 'true');\n $(\".menu-tab-all\").find('a').attr('tabindex', '0');\n });\n\n $(\".remove-all a\").click(function () {\n // console.log('remove');\n $(\".tabs-panel\").removeClass(\"all-active\");\n $(\".menu-tab-all\").find('a').attr('aria-selected', 'false');\n $(\".menu-tab-all\").find('a').attr('tabindex', '-1');\n });\n\n $('[data-loading-spinner-container]').addClass('hide');\n\n },\n error: function () {\n $('[data-loading-spinner-container]').addClass('hide');\n $('.wf-menu-list .menu-container').addClass('hide');\n $('.wf-menu-list [data-no-location-set]').removeClass('hide');\n }\n });\n } else {\n $('.wf-menu-list .menu-container').addClass('hide');\n $('.wf-menu-list [data-no-location-set]').removeClass('hide');\n }\n }\n}","function showOrderStatus(order_data) {\n var $ = jQuery.noConflict();\n // $('#tt-map canvas.mapboxgl-canvas').addClass('asdgasdg');\n // console.log('order_data', order_data);\n\n if (order_data.deliverymode === 'drivethru') {\n $('[data-order-type-name]').text('pick-up');\n } else if (order_data.deliverymode === 'dispatch') {\n $('[data-order-type-name]').text('delivery');\n $('span[order-status-order-received]').text(`Order in progress`);\n $('span[order-status-order-in-progress]').text(`Order made`);\n $('span[order-status-order-ready]').text(`Order delivered`);\n\n } else {\n $('[data-order-type-name]').text('time');\n }\n\n // Parse the date and time from the readytime string\n var currentTime = new Date();\n // console.log(currentTime, 'order_data.readytime', order_data.readytime);\n var timeOrderReady = new Date(order_data.readytime.substring(0, 4) + '-' +\n order_data.readytime.substring(4, 6) + '-' +\n order_data.readytime.substring(6, 8) + 'T' +\n order_data.readytime.substring(9, 14));\n\n // Add one hour to the order ready time\n var oneHourLater = new Date(timeOrderReady);\n oneHourLater.setHours(oneHourLater.getHours() + 1);\n\n // Check if the current time is one hour past the ready time\n if (currentTime >= oneHourLater) {\n // console.log('Order is 1 hour past ready');\n localStorage.setItem('orderPlacedMoreThanAnHourAgo', 'true');\n } else {\n localStorage.setItem('orderPlacedMoreThanAnHourAgo', 'false');\n }\n\n // Function to format the time into a 12-hour format (AM/PM)\n function formatAMPM(date) {\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? '0' + minutes : minutes;\n return hours + ':' + minutes + ' ' + ampm;\n }\n\n // Function to format the date in MM/DD/YYYY format\n function formatDate(date) {\n var month = date.getMonth() + 1; // Months are zero-based\n var day = date.getDate();\n var year = date.getFullYear();\n return month + '/' + (day < 10 ? '0' + day : day) + '/' + year;\n }\n\n // Check if the order ready time is today\n function isToday(date) {\n return date.getDate() === currentTime.getDate() &&\n date.getMonth() === currentTime.getMonth() &&\n date.getFullYear() === currentTime.getFullYear();\n }\n\n // Format the time\n var formatted_time = formatAMPM(timeOrderReady);\n\n // If the order is not for today, include the date\n if (!isToday(timeOrderReady)) {\n var formatted_date = formatDate(timeOrderReady);\n formatted_time = 'on ' + formatted_date + ' at ' + formatted_time;\n }\n\n\n // Format the time\n var formatted_time = formatAMPM(timeOrderReady);\n\n // If the order is not for today, include the date\n if (!isToday(timeOrderReady)) {\n var formatted_date = formatDate(timeOrderReady);\n formatted_time = 'on ' + formatted_date + ' at ' + formatted_time;\n }\n\n // Set the formatted time (and date if applicable) in the element\n $('[data-order-readytime]').text(formatted_time);\n\n\n //\n var progress = 0;\n var step = 0;\n\n var statusSwitch = order_data.status;\n\n if (order_data.deliverystatus) {\n statusSwitch = order_data.deliverystatus.deliveries[0].status;\n }\n $(\"[data-order-status]\").text(statusSwitch);\n\n //order data status switch\n switch (statusSwitch) {\n case \"New\":\n case \"Accepted\":\n case \"Transmitting\":\n case \"Scheduled\": // Order Status Enum, Delivery Status Enum\n case \"Pending Manual Fire\": // Order Status Enum\n case \"Pending\": // Delivery Status Enum\n progress = 33.3;\n step = 1;\n break;\n case \"Preparing\":\n case \"PickupInProgress\": // Delivery Status Enum\n progress = 66.6;\n step = 2;\n break;\n case \"Ready\":\n case \"In Progress\": // Order Status Enum\n case \"DeliveryInProgress\": // Delivery Status Enum\n progress = 66.6;\n step = 2; \n break;\n case \"Delivered\": // Delivery Status Enum\n case \"Completed\": // Order Status Enum, Delivery Status Enum\n progress = 100;\n step = 3;\n break;\n case \"Canceled\": // Order Status Enum, Delivery Status Enum\n case \"Rejected\":\n progress = 100;\n step = 4; \n break;\n default:\n progress = 0;\n step = 0;\n }\n\n // Hide ready time if irrelivant\n if ([\"Delivered\", \"Completed\", \"Canceled\", \"Rejected\"].includes(statusSwitch)) {\n $('.order-status-time').addClass('hide');\n } else {\n $('.order-status-time').removeClass('hide');\n }\n\n\n\n if (step === 1 || step === 0) {\n // console.log('#1');\n $(\".order-tracker .progress-bar .step-1\").addClass(\"active\");\n $(\".order-tracker .progress-bar div.step-1 span\").addClass(\"bold-text\");\n\n $(\".order-tracker .progress-bar .progress-width\").css(\"width\", \"calc(50% - 30px)\");\n $(\".homepage-order-status [data-store-direction-link]\").addClass('desktop-align-left');\n $('h2[heading-stats-annoucement]').text(\"We’re getting started on your order!\");\n } else if (step === 2) {\n // Add active class to the relevant steps\n $(\".order-tracker .progress-bar .step-1\").addClass(\"active\");\n $(\".order-tracker .progress-bar div.step-1 span\").removeClass(\"bold-text\");\n\n $(\".order-tracker .progress-bar .step-2\").addClass(\"active\");\n $(\".order-tracker .progress-bar div.step-2 span\").addClass(\"bold-text\");\n $(\".homepage-order-status [data-store-direction-link]\").removeClass('desktop-align-left');\n\n // console.log('#2');\n $('h2[heading-stats-annoucement]').text(`Your order will be ready by ${formatted_time}!`);\n $('.time-estimate').addClass('hide');\n // Get current time\n // console.log('Current Time:', currentTime);\n\n // Calculate the difference in milliseconds\n var timeDifference = timeOrderReady - currentTime;\n\n // Convert the difference from milliseconds to minutes\n var minutesLeft = Math.floor(timeDifference / 60000);\n // console.log('Time until order is ready (in minutes):', minutesLeft);\n //\n if (minutesLeft < 25) {\n // console.log('i small'); \n percentLeft = ((((minutesLeft / 25) * 100) / 2) + 50);\n // console.log('percentLeft', percentLeft);\n $(\".order-tracker .progress-bar .progress-width\").css(\"width\", `${percentLeft}%`);\n } else {\n $(\".order-tracker .progress-bar .progress-width\").css(\"width\", \"calc(50% + 30px)\");\n }\n }\n else if (step === 3) {\n $(\".order-tracker .progress-bar .step-1\").addClass(\"active\");\n $(\".order-tracker .progress-bar .step-2\").addClass(\"active\");\n $(\".order-tracker .progress-bar div.step-2 span\").removeClass(\"bold-text\");\n\n\n $(\".order-tracker .progress-bar .step-3\").addClass(\"active\");\n $(\".order-tracker .progress-bar div.step-3 span\").addClass(\"bold-text\");\n\n $('.time-estimate').addClass('hide');\n\n $(\".order-tracker .progress-bar .progress-width\").css(\"width\", \"calc(100% - 2px)\");\n $(\".homepage-order-status [data-store-direction-link]\").removeClass('desktop-align-left');\n $(\".homepage-order-status [data-store-direction-link]\").addClass('desktop-align-right');\n\n // console.log('#3');\n if (order_data.deliverymode === 'drivethru') {\n $('h2[heading-stats-annoucement]').text(`Your order is ready for pickup!`);\n } else if (order_data.deliverymode === 'dispatch') {\n $('h2[heading-stats-annoucement]').text(`Your order is delivered!`);\n } else {\n $('h2[heading-stats-annoucement]').text(`Your order is ready for pickup!`);\n }\n $(\".width-limiter span[data-thanks-instruction]\").removeClass(\"hide\");\n\n }\n else if (step === 4) {\n $('.order-tracker').parent().addClass('cancelled');\n $('.homepage-order-status').addClass('cancelled');\n $('.homepage-order-status button.start-new-order').removeClass('hide');\n\n // Add click event to navigate to the order page\n $('.homepage-order-status .button').on('click', function() {\n window.location.href = '/order/';\n }); \n }\n}\njQuery(document).ready(function ($) {\n // console.log('#1');\n const currentPath = window.location.pathname;\n // console.log('currentPath', currentPath);\n if (\n (localStorage.getItem('orderPlacedMoreThanAnHourAgo') === 'false') &&\n ((localStorage.getItem('charleys_customer_order') && $('body').hasClass('home')) || (localStorage.getItem('charleys_customer_order') && $('body').hasClass('page-id-18022')))\n ) {\n // console.log('#2');\n\n var session_order_data = JSON.parse(localStorage.getItem('charleys_customer_order'));\n var orderguid = session_order_data.id;\n\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action: 'olo_get_order',\n orderguid: orderguid\n },\n success: function (response) {\n order_data = JSON.parse(response);\n\n\n //display order tracker information\n showOrderStatus(order_data);\n if (localStorage.getItem('orderPlacedMoreThanAnHourAgo') === 'false') {\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action: 'olo_get_restaurant',\n restaurant_id: order_data.vendorid\n },\n success: function (response) {\n var restaurant_data = JSON.parse(response);\n\n // console.log('restaurant_data', restaurant_data);\n // envConsoleLog(restaurant_data);\n var handoff_mode_label;\n restaurant_data.labels.forEach(function (label) {\n if (label.key == \"handoffmode_\" + order_data.deliverymode) {\n handoff_mode_label = label.value;\n }\n });\n var thanks_instructions;\n restaurant_data.labels.forEach(function (label) {\n if (label.key == \"manual_fire_label\") {\n manual_fire_label = label.value;\n }\n \n if (label.key == \"handoffmode_\" + order_data.deliverymode) {\n handoff_mode_label = label.value;\n }\n \n if (\n label.key ==\n \"thanks_\" + order_data.deliverymode + \"_instructions\"\n ) {\n thanks_instructions = label.value;\n } else if (\n label.key ==\n \"thanks_\" + order_data.deliverymode + \"pickup_instructions\"\n ) {\n thanks_instructions = label.value;\n } else if (\n label.key ==\n \"thanks_\" + order_data.deliverymode + \"instructions\"\n ) {\n thanks_instructions = label.value;\n }\n }); \n $(\".width-limiter span[data-thanks-instruction]\").text(thanks_instructions);\n\n //Google address link\n resturantNameWithReplacedSpaced = restaurant_data.name.replace(' ', '+');\n let googleAddressLink = 'https://www.google.com/maps/dir/?api=1&destination=Charleys%2C+1+' + resturantNameWithReplacedSpaced + '+' + restaurant_data.zip;\n // console.log(googleAddressLink);\n $(\"[data-store-direction-link]\").attr(\"href\", googleAddressLink);\n\n //\n $('[data-store-location-address]').text(restaurant_data.streetaddress);\n $('[data-store-location-state-zip]').text(restaurant_data.city + ', ' + restaurant_data.state + ' ' + restaurant_data.zip);\n\n if ($('.homepage-order-status.order-tracker')) {\n $('.homepage-order-status.order-tracker').removeClass('hide');\n }\n }\n }); \n }\n\n }\n });\n\n }\n});","// View: Account\nfunction view_account() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-account.html\", function () {\n $(\"[data-account-return]\").addClass(\"hide\");\n $.when(\n olo_get_user_details()\n ).done(function (user_details_json) {\n var user_details = JSON.parse(user_details_json);\n\n $(\"[data-account-name]\").text(user_details.firstname + \" \" + user_details.lastname);\n $(\"[data-account-email]\").text(user_details.emailaddress);\n\n charleys_hide_loading();\n\n $(\"[data-account-home]\").removeClass(\"hide\");\n });\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// View: Account - Management\nfunction view_account_manage() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-account.html\", function () {\n $(\"[data-account-return]\").removeClass(\"hide\");\n\n $(\"input#account-contactdetails\").inputmask({\n mask: phonesMasks,\n greedy: false,\n definitions: { \"#\": { validator: \"[0-9]\", cardinality: 1 } },\n });\n\n $.when(\n olo_get_user_details(),\n olo_get_user_contact_details(),\n olo_get_user_communication_details(),\n olo_get_billing_accounts()\n ).done(function (\n user_details_json,\n user_contact_json,\n user_communication_json,\n user_billing_accounts_json\n ) {\n var user_details = JSON.parse(user_details_json[0]);\n var user_contact = JSON.parse(user_contact_json[0]);\n var user_communication = JSON.parse(user_communication_json[0]);\n var user_billing_accounts = JSON.parse(user_billing_accounts_json[0]);\n\n console.log(user_details, user_contact, user_communication);\n\n new Foundation.Accordion($(\"#manage-account-menu\"), {});\n\n $(\"[data-account-name]\").text(\n user_details.firstname + \" \" + user_details.lastname\n );\n $(\"[data-account-email]\").text(user_details.emailaddress);\n\n $(\"#account-firstname\").val(user_details.firstname);\n $(\"#account-lastname\").val(user_details.lastname);\n $(\"#account-emailaddress\").val(user_details.emailaddress);\n $(\"#account-contactdetails\").val(user_contact.contactdetails);\n\n $(\"#account-optin\").prop(\"checked\", user_communication.optin == \"true\");\n\n $(\"#account-marketingsms\").val(user_communication.marketingsms);\n $(\"#account-upsell\").val(user_communication.upsell);\n $(\"#account-emailreceipts\").val(user_communication.emailreceipts);\n $(\"#account-followups\").val(user_communication.followups);\n\n $(\"[data-account-manage]\").removeClass(\"hide\");\n\n // Remove Reveals that may remain\n $(\".delete-account\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n new Foundation.Abide($(\"#update_user_details\"), {});\n new Foundation.Abide($(\"#change_password\"), {});\n new Foundation.Reveal($(\"#delete-account\"), {});\n\n // Clear Displayed Payments\n $(\"[data-billing-account-saved-template]:not(.hide)\").remove();\n // Clear Saved Payments\n $(\"[data-billing-account-saved-template]:not(.hide)\").remove();\n // Display saved billing accounts\n $.each(user_billing_accounts.billingaccounts, function (key, account) {\n var $savedSchemesContainer = $(\"[data-billing-accounts-saved]\");\n var $savedScheme = $(\n \"[data-billing-account-saved-template].hide\"\n ).clone();\n\n $savedScheme.find(\"[data-make-default]\").off(\"click\");\n $savedScheme.find(\"[data-delete]\").off(\"click\");\n\n var cardTypes = [\"Visa\", \"MasterCard\", \"Discover\", \"Amex\"];\n\n if (cardTypes.includes(account.cardtype)) {\n $savedScheme\n .find(\".fa-credit-card\")\n .addClass(\"fa-cc-\" + account.cardtype.toLowerCase());\n $savedScheme.find(\".fa-credit-card\").addClass(\"fa-brands\");\n $savedScheme.find(\".fa-credit-card\").removeClass(\"fa-regular\");\n $savedScheme.find(\".fa-credit-card\").removeClass(\"fa-credit-card\");\n }\n\n // Set scheme element data params\n var paymentlabel = account.description;\n if (account.balance !== null && \"balance\" in account.balance) {\n paymentlabel +=\n \"
    Balance: $ \" + formatMoney(account.balance.balance);\n }\n $savedScheme.find(\"[data-payment-label]\").html(paymentlabel);\n $savedScheme.attr(\"id\", \"billing-account-\" + account.accountidstring);\n $savedScheme.attr(\"data-billing-account-id\", account.accountidstring);\n $savedScheme.attr(\"data-default\", account.isdefault);\n // Set action button data params\n $savedScheme\n .find(\"[data-delete]\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n $savedScheme\n .find(\"[data-make-default]\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n\n if (account.isdefault || account.accounttype !== \"creditcard\") {\n $savedScheme.find(\"[data-make-default]\").remove();\n if (account.accounttype !== \"creditcard\") {\n $savedScheme.find(\".default-payment\").remove();\n }\n } else {\n $savedScheme.find(\".default-payment\").remove();\n // Make Method Default\n $savedScheme.find(\"[data-make-default]\").click(function () {\n charleys_show_loading();\n $.when(\n olo_default_billing_account(\n $(this).attr(\"data-billing-account-id\")\n )\n ).done(function (default_billing_json) {\n console.log(default_billing_json);\n change_view(\"account-manage\");\n });\n });\n }\n // Delete method\n $savedScheme.find(\"[data-delete]\").click(function () {\n charleys_show_loading();\n var billingAccountId = $(this).attr(\"data-billing-account-id\");\n $.when(olo_delete_billing_account(billingAccountId)).done(function (\n deleted_billing_json\n ) {\n console.log(deleted_billing_json);\n var result = \"\";\n if (deleted_billing_json) {\n result = JSON.parse(deleted_billing_json);\n }\n // $('[data-open=\"credit-card-reveal\"]').removeClass('hide');\n change_view(\"account-manage\");\n });\n });\n $savedScheme.removeClass(\"hide\");\n $savedSchemesContainer.append($savedScheme);\n });\n\n charleys_hide_loading();\n\n // submit account Update\n $(\"#update_user_details\").submit(function (e) {\n e.preventDefault();\n });\n $(\"#update_user_details\").bind(\"formvalid.zf.abide\", function () {\n charleys_show_loading();\n $(\"#update_user_details\").find(\".alert\").hide();\n //olo_update_user_profile\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_update_user_profile\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n accesstoken: localStorage.getItem(\"charleys_access_token\"),\n\n firstname: $(\"#account-firstname\").val(),\n lastname: $(\"#account-lastname\").val(),\n emailaddress: $(\"#account-emailaddress\").val(),\n contactdetails: $(\"#account-contactdetails\")\n .val()\n .replace(/\\D/g, \"\"),\n\n marketingsms: $(\"#account-marketingsms\").val() === \"true\",\n optin: $(\"#account-optin\").prop(\"checked\"),\n upsell: $(\"#account-upsell\").val() === \"true\",\n emailreceipts: $(\"#account-emailreceipts\").val() === \"true\",\n followups: $(\"#account-followups\").val() === \"true\",\n },\n success: function (response) {\n var results = JSON.parse(response);\n console.log(results);\n\n if (\"errors\" in results[0]) {\n var errorMessage = \"\";\n $.each(results[0].errors, function (key, message) {\n errorMessage += \" \" + message;\n $(\"#update_user_details\").foundation(\n \"addErrorClasses\",\n $('[data-punchh-label=\"' + key + '\"]')\n );\n });\n $(\"#update_user_details\")\n .find(\".alert [data-error-message]\")\n .text(errorMessage);\n $(\"#update_user_details\").find(\".alert\").show();\n charleys_hide_loading();\n } else {\n change_view(\"account-manage\");\n }\n },\n complete: function () {},\n });\n });\n\n // Submit Password Change\n $(\"#change_password\").submit(function (e) {\n e.preventDefault();\n });\n $(\"#change_password\").bind(\"formvalid.zf.abide\", function () {\n charleys_show_loading();\n $(\"#change_password\").find(\".alert\").hide();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_update_password\",\n accesstoken: localStorage.getItem(\"charleys_access_token\"),\n current_password: $(\"#account_current_password\").val(),\n password: $(\"#account_password\").val(),\n password_confirmation: $(\"#account_password_confirmation\").val(),\n },\n success: function (response) {\n var results = JSON.parse(response);\n console.log(results);\n\n if (\"errors\" in results || \"error\" in results || results.length) {\n // errors found\n var errorMessage = \"\";\n if(\"errors\" in results) {\n $.each(results.errors, function (key, message) {\n errorMessage += \" \" + message;\n $(\"#change_password\").foundation(\n \"addErrorClasses\",\n $('[data-punchh-label=\"' + key + '\"]')\n );\n });\n } else if(\"error\" in results) {\n errorMessage += \" \" + results.error;\n } else {\n $.each(results, function (key, message) {\n errorMessage += \" \" + message;\n });\n }\n\n\n\n $(\"#change_password\")\n .find(\".alert [data-error-message]\")\n .text(errorMessage);\n $(\"#change_password\").find(\".alert\").show();\n\n charleys_hide_loading();\n\n } else {\n // success\n change_view(\"account-manage\");\n }\n\n },\n complete: function () {},\n });\n });\n\n $(\"#delete-account [data-delete-account]\").click(function () {\n charleys_show_loading();\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_user\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n $(\"#delete-account\").foundation(\"close\");\n charleys_hide_loading();\n change_view(\"signout\");\n },\n complete: function () {},\n });\n });\n\n\n $('[data-account-edit-card]').each(function() {\n\n var $editButton = $(this).find('[data-account-edit-button]');\n var $cancelButton = $(this).find('[data-account-cancel-button]');\n var $formFields = $(this).find('[data-account-form-fields]');\n var $displayFields = $(this).find('[data-account-display-fields]')\n\n $('[data-account-form-fields] input').each(function() {\n var inputName = $(this).attr('name');\n if($('[data-account-display-fields] [data-name=\"'+inputName+'\"]').length) {\n $('[data-account-display-fields] [data-name=\"'+inputName+'\"]').text($(this).val());\n }\n });\n\n $editButton.click(function() {\n $cancelButton.removeClass('hide');\n $editButton.addClass('hide');\n\n $formFields.removeClass('hide');\n $displayFields.addClass('hide');\n });\n\n $cancelButton.click(function() {\n $editButton.removeClass('hide');\n $cancelButton.addClass('hide');\n\n $displayFields.removeClass('hide');\n $formFields.addClass('hide');\n });\n });\n\n });\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// View: Account - Recent Orders\nfunction view_account_recent() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n var totalLoadBeforeComplete = 2;\n\n $contentContainer.load(templateRoot + \"wf-ordering-account.html\", function () {\n $(\"[data-account-return]\").removeClass(\"hide\");\n\n // remove reveal modals\n $(\"#account-select-order-type, #home-select-order-type, #menu-select-order-type, #location-detail-order-type\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $select_order_type_reveal = new Foundation.Reveal(\n $(\"#account-select-order-type\"),\n {}\n );\n\n $(\"#account-select-order-type-button\").off('click');\n $(\"#account-select-order-type-button\").click(function () {\n if ($(\"[data-order-type-recent-id]\").text() !== \"\") {\n startRecentOrder($(\"[data-order-type-recent-id]\").text(), \"account\");\n }\n\n if ($(\"[data-order-type-fave-id]\").text() !== \"\") {\n startFavoriteOrder($(\"[data-order-type-fave-id]\").text(), \"account\");\n }\n });\n\n $('input[name=\"account-order-type\"]').change(function () {\n clearLocationList();\n\n if (\n $('input[name=\"account-order-type\"]:checked').val() !== \"dispatch\"\n ) {\n $(\"[data-search-deliver]\").addClass(\"hide\");\n $(\"#account-order-location-search\").addClass(\"hide\");\n $(\".fa-location-dot\").addClass(\"hide\");\n $(\"#account-order-location-search-building\").val(\"\");\n } else {\n $(\"[data-search-deliver]\").removeClass(\"hide\");\n $(\"#account-order-location-search\").removeClass(\"hide\");\n $(\".fa-location-dot\").removeClass(\"hide\");\n }\n\n if ($(\"#account-order-location-search\").val()) {\n $(\"#account-order-location-search-form\").submit();\n } else {\n populate_user_restaurants(\"account\");\n }\n });\n\n // Hide/show schedule elements\n $('input[name=\"account-order-schedule\"]').change(function () {\n if (\n $('input[name=\"account-order-schedule\"]:checked').val() == \"advance\"\n ) {\n $(\"#account-schedule-time\").removeClass(\"hide\");\n } else {\n $(\"#account-schedule-time\").addClass(\"hide\");\n }\n // console.log($('input[name=\"order-schedule\"]:checked').val());\n });\n\n var todaysDate = new Date();\n var tomorrowsDate = new Date().addDays(1);\n var scheduleDates = getDates(todaysDate, new Date().addDays(45));\n var daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n for (var i = 0; i < scheduleDates.length; i++) {\n var dayValue =\n scheduleDates[i].getFullYear() +\n \"-\" +\n zeroPad(scheduleDates[i].getMonth() + 1, 2) +\n \"-\" +\n zeroPad(scheduleDates[i].getDate(), 2);\n var dayLabel =\n daysOfWeek[scheduleDates[i].getDay()] +\n \" \" +\n (scheduleDates[i].getMonth() + 1) +\n \"/\" +\n scheduleDates[i].getDate();\n\n if (scheduleDates[i].getTime() === todaysDate.getTime()) {\n dayLabel = \"Today\";\n }\n if (scheduleDates[i].getTime() === tomorrowsDate.getTime()) {\n dayLabel = \"Tomorrow\";\n }\n\n $(\"[data-account-order-time-wanted-day]\").append(\n '\"\n );\n }\n\n var timeSelection = createQuarterHourIntervals();\n\n console.log('time selection', timeSelection);\n\n for (var ii = 0; ii < timeSelection.length; ii++) {\n $(\"[data-account-order-time-wanted-time]\").append(\n '\"\n );\n }\n\n $(\"select#account-time-wanted-day\").change(function () {\n if (\n $(\n 'select#account-time-wanted-day option[value=\"' +\n $(this).val() +\n '\"]'\n ).text() == \"Today\"\n ) {\n var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n console.log(currentTime);\n $(\"select#account-time-wanted-time-slot option\").each(function () {\n if ($(this).val() < currentTime) {\n $(this).addClass(\"hide\");\n }\n $(\"select#account-time-wanted-time-slot\").val(currentTime);\n });\n } else {\n $(\"select#account-time-wanted-time-slot option\").each(function () {\n $(this).removeClass(\"hide\");\n });\n }\n });\n\n $(\"select#account-time-wanted-day\").trigger(\"change\");\n\n // Autocomplete for location search\n if ($(\"#account-order-location-search\").length) {\n const inputD = $(\"#account-order-location-search\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n olo_get_nearby_locations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n \"account\"\n );\n // console.log(place);\n\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n if (components.street_number && components.route) {\n $(\"#account-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if('locality' in components) {\n $('#account-order-location-search-city').val(components.locality);\n } else if('administrative_area_level_2' in components){\n $('#account-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#account-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n // console.log($('#order-location-search-streetaddress').val());\n // console.log($('#order-location-search-city').val());\n // console.log($('#order-location-search-zipcode').val());\n }\n });\n\n $(\"#account-order-location-search-form\").submit(function (e) {\n e.preventDefault();\n\n console.log(\"search locations\");\n\n $(\"#account-order-location-search\").blur();\n\n var address = $(\"#account-order-location-search\").val();\n var geocoder = new google.maps.Geocoder();\n\n if (address.length) {\n geocoder.geocode(\n {\n address: address,\n },\n function (results, status) {\n console.log(\"GEOCODER STATUS \", status, results);\n if (status == google.maps.GeocoderStatus.OK) {\n // console.log(results);\n\n var components = {};\n $.each(results[0].address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log('address components', components);\n\n if (components.street_number && components.route) {\n $(\"#account-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if('locality' in components) {\n $('#account-order-location-search-city').val(components.locality);\n } else if('administrative_area_level_2' in components){\n $('#account-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#account-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n olo_get_nearby_locations(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng(),\n \"\",\n \"account\"\n );\n } else {\n $(\"#account-order-location-search\").val(\"\");\n charleys_hide_loading();\n }\n }\n );\n } else {\n charleys_hide_loading();\n }\n });\n // initMap();\n }\n\n // Remove reveal modal\n $(\".account-add-favorite-order\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $add_favorite_reveal = new Foundation.Reveal(\n $(\"#account-add-favorite-order\"),\n {}\n );\n\n $.when(\n olo_get_user_details()\n ).done(function (user_details_json) {\n var user_details = JSON.parse(user_details_json);\n\n $(\"[data-account-name]\").text(user_details.firstname + \" \" + user_details.lastname);\n $(\"[data-account-email]\").text(user_details.emailaddress);\n\n if(isUserLoggedIn(true)) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_recent_orders\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n var results = JSON.parse(response);\n\n if (results.orders !== undefined && results.orders.length > 0) {\n totalLoadBeforeComplete++;\n\n // cache menu for each restaurant\n var menu_results_cache = {};\n\n var order_locations = [];\n results.orders.forEach(function (order) {\n // console.log(order_locations);\n if (!order_locations.length || !order_locations.includes(order.vendorid)) {\n order_locations.push(order.vendorid);\n }\n });\n\n var menus_cached = 0;\n order_locations.forEach(function (order_location) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: order_location,\n },\n success: function (response) {\n menu_results_cache[order_location] = JSON.parse(response);\n menus_cached++;\n\n if (menus_cached == order_locations.length) {\n results.orders.forEach(function (order) {\n if ((order.status == \"Completed\" || order.status == \"In Progress\" || order.status == \"Scheduled\") && order.products.length > 0) {\n var $recent_order = $(\n \"[data-recent-order-template].hide\"\n ).clone();\n $recent_order\n .find(\"[data-recent-order-title]\")\n .text(order.name);\n $recent_order\n .find(\"[data-recent-order-id]\")\n .text(order.id);\n $recent_order.find(\".recent-order-id\").text(order.id);\n $recent_order\n .find(\"[data-recent-order-vendor-id]\")\n .text(order.vendorid);\n $recent_order\n .find(\"[data-recent-order-vendor-name]\")\n .text(order.vendorname);\n\n $recent_order.find('.recent-order-place-button').attr('data-recent-order-id', order.id);\n\n var formatted_date =\n order.timeplaced.substring(0, 4) +\n \"-\" +\n order.timeplaced.substring(4, 6) +\n \"-\" +\n order.timeplaced.substring(6, 8) +\n order.timeplaced.substring(8);\n $recent_order\n .find(\"[data-recent-order-date]\")\n .text(formatted_date);\n $recent_order\n .find(\"[data-recent-order-status]\")\n .text(order.status);\n\n var status_processed = order.status\n .toLowerCase()\n .replace(/ /g, \"_\");\n $recent_order\n .find(\"[data-status='\" + status_processed + \"']\")\n .removeClass(\"hide\");\n\n // get metadata about favorite menu items from associated restaurant menu\n var menu_results = menu_results_cache[order.vendorid];\n\n order.products.forEach(function (product) {\n var matched = false;\n var product_calories;\n var product_price;\n var product_image_filename;\n\n menu_results.categories.every(function (category) {\n category.products.every(function (cat_product) {\n if (product.name == cat_product.name) {\n product_calories = cat_product.basecalories;\n // product_price = cat_product.cost;\n product_image_path = menu_results.imagepath;\n product_image_filename =\n cat_product.imagefilename;\n matched = true;\n }\n return !matched;\n });\n return !matched;\n });\n\n var $recent_item = $recent_order\n .find(\"[data-recent-order-item-template]\")\n .clone();\n\n if (product_image_filename != null) {\n $recent_item\n .find(\"img\")\n .attr(\n \"src\",\n product_image_path + product_image_filename\n );\n } else {\n $recent_item\n .find(\"img\")\n .attr(\n \"src\",\n \"/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\"\n );\n }\n\n $recent_item\n .find(\"[data-recent-order-item-name]\")\n .text(product.name);\n if (product_calories != null) {\n $recent_item\n .find(\"[data-recent-order-item-calories]\")\n .text(product_calories + \" Calories | \");\n }\n // $recent_item.find('[data-recent-order-item-price]').text(product_price);\n\n var choiceArray = [];\n product.choices.forEach(function (choice) {\n choiceArray.push(choice.name);\n });\n\n $recent_item.removeClass(\"hide\");\n $recent_item\n .find(\"[data-recent-order-item-choices]\")\n .text(choiceArray.join(\", \"));\n $recent_item.removeAttr(\n \"data-recent-order-item-template\"\n );\n $recent_order\n .find(\".recent-order-items\")\n .append($recent_item);\n });\n\n $recent_order.removeClass(\"hide\");\n $(\"[data-recent-orders-list]\").append($recent_order);\n\n $(\"[data-recent-orders-list]\").removeClass(\"hide\");\n\n $(\".recent-order-place-button\").click(function () {\n $(\"[data-order-type-fave-id]\").text(\"\");\n $(\"[data-order-type-recent-id]\").text($(this).attr('data-recent-order-id'));\n // $(\"[data-order-type-recent-id]\").text(\n // $(this)\n // .closest(\".recent-order\")\n // .find(\"[data-recent-order-id]\")\n // .text()\n // );\n window.scrollTo(0, 0);\n $(\"#account-select-order-type\").foundation(\"open\");\n });\n }\n });\n\n $(\".account-favorite-button\").click(function () {\n $(\".account-add-favorite-order-recent-order-id\").text(\n $(this).parent().find(\".recent-order-id\").text()\n );\n $(\"#account-add-favorite-order\").foundation(\"open\");\n });\n\n $(\".account-confirm-add-favorite-button\").click(\n function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket_from_order\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n orderid: $(\n \".account-add-favorite-order-recent-order-id\"\n ).text(),\n },\n success: function (response) {\n result = JSON.parse(response);\n console.log(response);\n console.log(result);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_set_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n basketid: result.id,\n description: $(\"[data-account-favorite-order-description]\").val()\n },\n success: function (response) {\n fave_result = JSON.parse(response);\n\n if (fave_result.code == 200) {\n alert(fave_result.message);\n $(\"#account-add-favorite-order\").foundation(\n \"open\"\n );\n } else if (fave_result.faves[0].id) {\n window.location.reload();\n }\n },\n });\n },\n });\n }\n );\n\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n $(\"[data-account-recent]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n $(\"[data-account-recent]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n },\n });\n });\n } else {\n $(\"[data-recent-orders-loading]\").addClass(\"hide\");\n $(\"[data-recent-orders-not-found]\").removeClass(\"hide\");\n $(\"[data-account-recent]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n $(\"[data-account-recent]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n },\n });\n }\n\n });\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// View: Account - Favorite Orders\nfunction view_account_favorite() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n var totalLoadBeforeComplete = 2;\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-account.html\", function () {\n $(\"[data-account-return]\").removeClass(\"hide\");\n\n // Remove reveal modal\n $(\".account-delete-favorite-order\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // remove reveal modals\n $(\"#account-select-order-type, #home-select-order-type, #menu-select-order-type, #location-detail-order-type\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $account_delete_fave = new Foundation.Reveal(\n $(\"#account-delete-favorite-order\"),\n {}\n );\n var $select_order_type_reveal = new Foundation.Reveal(\n $(\"#account-select-order-type\"),\n {}\n );\n\n $(\"#account-select-order-type-button\").off('click');\n $(\"#account-select-order-type-button\").click(function () {\n if ($(\"[data-order-type-recent-id]\").text() !== \"\") {\n startRecentOrder($(\"[data-order-type-recent-id]\").text(), \"account\");\n }\n\n if ($(\"[data-order-type-fave-id]\").text() !== \"\") {\n startFavoriteOrder($(\"[data-order-type-fave-id]\").text(), \"account\");\n }\n });\n\n $('input[name=\"account-order-type\"]').change(function () {\n clearLocationList();\n\n if (\n $('input[name=\"account-order-type\"]:checked').val() !== \"dispatch\"\n ) {\n $(\"[data-search-deliver]\").addClass(\"hide\");\n $(\"#account-order-location-search\").addClass(\"hide\");\n $(\".fa-location-dot\").addClass(\"hide\");\n $(\"#account-order-location-search-building\").val(\"\");\n } else {\n $(\"[data-search-deliver]\").removeClass(\"hide\");\n $(\"#account-order-location-search\").removeClass(\"hide\");\n $(\".fa-location-dot\").removeClass(\"hide\");\n }\n\n if ($(\"#account-order-location-search\").val()) {\n $(\"#account-order-location-search-form\").submit();\n } else {\n populate_user_restaurants(\"account\");\n }\n });\n\n // Hide/show schedule elements\n $('input[name=\"account-order-schedule\"]').change(function () {\n if (\n $('input[name=\"account-order-schedule\"]:checked').val() == \"advance\"\n ) {\n $(\"#account-schedule-time\").removeClass(\"hide\");\n } else {\n $(\"#account-schedule-time\").addClass(\"hide\");\n }\n // console.log($('input[name=\"order-schedule\"]:checked').val());\n });\n\n var todaysDate = new Date();\n var tomorrowsDate = new Date().addDays(1);\n var scheduleDates = getDates(todaysDate, new Date().addDays(45));\n var daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n for (var i = 0; i < scheduleDates.length; i++) {\n var dayValue =\n scheduleDates[i].getFullYear() +\n \"-\" +\n zeroPad(scheduleDates[i].getMonth() + 1, 2) +\n \"-\" +\n zeroPad(scheduleDates[i].getDate(), 2);\n var dayLabel =\n daysOfWeek[scheduleDates[i].getDay()] +\n \" \" +\n (scheduleDates[i].getMonth() + 1) +\n \"/\" +\n scheduleDates[i].getDate();\n\n if (scheduleDates[i].getTime() === todaysDate.getTime()) {\n dayLabel = \"Today\";\n }\n if (scheduleDates[i].getTime() === tomorrowsDate.getTime()) {\n dayLabel = \"Tomorrow\";\n }\n\n $(\"[data-account-order-time-wanted-day]\").append(\n '\"\n );\n }\n\n var timeSelection = createQuarterHourIntervals();\n\n console.log('time selection', timeSelection);\n\n for (var ii = 0; ii < timeSelection.length; ii++) {\n $(\"[data-account-order-time-wanted-time]\").append(\n '\"\n );\n }\n\n $(\"select#account-time-wanted-day\").change(function () {\n if (\n $(\n 'select#account-time-wanted-day option[value=\"' +\n $(this).val() +\n '\"]'\n ).text() == \"Today\"\n ) {\n var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n console.log(currentTime);\n $(\"select#account-time-wanted-time-slot option\").each(function () {\n if ($(this).val() < currentTime) {\n $(this).addClass(\"hide\");\n }\n $(\"select#account-time-wanted-time-slot\").val(currentTime);\n });\n } else {\n $(\"select#account-time-wanted-time-slot option\").each(function () {\n $(this).removeClass(\"hide\");\n });\n }\n });\n\n $(\"select#account-time-wanted-day\").trigger(\"change\");\n\n // Autocomplete for location search\n if ($(\"#account-order-location-search\").length) {\n const inputD = $(\"#account-order-location-search\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n olo_get_nearby_locations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n \"account\"\n );\n // console.log(place);\n\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n if (components.street_number && components.route) {\n $(\"#account-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if('locality' in components) {\n $('#account-order-location-search-city').val(components.locality);\n } else if('administrative_area_level_2' in components){\n $('#account-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#account-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n // console.log($('#order-location-search-streetaddress').val());\n // console.log($('#order-location-search-city').val());\n // console.log($('#order-location-search-zipcode').val());\n }\n });\n\n $(\"#account-order-location-search-form\").submit(function (e) {\n e.preventDefault();\n\n console.log(\"search locations\");\n\n $(\"#account-order-location-search\").blur();\n\n var address = $(\"#account-order-location-search\").val();\n var geocoder = new google.maps.Geocoder();\n\n if (address.length) {\n geocoder.geocode(\n {\n address: address,\n },\n function (results, status) {\n console.log(\"GEOCODER STATUS \", status, results);\n if (status == google.maps.GeocoderStatus.OK) {\n // console.log(results);\n\n var components = {};\n $.each(results[0].address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log('address components', components);\n\n if (components.street_number && components.route) {\n $(\"#account-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if('locality' in components) {\n $('#account-order-location-search-city').val(components.locality);\n } else if('administrative_area_level_2' in components){\n $('#account-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#account-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n olo_get_nearby_locations(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng(),\n \"\",\n \"account\"\n );\n } else {\n $(\"#account-order-location-search\").val(\"\");\n charleys_hide_loading();\n }\n }\n );\n } else {\n charleys_hide_loading();\n }\n });\n // initMap();\n }\n\n $.when(olo_get_user_details()).done(function (user_details_json) {\n var user_details = JSON.parse(user_details_json);\n\n $(\"[data-account-name]\").text(\n user_details.firstname + \" \" + user_details.lastname\n );\n $(\"[data-account-email]\").text(user_details.emailaddress);\n\n // Retrieve favorite orders\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_faves\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n var results = JSON.parse(response);\n\n if (results.faves !== undefined && results.faves.length > 0) {\n totalLoadBeforeComplete++;\n\n // cache menu for each restaurant\n var menu_results_cache = {};\n\n var order_locations = [];\n results.faves.forEach(function (fave) {\n // if (!order_locations.contains(fave.vendorid)) {\n if (!order_locations.length || !order_locations.includes(fave.vendorid)) {\n order_locations.push(fave.vendorid);\n }\n });\n\n var menus_cached = 0;\n order_locations.forEach(function (order_location) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: order_location,\n },\n success: function (response) {\n menu_results_cache[order_location] = JSON.parse(response);\n menus_cached++;\n\n if (menus_cached == order_locations.length) {\n results.faves.forEach(function (fave) {\n var $fave_order = $(\n \"[data-favorite-order-template].hide\"\n ).clone();\n $fave_order\n .find(\"[data-favorite-order-title]\")\n .text(fave.name);\n $fave_order\n .find(\"[data-favorite-order-id]\")\n .text(fave.id);\n $fave_order.find(\".favorite-order-id\").text(fave.id);\n $fave_order\n .find(\"[data-favorite-order-vendor-id]\")\n .text(fave.vendorid);\n $fave_order\n .find(\"[data-favorite-order-vendor-name]\")\n .text(fave.vendorname);\n\n $fave_order.find('.fave-order-place-button').attr('data-favorite-order-id', fave.id);\n\n var menu_results = menu_results_cache[fave.vendorid];\n\n fave.products.forEach(function (product) {\n var matched = false;\n var product_calories;\n var product_price;\n var product_image_filename;\n\n console.log(product);\n\n menu_results.categories.every(function (category) {\n category.products.every(function (cat_product) {\n if (product.productid == cat_product.id) {\n product_calories = cat_product.basecalories;\n // product_price = product.cost;\n product_image_path = menu_results.imagepath;\n product_image_filename =\n cat_product.imagefilename;\n matched = true;\n }\n return !matched;\n });\n return !matched;\n });\n\n var $fave_item = $fave_order\n .find(\"[data-favorite-order-item-template]\")\n .clone();\n\n if (product_image_filename != null) {\n $fave_item\n .find(\"img\")\n .attr(\n \"src\",\n product_image_path + product_image_filename\n );\n } else {\n $fave_item\n .find(\"img\")\n .attr(\n \"src\",\n \"/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\"\n );\n }\n\n $fave_item\n .find(\"[data-favorite-order-item-name]\")\n .text(product.name);\n if (product_calories != null) {\n $fave_item\n .find(\"[data-favorite-order-item-calories]\")\n .text(product_calories + \" Calories | \");\n }\n // $fave_item.find('[data-favorite-order-item-price]').text(product_price);\n\n var choiceArray = [];\n product.choices.forEach(function (choice) {\n choiceArray.push(choice.name);\n });\n\n $fave_item.removeClass(\"hide\");\n $fave_item\n .find(\"[data-favorite-order-item-choices]\")\n .text(choiceArray.join(\", \"));\n $fave_item.removeAttr(\n \"data-favorite-order-item-template\"\n );\n $fave_order\n .find(\".favorite-order-items\")\n .append($fave_item);\n });\n\n $fave_order.removeClass(\"hide\");\n $(\"[data-favorite-orders-list]\").append($fave_order);\n\n $(\".account-favorite-button\").click(function () {\n $(\".data-delete-fave-id\").text(\n $(this).parent().find(\".favorite-order-id\").text()\n );\n $(\".account-delete-favorite-order\").foundation(\n \"open\"\n );\n });\n\n $(\".account-delete-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n faveid: $(\"[data-delete-fave-id]\").text(),\n },\n success: function (response) {\n window.location.reload();\n },\n });\n });\n\n $(\"[data-favorite-orders-loading]\").addClass(\"hide\");\n $(\"[data-favorite-orders-list]\").removeClass(\"hide\");\n\n $(\".fave-order-place-button\").click(function () {\n $(\"[data-order-type-recent-id]\").text(\"\");\n $(\"[data-order-type-fave-id]\").text($(this).attr('data-favorite-order-id'));\n // $(\"[data-order-type-fave-id]\").text(\n // $(this)\n // .closest(\".favorite-order\")\n // .find(\"[data-favorite-order-id]\")\n // .text()\n // );\n window.scrollTo(0, 0);\n $(\"#account-select-order-type\").foundation(\"open\");\n });\n });\n\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n $(\"[data-account-favorite]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n $(\"[data-account-favorite]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n },\n });\n });\n } else {\n $(\"[data-favorite-orders-loading]\").addClass(\"hide\");\n $(\"[data-favorite-orders-not-found]\").removeClass(\"hide\");\n $(\"[data-account-favorite]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n $(\"[data-account-favorite]\").removeClass(\"hide\");\n charleys_hide_loading();\n }\n },\n });\n });\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// View: Account - View Rewards\nfunction view_account_rewards() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-account.html\", function () {\n $(\"[data-account-return]\").removeClass(\"hide\");\n\n $.when(olo_get_user_details()).done(function (user_details_json) {\n var user_details = JSON.parse(user_details_json);\n\n $(\"[data-account-name]\").text(\n user_details.firstname + \" \" + user_details.lastname\n );\n $(\"[data-account-email]\").text(user_details.emailaddress);\n\n new Foundation.Tabs($(\"#rewards-tabs\"));\n\n $.when(\n // punchh_get_user_offers(),\n punchh_get_user_points()\n ).done(function (points_json) {\n console.log(points_json);\n\n var rewards = JSON.parse(points_json);\n var pointsToNext =\n 100 - Number(rewards.account_balance.unbanked_points);\n\n $(\"[data-lifetime-points]\").text(\n rewards.account_balance.lifetime_points + \" points\"\n );\n $(\"[data-redeemable-points]\").text(\n \"$\" + rewards.account_balance.banked_currency\n );\n $(\"[data-next-reward]\").text(pointsToNext + \" points\");\n\n $.each(rewards.notifications, function (key, value) {\n var $historyList = $(\"[data-rewards-history-list]\");\n\n var $historyItem = $(\"[data-reward-item].hide\").clone();\n\n var created_at = new Date(value.created_at);\n var displayDate =\n created_at.toLocaleDateString(\"en-US\") +\n \" at \" +\n created_at.toLocaleTimeString(\"en-US\");\n\n $historyItem.find(\"[data-history-date]\").text(displayDate);\n $historyItem.find(\"[data-history-message]\").text(value.message);\n\n $historyItem.removeClass(\"hide\");\n $historyList.append($historyItem);\n });\n\n $(\"[data-account-rewards]\").removeClass(\"hide\");\n charleys_hide_loading();\n });\n });\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n","var validateCheckoutBasketDeferred = jQuery.Deferred();\nfunction validateCheckoutBasket(deferred, validBasket) {\n var $ = jQuery;\n\n if('code' in validBasket) {\n if (validBasket.num == 206 || validBasket.num == 218) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n var result = JSON.parse(response);\n\n if (result.timewanted == null || result.timewanted == '') {\n var earliestreadytime = result.earliestreadytime;\n\n var apiData = {\n action : 'olo_set_timewanted',\n basketGuid: localStorage.getItem('charleys_customer_basket_id'),\n };\n\n let earliestReadyYear = earliestreadytime.substr(0,4);\n let earliestReadyMonth = earliestreadytime.substr(4,2);\n let earliestReadyDay = earliestreadytime.substr(6,2);\n let earliestReadyHour = earliestreadytime.substr(9,2);\n let earliestReadyMinute = earliestreadytime.substr(12,2);\n\n // add buffer to earliestreadytime to account for checkout time\n earliestReadyMinute = Number(earliestReadyMinute) + 5;\n if (earliestReadyMinute > 59) {\n earliestReadyMinute = earliestReadyMinute - 60;\n earliestReadyHour = Number(earliestReadyHour) + 1;\n }\n if (earliestReadyHour > 23) {\n earliestReadyHour = earliestReadyHour - 24;\n earliestReadyDay = Number(earliestReadyDay) + 1;\n }\n\n // prevent asap rollover\n let currentDateJs = new Date();\n if (earliestreadytime.substr(6,2) != currentDateJs.getDate() && localStorage.getItem('charleys_original_customer_schedule') == 'asap') {\n setCheckoutError('This ASAP order will not be ready until after this location closes.');\n return deferred.resolve();\n } else {\n apiData.timewanted = {\n ismanualfire: false,\n year: earliestReadyYear,\n month: earliestReadyMonth,\n day: earliestReadyDay,\n hour: earliestReadyHour,\n minute: earliestReadyMinute\n };\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: apiData,\n success: function (response) {\n localStorage.setItem('charleys_customer_schedule', 'advance');\n localStorage.setItem('charleys_customer_scheduled_day', earliestreadytime.substr(0,4) + '-' + earliestreadytime.substr(4,2) + '-' + earliestreadytime.substr(6,2));\n localStorage.setItem('charleys_customer_scheduled_time', earliestreadytime.substr(9,2) + ':' + earliestreadytime.substr(12,2));\n\n localStorage.setItem('charleys_override_can_checkout', 'true');\n clearCheckoutError();\n\n // Revalidate\n return $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action : 'olo_validate_basket',\n basketGuid : localStorage.getItem('charleys_customer_basket_id')\n },\n success: function(response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n //\n // var results = JSON.parse(response);\n\n // console.log('validate basket', response);\n },\n complete: function() {\n return deferred.resolve();\n }\n });\n\n },\n complete: function () {},\n });\n }\n }\n }\n });\n } else {\n setCheckoutError(validBasket.message);\n return deferred.resolve();\n }\n } else {\n return deferred.resolve();\n }\n\n return deferred.promise();\n}\n\n// View: Checkout\nfunction view_checkout() {\n var $ = jQuery;\n\n charleys_hide_topnav();\n charleys_show_loading();\n\n // Remove reveal modals\n // console.log('CC Reveals Count Before: ', $('.credit-card-reveal, .checkout-edit-store-location, .checkout-edit-order-type').length);\n $(\n \".credit-card-reveal, .checkout-edit-store-location, .checkout-edit-order-type\"\n ).each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n // console.log(\"removed: \", $(this).attr(\"id\"));\n $(this).parent().remove();\n }\n });\n // console.log('CC Reveals Count After: ', $('.credit-card-reveal, .checkout-edit-store-location, .checkout-edit-order-type').length);\n\n if (canCheckout) {\n // First Validate Basket\n $.when(\n olo_validate_basket(),\n olo_get_ccsf_payment_token()\n ).done(function (\n validBasket_json,\n ccsf_payment_token_json\n ) {\n // console.log(validBasket_json);\n // console.log(ccsf_payment_token_json);\n\n var validBasket = JSON.parse(validBasket_json[0]);\n var ccsf_payment_token = JSON.parse(ccsf_payment_token_json[0]);\n\n if (\n ccsf_payment_token.accesstoken !==\n localStorage.getItem(\"charleys_customer_ccsf_token\")\n ) {\n localStorage.setItem(\n \"charleys_customer_ccsf_token\",\n ccsf_payment_token.accesstoken\n );\n }\n\n $contentContainer.load(templateRoot + \"wf-ordering-checkout.html\", function () {\n $(\".wf-ordering-checkout [data-add-another-menu-item]\").click(function () {\n change_view(\"menu\");\n });\n\n $backBtn = $(\".wf-ordering-container [data-back-button]\");\n $backBtn.click(function () {\n change_view('menu');\n });\n\n $.when(\n validateCheckoutBasket(validateCheckoutBasketDeferred, validBasket)\n ).done(function(){\n if($('input[name=\"order-tip\"]').length) {\n $('input[name=\"order-tip\"]').change(function() {\n var tipValue = Number($('input[name=\"order-tip\"]:checked').val());\n // console.log('tip amount', tipValue);\n $('#custom-tip-amount').val(formatMoney(tipValue));\n\n olo_set_tip_amount($('#custom-tip-amount').val());\n });\n\n $('#custom-tip-amount').on('focus', function() {\n $('#tip-custom').prop('checked', true);\n });\n\n //setup before functions\n var typingTimer; //timer identifier\n var doneTypingInterval = 1500; //time in ms\n\n //on keyup, start the countdown\n $('#custom-tip-amount').keyup(function(){\n clearTimeout(typingTimer);\n if ($('#custom-tip-amount').val()) {\n typingTimer = setTimeout(doneTyping, doneTypingInterval);\n }\n });\n\n //user is \"finished typing,\" do something\n function doneTyping () {\n olo_set_tip_amount($('#custom-tip-amount').val());\n }\n }\n\n // Edit Contact Info\n if (isUserLoggedIn()) {\n // User is logged in\n $(\"[data-edit-contact-account]\").removeClass(\"hide\");\n $(\"[data-edit-contact-guest]\").addClass(\"hide\");\n } else {\n // Guest checkout\n $(\"[data-edit-contact-account]\").addClass(\"hide\");\n $(\"[data-edit-contact-guest]\").removeClass(\"hide\");\n }\n\n // Recreate reveal modals\n var $cc_reveal = new Foundation.Reveal($(\"#credit-card-reveal\"), {});\n // var $editLocation = new Foundation.Reveal(\n // $(\"#checkout-edit-store-location\"),\n // {}\n // );\n // var $editOrderType = new Foundation.Reveal(\n // $(\"#checkout-edit-order-type\"),\n // {}\n // );\n\n // Set input mask for expiration date entry\n $('input#expiredate').inputmask({\n mask: dateMasks,\n greedy: false,\n inputmode: 'tel',\n definitions: { '#': { validator: \"[0-9]\", cardinality: 1}} });\n\n // Prevent Credit Card Form from default submit\n $(\"#new-credit-card-form\").submit(function (e) {\n e.preventDefault();\n });\n\n // Set up the CC payment form\n setCCFields();\n\n // Set CC form validation\n new Foundation.Abide($(\"#new-credit-card-form\"), {\n validateOn: \"fieldChange\",\n validateOnBlur: true,\n });\n\n // Update form validation during form entry\n $(\"#new-credit-card-form input[required]\").on(\n \"change keyup blur\",\n function () {\n $(\"#new-credit-card-form\").foundation(\"validateForm\");\n }\n );\n\n // Check validation status of form to enable/disable apply button\n $(\"#new-credit-card-form\").on(\n \"valid.zf.abide invalid.zf.abide\",\n function (ev, el) {\n if ($('#new-credit-card-form [aria-invalid=\"true\"]').length) {\n $(\"#credit-card-add-card\").prop(\"disabled\", true);\n $(\"#credit-card-update-card\").prop(\"disabled\", true);\n } else {\n $(\"#credit-card-add-card\").prop(\"disabled\", false);\n $(\"#credit-card-update-card\").prop(\"disabled\", false);\n }\n }\n );\n\n // Cancel Adding Card\n $(\"#credit-card-cancel\").click(function () {\n setCCFields();\n $(\"#credit-card-reveal\").foundation(\"close\");\n });\n\n // Add Credit Card\n $(\"#credit-card-add-card\").click(function () {\n var $savedSchemesContainer = $(\"[ data-billing-schemes-active]\");\n var $savedScheme = $(\n \"[data-billing-schemes-active-template].hide\"\n ).clone();\n\n $savedScheme.attr(\"id\", \"new-card\");\n $savedScheme.find(\"[data-payment-label]\").text(\"New Credit Card\");\n\n $savedScheme\n .find(\"[data-apply-label]\")\n .text(\"Amount To Apply for New Credit Card\");\n\n $savedScheme.find(\"[data-edit]\").click(function () {\n // Open CC Dialog\n $(\"#credit-card-reveal\").foundation(\"open\");\n });\n\n $savedScheme.find(\"[data-remove]\").off(\"click\");\n $savedScheme.find(\"[data-remove]\").click(function () {\n // Remove Dialog\n $('[data-open=\"credit-card-reveal\"]').removeClass(\"hide\");\n $(\"#new-card\").remove();\n $(\"#credit-card-cancel\").removeClass(\"hide\");\n setCCFields();\n configPaymentOptions();\n });\n\n $savedScheme.find(\"input\").attr(\"id\", \"new-card-input\");\n $savedScheme.find(\"input\").attr(\"name\", \"account-x-new-card\");\n\n $savedScheme.find(\"input\").inputmask({\n alias: \"numeric\",\n allowMinus: false,\n digits: 2,\n max: 9999.99,\n });\n\n $savedScheme.removeClass(\"hide\");\n $savedSchemesContainer.append($savedScheme);\n\n $(\"#credit-card-add-card\").addClass(\"hide\");\n $(\"#credit-card-update-card\").removeClass(\"hide\");\n $(\"#credit-card-cancel\").addClass(\"hide\");\n\n $(\"#credit-card-reveal\").foundation(\"close\");\n $('[data-open=\"credit-card-reveal\"]').addClass(\"hide\");\n\n configPaymentOptions();\n });\n\n // Get and Display Store and Customer Info\n $.when(\n olo_get_restaurant(\n localStorage.getItem(\"charleys_customer_store_location_id\")\n ),\n olo_get_user_details(),\n olo_get_user_contact_details(),\n olo_get_billing_schemes(),\n olo_get_rewards_schemes(),\n // olo_get_qualifying_rewards()\n // olo_get_applied_rewards(),\n olo_get_billing_accounts()\n ).done(function (\n restaurant_data_json,\n user_details_json,\n user_contact_details_json,\n billing_schemes_json,\n reward_schemes_json,\n // qualifiying_rewards_json\n // applied_rewards_json,\n user_billing_accounts_json\n ) {\n // console.log(restaurant_data_json, user_details_json, user_contact_details_json);\n // console.log('rewards: ', reward_schemes_json);\n // console.log('available rewards: ', qualifiying_rewards_json);\n\n // Display Restaurant Info\n var restaurant_data = JSON.parse(restaurant_data_json[0]);\n $(\"[data-menu-selected-store]\").text(restaurant_data.name);\n $(\"[data-store-name]\").text(restaurant_data.name);\n $(\"[data-store-address]\").text(restaurant_data.streetaddress);\n $(\"[data-store-city]\").text(\n restaurant_data.city +\n \", \" +\n restaurant_data.state +\n \" \" +\n restaurant_data.zip\n );\n\n // if($('.wf-ordering-checkout [data-back-button]').length > 0){\n // $defaultBackAction = false;\n // $('.wf-ordering-checkout [data-back-button]').click(function () {\n // change_view(\"menu\");\n // $('.wf-ordering-checkout .shopping-cart-view').foundation('open');\n // $defaultBackAction = true;\n // });\n // }\n\n // Display Delivery Mode\n $(\"[data-row-deliverymode]\").text(\n localStorage.getItem(\"charleys_customer_deliverymode\")\n );\n if (localStorage.getItem(\"charleys_customer_deliverymode\") == \"dispatch\") {\n $(\"[data-row-deliverymode]\").text(\"Delivery\");\n }\n\n $(\"[data-row-schedule]\").text(\n localStorage.getItem(\"charleys_customer_schedule\")\n );\n\n if ($('[data-row-schedule]').text().toLowerCase() == \"advance\") {\n var scheduledTime = localStorage.getItem('charleys_customer_scheduled_time');\n // console.log(scheduledTime);\n\n if (scheduledTime.substring(0,2) > 12) {\n scheduledTime = (scheduledTime.substring(0,2) - 12) + scheduledTime.substring(2) + ' PM';\n } else {\n if(scheduledTime.substring(0,2) == 12) {\n scheduledTime = scheduledTime + ' PM';\n } else {\n scheduledTime = scheduledTime + ' AM';\n }\n }\n\n var customer_schedule = scheduledTime + ' on ' + localStorage.getItem('charleys_customer_scheduled_day');\n\n $('[data-row-schedule]').html(customer_schedule);\n $('[data-leadtimeestimateminutes]').hide();\n }\n\n $(\"[data-order-details-header]\").text(\n localStorage\n .getItem(\"charleys_customer_deliverymode\") + \" Details\"\n );\n if (localStorage.getItem(\"charleys_customer_deliverymode\") == \"dispatch\") {\n $(\"[data-order-details-header]\").text(\"Delivery Details\");\n }\n if ($(\"[data-row-schedule]\").text() == \"ADVANCE\") {\n var scheduledTime = localStorage.getItem(\n \"charleys_customer_scheduled_time\"\n );\n if (scheduledTime.substring(0, 2) > 12) {\n scheduledTime =\n scheduledTime.substring(0, 2) -\n 12 +\n scheduledTime.substring(2) +\n \" PM\";\n } else {\n scheduledTime = scheduledTime + \" AM\";\n }\n $(\"[data-row-schedule]\").text(\"Today at \" + scheduledTime);\n $(\"[data-leadtimeestimateminutes]\").hide();\n }\n\n // Show/Hid delivery specific fields\n if (\n localStorage.getItem(\"charleys_customer_deliverymode\") ==\n \"dispatch\"\n ) {\n $(\n \"[data-row-deliery-to], [data-delivery-instructions]\"\n ).removeClass(\"hide\");\n // Add Delivery Info\n $(\"[data-delivery-address]\").text(\n localStorage.getItem(\n \"charleys_customer_address_streetaddress\"\n )\n );\n $(\"[data-delivery-city]\").text(\n localStorage.getItem(\"charleys_customer_address_city\")\n );\n $(\"[data-delivery-state-zip]\").text(\n localStorage.getItem(\"charleys_customer_address_zipcode\")\n );\n } else {\n $(\"[data-row-deliery-to], [data-delivery-instructions]\").addClass(\n \"hide\"\n );\n }\n\n // // Change store location form action\n // $(\"#change-store-location\").click(function () {\n // change_view(\"start-order\");\n // });\n //\n // // Change order type\n // $(\"#change-order-type\").click(function () {\n // change_view(\"start-order\");\n // });\n\n // get/set user contact info\n // ajax: olo_get_user_details\n\n // If we have user details, show that, otherwise show guest contact\n if (user_details_json && user_contact_details_json) {\n var user_details = JSON.parse(user_details_json[0]);\n var user_contact_details = JSON.parse(\n user_contact_details_json[0]\n );\n $(\"[data-customer-name]\").text(\n user_details.firstname + \" \" + user_details.lastname\n );\n localStorage.setItem('charleys_customer_guest_first_name', user_details.firstname);\n localStorage.setItem('charleys_customer_guest_last_name', user_details.lastname);\n localStorage.setItem('charleys_customer_signed_in', 'yes'); \n \n $(\"[data-customer-email]\").text(user_details.emailaddress);\n $(\"[data-customer-phone]\").text(\n user_contact_details.contactdetails\n );\n } else {\n\n $(\"[data-customer-name]\").text(\n localStorage.getItem(\"charleys_customer_guest_first_name\") +\n \" \" +\n localStorage.getItem(\"charleys_customer_guest_last_name\")\n );\n $(\"[data-customer-email]\").text(\n localStorage.getItem(\"charleys_customer_guest_email_address\")\n );\n $(\"[data-customer-phone]\").text(\n localStorage.getItem(\"charleys_customer_guest_phone_number\")\n );\n }\n\n // get/set cart data is handled by updateBasketDisplay()\n // Show saved Billing Accounts\n if (user_billing_accounts_json) {\n if ($(\"#saved-cards-on-file\").data(\"zfPlugin\")) {\n $(\"#saved-cards-on-file\").foundation(\"_destroy\");\n }\n new Foundation.Accordion($(\"#saved-cards-on-file\"));\n\n var user_billing_accounts = JSON.parse(\n user_billing_accounts_json[0]\n );\n // console.log(\"Billing Accounts\", user_billing_accounts);\n\n // Clear Displayed Payments\n $(\"[data-billing-account-saved-template]:not(.hide)\").remove();\n // Clear Saved Payments\n $(\"[data-billing-account-saved-template]:not(.hide)\").remove();\n\n // Iterate through user billing accounts\n $.each(\n user_billing_accounts.billingaccounts,\n function (key, account) {\n // Display as Standard saved account\n var $activeSchemesContainer = $(\n \"[data-billing-schemes-active]\"\n );\n var $savedSchemesContainer = $(\n \"[data-billing-accounts-saved]\"\n );\n var $savedScheme = $(\n \"[data-billing-account-saved-template].hide\"\n ).clone();\n\n // Display as default account\n // if(account.isdefault) {\n // $savedSchemesContainer = $('[data-billing-schemes-active]');\n // $savedScheme = $('[data-billing-account-active-template].hide').clone();\n // }\n\n // Remove button actions if one exists\n $savedScheme.find(\"[data-delete]\").off(\"click\");\n $savedScheme.find(\"[data-remove]\").off(\"click\");\n $savedScheme.find(\"[data-split]\").off(\"click\");\n $savedScheme.find(\"[data-use]\").off(\"click\");\n\n // Update the payment label\n var paymentlabel = account.description;\n if (\n account.balance !== null &&\n \"balance\" in account.balance\n ) {\n paymentlabel +=\n \"
    Balance: $ \" + formatMoney(account.balance.balance);\n }\n $savedScheme.find(\"[data-payment-label]\").html(paymentlabel);\n\n var cardTypes = [\"Visa\", \"MasterCard\", \"Discover\", \"Amex\"];\n\n // console.log(cardTypes, account.cardtype, cardTypes.includes(account.cardtype));\n\n // Change payment card icon\n if (cardTypes.includes(account.cardtype)) {\n $savedScheme\n .find(\".fa-credit-card\")\n .addClass(\"fa-cc-\" + account.cardtype.toLowerCase());\n $savedScheme.find(\".fa-credit-card\").addClass(\"fa-brands\");\n $savedScheme\n .find(\".fa-credit-card\")\n .removeClass(\"fa-regular\");\n $savedScheme\n .find(\".fa-credit-card\")\n .removeClass(\"fa-credit-card\");\n }\n\n // Set scheme element data params\n $savedScheme.attr(\n \"id\",\n \"billing-account-\" + account.accountidstring\n );\n $savedScheme.attr(\n \"data-billing-account-id\",\n account.accountidstring\n );\n $savedScheme.attr(\"data-default\", account.isdefault);\n // Set split input data params\n $savedScheme.find(\"input\").attr(\"id\", account.accountid);\n $savedScheme\n .find(\"input\")\n .attr(\"name\", \"account-x-\" + account.cardsuffix);\n $savedScheme\n .find(\"input\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n $savedScheme\n .find(\"input\")\n .attr(\"data-billing-method\", \"billingaccount\");\n // Set action button data params\n $savedScheme\n .find(\"[data-delete]\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n $savedScheme\n .find(\"[data-remove]\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n $savedScheme\n .find(\"[data-split]\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n $savedScheme\n .find(\"[data-use]\")\n .attr(\"data-billing-account-id\", account.accountidstring);\n // Set split input accessible label\n $savedScheme\n .find(\"[data-apply-label]\")\n .text(\"Amount To Apply for \" + account.description);\n // Set input masking to ensure money formatted input\n $savedScheme.find(\"input\").inputmask({\n alias: \"numeric\",\n allowMinus: false,\n digits: 2,\n max: 999.99,\n });\n\n // Remove Payment action\n $savedScheme.find(\"[data-remove]\").click(function () {\n removePayment($(this).attr(\"data-billing-account-id\"));\n });\n // Use Payment action\n $savedScheme\n .find(\"[data-use], [data-split]\")\n .click(function () {\n usePayment($(this).attr(\"data-billing-account-id\"));\n });\n // Delete Payment action\n $savedScheme.find(\"[data-delete]\").click(function () {\n charleys_show_loading();\n var billingAccountId = $(this).attr(\n \"data-billing-account-id\"\n );\n $.when(olo_delete_billing_account(billingAccountId)).done(\n function (deleted_billing_json) {\n // console.log(deleted_billing_json);\n var result = \"\";\n if (deleted_billing_json) {\n result = JSON.parse(deleted_billing_json);\n }\n // $('[data-open=\"credit-card-reveal\"]').removeClass('hide');\n if (result && \"code\" in result) {\n // console.log(\"error\");\n setCheckoutError(result.message);\n } else {\n // console.log(\"clear\");\n $(\"#billing-account-\" + billingAccountId).remove();\n configPaymentOptions();\n }\n\n charleys_hide_loading();\n }\n );\n });\n\n $savedScheme.removeClass(\"hide\");\n $savedSchemesContainer.append($savedScheme);\n }\n );\n\n // set default payment if present\n $(\"[data-billing-accounts-saved] .active-payment\").each(\n function () {\n if ($(this).attr(\"data-default\") === \"true\") {\n usePayment($(this).attr(\"data-billing-account-id\"));\n }\n }\n );\n\n configPaymentOptions();\n } // if(user_billing_accounts_json)\n\n var $paymentDetailsSection = $(\"[data-payment-details-section]\");\n // Display Payment Options\n if (billing_schemes_json) {\n var billing_schemes = JSON.parse(billing_schemes_json[0]);\n var $bs_container = $(\"[data-billing-schemes]\");\n $bs_container\n .find(\"[data-billing-scheme-button]:not(.hide)\")\n .remove();\n\n // console.log(\"billing schemes\", billing_schemes);\n\n $.each(billing_schemes.billingschemes, function (key, scheme) {\n var $bs_item = $bs_container\n .find(\"[data-billing-scheme-button].hide\")\n .clone();\n\n $bs_item\n .find(\"[data-billing-scheme-name]\")\n .text(\"Add \" + scheme.name);\n $bs_item.find(\".\" + scheme.type).removeClass(\"hide\");\n\n if (scheme.type == \"creditcard\") {\n $bs_item.attr(\"data-open\", \"credit-card-reveal\");\n } else {\n var $paymentModalContainer = $(\"[data-payment-modals]\");\n var $paymentRevealTemplate = $paymentModalContainer\n .find(\"[data-payment-reveal-scheme-template].hide\")\n .clone();\n var $schemeForm = $(\n '
    '\n );\n\n $paymentRevealTemplate\n .find(\"[data-payment-scheme]\")\n .text(scheme.name);\n $paymentRevealTemplate.attr(\"id\", \"payment_\" + scheme.id);\n $paymentRevealTemplate.removeAttr(\n \"data-payment-reveal-scheme-template\"\n );\n $bs_item.attr(\"data-open\", \"payment_\" + scheme.id);\n\n $.each(scheme.fields, function (key, field) {\n var inputField =\n \"\";\n $schemeForm.append($(inputField));\n });\n\n $schemeForm.append(\n ''\n );\n $schemeForm.append(\n ''\n );\n $schemeForm.append(\n ''\n );\n\n $schemeForm.append(\n $(\n '
    '\n )\n );\n\n $schemeForm.append(\n $(\n '
    '\n )\n );\n\n $paymentRevealTemplate.append($schemeForm);\n $paymentRevealTemplate.removeClass(\"hide\");\n\n $paymentModalContainer.append($paymentRevealTemplate);\n\n // console.log(\"create reveal:\", \"payment_\" + scheme.id);\n\n var paymentReveal = new Foundation.Reveal(\n $paymentRevealTemplate,\n {}\n );\n\n var paymentAbide = new Foundation.Abide(\n $(\"#scheme_\" + scheme.id),\n {}\n );\n\n // Form Actions\n $(\"#scheme_\" + scheme.id).submit(function (e) {\n e.preventDefault();\n });\n\n // On Form Validation\n $(\"#scheme_\" + scheme.id).on(\n \"formvalid.zf.abide\",\n function () {\n var schemeName = $(this)\n .find('input[name=\"schemeName\"]')\n .val();\n var cardNumber = $(this)\n .find('input[name=\"number\"]')\n .val();\n var cardPin = $(this).find('input[name=\"pin\"]').val();\n var schemeType = $(this)\n .find('input[name=\"schemeType\"]')\n .val();\n var schemeID = $(this)\n .find('input[name=\"schemeID\"]')\n .val();\n var saveOnFile = $(this)\n .find('input[name=\"saveonfile\"]')\n .prop(\"checked\");\n\n charleys_show_loading();\n\n $(\"#payment_\" + schemeID)\n .find(\".card-error\")\n .addClass(\"hide\");\n\n $.when(\n olo_get_gift_card_balance(schemeID, cardNumber, cardPin)\n ).done(function (cardBalance_json) {\n // console.log(cardBalance_json);\n\n var cardBalance = JSON.parse(cardBalance_json);\n\n if (cardBalance.success) {\n var $savedSchemesContainer = $(\n \"[ data-billing-schemes-active]\"\n );\n var $savedScheme = $(\n \"[data-billing-schemes-active-template].hide\"\n ).clone();\n\n $savedScheme.attr(\n \"id\",\n \"new-\" + schemeType + \"-\" + cardNumber\n );\n $savedScheme\n .find(\"[data-payment-label]\")\n .html(\n \"New \" +\n schemeName +\n \"
    Balance: $ \" +\n formatMoney(cardBalance.balance)\n );\n\n $savedScheme.find(\"[data-edit]\").parent().remove();\n\n $savedScheme\n .find(\"input\")\n .attr(\"id\", \"gift-card-\" + cardNumber);\n $savedScheme\n .find(\"input\")\n .attr(\"name\", \"account-x-\" + schemeType);\n\n $savedScheme\n .find(\"input\")\n .attr(\"data-gift-card-num\", cardNumber);\n $savedScheme\n .find(\"input\")\n .attr(\"data-gift-card-pin\", cardPin);\n $savedScheme\n .find(\"input\")\n .attr(\"data-save-on-file\", saveOnFile);\n\n $savedScheme\n .find(\"input\")\n .attr(\"data-scheme-type\", schemeType);\n $savedScheme\n .find(\"input\")\n .attr(\"data-scheme-id\", schemeID);\n\n $savedScheme.removeClass(\"hide\");\n $savedSchemesContainer.append($savedScheme);\n\n $savedScheme.find(\"[data-remove]\").click(function () {\n // console.log(\"remove card\");\n // Remove payment\n $(this).parents(\".active-payment\").remove();\n configPaymentOptions();\n });\n\n configPaymentOptions();\n\n // Close modal and clear inputs\n $(\"#payment_\" + schemeID).foundation(\"close\");\n $(\"#payment_\" + schemeID)\n .find('input:not([type=\"hidden\"])')\n .each(function () {\n $(this).val(\"\");\n });\n } else {\n $(\"#payment_\" + schemeID)\n .find(\".card-error [data-error-message]\")\n .text(cardBalance.message);\n $(\"#payment_\" + schemeID)\n .find(\".card-error\")\n .removeClass(\"hide\");\n }\n\n charleys_hide_loading();\n });\n }\n );\n }\n\n $bs_item.removeClass(\"hide\");\n $bs_container.append($bs_item);\n });\n\n configPaymentOptions();\n } // if(billing_schemes_json)\n\n\n // Coupon Code Actions\n $(\"[data-add-coupon-code]\").off(\"click\");\n $(\"[data-add-coupon-code]\").on(\"click\", function () {\n // Only process if field is not empty\n if ($(\"#checkout-coupon-code\").val()) {\n charleys_show_loading();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_apply_coupon_to_basket\",\n basketGuid: localStorage.getItem(\n \"charleys_customer_basket_id\"\n ),\n couponcode: $(\"#checkout-coupon-code\").val(),\n },\n success: function (response) {\n // console.log(response);\n var result = JSON.parse(response);\n\n if (\"code\" in result) {\n // Error returned\n $(\".coupon-error [data-error-message]\").text(\n result.message\n );\n $(\".coupon-error\").removeClass(\"hide\");\n } else {\n // Coupon successful\n $(\".coupon-error\").addClass(\"hide\");\n $(\".coupon-error [data-error-message]\").text(\"\");\n\n updateBasketDisplay();\n }\n },\n complete: function () {\n charleys_hide_loading();\n },\n });\n }\n });\n\n // Cart Submission action Action ACTION\n $(\"#cart-checkout-place-order\").off(\"click\");\n $(\"#cart-checkout-place-order\").on(\"click\", function () {\n charleys_show_loading();\n clearCheckoutError();\n\n // console.log(\"checkout clicked\");\n\n var billingAccounts = [];\n\n var tipTotal = Number($('#custom-tip-amount').val());\n var paymentSplits = $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").length;\n\n // if one or more payment methods are being charged less than the tip split, don't include them in the split calculation\n var paymentsLessThanTipSplit = 0;\n $('[data-billing-schemes-active] .active-payment:not(.hide) input').each(function(index, value) {\n var amount = Number($(this).val());\n if (amount < Math.ceil((tipTotal / paymentSplits) * 100) / 100) {\n paymentsLessThanTipSplit++;\n }\n });\n\n if (paymentsLessThanTipSplit > 0) {\n paymentSplits = paymentSplits - paymentsLessThanTipSplit;\n }\n\n var tipSplit = Math.floor((tipTotal / paymentSplits) * 100) / 100;\n var tipSplitFinal = tipSplit;\n\n if((tipSplit * paymentSplits) !== tipTotal) {\n tipSplitFinal = Math.ceil((tipTotal / paymentSplits) * 100) / 100;\n }\n\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").each(function(index, value) {\n var isLastElement = index == paymentSplits - 1;\n\n var paymentTipSplit = tipSplit;\n if(isLastElement) {\n paymentTipSplit = tipSplitFinal;\n }\n\n if ($(this).attr(\"name\") == \"account-x-new-card\") {\n // add new CC\n var billing_amount = Number($(this).val());\n\n var expirationDate = $(\"#expiredate\").val().split(\"/\");\n var postalCode = $(\"#postalCode\").val();\n\n var tipPortion = paymentTipSplit;\n if (billing_amount < tipPortion) {\n tipPortion = 0;\n }\n\n billingAccounts.push({\n amount: billing_amount,\n billingMethod: \"creditcard\",\n expiryMonth: expirationDate[0],\n expiryYear: \"20\" + expirationDate[1],\n zip: postalCode,\n tipPortion: tipPortion,\n\n // streetAddress: \"26 Broadway\",\n // streetAddress2: \"\",\n // city: \"New York\",\n // state: \"NY\",\n // zip: \"10004\"\n\n // saveOnFile: $(\"#cc_saveonfile\").prop(\"checked\"), // For Saving Billing Info\n });\n } else if ($(this).attr(\"name\") == \"account-x-giftcard\") {\n var billing_amount = Number($(this).val());\n var card_number = $(this).attr(\"data-gift-card-num\");\n var card_pin = $(this).attr(\"data-gift-card-pin\");\n var card_scheme_id = $(this).attr(\"data-scheme-id\");\n var saveOnFile = $(this).attr(\"data-save-on-file\") == \"true\";\n\n // console.log($(this).attr(\"data-save-on-file\"), saveOnFile);\n\n var tipPortion = paymentTipSplit;\n if (billing_amount < tipPortion) {\n tipPortion = 0;\n }\n\n billingAccounts.push({\n amount: billing_amount,\n billingFields: [\n {\n name: \"number\",\n value: card_number,\n },\n {\n name: \"pin\",\n value: card_pin,\n },\n ],\n billingMethod: \"storedvalue\",\n billingSchemeId: card_scheme_id,\n tipPortion: tipPortion,\n saveOnFile: saveOnFile,\n });\n } else {\n // Add Billing Account if present\n var billing_amount = Number($(this).val());\n var billing_account_id = $(this).attr(\"data-billing-account-id\");\n var billingMethod = $(this).attr(\"data-billing-method\"); // \"cash\", \"creditcard\", \"storedvalue\", \"billingaccount\", \"creditcardonfile\"\n\n var tipPortion = paymentTipSplit;\n if (billing_amount < tipPortion) {\n tipPortion = 0;\n }\n\n billingAccounts.push({\n amount: billing_amount,\n billingMethod: billingMethod,\n billingAccountId: billing_account_id,\n tipPortion: tipPortion\n });\n }\n });\n\n var submissionPacket = {\n id: localStorage.getItem(\"charleys_customer_basket_id\"),\n accessToken: localStorage.getItem(\"charleys_customer_ccsf_token\"),\n firstName: localStorage.getItem(\"charleys_customer_guest_first_name\"),\n lastName: localStorage.getItem(\"charleys_customer_guest_last_name\"),\n emailAddress: localStorage.getItem(\"charleys_customer_guest_email_address\"),\n contactNumber: localStorage.getItem(\"charleys_customer_guest_phone_number\"),\n // userType: \"guest\",\n guestOptIn: false, \n billingAccounts: billingAccounts,\n };\n\n // console.log(submissionPacket);\n\n $.when(\n olo_set_delivery_instructions(),\n olo_set_custom_fields(),\n olo_validate_basket()\n ).done(function (delivery_inst, custom_fields, validate_return) {\n // console.log(delivery_inst, custom_fields, validate_return);\n checkoutFrame.submit(submissionPacket);\n\n checkoutFrame.on(\"success\", function (order) {\n // console.log(order.id, order);\n\n // Get Order\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_order\",\n orderguid: order.id,\n },\n success: function (response) {\n var order_data = JSON.parse(response);\n\n // Send GA4/GTM Ecomm Data\n var gtmDLProducts = [];\n var ga4DLProducts = [];\n\n // Set Analytics product data\n for (var i = 0; i < order_data.products.length; i++) {\n gtmDLProducts.push({\n \"name\": order_data.products[i].name,\n \"sku\": order_data.products[i].id,\n \"price\": order_data.products[i].totalcost,\n \"quantity\": order_data.products[i].quantity,\n // 'category': result.products[i]\n });\n ga4DLProducts.push({\n \"item_id\": order_data.products[i].id,\n \"item_name\": order_data.products[i].name,\n \"price\": order_data.products[i].totalcost,\n \"quantity\": order_data.products[i].quantity,\n \"affiliation\": order.vendorname\n // \"item_category\": localStorage.getItem('lumos_orderstate')\n });\n }\n\n // Set User Type\n var orderUserType = \"Guest\";\n if (localStorage.getItem(\"charleys_auth_token\")) {\n orderUserType = \"Member\";\n }\n\n // Set Taxes\n var orderTaxes = 0;\n for (var ii = 0; order_data.taxes.length > ii; ii++) {\n orderTaxes += order_data.taxes[ii].tax;\n }\n\n // Set Order Fees\n var orderFees = 0;\n for (var iii = 0; order_data.fees.length > iii; iii++) {\n orderFees += order_data.fees[iii].amount;\n }\n if (order_data.customerhandoffcharge) {\n orderFees += order_data.customerhandoffcharge;\n }\n\n // Set Order Coupon\n var orderCoupon = \"\";\n for (var iv = 0; order_data.discounts.length > iv; iv++) {\n if (order_data.discounts[iv].type == \"Coupon\") {\n orderCoupon = order_data.discounts[iv].description;\n break;\n }\n }\n\n var gtmDL = {\n \"event\": \"purchase\", // Residential - eCommerce - Order Captured\n \"transactionId\": order_data.oloid,\n \"transactionTotal\": order_data.total,\n \"transactionTax\": orderTaxes,\n \"transactionProducts\": gtmDLProducts,\n \"shipping\": orderFees,\n \"transactionShipping\": orderFees,\n \"affiliation\": order_data.vendorname,\n \"transactionAffiliation\": order_data.vendorname,\n \"coupon\": orderCoupon,\n \"userType\": orderUserType,\n \"orderType\": order_data.deliverymode,\n };\n\n var ga4CustomerEmail = localStorage.getItem(\"charleys_customer_guest_email_address\");\n var ga4PhoneNumber = localStorage.getItem(\"charleys_customer_guest_phone_number\");\n var ga4UserID = localStorage.getItem(\"charleys_user_id\");\n\n if (user_details_json && user_contact_details_json) {\n var user_details = JSON.parse(user_details_json[0]);\n var user_contact_details = JSON.parse(user_contact_details_json[0]);\n\n ga4CustomerEmail = user_details.emailaddress;\n ga4PhoneNumber = user_contact_details.contactdetails;\n }\n\n var ga4DL = {\n \"event\": \"purchase\",\n 'ecommerce': {\n \"transaction_id\": order.oloid,\n \"affiliation\": order.vendorname,\n \"value\": order.total,\n \"tax\": orderTaxes,\n \"currency\": \"USD\",\n \"coupon\": orderCoupon,\n \"userType\": orderUserType,\n \"orderType\": order.deliverymode,\n \"shipping\": orderFees,\n \"items\": ga4DLProducts\n },\n \"user_data\": {\n \"user_id\": ga4UserID,\n \"email_address\": ga4CustomerEmail,\n \"phone_number\": ga4PhoneNumber\n }\n };\n\n // console.log(\"GTMDL: \", gtmDL);\n // console.log('GA4DL:', ga4DL);\n\n // Push Legacy DataLayer GTM\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(ga4DL);\n\n\n // var ga4Data = {\n // 'event': \"purchase\",\n // 'ecommerce': ga4DL\n // };\n // console.log('GA4:', ga4Data);\n\n // Push into GA4\n // gtag('event', 'purchase', ga4DL);\n\n // window.dataLayer.push({ ecommerce: null });\n // window.dataLayer.push(ga4Data);\n\n // Clear cart session\n clearBasketSession();\n localStorage.setItem(\n \"charleys_customer_order\",\n JSON.stringify(order)\n );\n //\n change_view(\"order-complete\");\n },\n });\n });\n\n checkoutFrame.on(\"error\", function (errors) {\n // console.log(errors);\n errors.forEach((error) => {\n // console.log(error.code, error.description);\n setCheckoutError(error.description);\n charleys_hide_loading();\n });\n });\n });\n });\n\n // update basket\n updateBasketDisplay();\n $(\".wf-ordering-checkout\").removeClass(\"hide\");\n charleys_hide_loading();\n });\n });\n }).hide().fadeIn(transitionDuration);\n });\n } else {\n charleys_hide_loading();\n change_view(\"menu\");\n }\n}\n\nfunction olo_set_tip_amount(amount) {\n var $ = jQuery;\n\n // console.log('set tip: ', amount);\n\n if(localStorage.getItem('charleys_customer_basket_id')) {\n\n // console.log(localStorage.getItem('charleys_customer_basket_id'), amount);\n\n charleys_show_loading();\n\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action : 'olo_set_tip_amount',\n basketGuid: localStorage.getItem('charleys_customer_basket_id'),\n amount: amount\n },\n success: function(response) {\n console.log(response);\n var result = JSON.parse(response);\n if('code' in result) {\n setCheckoutError(result.message);\n charleys_hide_loading();\n } else {\n updateBasketDisplay();\n }\n\n },\n complete: function() {\n\n }\n });\n }\n}\n","// View: Menu\nfunction view_menu(openCart = false) {\n var $ = jQuery;\n\n $(\"html\").removeClass(\"is-reveal-open\");\n\n $(\"#shopping-cart-view\").foundation(\"close\");\n charleys_show_loading();\n\n // Reroute if no location or cart is selected\n if (\n localStorage.getItem(\"charleys_customer_store_location_id\") === null ||\n localStorage.getItem(\"charleys_customer_basket_id\") === null\n ) {\n change_view(\"start-order\");\n return;\n }\n\n // Show location menu\n $contentContainer\n .load(templateRoot + \"wf-ordering-menu.html\", function () {\n\n // var floatAddToCart = new Foundation.Sticky($('#floating-add-to-cart'));\n\n if (openCart && $('#shopping-cart-view').length) {\n $('#shopping-cart-view').foundation('open');\n $(\".reveal-overlay\").addClass('differnt-popup-overlay');\n } else {\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n }\n\n // Set Nutrition Document URL\n $('[data-nutrition-document]').attr('href', nutritionDocumentURL);\n\n // Product Detail Accordion\n new Foundation.Accordion($(\"#product-detail-accordion\"), {});\n\n $(\"#hide-show-product-detail-accordion\").click(function () {\n if ($(\"#product-detail-content\").attr(\"aria-hidden\") == \"false\") {\n $(\"[data-hide-detail-accordion]\").addClass(\"hide\");\n $(\"[data-show-detail-accordion]\").removeClass(\"hide\");\n } else {\n $(\"[data-hide-detail-accordion]\").removeClass(\"hide\");\n $(\"[data-show-detail-accordion]\").addClass(\"hide\");\n }\n $(\"#product-detail-accordion\").foundation(\n \"toggle\",\n $(\"#product-detail-content\")\n );\n });\n\n // Clear Reveals\n $(\".product-detail-view, .start-new-order, .ingredient-modal\").each(\n function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n }\n );\n\n var productOptionReveal = new Foundation.Reveal($(\"#product-detail-view\"));\n var $startNewOrder = new Foundation.Reveal($(\"#start-new-order\"));\n var ingredientReveal = new Foundation.Reveal($(\"#ingredient-modal\"));\n\n // Set Up Product Option Reveal & Actions\n\n var $detailView = $(\"#product-detail-view\");\n var $shippingCartView = $(\"#shopping-cart-view\");\n // $(\"#start-new-order\").parent().addClass('differnt-popup-overlay');\n // // $detailView.parent().scroll(productSelectScroll);\n // // $detailView.scroll(productSelectScroll);\n\n $detailView.on('open.zf.reveal', function (e) {\n $(\".reveal-overlay\").addClass('differnt-popup-overlay');\n });\n $detailView.on('closed.zf.reveal', function (e) {\n // console.log('menu modal closed', document.location.pathname + \"#menu\");\n // e.preventDefault();\n history.replaceState({}, '', '#menu');\n if (document.location.pathname === '/order/') {\n // console.log('no close');\n } else {\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n }\n });\n $shippingCartView.on('open.zf.reveal', function (e) {\n $(\".reveal-overlay\").addClass('differnt-popup-overlay');\n });\n $shippingCartView.on('closed.zf.reveal', function (e) {\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n });\n // function productSelectScroll() {\n // // console.log('detail view scroll');\n // // Sticky product option selections\n // if ($(\"#floating-add-to-cart\").length) {\n // var distTop =\n // $(\"#floating-add-to-cart\").offset().top - $(window).scrollTop();\n // // console.log(distTop);\n //\n // $(\"#floating-add-to-cart>div\").css({\n // width: $(\"#floating-add-to-cart\").outerWidth(),\n // });\n //\n // if (distTop <= 0) {\n // $(\"#floating-add-to-cart\").css({\n // height: $(\"#floating-add-to-cart\").outerHeight(),\n // });\n // $(\"#floating-add-to-cart\").addClass(\"stuck\");\n // } else {\n // $(\"#floating-add-to-cart\").css({\n // height: \"auto\",\n // });\n // $(\"#floating-add-to-cart\").removeClass(\"stuck\");\n // }\n // }\n // }\n\n var editBasketItem = 0,\n editBasketProduct = 0;\n if (window.location.hash.split(\"_\").length > 1) {\n editBasketItem = Number(window.location.hash.split(\"_\")[1]);\n editBasketProduct = Number(window.location.hash.split(\"_\")[2]);\n // console.log(\"Edit Item: \" + editBasketItem + \", \" + editBasketProduct);\n }\n\n $(\"#product-item-qty\").change(function () {\n calculateProductTotal();\n });\n\n $.when(\n olo_get_restaurant(\n localStorage.getItem(\"charleys_customer_store_location_id\")\n )\n ).done(function (restaurant_data_json) {\n var restaurant_data = JSON.parse(restaurant_data_json);\n $(\"[data-menu-selected-store]\").text(restaurant_data.name);\n\n restaurant_data.labels.forEach(function (label) {\n if (\n label.key ==\n \"handoffmode_\" +\n localStorage.getItem(\"charleys_customer_deliverymode\")\n ) {\n $(\"[data-menu-handoff-mode]\").text(label.value);\n }\n });\n\n var customer_schedule = localStorage.getItem(\n \"charleys_customer_schedule\"\n );\n if (customer_schedule !== \"asap\") {\n var scheduledTime = localStorage.getItem(\n \"charleys_customer_scheduled_time\"\n );\n\n // console.log(scheduledTime);\n\n if (scheduledTime.substring(0, 2) > 12) {\n scheduledTime =\n scheduledTime.substring(0, 2) -\n 12 +\n scheduledTime.substring(2) +\n \" PM\";\n } else {\n scheduledTime = scheduledTime + \" AM\";\n }\n\n customer_schedule =\n \"at \" +\n scheduledTime +\n \" on \" +\n localStorage.getItem(\"charleys_customer_scheduled_day\");\n } else {\n customer_schedule = customer_schedule.toUpperCase();\n }\n $(\"[data-menu-handoff-time]\").text(customer_schedule);\n\n // show formatted store hours\n var hoursCalendar;\n var calendarMatched = false;\n\n // if there is a specific calendar of hours for this delivery type (e.g. dispatch), use it\n restaurant_data.calendar.every(function (calendar) {\n if (calendar.type == localStorage.getItem('charleys_customer_deliverymode')) {\n hoursCalendar = calendar;\n calendarMatched = true;\n }\n\n return !calendarMatched;\n });\n\n // otherwise use the regular business hours\n if (calendarMatched == false) {\n restaurant_data.calendar.every(function (calendar) {\n if (calendar.type == 'business') {\n hoursCalendar = calendar;\n calendarMatched = true;\n }\n\n return !calendarMatched;\n });\n }\n\n // format the stupid nonstandard olo dates\n var startDateRaw = hoursCalendar.ranges[0].start;\n var endDateRaw = hoursCalendar.ranges[0].end;\n\n var jsStartDate = new Date(startDateRaw.substring(0, 4), startDateRaw.substring(4, 6), startDateRaw.substring(6, 8), startDateRaw.substring(9, 11), startDateRaw.substring(12, 14), 0, 0);\n var jsEndDate = new Date(endDateRaw.substring(0, 4), endDateRaw.substring(4, 6), endDateRaw.substring(6, 8), endDateRaw.substring(9, 11), endDateRaw.substring(12, 14), 0, 0);\n\n var startTimeFormatted = jsStartDate.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true });\n var endTimeFormatted = jsEndDate.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true });\n\n $('.store-hours').text('Hours ' + startTimeFormatted + ' - ' + endTimeFormatted);\n\n $('[data-store-info]').removeClass('hide');\n });\n\n // Start New Order (reset cart)\n $(\"#start-new-order-button\").click(function () {\n charleys_show_loading();\n\n $.when(\n olo_create_basket(\n localStorage.getItem(\"charleys_customer_store_location_id\"),\n false,\n true\n )\n ).done(function (ocb) {\n updateBasketDisplay();\n charleys_hide_loading();\n });\n });\n\n $(\"#edit-location\").click(function () {\n change_view(\"start-order\");\n });\n\n // Remove reveal modals\n $(\n \"#account-select-order-type, #home-select-order-type\",\n \"#menu-select-order-type\",\n \"#location-detail-order-type\"\n ).each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $select_order_type_reveal = new Foundation.Reveal(\n $(\"#menu-select-order-type\"),\n {}\n );\n\n $('input[name=\"menu-order-type\"]').change(function () {\n clearLocationList();\n\n if ($('input[name=\"menu-order-type\"]').val() !== \"dispatch\") {\n $(\"[data-search-deliver]\").addClass(\"hide\");\n $(\"#menu-order-location-search\").addClass(\"hide\");\n $(\".fa-location-dot\").addClass(\"hide\");\n $(\"#menu-order-location-search-building\").val(\"\");\n } else {\n $(\"[data-search-deliver]\").removeClass(\"hide\");\n $(\"#menu-order-location-search\").removeClass(\"hide\");\n $(\".fa-location-dot\").removeClass(\"hide\");\n }\n\n if ($(\"#menu-order-location-search\").val()) {\n $(\"#menu-order-location-search-form\").submit();\n } else {\n populate_user_restaurants(\"menu\");\n }\n });\n\n // Hide/show schedule elements\n $('input[name=\"menu-order-schedule\"]').change(function () {\n if ($('input[name=\"menu-order-schedule\"]:checked').val() == \"advance\") {\n $(\"#menu-schedule-time\").removeClass(\"hide\");\n } else {\n $(\"#menu-schedule-time\").addClass(\"hide\");\n }\n });\n\n var todaysDate = new Date();\n var tomorrowsDate = new Date().addDays(1);\n var scheduleDates = getDates(todaysDate, new Date().addDays(45));\n var daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n for (var i = 0; i < scheduleDates.length; i++) {\n var dayValue =\n scheduleDates[i].getFullYear() +\n \"-\" +\n zeroPad(scheduleDates[i].getMonth() + 1, 2) +\n \"-\" +\n zeroPad(scheduleDates[i].getDate(), 2);\n var dayLabel =\n daysOfWeek[scheduleDates[i].getDay()] +\n \" \" +\n (scheduleDates[i].getMonth() + 1) +\n \"/\" +\n scheduleDates[i].getDate();\n\n if (scheduleDates[i].getTime() === todaysDate.getTime()) {\n dayLabel = \"Today\";\n }\n if (scheduleDates[i].getTime() === tomorrowsDate.getTime()) {\n dayLabel = \"Tomorrow\";\n }\n\n $(\"[data-menu-order-time-wanted-day]\").append(\n '\"\n );\n }\n\n var timeSelection = createQuarterHourIntervals();\n\n for (var ii = 0; ii < timeSelection.length; ii++) {\n $(\"[data-menu-order-time-wanted-time]\").append(\n '\"\n );\n }\n\n $(\"select#menu-time-wanted-day\").change(function () {\n if (\n $(\n 'select#menu-time-wanted-day option[value=\"' + $(this).val() + '\"]'\n ).text() == \"Today\"\n ) {\n var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n // console.log(currentTime);\n $(\"select#menu-time-wanted-time-slot option\").each(function () {\n if ($(this).val() < currentTime) {\n $(this).addClass(\"hide\");\n }\n $(\"select#menu-time-wanted-time-slot\").val(currentTime);\n });\n } else {\n $(\"select#menu-time-wanted-time-slot option\").each(function () {\n $(this).removeClass(\"hide\");\n });\n }\n });\n\n $(\"select#menu-time-wanted-day\").trigger(\"change\");\n\n // Autocomplete for location search\n if ($(\"#menu-order-location-search\").length) {\n const inputD = $(\"#menu-order-location-search\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n olo_get_nearby_locations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n \"menu\"\n );\n // console.log(place);\n\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n if (components.street_number && components.route) {\n $(\"#menu-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if ('locality' in components) {\n $('#menu-order-location-search-city').val(components.locality);\n } else if ('administrative_area_level_2' in components) {\n $('#menu-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#menu-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n // console.log($('#order-location-search-streetaddress').val());\n // console.log($('#order-location-search-city').val());\n // console.log($('#order-location-search-zipcode').val());\n }\n });\n\n $(\"#menu-order-location-search-form\").submit(function (e) {\n e.preventDefault();\n\n // console.log(\"search locations\");\n\n $(\"#menu-order-location-search\").blur();\n\n var address = $(\"#menu-order-location-search\").val();\n var geocoder = new google.maps.Geocoder();\n\n if (address.length) {\n geocoder.geocode(\n {\n address: address,\n },\n function (results, status) {\n // console.log(\"GEOCODER STATUS \", status, results);\n if (status == google.maps.GeocoderStatus.OK) {\n // console.log(results);\n\n var components = {};\n $.each(results[0].address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log('address components', components);\n\n if (components.street_number && components.route) {\n $(\"#menu-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if ('locality' in components) {\n $('#menu-order-location-search-city').val(components.locality);\n } else if ('administrative_area_level_2' in components) {\n $('#menu-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#menu-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n olo_get_nearby_locations(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng(),\n \"\",\n \"menu\"\n );\n } else {\n $(\"#menu-order-location-search\").val(\"\");\n charleys_hide_loading();\n }\n }\n );\n } else {\n charleys_hide_loading();\n }\n });\n // initMap();\n }\n\n $(\"#menu-select-order-type-button\").click(function () {\n var validAddress = true;\n var isDelivery = Boolean(\n $('input[name=\"menu-order-type\"]').val() == \"dispatch\"\n );\n\n // Delivery requires a full address, thus fails validation if no street address is present\n if (\n isDelivery &&\n !$(\"#menu-order-location-search-streetaddress\").val().length\n ) {\n validAddress = false;\n }\n\n $(\"#menu-order-location-search\").removeClass(\"form-alert\");\n $(\"#menu-order-location-search-error\").addClass(\"hide\");\n\n if (validAddress) {\n charleys_show_loading();\n setAddressComponents(\"menu\");\n\n $.when(olo_set_basket_settings(\"menu\")).done(function (osbs_json) {\n // Go to the restaurant menu\n var osbs = JSON.parse(osbs_json);\n // console.log(osbs);\n // Display basket setting errors\n // Dispatch address\n if (\"dispatchaddress\" in osbs && \"code\" in osbs.dispatchaddress) {\n $(\"[data-delivery-error]\").text(osbs.dispatchaddress.message);\n $(\"#menu-order-location-search-error-delivery\").removeClass(\n \"hide\"\n );\n clearBasketSession(); // Remove the cart session to prevent menu selection and checkout\n charleys_hide_loading();\n // Time wanted\n } else if (\"timewanted\" in osbs && \"code\" in osbs.timewanted) {\n $(\"[data-delivery-error]\").text(osbs.timewanted.message);\n $(\"#menu-order-location-search-error-delivery\").removeClass(\n \"hide\"\n );\n clearBasketSession(); // Remove the cart session to prevent menu selection and checkout\n charleys_hide_loading();\n // Delivery mode\n } else if (\"deliverymode\" in osbs && \"code\" in osbs.deliverymode) {\n $(\"[data-delivery-error]\").text(osbs.deliverymode.message);\n $(\"#menu-order-location-search-error-delivery\").removeClass(\n \"hide\"\n );\n clearBasketSession(); // Remove the cart session to prevent menu selection and checkout\n charleys_hide_loading();\n // Otherwise, good to proceed\n } else {\n updateBasketDisplay();\n if ($(\"#home-select-order-type\").length) {\n $(\"#home-select-order-type\").foundation(\"close\");\n }\n if ($(\"#account-select-order-type\").length) {\n $(\"#account-select-order-type\").foundation(\"close\");\n }\n if ($(\"#location-detail-select-order-type\").length) {\n $(\"#location-detail-select-order-type\").foundation(\"close\");\n }\n charleys_hide_loading();\n window.location.reload();\n }\n });\n } else {\n $(\"#menu-order-location-search\").addClass(\"form-alert\");\n $(\"#menu-order-location-search-error\").removeClass(\"hide\");\n }\n });\n\n $(\"#edit-handoff\").click(function () {\n window.scrollTo(0, 0);\n $(\"#menu-select-order-type\").foundation(\"open\");\n });\n\n // Get Menu and Set Up Selections\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: localStorage.getItem(\n \"charleys_customer_store_location_id\"\n ),\n },\n success: function (response) {\n // console.log(JSON.parse(response)); \n\n var menu = JSON.parse(response);\n //menu category \n let readOnlyCategoryMenuItemCarryOver = localStorage.getItem('readOnlyCategoryMenuItemCarryOver');\n if (readOnlyCategoryMenuItemCarryOver) {\n readOnlyCategoryMenuItemCarryOver = readOnlyCategoryMenuItemCarryOver.toLowerCase();\n }\n let readOnlyCategoryMenuItemCarryOverImg = localStorage.getItem('readOnlyCategoryMenuItemCarryOverImg');\n\n //menu item\n let readOnlyMenuItemCarryOver = localStorage.getItem('readOnlyMenuItemCarryOver');\n // console.log('readOnlyMenuItemCarryOver', readOnlyMenuItemCarryOver);\n if (readOnlyMenuItemCarryOver) {\n readOnlyMenuItemCarryOver = readOnlyMenuItemCarryOver.toLowerCase();\n }\n let readOnlyMenuItemCarryOverImg = localStorage.getItem('readOnlyMenuItemCarryOverImg');\n\n let matchFound = false;\n let matchProductID = null;\n // populate fave/recent order callout\n var callout_products = [];\n var recents_complete = false;\n var faves_complete = false;\n\n if (isUserLoggedIn(true)) {\n $(\"[data-menu-fave-callout]\").removeClass(\"hide\");\n }\n\n // create menu categories and single use categories\n function createMenuCategories(index, menu_cat) {\n //read only menu filter\n const normalize = (str) => str.replace(/–/g, '-').replace(/—/g, '-'); // Replace en dash and em dash with hyphen\n const sanitize = (str) => normalize(str.replace(/\\s+/g, ' ').trim()); // Normalize and sanitize the string\n if (readOnlyCategoryMenuItemCarryOver &&\n sanitize(menu_cat.name.toLowerCase()) === sanitize(readOnlyCategoryMenuItemCarryOver.toLowerCase())) {\n // console.log('Matching product:', menu_cat.name, menu_cat.id);\n matchFound = true;\n matchProductID = menu_cat.id;\n }\n // console.log(sanitize(menu_cat.name.toLowerCase()), matchFound, sanitize(readOnlyCategoryMenuItemCarryOver.toLowerCase()));\n\n //end read only menu filter\n var $cat_template = $(\n \"[data-category-selector-template].hide\"\n ).clone();\n if (menu_cat.name === 'CHOOSE FROM THE FOLLOWING:') {\n $cat_template.addClass('singleUseTemplate').addClass('option-hide');\n }\n $cat_template.find('input[type=\"radio\"]').attr(\"id\", menu_cat.id);\n $cat_template\n .find('input[type=\"radio\"]')\n .attr(\"value\", menu_cat.id);\n $cat_template.find(\"label\").attr(\"for\", menu_cat.id);\n $cat_template.find(\"label [data-label-name]\").text(menu_cat.name);\n\n // Category Images\n var menuCatImage = '',\n menuCatImageAlt = menu_cat.name;\n\n if (menu.imagepath && menu_cat.images) {\n if (menu.imagepath && menu_cat.images.find((image) => image.groupname === \"mobile-webapp-menu\")) {\n menuCatImage = menu.imagepath + menu_cat.images.find((image) => image.groupname === \"mobile-webapp-menu\").filename;\n // Set alt if description exists\n if (menu_cat.images.find((image) => image.groupname === \"mobile-webapp-menu\").description) {\n menuCatImageAlt = menu_cat.images.find((image) => image.groupname === \"mobile-webapp-menu\").description;\n }\n }\n }\n\n if (menuCatImage.length == 0) {\n if (menu_cat.image_url) {\n menuCatImage = menu_cat.image_url;\n }\n }\n\n // No image associated -- Show Placeholder\n if (menuCatImage.length == 0) {\n menuCatImage = \"https://www.charleys.com/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\";\n }\n\n $cat_template.find(\"img\").attr(\"src\", menuCatImage);\n $cat_template.find(\"img\").attr(\"alt\", menuCatImageAlt);\n\n $cat_template.removeClass(\"hide\");\n\n $(\".category-selector-wrap\").append($cat_template);\n\n var $menu_category = $(\n \"[data-menu-category-template].hide\"\n ).clone();\n\n $menu_category.attr(\"data-category-id\", menu_cat.id);\n\n $menu_category.find(\"[data-category-title]\").text(menu_cat.name);\n $menu_category\n .find(\"[data-category-desc]\")\n .text(menu_cat.description);\n\n // Display Menu Category Filter\n $.each(menu_cat.products, function (index, menu_item) {\n // console.log('menu_item', menu_item);\n //read only menu filter \n if (menu_item.name.toLowerCase() === readOnlyMenuItemCarryOver) {\n // console.log('Matching product:', menu_item.name, menu_item.id, menu_cat.id);\n matchFound = true; // Set flag to true if a match is found\n matchProductID = menu_item.id;\n }\n //end read only menu filter\n\n var $menu_category_item = $(\n \"[data-menu-item-template].hide\"\n ).clone();\n\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-menu-selection-id\", menu_item.id);\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-menu-selection-chain-id\", menu_item.chainproductid);\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-menu-selection-cost\", menu_item.cost);\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-minimum-quantity\", menu_item.minimumquantity);\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-maximum-quantity\", menu_item.maximumquantity);\n\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-quantity-increment\", menu_item.quantityincrement);\n\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-availability-now\", menu_item.availability.now);\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\n \"data-availability-isdisabled\",\n menu_item.availability.isdisabled\n );\n\n // console.log(menu_item);\n\n // Disable if unavailable for current delivery method\n if (\n menu_item.unavailablehandoffmodes.includes(\n localStorage.getItem(\"charleys_customer_schedule\")\n )\n ) {\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .prop(\"disabled\", true);\n }\n\n // Disable if not available now\n if (!menu_item.availability.now) {\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .prop(\"disabled\", true);\n }\n\n // Disabled if 86ed\n if (menu_item.availability.isdisabled) {\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .prop(\"disabled\", true);\n }\n\n var menuImage = \"\";\n var menuImageDetail = \"\";\n\n if (menu.imagepath && menu_item.imagefilename) {\n menuImage = menu.imagepath + menu_item.imagefilename;\n if (\n menu.imagepath &&\n menu_item.images.find(\n (image) => image.groupname === \"mobile-webapp-customize\"\n )\n ) {\n menuImageDetail =\n menu.imagepath +\n menu_item.images.find(\n (image) => image.groupname === \"mobile-webapp-customize\"\n ).filename;\n } else {\n menuImageDetail = menuImage;\n }\n }\n else {\n // No image associated -- Show Placeholder\n menuImage =\n \"https://www.charleys.com/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\";\n menuImageDetail = menuImage;\n }\n\n $menu_category_item.find(\"img\").attr(\"src\", menuImage);\n\n $menu_category_item\n .find(\"[data-menu-selection-id]\")\n .attr(\"data-menu-image-url\", menuImageDetail);\n\n $menu_category_item\n .find(\"img\")\n .attr(\"alt\", menu_item.name);\n\n $menu_category_item\n .find(\"[data-menu-item-title]\")\n .text(menu_item.name);\n\n $menu_category_item\n .find(\"[data-menu-item-calories]\")\n .text(menu_item.basecalories);\n\n $menu_category_item\n .find(\"[data-menu-item-desc]\")\n .text(menu_item.description);\n\n if (menu_item.cost !== 0) {\n $menu_category_item\n .find(\"[data-menu-item-price]\")\n .text(\"$ \" + formatMoney(menu_item.cost));\n } else {\n $menu_category_item\n .find(\"[data-menu-item-price]\")\n .addClass(\"hide\");\n }\n\n var calories = \"\";\n if (menu_item.basecalories !== null) {\n calories = menu_item.basecalories;\n }\n if (menu_item.maxcalories !== null) {\n if (calories.length) {\n calories += \" \" + menu_item.caloriesseparator + \" \";\n }\n calories += menu_item.maxcalories;\n }\n\n if (calories.length) {\n calories += \" Cal\";\n }\n\n $menu_category_item\n .find(\"[data-menu-item-calories]\")\n .text(calories);\n\n $menu_category_item.removeClass(\"hide\");\n $menu_category.append($menu_category_item);\n });\n\n if (menu_cat.products.length > 0) {\n $menu_category.find(\"[data-menu-item-template].hide\").remove();\n $menu_category.removeClass(\"hide\");\n $(\".wf-ordering-menu .menu-grid\").append($menu_category);\n }\n }\n $.each(menu.categories, function (index, menu_cat) {\n createMenuCategories(index, menu_cat)\n }); // $.each(menu.categories\n $.each(menu.singleusecategories, function (index, menu_cat) {\n createMenuCategories(index, menu_cat);\n // $cat_template.addClass('option-hide');\n }); // $.each(menu.categories\n\n // Back Button Default\n $defaultBackAction = true;\n if ($('.reveal-overlay [data-back-button]').length > 0) {\n $defaultBackAction = false;\n }\n $backBtn = $(\".wf-ordering-container [data-back-button]\");\n $backBtn.click(function () {\n if ($defaultBackAction) {\n change_view('start-order');\n }\n });\n // Filter Categories\n function onCategoryChange($radioInput) {\n $('html, body').animate({ scrollTop: 0 }, 'fast', function () {\n // console.log(\"I scrolled up\");\n });\n // console.log($($radioInput).val());\n\n if ($($radioInput).val() == \"all\") {\n // console.log('#1');\n $(\"[data-menu-category-template]:not(.hide)\").removeClass(\n \"option-hide\"\n );\n } else {\n // console.log('#2');\n\n $(\"[data-menu-category-template]:not(.hide)\").addClass(\n \"option-hide\"\n );\n var showID = $(\n '[data-category-selector-template]:not(.hide) input[type=\"radio\"]:checked'\n ).val();\n $(\n '[data-menu-category-template][data-category-id=\"' +\n showID +\n '\"]'\n ).removeClass(\"option-hide\");\n\n //show menu, hide category options, change back button\n $(\".menu-grid\").removeClass(\n \"option-hide\"\n );\n $(\".category-selector, [data-category-selector-template]:not(.hide), .wf-ordering-menu .heading\").addClass(\n \"option-hide\"\n );\n\n $backBtn.find(\"[data-button-label]\").html(\"Back\");\n\n $defaultBackAction = false;\n\n $backBtn.click(function () {\n $(\n '[data-category-selector-template]:not(.hide) input[type=\"radio\"]'\n ).prop(\"checked\", false);\n $(\n \"[data-category-selector-template]:not(.hide), .wf-ordering-menu .heading\"\n ).removeClass(\"option-hide\");\n $(\"[data-menu-category-template]:not(.hide)\").removeClass(\n \"option-hide\"\n );\n $(\".category-selector\").removeClass(\"option-hide\");\n $(\".category-selector\").removeClass(\"option-hide\");\n $(\".menu-grid\").addClass(\"option-hide\");\n $(\"[data-back-button] [data-button-label]\").html(\"Back\");\n $defaultBackAction = true;\n });\n }\n }\n $('[data-category-selector-template]:not(.hide) input[type=\"radio\"]').change(function () {\n onCategoryChange($(this));\n });\n\n // Open Menu Item\n $(\"button.menu-item-selector\").click(function () {\n charleys_show_loading();\n\n // Preflight: set all qty values\n $(\"#product-item-qty\").val(\"1\");\n $(\"#product-item-qty\").attr(\"min\", \"1\");\n $(\"#product-item-qty\").attr(\"max\", \"99\");\n $(\"#product-item-qty\").attr(\"step\", \"1\");\n\n // Preflight: set ids to be used\n var productId = $(this).attr(\"data-menu-selection-id\");\n var chainProductId = $(this).attr(\"data-menu-selection-chain-id\");\n var productCost = $(this).attr(\"data-menu-selection-cost\");\n\n // Preflight: set min/max/increment for qty selector\n var productMinQty = $(this).attr(\"data-minimum-quantity\");\n var productMaxQty = $(this).attr(\"data-maximum-quantity\");\n var productIncrement = $(this).attr(\"data-quantity-increment\");\n\n if (productMinQty) {\n $(\"#product-item-qty\").attr(\"min\", productMinQty);\n $(\"#product-item-qty\").val(productMinQty);\n }\n if (productMaxQty) {\n $(\"#product-item-qty\").attr(\"max\", productMaxQty);\n // console.log('i small boy', productMaxQty);\n }\n if (productIncrement) {\n $(\"#product-item-qty\").attr(\"step\", productIncrement);\n }\n\n // Preflight: set qty element\n setQuantityElem(\n $(\"#product-quantity-selector\"),\n $(\"#product-item-qty\").attr(\"min\"),\n $(\"#product-item-qty\").attr(\"max\"),\n $(\"#product-item-qty\").attr(\"step\")\n );\n\n $(\"[data-menu-item-detail-image]\").attr(\n \"src\",\n $(this).attr(\"data-menu-image-url\")\n );\n\n //look for image in image array with group name 'web detail' for product details header image\n // if (menu.imagepath && menu_item.images.find(image => image.groupname === 'web-detail')) {\n // $('[data-menu-item-detail-image]').attr('src', menu.imagepath + menu_item.images.find(image => image.groupname === 'web-detail').filename);\n // } else {\n // // No image associated -- Show Placeholder\n // $('[data-menu-item-detail-image]').attr('src', '/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg');\n // }\n\n $detailView\n .find(\"[data-product-view-title]\")\n .text($(this).find(\"[data-menu-item-title]\").text());\n\n $detailView\n .find(\"[data-product-total-calories]\")\n .text($(this).find(\"[data-menu-item-calories]\").text());\n // Set the text from data-menu-item-desc to data-product-view-description\n let menuItemDesc = $(this).find(\"[data-menu-item-desc]\").text();\n $detailView.find(\"[data-product-view-description]\").text(menuItemDesc);\n\n // Check if data-menu-item-desc has no text and hide the element if necessary\n if ($.trim(menuItemDesc) === \"\") {\n // Add class 'hide' to data-main-ingredients-with-no-custumization if there is no text\n $detailView.find(\"[data-main-ingredients-with-no-custumization]\").css('display', 'none');\n } else {\n // Remove the 'hide' class if there's text, in case you want to toggle it\n $detailView.find(\"[data-main-ingredients-with-no-custumization]\").css('display', 'block');\n }\n\n $detailView\n .find(\"#item-add-to-cart\")\n .attr(\"data-menu-selection-id\", productId);\n $detailView\n .find(\"#item-add-to-cart\")\n .attr(\"data-menu-selection-chain-id\", chainProductId);\n //hide quantiy if max quanitiy is 1 \n // console.log('Maximum quantity:', $(this).attr('data-maximum-quantity'));\n if (Number($(this).attr('data-maximum-quantity')) === 1) {\n $('.add-to-cart-qty').addClass('hide');\n } else {\n $('.add-to-cart-qty').removeClass('hide');\n }\n //end\n var $basePrice = $detailView.find(\"[data-base-price]\");\n\n $basePrice.find('input[type=\"checkbox\"]').attr(\"id\", productId);\n $basePrice.find('input[type=\"checkbox\"]').attr(\"data-cost\", productCost);\n $basePrice.find('input[type=\"checkbox\"]').attr(\"chainproductid\", chainProductId);\n // $basePrice.find('input[type=\"checkbox\"]').val(productCost);\n $basePrice.find(\"label\").attr(\"for\", productId);\n $basePrice\n .find(\"label\")\n .text(\n $(this).find(\"[data-menu-item-title]\").text() + \" Base Price\"\n );\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu_options\",\n productId: productId,\n },\n success: function (response) {\n // console.log('menu', JSON.parse(response));\n\n // console.log(\"load product options\");\n\n clearProductOptions();\n\n var optionGroups = JSON.parse(response).optiongroups;\n\n var $productDetails = $(\"#product-detail-view\");\n\n\n $.each(optionGroups, function (index, group) {\n setItemOptions(group);\n }); // $.each(optionGroups ...\n\n calculateProductTotal();\n\n // Product Option / Modifier UI\n $(\"[data-product-option-group]\").each(function () {\n $(this)\n .find(\n \"input[data-item-selector], input[data-item-selector-modifier], input.qtyinput\"\n )\n .change(function () {\n\n // Validate Form\n let $inputElementForComboMeal = $('fieldset.highlight span:nth-of-type(2) input');\n let $inputElementForNotComboMeal = $('fieldset.highlight span:nth-of-type(3) input');\n let inputChanged = $(this);\n\n if ($(this).is($inputElementForComboMeal) || $(this).is($inputElementForNotComboMeal)) {\n // Pass comboChange as true\n // console.log('ahhh', $(this)); \n validateItemForm(true, $(this));\n } else {\n // Pass comboChange as false\n validateItemForm(false, $(this));\n // console.log('ahhh!', $(this));\n\n }\n // Calculate Total\n calculateProductTotal();\n });\n });\n\n // If the product is being viewed in edit mode\n if (editBasketItem) {\n charleys_show_loading();\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_basket\",\n basketGuid: localStorage.getItem(\n \"charleys_customer_basket_id\"\n ),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n\n var basketProducts = result.products;\n\n $.each(basketProducts, function (key, bProduct) {\n if (bProduct.id == editBasketItem) {\n $.each(bProduct.choices, function (key, choice) {\n // Select products\n $(\"#\" + choice.optionid).click();\n $(\"#\" + choice.optionid).prop('checked', true);\n // console.log('choice.optionid', choice.optionid, choice.name);\n\n // Set quantities\n $(\n 'input[type=\"radio\"][data-qty-for=\"' +\n choice.optionid +\n '\"][value=\"' +\n choice.quantity +\n '\"]'\n ).click();\n $(\n 'input[type=\"number\"][data-qty-for=\"' +\n choice.optionid +\n '\"]'\n )\n .val(choice.quantity)\n .change();\n\n });\n // Set customer Name\n $(\"#item-customer-name\").val(bProduct.recipient);\n // Set Quantity\n $(\"#product-item-qty\")\n .val(bProduct.quantity)\n .change();\n return;\n }\n });\n\n $detailView\n .find(\"#item-add-to-cart-update\")\n .attr(\"data-update-product-id\", editBasketItem);\n // $detailView.find('#item-add-to-cart-update').attr('data-update-product-id', productId);\n\n $detailView.find(\"#item-add-to-cart\").addClass(\"hide\");\n $detailView\n .find(\"#item-add-to-cart-update\")\n .removeClass(\"hide\");\n\n charleys_hide_loading();\n //scroll to combo info \n if (localStorage.getItem('scrollToComboModifier') === 'true') {\n // console.log('Scroll flag is set. Trying to scroll...');\n $('fieldset.highlight').each(function () {\n let $fieldset = $(this);\n let $inputElement = $fieldset.find('span:nth-of-type(2) input');\n $inputElement.prop('checked', true);\n });\n\n // let productChoices = JSON.parse(localStorage.getItem('scrollToComboModifierOptions'));\n // Find the object with name 'No'\n // const noChoice = productChoices.find(choice => choice.name.toLowerCase() === 'small');\n // if (noChoice) {\n // console.log('no Choice', noChoice.optionid); \n\n // // Find the input element with ID matching noChoice.optionid\n // const $inputElement = $(\"#\" + noChoice.optionid);\n // console.log('sdgsdgs', $inputElement.parent().parent().find('legend'))\n\n // }\n\n\n // $('fieldset.size-selector').each(function () {\n // let $fieldset = $(this);\n // let $inputElement = $fieldset.find('span:nth-of-type(3) input');\n // $inputElement.prop('checked', true);\n // }); \n // Remove the flag from localStorage after scrolling\n validateItemForm(true);\n localStorage.removeItem('scrollToComboModifier');\n }\n\n //end of scroll to combo info \n // Reset URL to prevent backout collisions\n history.replaceState({}, \"\", \"#menu-product-view\");\n editBasketItem = 0;\n },\n complete: function () { },\n });\n } else {\n $detailView.find(\"#item-add-to-cart\").removeClass(\"hide\");\n $detailView.find(\"#item-add-to-cart-update\").addClass(\"hide\");\n }\n\n $(\"[data-info]\").off(\"click\");\n $(\"[data-info]\").on(\"click\", function () {\n var $ingredientModal = $(\"#ingredient-modal\");\n\n $ingredientModal\n .find(\"[data-modal-cover]\")\n .addClass(\"covered\");\n\n // GET INGREDIENT DATA, LOAD IT INTO INGREDIENT MODAL\n // get_wp_ingredient_data\n charleys_show_loading();\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_wp_ingredient_data\",\n post_id: $(this).attr(\"data-ingredient-id\"),\n },\n success: function (response) {\n var result = JSON.parse(response);\n\n if (result.image_url.length) {\n $(\"#ingredient-modal\")\n .find(\"img[data-main-image]\")\n .attr(\"src\", result.image_url);\n } else {\n $(\"#ingredient-modal\")\n .find(\"img[data-main-image]\")\n .attr(\n \"src\",\n \"https://www.charleys.com/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\"\n );\n }\n\n $(\"#ingredient-modal\")\n .find(\"img[data-main-image]\")\n .attr(\"alt\", result.title);\n $(\"#ingredient-modal\")\n .find(\"[data-ingredient-title]\")\n .text(result.title);\n $(\"#ingredient-modal\")\n .find(\"[data-calories]\")\n .text(result.calories);\n $(\"#ingredient-modal\")\n .find(\"[data-ingredient-info]\")\n .html(result.info);\n\n $(\"#ingredient-modal\").find(\"[data-spicy]\").empty();\n if (\n \"spicy\" in result &&\n result.spicy !== \"0\" &&\n result.spicy !== null\n ) {\n var labelText = \"\";\n for (i = 0; i < Number(result.spicy); i++) {\n labelText += '';\n }\n for (i = Number(result.spicy); i < 5; i++) {\n labelText +=\n '';\n }\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .attr(\"data-spicy\", result.spicy);\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .attr(\n \"aria-label\",\n \"Spicy Level is \" + result.spicy + \" out of 5\"\n );\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .attr(\n \"title\",\n \"Spicy Level is \" + result.spicy + \" out of 5\"\n );\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .append(labelText);\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .removeClass(\"hide\");\n } else {\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .addClass(\"hide\");\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .attr(\"data-spicy\", 0);\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .removeAttr(\"aria-label\");\n $(\"#ingredient-modal\")\n .find(\"[data-spicy]\")\n .removeAttr(\"title\");\n }\n\n $ingredientModal\n .find(\"[data-modal-cover]\")\n .removeClass(\"covered\");\n $ingredientModal.foundation(\"open\");\n\n charleys_hide_loading();\n },\n });\n });\n },\n complete: function () {\n if (!editBasketItem) {\n charleys_hide_loading();\n }\n $detailView.foundation(\"open\");\n // console.log('open product view');\n\n $('#product-detail-view').animate({ scrollTop: 0 }, 500); // Scroll to top\n // $detailView.find('.product-detail-view-wrap').css({\n // 'padding-bottom': $('#floating-add-to-cart').outerHeight()\n // });\n\n // Add a layer in history to allow back button to close modal\n if (window.location.hash !== \"#menu-product-view\" && editBasketItem == 0) {\n history.pushState({}, \"\", \"#menu-product-view\");\n }\n //select defualt options \n $(\n \"[data-product-options] input[data-item-selector], [data-modifier-group] input[data-item-selector-modifier], [combo-side-selection-customizer-information-popup] input[data-item-selector-modifier], [combo-drink-selection-customizer-information-popup] input[data-item-selector-modifier], [main-ingredient-customizer-information-popup] input[data-item-selector-modifier]\"\n ).each(function () {\n if ($(this).attr('radiodefualtcheckedstate') === 'true') {\n if ($(this).is($('[main-ingredient-customizer-information-popup] input[data-item-selector-modifier]'))) {\n // console.log($(this), 'hjfjhf'); \n }\n $(this).prop('checked', true);\n $(this).parent().addClass(\"selected\");\n }\n });\n validateItemForm();\n calculateProductTotal();\n // //check defualt 'regular' menu items\n // if ($('strong.defualtCheckedState').length > 0) {\n // let $inputElement = $('strong.defualtCheckedState').closest('span[data-product-option]').find('input');\n // $inputElement.prop('checked', true);\n // calculateProductTotal();\n // }\n // if ($('fieldset.highlight').length > 0) {\n // let $inputElement = $('fieldset.highlight span:nth-of-type(3) input');\n // $inputElement.prop('checked', true);\n\n // calculateProductTotal();\n // validateItemForm();\n // }\n //end of check defualt 'regular' menu items\n // combo popup alert JS functionality\n // if ($('.product-detail-view-wrap.show-combo-popup-alert') && (localStorage.getItem('scrollToComboModifier') === 'true')) {\n // console.log('asdgadsg')\n // $('.combo-popup-alert').addClass('hide');\n // }\n // if ($('.product-detail-view-wrap.show-combo-popup-alert')) {\n // let notAddComboButton = $('#combo-popup-alert-not-add-combo');\n // let comboField = $('fieldset.product-modifier.highlight:not(.hide):not(.option-hide)>span>label');\n // let addComboButton = $('#combo-popup-alert-add-combo');\n // let closeComboButtonTwo = $('#close-combo-popup-alert-two');\n // let sizeOptions = $('[data-product-options].size-selector:not(.hide)');\n // let addComboButtonClicked = false;\n // $('.first-screen').removeClass('hide');\n // $('.second-screen.yes-option').addClass('hide');\n\n // // console.log('comboField', comboField); \n // // //no combo\n // if (notAddComboButton.length) {\n // const hideComboAlert = () => {\n // $('.combo-popup-alert').addClass('hide');\n // $('.product-detail-view-wrap').removeClass('show-combo-popup-alert');\n // };\n\n // notAddComboButton.on('click', hideComboAlert);\n // comboField.on('click', hideComboAlert);\n // }\n\n // //yes combo\n // function updateComboRadioButtons() {\n // $('fieldset.highlight').each(function () {\n // let $fieldset = $(this);\n // let $inputElement = $fieldset.find('span:nth-of-type(2) input');\n // $inputElement.prop('checked', true);\n // });\n // calculateProductTotal();\n // validateItemForm();\n // }\n // if (addComboButton.length) {\n // addComboButton.on('click', function () {\n // $('.first-screen').addClass('hide');\n // $('.second-screen.yes-option').removeClass('hide');\n // updateComboRadioButtons();\n // addComboButtonClicked = true;\n // setTimeout(function () {\n // $('.combo-popup-alert').addClass('hide');\n // $('.product-detail-view-wrap').removeClass('show-combo-popup-alert');\n // }, 3500); // 4000 milliseconds\n // });\n // if (sizeOptions) {\n // sizeOptions.on('click', function () {\n // if (addComboButtonClicked) {\n // updateComboRadioButtons();\n // } else {\n // let $inputElement = $('fieldset.highlight span:nth-of-type(3) input');\n // $inputElement.prop('checked', true);\n\n // calculateProductTotal();\n // validateItemForm();\n // }\n // });\n // }\n\n // }\n // if (closeComboButtonTwo.length) {\n // closeComboButtonTwo.on('click', function () {\n // $('.combo-popup-alert').addClass('hide');\n // $('.product-detail-view-wrap').removeClass('show-combo-popup-alert');\n // });\n\n // }\n // }\n\n //end of combo popup alert JS functionality\n // undoConditionFormattingChanges when click back button\n $(document).on('click', '[data-button-label]', function () {\n // console.log('back button clicked');\n $('.wf-ordering-menu').removeClass('hides');\n $('#main-ingredient-customizer-information-parent').removeAttr('style').addClass('hide');\n undoConditionFormattingChanges();\n });\n function undoConditionFormattingChanges() {\n let $comboMealFormattingSelector = $('.right-col.combo-meal');\n if ($comboMealFormattingSelector.length) {\n $comboMealFormattingSelector.removeClass('combo-meal');\n }\n let $drinkAddonFormattingSelector = $('.right-col.formatting-classic-combo-drink-addon');\n if ($drinkAddonFormattingSelector.length) {\n $drinkAddonFormattingSelector.removeClass('formatting-classic-combo-drink-addon');\n }\n let $addAccordianConditionalFormattingSelector = $('.right-col.formatting-add-accordian');\n if ($addAccordianConditionalFormattingSelector.length) {\n $addAccordianConditionalFormattingSelector.removeClass('formatting-add-accordian');\n }\n let $bigGameBundleComboConditionalFormattingSelector = $('.right-col.formatting-big-game-bundle');\n if ($bigGameBundleComboConditionalFormattingSelector.length) {\n $bigGameBundleComboConditionalFormattingSelector.removeClass('formatting-big-game-bundle');\n }\n let $classicComboConditionalFormattingSelectorWings = $('.right-col.formatting-classic-combo-wings');\n if ($classicComboConditionalFormattingSelectorWings.length) {\n $classicComboConditionalFormattingSelectorWings.removeClass('formatting-classic-combo-wings');\n }\n let $classicComboConditionalFormattingSelectorDrinkAddon = $('.right-col.formatting-classic-combo-drink-addon');\n if ($classicComboConditionalFormattingSelectorDrinkAddon.length) {\n $classicComboConditionalFormattingSelectorDrinkAddon.removeClass('formatting-classic-combo-drink-addon');\n }\n let $classicComboConditionalFormattingSelectorCheesesteak = $('.right-col.formatting-classic-combo-cheesesteak');\n if ($classicComboConditionalFormattingSelectorCheesesteak.length) {\n $classicComboConditionalFormattingSelectorCheesesteak.removeClass('formatting-classic-combo-cheesesteak');\n }\n let $classicComboConditionalFormattingSelector = $('.right-col.formatting-classic-combo');\n if ($classicComboConditionalFormattingSelector.length) {\n $classicComboConditionalFormattingSelector.removeClass('formatting-classic-combo');\n }\n\n let $wingsConditionalFormattingSelector = $('.right-col.formatting-30-50-pc-wings');\n let $wingsConditionalFormattingSelectorForS = $('.right-col.formatting-30-50-pc-wings-with-s');\n if ($wingsConditionalFormattingSelector.length) {\n $wingsConditionalFormattingSelector.removeClass('formatting-30-50-pc-wings');\n }\n if ($wingsConditionalFormattingSelectorForS.length) {\n $wingsConditionalFormattingSelector.removeClass('formatting-30-50-pc-wings-with-s');\n }\n\n // let $comboConditionalFormattingSelector = $('.product-detail-view-wrap.show-combo-popup-alert');\n // if ($comboConditionalFormattingSelector.length) {\n // $comboConditionalFormattingSelector.removeClass('show-combo-popup-alert');\n // }\n }\n\n\n\n validateItemForm();\n\n },\n });\n }); // $('button.menu-item-selector').click\n //read only menu forwarding \n if (!matchFound && readOnlyMenuItemCarryOver || !matchFound && readOnlyCategoryMenuItemCarryOver) {\n // console.log('No match on any--display location disclaimer');\n\n $('#read-only-menu-disclaimer').removeClass('hide');\n $('#read-only-menu-disclaimer').attr('aria-hidden', 'false');\n if (readOnlyCategoryMenuItemCarryOver) {\n $('#read-only-menu-disclaimer img').attr('src', readOnlyCategoryMenuItemCarryOverImg);\n $('#read-only-menu-disclaimer img').attr('alt', readOnlyCategoryMenuItemCarryOver);\n } else {\n $('#read-only-menu-disclaimer img').attr('src', readOnlyMenuItemCarryOverImg);\n $('#read-only-menu-disclaimer img').attr('alt', readOnlyMenuItemCarryOver);\n }\n\n //close\n $(document).keydown(function (event) {\n if (event.key === \"Escape\") {\n $('#read-only-menu-disclaimer').addClass('hide');\n }\n });\n $(document).click(function (event) {\n // Check if the click target is outside of the .content div\n if (!$(event.target).closest('#read-only-menu-disclaimer .content').length) {\n $('#read-only-menu-disclaimer').addClass('hide');\n }\n });\n $('#viewMenu').click(function () {\n $('#read-only-menu-disclaimer').addClass('hide');\n });\n\n } else if (readOnlyMenuItemCarryOver) {\n $('.wf-ordering-menu').addClass('hides');\n\n charleys_show_overloading();\n\n $('#read-only-menu-disclaimer').addClass('hide');\n $('#read-only-menu-disclaimer').attr('aria-hidden', 'true');\n let $button = $(`[data-menu-selection-id=\"${matchProductID}\"]`);\n\n if ($button.length) {\n $button.click();\n localStorage.removeItem('readOnlyMenuItemCarryOver');\n localStorage.removeItem('readOnlyMenuItemCarryOverImg');\n setTimeout(function () {\n charleys_hide_overloading();\n }, 500);\n }\n } else if (readOnlyCategoryMenuItemCarryOver) {\n charleys_show_overloading();\n\n $('#read-only-menu-disclaimer').addClass('hide');\n $('#read-only-menu-disclaimer').attr('aria-hidden', 'true');\n\n let $label = $(`label[for=\"${matchProductID}\"]`);\n if ($label.length) {\n $label.click();\n localStorage.removeItem('readOnlyCategoryMenuItemCarryOver');\n localStorage.removeItem('readOnlyCategoryMenuItemCarryOverImg');\n setTimeout(function () {\n charleys_hide_overloading();\n }, 500);\n }\n }\n //end of read only menu forwarding\n\n\n\n if (editBasketItem) {\n // open Product to edit\n $(\n \"button.menu-item-selector[data-menu-selection-id=\" +\n editBasketProduct +\n \"]\"\n ).click();\n }\n\n if (editBasketItem == 0 && editBasketProduct > 0) {\n $(\n \"button.menu-item-selector[data-menu-selection-id=\" +\n editBasketProduct +\n \"]\"\n ).click();\n }\n },\n complete: function () {\n charleys_hide_loading();\n $(\".wf-ordering-menu\").removeClass(\"hide\");\n },\n });\n\n // Add Menu Selections To Cart\n $(\"button#item-add-to-cart:not(:disabled)\").click(function () {\n // alert('Add To Cart');\n addItemToBasket();\n });\n\n // Update edited basket product\n $(\"button#item-add-to-cart-update:not(:disabled)\").click(function () {\n // Update Cart Product\n updateItemInBasket();\n });\n\n setGoogleReferral();\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n//backwards compatibility work--cen remove later\nlet backwardsCompatibility = false;\nfunction setItemOptions(group) {\n backwardsCompatibility = false;\n // end backwards compatibility work--cen remove later\n\n var $ = jQuery;\n var fieldsetLegend = group.description;\n // console.log('legend', fieldsetLegend);\n\n var $groupTemplate = $(\"[data-product-option-group].hide\").clone();\n\n // $groupTemplate.find('[data-product-option-group-description]').text(group.description);\n\n // Modifier ID (option id)\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-chainmodifierid\", group.chainmodifierid);\n // OLO: If the value is true, the user must select one and only one of the options in the group (e.g. true = radio buttons; false = checkboxes). Please reference this attribute before considering any of the other attributes listed below.\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-mandatory\", group.mandatory);\n // OLO: If the value is true, the user may select multiple quantities of any option they choose.\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-supportschoicequantities\", group.supportschoicequantities);\n // OLO: The minimum number of distinct options that the user must choose.\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-minselects\", group.minselects);\n // OLO: The maximum number of distinct options that the user may choose.\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-maxselects\", group.maxselects);\n // OLO: The minimum quantity for each choice the user selects.\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-minchoicequantity\", group.minchoicequantity);\n // OLO: The maximum quantity for each choice the user selects.\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-maxchoicequantity\", group.maxchoicequantity);\n\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-choicequantityincrement\", group.choicequantityincrement);\n\n var selectMin = 0;\n var selectMax = 0;\n\n var isValid = true;\n var isRequired = false;\n\n if (group.explanationtext) {\n fieldsetLegend += '' + group.explanationtext + '';\n }\n\n if (\n (group.mandatory ||\n (group.minselects && group.minselects > 0) ||\n (group.minchoicequantity !== \"\" && group.minchoicequantity > 0)) && (!fieldsetLegend.includes('Ingredients'))\n ) {\n isValid = false;\n isRequired = true;\n }\n\n $groupTemplate.find(\"[data-product-options]\").attr(\"data-is-valid\", isValid);\n if (isRequired) {\n $groupTemplate\n .find(\"[data-product-options]\")\n .attr(\"data-is-required\", isRequired);\n }\n\n if (group.minchoicequantity > selectMin) {\n selectMin = group.minchoicequantity;\n }\n if (group.maxchoicequantity > selectMax) {\n selectMax = group.maxchoicequantity;\n }\n\n if (group.minselects > selectMin) {\n selectMin = group.minselects;\n }\n if (group.maxselects > selectMax) {\n selectMax = group.maxselects;\n }\n\n if (selectMin > 0 && selectMax > 0) {\n fieldsetLegend +=\n \"Select between \" + selectMin + \" and \" + selectMax + \"\";\n }\n\n if (isRequired) {\n fieldsetLegend += \"\";\n }\n\n $groupTemplate\n .find(\"[data-product-options] legend[data-item-selector]\")\n .html(fieldsetLegend);\n\n // console.log(group);\n //add classes for CSS customization\n if (fieldsetLegend.includes('Combo')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('highlight');\n\n $('.right-col').addClass('combo-meal'); \n\n // $('.product-detail-view-wrap').find(\".combo-popup-alert\").removeClass('hide');\n // setTimeout(function () {\n // $('.product-detail-view-wrap').addClass('show-combo-popup-alert');\n // }, 200); // 200ms delay\n }\n if (fieldsetLegend.includes('Chef-Inspired Bold Flavors')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('wings-flavor-selector');\n }\n if (fieldsetLegend.includes('Size')) { \n $groupTemplate\n .find(\"[data-product-options]\").addClass('size-selector');\n }\n if (fieldsetLegend.includes('Add Ons')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('add-ons');\n }\n\n //end\n // Set up options\n $.each(group.options, function (index, option) {\n var $optionField = $groupTemplate\n .find(\"[data-product-option].hide\")\n .clone();\n //\n if (option.images && option.images.length > 0) {\n\n let image = $('img[data-menu-item-detail-image]');\n let src = image.attr('src');\n let domain = new URL(src).hostname;\n // console.log('domain', domain);\n if (domain.includes('charleys.com')) {\n domain = 'olo-images-live.imgix.net';\n }\n let fileName = 'https://' + domain + '/' + option.images[0].filename;\n\n $optionField\n .find(\"label\")\n .css('background-image', 'url(' + fileName + ')').css('padding-left', '74px').css('border-radius', '0').css('min-height', '40px');\n }\n //\n $optionField.find(\"input[data-item-selector]\").attr(\"id\", option.id);\n $optionField\n .find(\"input[data-item-selector]\")\n .attr(\"data-chainoptionid\", option.chainoptionid);\n\n $optionField\n .find(\"input[data-item-selector]\")\n .attr(\"data-available-now\", option.availability.now);\n\n $optionField\n .find(\"input[data-item-selector]\")\n .attr(\"name\", \"select-\" + group.chainmodifierid);\n\n $optionField.find(\"input[data-item-selector]\").attr(\"data-cost\", option.cost);\n $optionField.find(\"input[data-item-selector]\").attr(\"data-calories\", option.basecalories);\n $optionField.find(\"label[data-item-selector]\").attr(\"for\", option.id);\n\n $optionField.find(\"[data-info]\").attr(\"data-option-id\", option.id);\n\n if (group.mandatory || (group.maxselects == 1 && fieldsetLegend.includes('Side'))) {\n $optionField.find(\"input\").attr(\"type\", \"radio\");\n }\n\n\n if (group.supportschoicequantities) {\n // console.log('group.maxchoicequantity', group.maxchoicequantity);\n if (Number(group.maxchoicequantity) > 2) {\n // console.log('data-qty-select', $optionField.find('[data-qty-select]'));\n setQuantityElem(\n $optionField.find(\"[data-qty-select]\"),\n group.minchoicequantity,\n group.maxchoicequantity,\n group.choicequantityincrement\n );\n $optionField\n .find(\"[data-qty-select] input\")\n .attr(\"data-qty-for\", option.id);\n\n $optionField\n .find(\"[data-qty-select] input\")\n .attr(\"id\", \"item-qty-\" + option.id);\n $optionField\n .find(\"[data-qty-select] label\")\n .attr(\"for\", \"item-qty-\" + option.id);\n\n $optionField\n .find(\"[data-qty-select]\")\n .attr(\"data-qty-container-for\", option.id);\n $optionField.find(\"[data-qty-select]\").removeClass(\"hide\");\n $optionField.find(\"[data-qty-select-simple]\").remove();\n } else {\n $optionField\n .find(\"[data-qty-select-simple] input\")\n .attr(\"data-qty-for\", option.id);\n $optionField\n .find(\"[data-qty-select-simple]\")\n .attr(\"data-qty-container-for\", option.id);\n\n $optionField\n .find('[data-qty-select-simple] input[id=\"item-qty-1\"]')\n .attr(\"id\", \"item-qty-1-\" + option.id);\n $optionField\n .find('[data-qty-select-simple] label[for=\"item-qty-1\"]')\n .attr(\"for\", \"item-qty-1-\" + option.id);\n\n $optionField\n .find('[data-qty-select-simple] input[id=\"item-qty-2\"]')\n .attr(\"id\", \"item-qty-2-\" + option.id);\n $optionField\n .find('[data-qty-select-simple] label[for=\"item-qty-2\"]')\n .attr(\"for\", \"item-qty-2-\" + option.id);\n\n $optionField\n .find(\n '[data-qty-select-simple] input[id=\"item-qty-1-' + option.id + '\"]'\n )\n .prop(\"checked\", true);\n $optionField\n .find(\n '[data-qty-select-simple] input[id=\"item-qty-1-' + option.id + '\"]'\n )\n .attr(\"name\", \"item-qty-option-\" + option.id);\n $optionField\n .find(\n '[data-qty-select-simple] input[id=\"item-qty-2-' + option.id + '\"]'\n )\n .attr(\"name\", \"item-qty-option-\" + option.id);\n\n $optionField.find(\"[data-qty-select-simple]\").removeClass(\"hide\");\n $optionField.find(\"[data-qty-select]\").remove();\n }\n } else {\n $optionField.find(\"[data-qty-select]\").remove();\n $optionField.find(\"[data-qty-select-simple]\").remove();\n }\n\n // Build the label\n // Select defualt options\n if (\n option.isdefault === true\n ) {\n $optionField.find(\"input[type='radio']\").attr('radiodefualtcheckedstate', 'true');\n $optionField.find(\"input[type='radio']\").parent().addClass('selected');\n\n }\n var labelText =\n \"\" + option.name + \"\";\n\n //\n // console.log('combo',fieldsetLegend);\n if (\n option.name.includes(\"20 pc Boneless Wings\") ||\n option.name.includes(\"30 pc Classic Wings\") ||\n option.name.includes(\"30 pc Boneless Wings\") ||\n // option.name.includes(\"6 pc Boneless & Fries\") || \n option.name.includes(\"6pc Boneless Wings\") ||\n option.name.includes(\"6pc Classic Wings\") ||\n option.name.includes(\"10 pc Boneless Wings\") || \n option.name.includes(\"10 pc Classic Wings\") \n ) {\n $('.right-col').addClass('formatting-30-50-pc-wings');\n\n }\n if (fieldsetLegend.includes(\"Big Game Bundle Wings\")) {\n $('.right-col').addClass('formatting-big-game-bundle').addClass('formatting-add-accordian');\n }\n if (option.name.includes(\"50 pc Boneless Wings\") ||\n option.name.includes(\"50 pc Classic Wings\")) {\n $('.right-col').addClass('formatting-30-50-pc-wings formatting-30-50-pc-wings-with-s'); \n }\n\n if (\n fieldsetLegend.includes(\"Cheesesteak Choice\") || fieldsetLegend.includes(\"Crispy Chicken Choice\")\n ) {\n $('.right-col').addClass('formatting-classic-combo-cheesesteak').addClass('formatting-classic-combo').addClass('formatting-add-accordian');\n }\n if (\n fieldsetLegend.includes(\"Wing Count\")\n ) {\n $('.right-col').addClass('formatting-classic-combo-wings').addClass('formatting-classic-combo').addClass('formatting-add-accordian');\n }\n if (fieldsetLegend.includes(\"Select Drink - Add on\")) {\n $('.right-col').addClass('formatting-classic-combo-drink-addon');\n }\n //\n\n var labelCost = \"\";\n if (option.cost) {\n labelCost += '$' + formatMoney(option.cost) + '';\n labelText += labelCost;\n }\n\n var labelCalories = \"\";\n if (option.basecalories) {\n labelCalories = option.basecalories;\n }\n if (option.maxcalories) {\n if (option.caloriesseparator && labelCalories.length) {\n labelCalories += \" \" + option.caloriesseparator + \" \";\n }\n labelCalories += option.maxcalories;\n }\n\n if (labelCalories.length) {\n labelCalories += \" Cal\";\n if (option.cost) {\n labelText += \" \" + labelCalories + \"\";\n\n } else {\n labelText += \" \" + labelCalories + \"\";\n\n }\n } else {\n labelText += \"\";\n }\n\n if (\n \"info\" in option &&\n \"spicy\" in option.info &&\n option.info.spicy !== \"0\" &&\n option.info.spicy !== null\n ) {\n labelText +=\n '';\n for (i = 0; i < Number(option.info.spicy); i++) {\n labelText += '';\n }\n for (i = Number(option.info.spicy); i < 5; i++) {\n labelText += '';\n }\n labelText += \"\";\n // console.log(option.name, option.info.spicy);\n }\n\n $optionField.find(\"label[data-item-selector]\").html(labelText);\n\n if (\"info\" in option) {\n\n if (option.info.has_description) {\n $optionField\n .find(\"[data-info]\")\n .attr(\"data-ingredient-id\", option.info.post_id);\n } else {\n $optionField.find(\"[data-info]\").remove();\n }\n if (\n option.info.calories.length &&\n $optionField.find(\"[data-calories]\").text().length == 0\n ) {\n $optionField\n .find(\"[data-calories]\")\n .html(option.info.calories);\n }\n } else {\n $optionField.find(\"[data-info]\").remove();\n }\n\n $optionField.removeClass(\"hide\");\n\n $groupTemplate.find(\"[data-product-options]\").append($optionField);\n // console.log('i exist', fieldsetLegend);\n if (fieldsetLegend.includes('Side') || fieldsetLegend.includes('Drink') || fieldsetLegend.includes('Wing Count')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('wings-side-selector');\n }\n if (fieldsetLegend.includes('Wing Count')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('cheesesteak-size-selector');\n }\n if (fieldsetLegend.includes('Wing Count')) {\n // console.log('i exist', fieldsetLegend);\n setItemModifiers(option, $groupTemplate, prepend = false, isSecondEach = false, modifierLevel = 0, wingOption = true, wingsComboOption = true);\n } else if ((fieldsetLegend.includes('Side') && !fieldsetLegend.includes('Select')) || fieldsetLegend.includes('Select Size') || fieldsetLegend.includes('Select Drink') || fieldsetLegend.includes('Drink')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('wings-side-selector');\n setItemModifiers(option, $groupTemplate, prepend = false, isSecondEach = false, modifierLevel = 0, wingOption = true);\n\n }\n else if (fieldsetLegend.includes('Options') && !fieldsetLegend.includes('Add Ons')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('topping-selector-first-layer').addClass('topping-selector');\n comboDrinksModifiersToppingsConditionalSelector = true;\n drinksModifiersToppingsConditionalSelector = true;\n // console.log('fieldsetLegend1', fieldsetLegend);\n setItemModifiers(option, $groupTemplate, prepend = false, isSecondEach = false, modifierLevel = 0, wingOption = true, wingsComboOption = false, sidesModifiersToppingsConditionalSelector = true, drinksModifiersToppingsConditionalSelector = true);\n\n }\n else if (fieldsetLegend.includes('Remove')) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('remove-selector');\n } else if (fieldsetLegend.includes('Cheesesteak') || (fieldsetLegend.includes('Wing Count')) || (fieldsetLegend.includes('Crispy Chicken Choice')) ) {\n $groupTemplate\n .find(\"[data-product-options]\").addClass('cheesesteak-size-selector');\n setItemModifiers(option, $groupTemplate);\n } else {\n setItemModifiers(option, $groupTemplate);\n }\n }); // $.each(group.options ...\n\n $groupTemplate.removeClass(\"hide\");\n $groupTemplate.find(\"input\").attr(\"tabindex\", \"0\");\n\n $(\"#product-detail-view .product-option-wrap\").append($groupTemplate);\n} // setItemOptions(options, $groupTemplate, group)\nvar counter = 0;\n\nlet selectSideID = [];\nlet selectDrinkID = [];\nlet selectIngredientsID = [];\nfunction setItemModifiers(option, $groupTemplate, prepend = false, isSecondEach = false, modifierLevel = 0, wingOption = false, wingsComboOption = false, sidesModifiersToppingsConditionalSelector = false, comboDrinksModifiersToppingsConditionalSelector = false) {\n //\n var $ = jQuery;\n // Set Modifiers\n $.each(option.modifiers, function (index, modifier) {\n let fieldsetLegend = modifier.description;\n let modifierID = modifier.id;\n\n\n\n //conidtional selectors\n let justSidesConditionalSelector = fieldsetLegend.includes('Select Side');\n let sidesModifiersConditionalSelector = false;\n let sidesModifiersToppingsChildConditionalSelector = false;\n let comboDrinksModifiersToppingsChildConditionalSelector = false;\n let drinksModifiersToppingsChildConditionalSelector = false;\n let justDrinksConditionalSelector = fieldsetLegend.includes('Select Drink');\n let drinksModifiersConditionalSelector = false;\n\n let justIngredientsConditionalSelector =\n (fieldsetLegend.includes('Extras') && !isSecondEach && !wingOption && !selectDrinkID.includes(option.id) && (modifier.options.length > 1))\n ||\n (fieldsetLegend.includes('Remove') && !isSecondEach && !wingOption && !selectDrinkID.includes(option.id) && (modifier.options.length > 1))\n ||\n ((fieldsetLegend.includes('Toppings') || fieldsetLegend.includes('Ingredients')) && !selectSideID.includes(option.id) && !selectDrinkID.includes(option.id) && !wingOption && !wingsComboOption);\n\n let ingredientsModifiersConditionalSelector = false;\n let nestTheseModifiersConditionalSelector = false;\n\n //end of conditional selectors\n\n function collectModifierIds(options, idArray) {\n options.forEach(option => {\n idArray.push(option.id); // Add the id to the appropriate array\n\n if (option.modifiers) {\n collectModifierIds(option.modifiers, idArray);\n }\n if (option.options) {\n collectModifierIds(option.options, idArray);\n }\n });\n }\n\n let idArray;\n\n if (justSidesConditionalSelector) {\n // console.log('ahhh', fieldsetLegend);\n $modifierGroup = $groupTemplate\n .find(\"[combo-side-selection-customizer-information-popup].hide\")\n .clone();\n $modifierGroup.addClass('side-modifier-parents');\n idArray = [];\n collectModifierIds(modifier.options, idArray);\n selectSideID = idArray;\n } else if (justDrinksConditionalSelector) {\n $modifierGroup = $groupTemplate\n .find(\"[combo-drink-selection-customizer-information-popup].hide\")\n .clone();\n $modifierGroup.addClass('drink-modifier-parents');\n idArray = [];\n collectModifierIds(modifier.options, idArray);\n selectDrinkID = idArray;\n }\n else if (justIngredientsConditionalSelector) {\n // console.log('wingOption!!', wingOption);\n\n var $modifierGroup = $groupTemplate\n .find(\"[main-ingredient-customizer-information-popup].hide\")\n .clone();\n $modifierGroup.addClass('ingredient-modifier-parents');\n\n idArray = [];\n collectModifierIds(modifier.options, idArray);\n selectIngredientsID = idArray;\n // console.log('selectIngredientsID', selectIngredientsID);\n // if (modifier.name === 'Salt') {\n // console.log('i am salt')\n // }\n }\n else if (selectSideID.includes(modifier.id)) {\n // console.log('justSidesConditionalSelector #2', modifier.description, modifier.id);\n\n var $modifierGroup = $groupTemplate\n .find(\"[combo-side-selection-customizer-information-popup].hide\")\n .clone();\n $modifierGroup.addClass('side-modifier-children');\n sidesModifiersConditionalSelector = true;\n if (fieldsetLegend.includes('Size')) {\n $modifierGroup.addClass('side-modifier-children-size-selector');\n }\n }\n else if (selectDrinkID.includes(modifier.id)) {\n var $modifierGroup = $groupTemplate\n .find(\"[combo-drink-selection-customizer-information-popup].hide\")\n .clone();\n $modifierGroup.addClass('drink-modifier-children');\n if (fieldsetLegend.includes('Select Soft Drink')) {\n $modifierGroup.addClass('drink-modifier-children soft-drink');\n } else if (fieldsetLegend.includes('Size')) {\n $modifierGroup.addClass('side-modifier-children-size-selector');\n } else {\n $modifierGroup.addClass('drink-modifier-children');\n }\n drinksModifiersConditionalSelector = true;\n }\n else if (selectIngredientsID.includes(modifier.id) && !wingOption && !wingsComboOption) {\n var $modifierGroup = $groupTemplate\n .find(\"[main-ingredient-customizer-information-popup].hide\")\n .clone();\n $modifierGroup.addClass('ingredient-modifier-children');\n\n ingredientsModifiersConditionalSelector = true;\n // if (modifier.name === 'Salt') {\n // console.log('i am salt')\n // }\n }\n else {\n var $modifierGroup = $groupTemplate\n .find(\"[data-modifier-group].hide\")\n .clone();\n //add conditional classes for styling\n\n if (fieldsetLegend.includes('Add Ons')) {\n $modifierGroup.addClass('add-ons');\n }\n if (fieldsetLegend.includes('Size') || fieldsetLegend.includes('Classic Wings') || fieldsetLegend.includes('Boneless Wings')) {\n $modifierGroup.addClass('size-selector');\n }\n\n if (fieldsetLegend.includes('Ice Options')) {\n $modifierGroup.addClass('ice-options-selector');\n }\n }\n // selection limiters\n if (modifier.minselects != null) {\n $modifierGroup.attr(\"data-minselects\", modifier.minselects);\n }\n if (modifier.maxselects != null) {\n $modifierGroup.attr(\"data-maxselects\", modifier.maxselects);\n }\n if (modifier.minchoicequantity != null && !modifier.minchoicequantity === \"\") {\n $modifierGroup.attr(\"data-minchoicequantity\", modifier.minchoicequantity);\n }\n if (modifier.maxchoicequantity != null && !modifier.maxchoicequantity === \"\") {\n $modifierGroup.attr(\"data-maxchoicequantity\", modifier.maxchoicequantity);\n }\n if (modifier.choicequantityincrement != null && !modifier.choicequantityincrement === \"\") {\n $modifierGroup.attr(\"data-choicequantityincrement\", modifier.choicequantityincrement);\n }\n //\n var selectMin = 0;\n var selectMax = 0;\n if (modifier.minchoicequantity > selectMin) {\n selectMin = modifier.minchoicequantity;\n }\n if (modifier.maxchoicequantity > selectMax) {\n selectMax = modifier.maxchoicequantity;\n }\n if (modifier.minselects > selectMin) {\n selectMin = modifier.minselects;\n }\n if (modifier.maxselects > selectMax) {\n selectMax = modifier.maxselects;\n }\n if (selectMin > 0 && selectMax > 0) {\n fieldsetLegend +=\n \"Select between \" + selectMin + \" and \" + selectMax + \"\";\n }\n //end of selection limiters\n if (fieldsetLegend.includes('Side')) {\n $modifierGroup.addClass('wings-side-selector');\n }\n if (fieldsetLegend.includes('Combo')) {\n //backwards compatibility work--cen remove later\n $groupTemplate.find(\"[data-modifier-groups]\").addClass('changeComboOrder');\n // end backwards compatibility work--cen remove later\n\n $modifierGroup.addClass('highlight');\n $('.right-col').addClass('combo-meal'); \n\n backwardsCompatibility = true;\n\n // $('.product-detail-view-wrap').find(\".combo-popup-alert\").removeClass('hide');\n // setTimeout(function () {\n // $('.product-detail-view-wrap').addClass('show-combo-popup-alert');\n\n // }, 200); // 200ms delay\n }\n if (fieldsetLegend.includes('Chef-Inspired Bold Flavors')) {\n $modifierGroup.addClass('wings-flavor-selector');\n }\n if (fieldsetLegend.includes('Extras')) {\n $modifierGroup.addClass('extra-selector');\n } else if (fieldsetLegend.includes('Remove')) {\n $modifierGroup.addClass('remove-selector');\n } else if (fieldsetLegend.includes('Topping') || fieldsetLegend.includes('Ingredients')) {\n $modifierGroup.addClass('topping-selector');\n sidesModifiersToppingsConditionalSelector = true;\n\n } else if ((fieldsetLegend.includes('Options') && !fieldsetLegend.includes('Ice')) && !fieldsetLegend.includes('Add Ons')) {\n $modifierGroup.addClass('topping-selector');\n comboDrinksModifiersToppingsConditionalSelector = true;\n drinksModifiersToppingsConditionalSelector = true;\n }\n else {\n if (sidesModifiersToppingsConditionalSelector) {\n // console.log('fieldsetLegend1', fieldsetLegend);\n sidesModifiersToppingsChildConditionalSelector = true;\n }\n if (comboDrinksModifiersToppingsConditionalSelector) {\n comboDrinksModifiersToppingsChildConditionalSelector = true;\n drinksModifiersToppingsChildConditionalSelector = true;\n // console.log('fieldsetLegend2', fieldsetLegend);\n\n }\n }\n $modifierGroup.attr(\"data-modifier-for\", option.id);\n $modifierGroup.attr(\"data-modifier-id\", modifierID);\n\n\n var isValid = true;\n var isRequired = false;\n\n if (modifier.explanationtext) {\n fieldsetLegend += '' + modifier.explanationtext + '';\n }\n\n if (\n (modifier.mandatory ||\n (modifier.minselects && modifier.minselects > 0) ||\n (modifier.minchoicequantity !== \"\" && modifier.minchoicequantity > 0)) && (!fieldsetLegend.includes('Ingredients'))\n ) {\n isValid = false;\n isRequired = true;\n }\n\n $modifierGroup.attr(\"data-is-valid\", isValid);\n if (isRequired) {\n $modifierGroup.attr(\"data-is-required\", isRequired);\n }\n\n if (isRequired) {\n fieldsetLegend += \"\";\n }\n\n $modifierGroup.find(\"legend\").html(fieldsetLegend);\n\n $.each(modifier.options, function (index, m_option) {\n // console.log('m_option.name ', m_option.name, m_option.id);\n if (justSidesConditionalSelector || selectSideID.includes(m_option.id)) {\n // console.log('#2');\n var $m_optionField = $modifierGroup\n .find(\"[data-product-option-modifier-option-for-combo-side-selection].hide\")\n .clone();\n\n sidesModifiersConditionalSelector = true;\n\n // console.log('m_option', m_option.name, m_option.id);\n }\n else if (justDrinksConditionalSelector || selectDrinkID.includes(m_option.id)) {\n // console.log('#3');\n var $m_optionField = $modifierGroup\n .find(\"[data-product-option-modifier-option-for-combo-drink-selection].hide\")\n .clone();\n drinksModifiersConditionalSelector = true;\n\n // console.log('selectSideID:', selectDrinkID);\n }\n else if ((justIngredientsConditionalSelector && !wingOption && !wingsComboOption) || (selectIngredientsID.includes(m_option.id) && !wingOption && !wingsComboOption)) {\n // console.log('#3');\n var $m_optionField = $modifierGroup\n .find(\"[data-product-option-modifier-option-for-ingredient-selection].hide\")\n .clone();\n ingredientsModifiersConditionalSelector = true;\n\n\n // console.log('selectIngredientsID:', m_option.name, m_option.id, option.name);\n }\n // else if (\n // // (fieldsetLegend.includes('Toppings') || fieldsetLegend.includes('Ingredients')) ||\n // // (modifier.options\n // // && modifier.options.length > 1\n // // && modifierLevel === 1\n // // && !wingsComboOption\n // // && !fieldsetLegend.includes('Toppings')\n // // && !fieldsetLegend.includes('Ingredients')\n // // && !fieldsetLegend.includes('Add Ons')\n // // && !fieldsetLegend.includes('Select Soft Drink')\n // // && !fieldsetLegend.includes('Lemonade')\n // // && !fieldsetLegend.includes('Side')\n // // )\n // (fieldsetLegend.includes('Options') && !fieldsetLegend.includes('Add Ons')) \n // ) {\n // // console.log('Im more!!', fieldsetLegend, m_option.name, m_option.id, option.name);\n // var $m_optionField = $modifierGroup\n // .find(\"[data-product-option-modifier-option].hide\")\n // .clone();\n // nestTheseModifiersConditionalSelector = true;\n // $modifierGroup.addClass('all-other-nested-selector');\n // }\n\n else {\n // console.log('Im more', fieldsetLegend, m_option.name, m_option.id, option.name, modifierLevel, wingOption);\n\n // console.log('#4');\n var $m_optionField = $modifierGroup\n .find(\"[data-product-option-modifier-option].hide\")\n .clone();\n $m_optionField.addClass('all-other-modifier-children');\n\n }\n //\n if (m_option.images && m_option.images.length > 0) {\n\n let image = $('img[data-menu-item-detail-image]');\n let src = image.attr('src');\n let domain = '';\n let fileName = '';\n\n if (typeof src !== typeof undefined && src !== false) {\n let domain = new URL(src).hostname;\n // console.log('domain', domain);\n if (domain.includes('charleys.com')) {\n domain = 'olo-images-live.imgix.net';\n }\n fileName = 'https://' + domain + '/' + m_option.images[0].filename;\n\n $m_optionField\n .find(\"label\")\n .css('background-image', 'url(' + fileName + ')').css('padding-left', '74px').css('border-radius', '0').css('min-height', '40px');\n }\n }\n //\n\n $m_optionField.find(\"input\").attr(\"id\", m_option.id);\n $m_optionField\n .find(\"input\")\n .attr(\"data-chainoptionid\", m_option.chainoptionid);\n\n $m_optionField\n .find(\"input\")\n .attr('data-modifier-level', modifierLevel);\n\n $m_optionField\n .find(\"input\")\n .attr('data-option-for-modifier', modifierID);\n\n $m_optionField\n .find(\"input\")\n .attr(\"data-available-now\", m_option.availability.now);\n\n $m_optionField.find(\"input\").attr(\"name\", \"select-\" + modifierID);\n $m_optionField.find(\"input\").attr(\"data-cost\", m_option.cost);\n $m_optionField.find(\"input\").attr(\"data-calories\", m_option.maxcalories);\n\n $m_optionField.find(\"label\").attr(\"for\", m_option.id);\n\n if (\n (modifier.mandatory && !justIngredientsConditionalSelector && !justSidesConditionalSelector && !justDrinksConditionalSelector)\n || (modifier.maxselects == 1 && fieldsetLegend.includes('Side') && !justIngredientsConditionalSelector && !justSidesConditionalSelector && !justDrinksConditionalSelector && !fieldsetLegend.includes('Dipping Side'))\n ) {\n $m_optionField.find(\"input\").attr(\"type\", \"radio\");\n }\n // select defualt options\n if (m_option.name.includes('Place on the Side')) {\n $m_optionField.addClass('placeOnSideSelector');\n }\n // if ((selectSideID.includes(m_option.id) && (m_option.name.includes('Salt'))) || (selectDrinkID.includes(m_option.id) && (m_option.name.includes('Ice')))) {\n // $m_optionField.addClass('maybeHideThisFieldset');\n // $m_optionField.find(\"input\").attr('radiodefualtcheckedstate', 'true');\n // }\n //\n if (m_option.isdefault === true) {\n $m_optionField.find(\"input\").attr('radiodefualtcheckedstate', 'true');\n }\n var labelText = \"\" + m_option.name + \"\";\n\n // end of select defualt options\n\n var labelCost = \"\";\n if (m_option.cost) {\n labelCost += \"+$\" + formatMoney(m_option.cost);\n labelText += labelCost;\n }\n\n var labelCalories = \"\";\n if (m_option.maxcalories && (m_option.basecalories !== null && m_option.basecalories !== \"\")) {\n labelCalories = m_option.basecalories + '-' + m_option.maxcalories;\n } else if (m_option.maxcalories) {\n labelCalories = m_option.maxcalories;\n $m_optionField.find(\"input\").attr(\"data-calories\", labelCalories);\n } else if (m_option.basecalories !== null && m_option.basecalories !== \"\") {\n labelCalories = m_option.basecalories;\n $m_optionField.find(\"input\").attr(\"data-calories\", labelCalories);\n\n }\n\n if (labelCalories.length) {\n labelCalories += \" Cal\";\n if (m_option.cost) {\n labelText += \" \" + labelCalories + \"\";\n } else {\n labelText += \" \" + labelCalories + \"\";\n }\n } else {\n // hide calories if there are none\n // labelText += '';\n }\n\n if (\n \"info\" in m_option &&\n \"spicy\" in m_option.info &&\n m_option.info.spicy !== \"0\" &&\n m_option.info.spicy !== null\n ) {\n labelText +=\n '';\n for (i = 0; i < Number(m_option.info.spicy); i++) {\n labelText += '';\n }\n for (i = Number(m_option.info.spicy); i < 5; i++) {\n labelText += '';\n }\n labelText += \"\";\n // console.log(m_option.name, m_option.info.spicy);\n }\n\n $m_optionField.find(\"label\").html(labelText);\n\n if (\"info\" in m_option) {\n // console.log('option info: ', option.info, $optionField.find('[data-image]'));\n if (m_option.info.image_url.length) {\n $m_optionField.find(\"[data-image]\").css({\n \"background-image\": \"url(\" + m_option.info.image_url + \")\",\n });\n }\n $m_optionField\n .find(\"[data-info]\")\n .attr(\"data-ingredient-id\", m_option.info.post_id);\n if (m_option.info.has_description) {\n $m_optionField\n .find(\"[data-info]\")\n .attr(\"data-ingredient-id\", m_option.info.post_id);\n } else {\n $m_optionField.find(\"[data-info]\").remove();\n }\n\n if (\n m_option.info.calories.length &&\n $m_optionField.find(\"[data-calories]\").text().length == 0\n ) {\n $m_optionField\n .find(\"[data-calories]\")\n .html(m_option.info.calories);\n }\n } else {\n $m_optionField.find(\"[data-info]\").remove();\n }\n\n $m_optionField.removeClass(\"hide\");\n $modifierGroup.append($m_optionField);\n\n }); // $.each(modifier.options ...\n\n $modifierGroup.removeClass(\"hide\");\n $modifierGroup.find(\"input\").attr(\"tabindex\", \"0\");\n\n if (justSidesConditionalSelector) {\n\n $groupTemplate.find(\"[data-modifier-groups-for-combo-side-selection]\").append($modifierGroup);\n }\n else if (justDrinksConditionalSelector) {\n $groupTemplate.find(\"[data-modifier-groups-for-combo-drink-selection]\").append($modifierGroup);\n }\n else if (justIngredientsConditionalSelector) {\n $groupTemplate.find(\"[data-modifier-groups-for-ingredient-customizer]\").append($modifierGroup);\n }\n else if (sidesModifiersConditionalSelector) {\n sideLabelId = option.id;\n sideLabelIdNested = modifier.id;\n if (backwardsCompatibility || (modifierLevel === 1)) {\n\n let sideCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-combo-side-selection] fieldset label[for='${sideLabelId}']`);\n let sideDirectParent = sideCorrispondingLabel.parent();\n\n $groupTemplate.find(sideDirectParent).append($modifierGroup);\n } else {\n if (sidesModifiersToppingsChildConditionalSelector) {\n\n let sideCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-combo-side-selection] fieldset label[for='${sideLabelId}']`);\n let sideDirectParent = sideCorrispondingLabel.parent();\n\n $groupTemplate.find(sideDirectParent).append($modifierGroup);\n } else {\n\n let sideCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-combo-side-selection] fieldset label[for='${sideLabelId}']`);\n // sideCorrispondingLabel.addClass('ahhhsdgsd');\n let sideDirectParent = sideCorrispondingLabel.parent().addClass('ahhh');\n // console.log('sideDirectParent', sideDirectParent.text());\n let sideDirectParentOfParent = sideDirectParent.parent();\n // console.log('sideDirectParentOfParent', sideDirectParentOfParent.text());\n\n $groupTemplate.find(sideDirectParentOfParent).append($modifierGroup);\n }\n\n }\n\n }\n else if (drinksModifiersConditionalSelector) {\n drinkLabelId = option.id;\n if ((modifierLevel === 1) || backwardsCompatibility) {\n let drinkCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-combo-drink-selection] fieldset label[for='${drinkLabelId}']`);\n let drinkDirectParent = drinkCorrispondingLabel.parent();\n\n $groupTemplate.find(drinkDirectParent).append($modifierGroup);\n } else {\n if (comboDrinksModifiersToppingsChildConditionalSelector) {\n let drinkCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-combo-drink-selection] fieldset label[for='${drinkLabelId}']`);\n let drinkDirectParent = drinkCorrispondingLabel.parent();\n\n $groupTemplate.find(drinkDirectParent).append($modifierGroup);\n } else {\n let drinkCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-combo-drink-selection] fieldset label[for='${drinkLabelId}']`);\n let drinkDirectParent = drinkCorrispondingLabel.parent();\n let drinkDirectParentOfParent = drinkDirectParent.parent();\n\n $groupTemplate.find(drinkDirectParentOfParent).append($modifierGroup);\n }\n\n }\n }\n\n else if (ingredientsModifiersConditionalSelector) {\n // console.log('asdgkjlasdgsdg');\n\n ingredientLabelId = option.id;\n let ingredientCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups-for-ingredient-customizer] fieldset label[for='${ingredientLabelId}']`);\n let ingredientDirectParent = ingredientCorrispondingLabel.parent();\n\n $groupTemplate.find(ingredientDirectParent).append($modifierGroup);\n }\n else if (sidesModifiersToppingsChildConditionalSelector) {\n // console.log('asdgkjlasdgsdg 2');\n\n allOtherLabelId = option.id;\n // console.log(fieldsetLegend, option.id, modifier.description, sidesModifiersToppingsConditionalSelector, nestTheseModifiersConditionalSelector); \n\n let allOtherCorrispondingLabel = $groupTemplate.find(`fieldset.topping-selector label[for='${allOtherLabelId}']`);\n $(allOtherCorrispondingLabel);\n\n\n let allOtherDirectParent = allOtherCorrispondingLabel.parent();\n $(allOtherDirectParent).addClass('all-other-modifier-parents')\n\n $groupTemplate.find(allOtherDirectParent).append($modifierGroup);\n }\n else if (drinksModifiersToppingsChildConditionalSelector) {\n // console.log(fieldsetLegend, option.id, modifier.description, drinksModifiersToppingsChildConditionalSelector); \n\n allOtherLabelId = option.id;\n // console.log(fieldsetLegend, option.id, modifier.description, sidesModifiersToppingsConditionalSelector, nestTheseModifiersConditionalSelector); \n\n let allOtherCorrispondingLabel = $groupTemplate.find(`fieldset label[for='${allOtherLabelId}']`);\n $(allOtherCorrispondingLabel);\n\n\n let allOtherDirectParent = allOtherCorrispondingLabel.parent();\n $(allOtherDirectParent).addClass('all-other-modifier-parents')\n\n $groupTemplate.find(allOtherDirectParent).append($modifierGroup);\n // allOtherLabelId = option.id;\n\n // let allOtherCorrispondingLabel = $groupTemplate.find(`[data-modifier-groups] fieldset label[for='${allOtherLabelId}']`);\n // let allOtherDirectParent = allOtherCorrispondingLabel.parent();\n // $(allOtherDirectParent).addClass('all-other-modifier-parents')\n\n // $groupTemplate.find(allOtherDirectParent).append($modifierGroup);\n // $groupTemplate.find(\"[data-modifier-groups]\").append($modifierGroup);\n\n }\n else {\n // console.log('ahhh');\n $groupTemplate.find(\"[data-modifier-groups]\").append($modifierGroup);\n }\n\n $.each(modifier.options, function (index, m_option) {\n // Recurse modifier modifiers (lord lord)\n // console.log('wingOption', wingOption, fieldsetLegend, modifierLevel, wingsComboOption);\n if (m_option.modifiers) {\n setItemModifiers(m_option, $groupTemplate, false, true, modifierLevel + 1, wingOption, wingsComboOption, sidesModifiersToppingsConditionalSelector, comboDrinksModifiersToppingsConditionalSelector);\n }\n });\n\n\n }); // $.each(option.modifiers ...\n} // setItemModifiers(m_group)\n\nvar $ = jQuery;\n\njQuery(document).ready(function ($) {\n\n // Popup functionality\n function toggleCustomizerPopup($parent, show) {\n // console.log('add classes');\n var $popup = $parent.find('.customizer-information-popup');\n var $overlay = $parent.find('[main-information-popup-overlay]');\n var $button = $parent.find('.customizer-information-popup-button');\n\n if ($popup.length) {\n if (show) {\n $popup.show().attr('aria-hidden', 'false');\n $button.attr('aria-expanded', 'true');\n $overlay.addClass('visible');\n\n $popup.find('.close-customizer-information-popup:not(.complex-price-button)').focus();\n } else {\n $popup.hide().attr('aria-hidden', 'true');\n $button.attr('aria-expanded', 'false');\n $button.focus();\n $overlay.removeClass('visible');\n }\n } else {\n // console.error(\"Pop-up element not found\");\n }\n }\n\n function setupCustomizer(parentSelector) {\n function handlePopupToggle(event) {\n if (event.type === 'click' || event.type === 'keypress' && event.key === 'Enter') {\n let $parent = $(this).closest(parentSelector);\n // console.log('i clikcsssssssss', $parent);\n\n let safariOverlayFixSelector = $('.reveal-overlay.differnt-popup-overlay');\n $(safariOverlayFixSelector).addClass('safariOverlayFixSelector');\n\n toggleCustomizerPopup($parent, true);\n }\n }\n\n $(document).on('click keypress', parentSelector + ' .customizer-information-popup-button', handlePopupToggle);\n\n function handlePopupClose(event) {\n if (event.type === 'click' || event.type === 'keypress' && event.key === 'Enter') {\n let $parent = $(this).closest(parentSelector);\n let safariOverlayFixSelector = $('.reveal-overlay.differnt-popup-overlay');\n $(safariOverlayFixSelector).removeClass('safariOverlayFixSelector');\n\n toggleCustomizerPopup($parent, false);\n }\n }\n\n $(document).on('click keypress', parentSelector + ' .close-customizer-information-popup', handlePopupClose);\n\n\n }\n\n setupCustomizer('#main-ingredient-customizer-information-parent');\n setupCustomizer('#combo-side-selection-customizer-information-parent');\n setupCustomizer('#combo-drink-selection-customizer-information-parent');\n\n $(document).on('keydown', function (e) {\n if (e.key === 'Escape') {\n toggleCustomizerPopup($('#main-ingredient-customizer-information-parent'), false);\n toggleCustomizerPopup($('#combo-side-selection-customizer-information-parent'), false);\n toggleCustomizerPopup($('#combo-drink-selection-customizer-information-parent'), false);\n let safariOverlayFixSelector = $('.reveal-overlay.differnt-popup-overlay');\n $(safariOverlayFixSelector).removeClass('safariOverlayFixSelector');\n }\n });\n // Close popup when clicking outside\n $(document).on('click', function (event) {\n if (!$(event.target).closest('.customizer-information-popup').length && !$(event.target).closest('.customizer-information-popup-button').length) {\n toggleCustomizerPopup($('#main-ingredient-customizer-information-parent'), false);\n toggleCustomizerPopup($('#combo-side-selection-customizer-information-parent'), false);\n toggleCustomizerPopup($('#combo-drink-selection-customizer-information-parent'), false);\n let safariOverlayFixSelector = $('.reveal-overlay.differnt-popup-overlay');\n $(safariOverlayFixSelector).removeClass('safariOverlayFixSelector');\n }\n });\n\n\n // New functionality: Add class 'open' to the clicked element\n $(document).on('click', '.right-col.formatting-add-accordian .product-option-wrap>div:not(.formatting-big-game-bundle .product-option-wrap>div:nth-of-type(8), .formatting-big-game-bundle .product-option-wrap>div:nth-of-type(5))', function (event) {\n let elementTop = $(this).offset().top;\n let clickPosition = event.pageY;\n\n // Check if the click happened within the top 70px of the element\n if (clickPosition <= elementTop + 70) {\n // console.log('open');\n // Remove 'open' class from other divs but not the clicked one\n \n $('.right-col.formatting-add-accordian .product-option-wrap>div').not(this).removeClass('open');\n\n if ($(this).is('.right-col.formatting-big-game-bundle .product-option-wrap>div:nth-of-type(4):not(.open)')) {\n $('.product-option-wrap>div:nth-of-type(5)').addClass('open');\n } else if ($(this).is('.formatting-big-game-bundle .product-option-wrap>div:nth-of-type(7):not(.open)')) {\n $('.product-option-wrap>div:nth-of-type(8)').addClass('open');\n\n }\n // Toggle 'open' class on the clicked element\n $(this).toggleClass('open');\n\n // If the element is now open, scroll to the top of it\n if ($(this).hasClass('open')) {\n let container = $('#product-detail-view');\n let scrollPosition = $(this).offset().top - container.offset().top + container.scrollTop();\n\n container.animate({\n scrollTop: scrollPosition\n }, 500); // 500ms for smooth scroll \n } \n }\n });\n});\n","// View: Order Complete\nfunction view_order_complete() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n if (urlParam(\"orderid\")) {\n localStorage.setItem(\n \"charleys_customer_order\",\n JSON.stringify({ id: urlParam(\"orderid\") })\n );\n }\n\n if (localStorage.getItem(\"charleys_customer_order\")) {\n var session_order_data = JSON.parse(\n localStorage.getItem(\"charleys_customer_order\")\n );\n var orderguid = session_order_data.id;\n\n // Remove reveal modal\n $(\"#order-complete-confirm-checkin, #order-complete-confirm-cancel, #order-complete-favorite-order, #order-complete-delete-favorite-order\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-order-complete.html\", function () {\n\n // Recreate reveal modals\n var $checkin_reveal = new Foundation.Reveal(\n $(\"#order-complete-confirm-checkin\"),\n {}\n );\n var $cancel_reveal = new Foundation.Reveal(\n $(\"#order-complete-confirm-cancel\"),\n {}\n );\n var $favorite_reveal = new Foundation.Reveal(\n $(\"#order-complete-favorite-order\"),\n {}\n );\n var $delete_favorite_reveal = new Foundation.Reveal(\n $(\"#order-complete-delete-favorite-order\"),\n {}\n );\n\n $('button[data-refresh-order-status]').click(function () {\n displayFinalOrder(orderguid, session_order_data);\n });\n\n displayFinalOrder(orderguid, session_order_data);\n })\n .hide()\n .fadeIn(transitionDuration);\n } else {\n change_view(\"start-order\");\n }\n}\n\nfunction displayFinalOrder(orderguid, session_order_data) {\n\n var $ = jQuery;\n charleys_show_loading();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_order\",\n orderguid: orderguid,\n },\n success: function (response) {\n order_data = JSON.parse(response);\n showOrderStatus(order_data);\n\n // console.log(\"session_order_data\");\n // console.log(session_order_data);\n // console.log(\"order_data\");\n // console.log(order_data); \n //display rewards upsell\n if (isUserLoggedIn(true)) {\n $('[data-reward-messaging]').removeClass('hide');\n $('[data-rewards-upsell]').addClass('hide');\n } else {\n $('[data-reward-messaging]').addClass('hide');\n $('[data-rewards-upsell]').removeClass('hide');\n }\n //end of rewards upsell\n if (order_data.deliveryaddress) {\n $('[data-delivery-address]').text(\n order_data.deliveryaddress.streetaddress + ' ' +\n order_data.deliveryaddress.building\n );\n $('[data-delivery-city]').text(\n order_data.deliveryaddress.city + ' ' +\n order_data.deliveryaddress.zipcode\n );\n if (order_data.deliveryaddress.specialinstructions) {\n $('[data-delivery-instructions]').text(order_data.deliveryaddress.specialinstructions);\n $('[data-delivery-instructions]').removeClass('hide');\n }\n $('[data-order-details-delivery]').removeClass('hide');\n }\n\n $(\"[data-order-customer-name]\").text(localStorage.getItem(\"charleys_customer_guest_first_name\") +\n \" \" +\n localStorage.getItem(\"charleys_customer_guest_last_name\"));\n $(\"[data-order-number]\").text(order_data.oloid);\n\n $timeText = \"\";\n if (order_data.delivermode == \"dispatch\") {\n $timeText = \"Order to arrive: \";\n if (order_data.status == \"Completed\") {\n $timeText = \"Order delivered at: \";\n }\n } else {\n $timeText = \"Order to be ready: \";\n if (order_data.status == \"Completed\") {\n $timeText = \"Order ready at: \";\n }\n }\n $(\"[data-order-time-text]\").text($timeText);\n //display order tracker information\n //progress % and steps are different in case there are >=< 4 steps\n var progress = 0;\n var step = 0;\n\n var statusSwitch = order_data.status;\n\n if (order_data.deliverystatus) {\n statusSwitch = order_data.deliverystatus.deliveries[0].status;\n }\n\n $(\"[data-order-status]\").text(statusSwitch);\n\n //order data status switch\n switch (statusSwitch) {\n case \"New\":\n case \"Accepted\":\n case \"Transmitting\":\n case \"Scheduled\": // Order Status Enum, Delivery Status Enum\n case \"Pending Manual Fire\": // Order Status Enum\n case \"Pending\": // Delivery Status Enum\n progress = 33.3;\n step = 1;\n break;\n case \"Preparing\":\n case \"PickupInProgress\": // Delivery Status Enum\n progress = 66.6;\n step = 2;\n break;\n case \"Ready\":\n case \"In Progress\": // Order Status Enum\n case \"DeliveryInProgress\": // Delivery Status Enum\n progress = 66.6;\n step = 2;\n break;\n case \"Delivered\": // Delivery Status Enum\n case \"Completed\": // Order Status Enum, Delivery Status Enum\n case \"Canceled\": // Order Status Enum, Delivery Status Enum\n case \"Rejected\":\n progress = 100;\n step = 3;\n break;\n default:\n progress = 0;\n step = 0;\n }\n\n // Hide ready time if irrelivant\n if ([\"Delivered\", \"Completed\", \"Canceled\", \"Rejected\"].includes(statusSwitch)) {\n $('.order-status-time').addClass('hide');\n } else {\n $('.order-status-time').removeClass('hide');\n }\n\n $(\"[data-order-status-progress]\").css(\n \"stroke-dashoffset\",\n \"calc(201.06 - (201.06 * \" + progress + \" / 100))\"\n );\n if (progress > 66.6) {\n $(\"[data-order-status-progress]\").css(\"stroke\", \"#00b300\");\n } else if (progress > 33.3) {\n $(\"[data-order-status-progress]\").css(\"stroke\", \"#ffcc00\");\n } else if (progress >= 33.3) {\n $(\"[data-order-status-progress]\").css(\"stroke\", \"#ffcc00\");\n } else {\n $(\"[data-order-status-progress]\").css(\"stroke\", \"#E31837\");\n }\n $(\"[data-order-step]\").text(step);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_restaurant\",\n restaurant_id: order_data.vendorid,\n get_calendar: true,\n },\n success: function (response) {\n var restaurant_data = JSON.parse(response);\n\n console.log('restaurant_data', restaurant_data);\n // \n var locationHours = '';\n $.each(restaurant_data.calendar, function (key, calendar) {\n // console.log('calendar', calendar);\n if (typeof calendar.ranges !== 'undefined' && calendar.ranges !== null && calendar.ranges.length) {\n var storeCalendar = calendar.ranges[0];\n var startDate = new Date(storeCalendar.start.substr(0, 4) + '-' + storeCalendar.start.substr(4, 2) + '-' + storeCalendar.start.substr(6, 2) + 'T' + storeCalendar.start.substr(9, 5));\n var endDate = new Date(storeCalendar.end.substr(0, 4) + '-' + storeCalendar.end.substr(4, 2) + '-' + storeCalendar.end.substr(6, 2) + 'T' + storeCalendar.end.substr(9, 5));\n\n var hourslabel = calendar.type.charAt(0).toUpperCase() + calendar.type.substr(1).toLowerCase();\n if (calendar.label !== null) {\n hourslabel = calendar.label.charAt(0).toUpperCase() + calendar.label.substr(1).toLowerCase();\n } else if (calendar.type == 'dinein') {\n hourslabel = \"Dine In\";\n }\n\n locationHours += '' + hourslabel + ' Hours:
    ' + formatAMPM(startDate) + ' - ' + formatAMPM(endDate) + '
    ';\n // console.log('locationHours', locationHours);\n $(\"[data-store-hours]\").html(locationHours);\n }\n });\n //Google address link\n resturantNameWithReplacedSpaced = restaurant_data.name.replace(' ', '+');\n let googleAddressLink = 'https://www.google.com/maps/dir/?api=1&destination=Charleys%2C+1+' + resturantNameWithReplacedSpaced + '+' + restaurant_data.zip;\n console.log(googleAddressLink);\n $(\"[data-store-direction-link]\").attr(\"href\", googleAddressLink);\n //\n var handoff_mode_label;\n var manual_fire_label;\n var thanks_instructions;\n restaurant_data.labels.forEach(function (label) {\n\n\n\n if (label.key == \"manual_fire_label\") {\n manual_fire_label = label.value;\n }\n\n if (label.key == \"handoffmode_\" + order_data.deliverymode) {\n handoff_mode_label = label.value;\n }\n\n if (\n label.key ==\n \"thanks_\" + order_data.deliverymode + \"_instructions\"\n ) {\n thanks_instructions = label.value;\n } else if (\n label.key ==\n \"thanks_\" + order_data.deliverymode + \"pickup_instructions\"\n ) {\n thanks_instructions = label.value;\n } else if (\n label.key ==\n \"thanks_\" + order_data.deliverymode + \"instructions\"\n ) {\n thanks_instructions = label.value;\n }\n });\n\n $(\"[data-order-checkin-label]\").text(manual_fire_label);\n $(\"[data-order-type]\").text(handoff_mode_label);\n $(\"[data-thanks-instructions]\").text(thanks_instructions);\n\n console.log(order_data.deliverymode, order_data.status);\n\n if (\n order_data.deliverymode == \"curbside\" ||\n order_data.deliverymode == \"pickup\" ||\n order_data.deliverymode == \"drivethru\"\n ) {\n $(\"[data-order-pickup]\").removeClass(\"hide\");\n $(\"[data-order-checkin]\").removeClass(\"hide\");\n }\n\n if (order_data.status == \"Completed\") {\n $(\"[data-order-pickup]\").addClass(\"hide\");\n $(\"[data-order-checkin]\").addClass(\"hide\");\n }\n\n var supportsArrivalMessage = false;\n\n // todo: map this feature for order types other than curbside\n restaurant_data.supportedarrivalmessagehandoffmodes.forEach(\n function (mode) {\n if (\n mode == \"CurbsidePickup\" &&\n order_data.deliverymode == \"curbside\"\n ) {\n supportsArrivalMessage = true;\n }\n }\n );\n\n if (order_data.arrivalstatus != \"Order Placed\" || !supportsArrivalMessage) {\n $(\"[data-order-checkin]\").addClass(\"hide\");\n }\n\n $(\"[data-store-name]\").text(restaurant_data.name);\n $(\"[data-order-details-header]\").text(\n order_data.deliverymode + \" Details\"\n );\n $(\"[data-store-address]\").text(restaurant_data.streetaddress);\n $(\"[data-store-city]\").text(\n restaurant_data.city +\n \", \" +\n restaurant_data.state +\n \" \" +\n restaurant_data.zip\n );\n $(\"[data-store-phone]\").text(restaurant_data.telephone);\n $(\"[data-store-phone-link]\").attr(\n \"href\",\n \"tel:\" + restaurant_data.telephone.replace(/\\D/g, \"\")\n );\n $(\"[data-store-location-link]\").attr(\n \"href\",\n \"/locations/\" + restaurant_data.slug\n );\n\n $(\"[data-store-map]\").attr(\n \"data-latitude\",\n restaurant_data.latitude\n );\n $(\"[data-store-map]\").attr(\n \"data-longitude\",\n restaurant_data.longitude\n );\n\n // var formatted_timeplaced =\n // order_data.timeplaced.substring(0, 4) +\n // \"-\" +\n // order_data.timeplaced.substring(4, 6) +\n // \"-\" +\n // order_data.timeplaced.substring(6, 8) +\n // order_data.timeplaced.substring(8);\n // $(\"[data-order-timeplaced]\").text(formatted_timeplaced);\n\n // var formatted_readytime =\n // order_data.readytime.substring(0, 4) +\n // \"-\" +\n // order_data.readytime.substring(4, 6) +\n // \"-\" +\n // order_data.readytime.substring(6, 8) +\n // order_data.readytime.substring(8);\n // // $(\"[data-order-readytime]\").text(formatted_readytime);\n // var time_formatted_readytime = order_data.readytime.substr(\n // order_data.readytime.length - 5\n // );\n // //convert to 12 hour time if string is xx:xx\n // if (time_formatted_readytime.length == 5) {\n // var hours = time_formatted_readytime.substr(0, 2);\n // var minutes = time_formatted_readytime.substr(3, 2);\n // var ampm = hours >= 12 ? \"PM\" : \"AM\";\n // hours = hours % 12;\n // hours = hours ? hours : 12; // the hour '0' should be '12'\n // time_formatted_readytime = hours + \":\" + minutes + \" \" + ampm;\n // }\n\n // $(\"[data-order-readytime-time]\").text(time_formatted_readytime);\n\n //display map of order location\n if (window.location.href.indexOf(\"/order/\") > -1) {\n function initMap(longitude, latitude) {\n var $ = jQuery;\n tt.setProductInfo(\"Charleys Location Map\", \"2.0.0\");\n if ($(\"#tt-map\").length) {\n ttmap = tt.map({\n key: tomtom_api_key,\n container: \"tt-map\",\n center: [longitude, latitude],\n zoom: 15,\n language: \"en-US\",\n });\n if (window.innerWidth > 1380) {\n // Set the width and height of the container directly\n var mapContainer = document.getElementById('tt-map');\n mapContainer.style.width = '800px';\n mapContainer.style.height = '300px';\n\n // Apply same dimensions to the canvas\n var canvas = mapContainer.querySelector('.mapboxgl-canvas');\n canvas.style.width = '800px';\n canvas.style.height = '300px';\n canvas.setAttribute('width', '800px');\n canvas.setAttribute('height', '300px');\n\n console.log(\"order page, map loading\");\n\n // Add a slight delay before calling resize\n setTimeout(function () {\n ttmap.resize();\n }, 100); // Adjust delay if needed\n }\n\n }\n\n } // end initMap\n initMap(restaurant_data.longitude, restaurant_data.latitude);\n //add marker to map\n var markerElement = document.createElement(\"div\");\n markerElement.className = \"marker\";\n\n var markerContentElement = document.createElement(\"div\");\n markerContentElement.className = \"marker-content\";\n markerElement.appendChild(markerContentElement);\n\n // add marker to map\n var marker = new tt.Marker({\n element: markerElement,\n anchor: \"bottom\",\n })\n .setLngLat([\n restaurant_data.longitude,\n restaurant_data.latitude,\n ])\n .addTo(ttmap);\n console.log(marker);\n }\n\n $(\"[data-order-subtotal]\").text(\n \"$\" + formatMoney(order_data.subtotal)\n );\n $(\"[data-order-tax]\").text(\n \"$\" + formatMoney(order_data.salestax)\n );\n\n if (order_data.customerhandoffcharge > 0) {\n $(\"[data-order-delivery-fee]\").text(\n \"$\" + formatMoney(order_data.customerhandoffcharge)\n );\n $(\".delivery-fee-product-item\").removeClass(\"hide\");\n }\n\n if (order_data.tip > 0) {\n $(\"[data-order-tip]\").text(\"$\" + formatMoney(order_data.tip));\n $(\".tip-product-item\").removeClass(\"hide\");\n }\n\n if (order_data.discount > 0) {\n $(\"[data-order-coupon]\").text(\n \"($\" + formatMoney(order_data.discount) + \")\"\n );\n $(\".coupon-product-item\").removeClass(\"hide\");\n }\n\n $(\"[data-order-total]\").text(\n \"$\" + formatMoney(order_data.total)\n );\n\n // Clear product selection readout in event of reload\n $(\"[data-order-complete-product-selections] .product-item:not(.hide)\").each(function () {\n $(this).remove();\n })\n let restaurant_id = localStorage.getItem(\"charleys_customer_store_location_id\");\n\n order_data.products.forEach(function (product) {\n // console.log('product', product);\n // console.log('order_data', order_data);\n var $product_item = $(\"[data-order-complete-product-selections] .product-item.hide\").clone();\n\n //product img stuff \n $product_item\n .find(\"[data-product-img]\")\n .attr(\"id\", product.productId);\n\n let productsIdForGettingImg = product.id;\n let productsOrderImgs = JSON.parse(localStorage.getItem('productsOrderImgs')) || [];\n let existingProduct = productsOrderImgs.find(item => item.id === productsIdForGettingImg);\n\n if (existingProduct) {\n console.log('The variable productsIdForGettingImg exists in local storage.');\n $product_item.find(\"[data-product-img]\").attr(\"src\", existingProduct.imagePath).removeClass(\"hide\");\n } else if (restaurant_id) {\n console.log('Call ajax for productsIdForGettingImg');\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: restaurant_id,\n },\n success: function (response) {\n let rawProductData = JSON.parse(response);\n // console.log('Raw Response:', rawProductData); \n function getMenuItemImages(categoryType) {\n // console.log('categories', categoryType);\n if (categoryType && categoryType.length > 0) {\n categoryType.forEach(category => {\n if (category.products && category.products.length > 0) {\n // Iterate over products within each category\n category.products.forEach(product => {\n // Check if the product ID is in the productsIdForGettingImg array\n if (productsIdForGettingImg === product.id) {\n let formattedImagePath;\n let productsOrderImgs = JSON.parse(localStorage.getItem('productsOrderImgs')) || [];\n\n\n if (product.imagefilename) {\n // Log the image filename\n // console.log('Image Filename:', rawProductData.imagepath + product.imagefilename);\n formattedImagePath = rawProductData.imagepath + product.imagefilename;\n\n\n $(\"#\" + product.id + \"[data-product-img]\")\n .attr(\"src\", formattedImagePath).removeClass(\"hide\");\n\n\n console.log('cart', \"#\" + product.id + \"[data-product-img]\");\n } else {\n formattedImagePath = '/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg';\n $(\"#\" + product.id + \"[data-product-img]\")\n .attr(\"src\", formattedImagePath).removeClass(\"hide\");\n }\n productsOrderImgs.push({\n id: product.id,\n imagePath: formattedImagePath\n });\n // Store the productsOrderImgs array in local storage\n localStorage.setItem('productsOrderImgs', JSON.stringify(productsOrderImgs));\n console.log('Stored productsOrderImgs in local storage:', productsOrderImgs);\n }\n });\n } else {\n console.log('No products found in this category');\n }\n\n });\n }\n }\n getMenuItemImages(rawProductData.categories);\n getMenuItemImages(rawProductData.singleusecategories); \n }\n });\n } else {\n // console.log('no work ;(');\n }\n\n //end of product img stuff \n $product_item\n .find(\"[data-product-item-name]\")\n .text(product.name);\n $product_item\n .find(\"[data-product-item-custom]\")\n .text(product.specialinstructions);\n //for each item in choices array in product add the span with the item to the item-options div\n if (product.choices && product.choices.length) {\n var choices = [];\n // console.log('product.choices', product.choices);\n\n for (var ii = 0; ii < product.choices.length; ii++) {\n var choice = product.choices[ii].name;\n // console.log('choice', choice);\n\n // Filter out YES and NO option selections to add clarity to option choices\n if (choice.toLowerCase().trim() !== \"no\" &&\n choice.toLowerCase().trim() !== \"yes\" &&\n choice.toLowerCase().trim() !== \"product size\") {\n\n if (product.choices[ii].quantity > 1) {\n var qty = Number(product.choices[ii].quantity);\n choice = \"(\" + qty + \") \" + choice;\n }\n\n // Add the choice to the choices array\n choices.push(choice);\n }\n }\n\n // Join all the choices into a single string separated by commas\n var choicesText = choices.join(', ');\n\n if (choicesText.length && !choicesText.includes('Product size')) {\n $product_item.find(\"[data-product-item-options]\").text(choicesText);\n }\n } else {\n $product_item.find(\"[data-product-item-options]\").addClass(\"hide\");\n }\n\n\n $product_item\n .find(\"[data-product-item-price]\")\n .text(\"$\" + formatMoney(product.totalcost));\n\n $product_item.removeClass(\"hide\");\n $(\"[data-order-complete-product-selections]\").append(\n $product_item\n );\n });\n\n var show_edit_section = false;\n if (order_data.iseditable) {\n //$('[data-order-complete-edit-order]').removeClass('hide');\n //show_edit_section = true;\n }\n\n if (\n order_data.status == \"Scheduled\" ||\n order_data.status == \"Pending Manual Fire\"\n ) {\n $(\"[data-order-complete-cancel-order]\").removeClass(\"hide\");\n show_edit_section = true;\n }\n\n if (show_edit_section) {\n $(\"[data-order-complete-edit-order-section]\").removeClass(\n \"hide\"\n );\n }\n\n $(\"[data-order-complete-cancel-order]\").off(\"click\");\n $(\"[data-order-complete-cancel-order]\").click(function () {\n $(\"#order-complete-confirm-cancel\").foundation(\"open\");\n });\n\n $(\".confirm-cancel-button\").off(\"click\");\n $(\".confirm-cancel-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_cancel_order\",\n orderguid: order_data.id,\n },\n success: function (response) {\n var cancel_result = JSON.parse(response);\n console.log(cancel_result);\n if (cancel_result.status == \"Canceled\") {\n window.location.reload();\n } else {\n $(\".confirm-cancel-error\").removeClass(\"hide\");\n $(\"#order-complete-confirm-cancel\").foundation(\"open\");\n }\n },\n });\n });\n\n $(\".checkin-button\").off(\"click\");\n $(\".checkin-button\").click(function () {\n $(\"#order-complete-confirm-checkin\").foundation(\"open\");\n });\n\n $(\".confirm-checkin-button\").off(\"click\");\n $(\".confirm-checkin-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_submit_customer_arrival\",\n orderguid: order_data.id,\n },\n success: function (response) {\n console.log(response);\n $(\"[data-order-checkin]\").addClass(\"hide\");\n },\n });\n });\n\n $(\".order-complete-favorite-button\").off(\"click\");\n $(\".order-complete-favorite-button\").click(function () {\n if ($(this).hasClass(\"location-favorite-active\")) {\n $(\"#order-complete-delete-favorite-order\").foundation(\n \"open\"\n );\n } else {\n $(\"#order-complete-favorite-order\").foundation(\"open\");\n }\n });\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n $(\".confirm-favorite-button\").off(\"click\");\n $(\".confirm-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket_from_order\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n orderid: order_data.id,\n },\n success: function (response) {\n basket_result = JSON.parse(response);\n\n if (basket_result.id) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_set_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n basketid: basket_result.id,\n description: $(\n \"[data-favorite-order-description]\"\n ).val(),\n },\n success: function (response) {\n fave_result = JSON.parse(response);\n\n if (fave_result.code == 200) {\n alert(fave_result.message);\n $(\"#order-complete-favorite-order\").foundation(\n \"open\"\n );\n } else if (fave_result.faves[0].id) {\n $(\"[data-fave-id]\").text(\n fave_result.faves[0].id\n );\n\n $(\".order-complete-favorite-button\").addClass(\n \"location-favorite-active\"\n );\n }\n },\n });\n }\n },\n });\n });\n } else {\n $(\".order-complete-favorite-button\").addClass(\"hide\");\n $(\".confirm-favorite-button\").addClass(\"hide\");\n }\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n $(\".delete-favorite-button\").off(\"click\");\n $(\".delete-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_fave\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n faveid: $(\"[data-fave-id]\").text(),\n },\n success: function (response) {\n $(\"[data-fave-id]\").text(\"\");\n $(\".order-complete-favorite-button\").removeClass(\n \"location-favorite-active\"\n );\n },\n });\n });\n } else {\n $(\".order-complete-favorite-button\").addClass(\"hide\");\n $(\".delete-favorite-button\").addClass(\"hide\");\n }\n\n\n\n $(\"[data-order-complete]\").removeClass(\"hide\");\n charleys_hide_loading();\n },\n });\n },\n });\n\n\n}\n\n","var ttmap_order,\n order_markers = [];\n\n// View: Start Order\nfunction view_start_order() {\n var $ = jQuery;\n\n charleys_hide_topnav_location();\n charleys_show_loading();\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-start-order.html\", function () {\n\n // Load map\n if ($(\"#tt-map\").length) {\n tt.setProductInfo(\"Charleys Location Map\", \"2.0.0\");\n ttmap_order = tt.map({\n key: tomtom_api_key,\n container: \"tt-map\",\n // style: 'tomtom://vector/1/basic-main',\n // dragPan: !isMobileOrTablet(),\n // Center on the USA\n center: [-98.5556199, 39.8097343],\n zoom: 4,\n language: \"en-US\",\n });\n // ttmap_order.addControl(new tt.FullscreenControl());\n // ttmap_order.addControl(new tt.NavigationControl());\n }\n\n // Remove reveal modal\n $('#account-select-order-type, #home-select-order-type', '#menu-select-order-type').each(function () {\n if (typeof $(this).attr('aria-hidden') !== 'undefined') {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $select_order_type_reveal = new Foundation.Reveal($('#home-select-order-type'), {});\n\n $('#home-select-order-type-button').click(function () {\n\n if ($('.data-order-type-recent-id:first').text() !== \"\") {\n startRecentOrder($('.data-order-type-recent-id:first').text(), 'home');\n }\n\n if ($('.data-order-type-fave-id:first').text() !== \"\") {\n startFavoriteOrder($('.data-order-type-fave-id:first').text(), 'home');\n }\n\n if ($('.data-order-type-location-id:first').text() !== \"\") {\n startReferralOrder($('.data-order-type-location-id:first').text(), $('.data-order-type-location-sbt:first').text(), 'home');\n }\n });\n\n $('#home-toggle-switch-on-off').change(function () {\n if ($('input[name=\"home-order-schedule\"]:checked').val() == 'advance') {\n $('#home-schedule-time').removeClass('hide')\n } else {\n $('#home-schedule-time').addClass('hide')\n }\n });\n $('#home-toggle-switch-on-off').trigger('change');\n\n $('input[name=\"home-order-type\"]').off('change');\n $('input[name=\"home-order-type\"]').change(function () {\n\n //clearLocationList();\n\n if ($('input[name=\"home-order-type\"]:checked').val() !== \"dispatch\") {\n $('#home-order-location-search').addClass('hide');\n $('#home-order-location-search-building').addClass('hide');\n $('.fa-location-dot').addClass('hide');\n $('#home-order-location-search-building').val('');\n } else {\n $('#home-order-location-search').removeClass('hide');\n $('#home-order-location-search-building').removeClass('hide');\n $('.fa-location-dot').removeClass('hide');\n }\n\n if ($('#home-order-location-search').val()) {\n $('#home-order-location-search-form').submit();\n } else {\n populate_user_restaurants('home');\n }\n });\n\n // Actions on changing the order type\n $('input[name=\"start-order-order-type\"]').change(function () {\n if (\n $('input[name=\"start-order-order-type\"]:checked').val() !== \"dispatch\"\n ) {\n $(\"[data-search-pickup]\").removeClass(\"hide\");\n $(\"[data-search-deliver]\").addClass(\"hide\");\n $(\"#start-order-order-location-search-building\").val(\"\");\n } else {\n $(\"[data-search-pickup]\").addClass(\"hide\");\n $(\"[data-search-deliver]\").removeClass(\"hide\");\n }\n });\n\n // Hide/show schedule elements\n $('input[name=\"start-order-order-schedule\"]').change(function () {\n if (\n $('input[name=\"start-order-order-schedule\"]:checked').val() ==\n \"advance\"\n ) {\n $(\"#start-order-schedule-time\").removeClass(\"hide\");\n } else {\n $(\"#start-order-schedule-time\").addClass(\"hide\");\n }\n // console.log($('input[name=\"order-schedule\"]:checked').val()); \n });\n\n // Get Schedule dates\n var todaysDate = new Date();\n var tomorrowsDate = new Date().addDays(1);\n var scheduleDates = getDates(todaysDate, new Date().addDays(45));\n var daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n for (var i = 0; i < scheduleDates.length; i++) {\n var dayValue =\n scheduleDates[i].getFullYear() +\n \"-\" +\n zeroPad(scheduleDates[i].getMonth() + 1, 2) +\n \"-\" +\n zeroPad(scheduleDates[i].getDate(), 2);\n var dayLabel =\n daysOfWeek[scheduleDates[i].getDay()] +\n \" \" +\n (scheduleDates[i].getMonth() + 1) +\n \"/\" +\n scheduleDates[i].getDate();\n\n if (scheduleDates[i].getTime() === todaysDate.getTime()) {\n dayLabel = \"Today\";\n }\n if (scheduleDates[i].getTime() === tomorrowsDate.getTime()) {\n dayLabel = \"Tomorrow\";\n }\n\n $(\"[data-order-start-order-time-wanted-day]\").append(\n '\"\n );\n\n $(\"[data-home-order-time-wanted-day]\").append(\n '\"\n );\n }\n\n // Set time selections\n var timeSelection = createQuarterHourIntervals();\n for (var ii = 0; ii < timeSelection.length; ii++) {\n $(\"[data-order-start-order-time-wanted-time]\").append(\n '\"\n );\n\n $(\"[data-home-order-time-wanted-time]\").append(\n '\"\n );\n }\n\n // actions for changing the time wanted (day)\n $(\"select#start-order-time-wanted-day\").change(function () {\n if (\n $(\n 'select#start-order-time-wanted-day option[value=\"' +\n $(this).val() +\n '\"]'\n ).text() == \"Today\"\n ) {\n var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n // console.log(currentTime);\n $(\"select#start-order-time-wanted-time-slot option\").each(\n function () {\n if ($(this).val() < currentTime) {\n $(this).addClass(\"hide\");\n }\n $(\"select#start-order-time-wanted-time-slot\").val(currentTime);\n }\n );\n } else {\n $(\"select#start-order-time-wanted-time-slot option\").each(\n function () {\n $(this).removeClass(\"hide\");\n }\n );\n }\n });\n $(\"select#start-order-time-wanted-day\").trigger(\"change\");\n\n $(\"#home-time-wanted-day\").change(function () {\n if (\n $(\n '#home-time-wanted-day option[value=\"' +\n $(this).val() +\n '\"]'\n ).text() == \"Today\"\n ) {\n var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n // console.log(currentTime);\n $(\"#home-time-wanted-time-slot option\").each(\n function () {\n if ($(this).val() < currentTime) {\n $(this).addClass(\"hide\");\n }\n $(\"#home-time-wanted-time-slot\").val(currentTime);\n }\n );\n } else {\n $(\"#home-time-wanted-time-slot option\").each(\n function () {\n $(this).removeClass(\"hide\");\n }\n );\n }\n });\n $(\"#home-time-wanted-day\").trigger(\"change\");\n\n // Autocomplete for location search\n if ($(\"#start-order-order-location-search\").length) {\n const inputD = $(\"#start-order-order-location-search\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n olo_get_nearby_locations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n \"start-order\"\n );\n // console.log(place);\n\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log($('#order-location-search-streetaddress').val());\n // console.log($('#order-location-search-city').val());\n // console.log($('#order-location-search-zipcode').val());\n }\n });\n\n $(\"#start-order-order-location-search-form\").submit(function (e) {\n e.preventDefault();\n\n // console.log(\"search locations\");\n\n $(\"#start-order-order-location-search\").blur();\n\n var address = $(\"#start-order-order-location-search\").val();\n var geocoder = new google.maps.Geocoder();\n\n if (address.length) {\n geocoder.geocode(\n {\n address: address,\n },\n function (results, status) {\n // console.log(\"GEOCODER STATUS \", status, results);\n if (status == google.maps.GeocoderStatus.OK) {\n // console.log(results);\n\n var components = {};\n $.each(results[0].address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log('address components', components);\n\n if (components.street_number && components.route) {\n $(\"#start-order-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if ('locality' in components) {\n $('#start-order-order-location-search-city').val(components.locality);\n } else if ('administrative_area_level_2' in components) {\n $('#start-order-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#start-order-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n olo_get_nearby_locations(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng(),\n \"\",\n \"start-order\"\n );\n } else {\n $(\"#start-order-order-location-search\").val(\"\");\n charleys_hide_loading();\n }\n }\n );\n } else {\n charleys_hide_loading();\n }\n });\n\n // initMap();\n }\n\n // Autocomplete for location search\n if ($(\"#home-order-location-search\").length) {\n const inputD = $(\"#home-order-location-search\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n /*olo_get_nearby_locations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n \"home\"\n );*/\n // console.log(place);\n\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n if (components.street_number && components.route) {\n $(\"#home-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if (\"locality\" in components) {\n $(\"#home-order-location-search-city\").val(components.locality);\n } else if (\"administrative_area_level_2\" in components) {\n $(\"#home-order-location-search-city\").val(\n components.administrative_area_level_2\n );\n }\n\n $(\"#home-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n // console.log($('#order-location-search-streetaddress').val());\n // console.log($('#order-location-search-city').val());\n // console.log($('#order-location-search-zipcode').val());\n }\n });\n\n $(\"#home-order-location-search-form\").submit(function (e) {\n e.preventDefault();\n\n // console.log(\"search locations\");\n\n $(\"#home-order-location-search\").blur();\n\n var address = $(\"#home-order-location-search\").val();\n var geocoder = new google.maps.Geocoder();\n\n if (address.length) {\n geocoder.geocode(\n {\n address: address,\n },\n function (results, status) {\n // console.log(\"GEOCODER STATUS \", status, results);\n if (status == google.maps.GeocoderStatus.OK) {\n // console.log(results);\n\n var components = {};\n $.each(results[0].address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log('address components', components);\n\n if (components.street_number && components.route) {\n $(\"#home-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n\n $(\"#start-order-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if ('locality' in components) {\n $('#home-order-location-search-city').val(components.locality);\n } else if ('administrative_area_level_2' in components) {\n $('#home-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#home-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n /*olo_get_nearby_locations(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng(),\n \"\",\n \"start-order\"\n );*/\n } else {\n $(\"#home-order-location-search\").val(\"\");\n charleys_hide_loading();\n }\n }\n );\n } else {\n charleys_hide_loading();\n }\n });\n\n // initMap();\n }\n\n // Autocomplete for location search\n if ($(\"#start-order-order-location-search-delivery\").length) {\n const inputD = $(\"#start-order-order-location-search-delivery\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n\n charleys_show_loading();\n\n var nearbyData = {\n action: \"get_nearby_locations\",\n lat: place.geometry.location.lat(),\n long: place.geometry.location.lng(),\n distance: \"\",\n };\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: nearbyData,\n success: function (response) {\n // console.log(response);\n var result = JSON.parse(response);\n if (result.status == \"success\" && result.data !== null) {\n // console.log(result.data.restaurants);\n //var isDelivery = false;\n // if($('[name=\"order-type\"]:checked').val() == 'dispatch') {\n //if($('input[name=\"' + view_context + '-order-type\"]:checked').val() == 'dispatch') {\n // isDelivery = true;\n //}\n\n let is_in_dispatch_range = false;\n let location_item_vendor_id = $(\n \"#start-order-order-location-search-delivery\"\n )\n .closest(\".location-item\")\n .attr(\"data-location-id\");\n result.data.restaurants.forEach(function (restaurant) {\n if (restaurant.id == location_item_vendor_id) {\n is_in_dispatch_range = true;\n }\n });\n\n if (is_in_dispatch_range) {\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n if (components.street_number && components.route) {\n $(\"#start-order-order-location-search-streetaddress\").val(\n components.street_number + \" \" + components.route\n );\n }\n\n if ('locality' in components) {\n $('#start-order-order-location-search-city').val(components.locality);\n } else if ('administrative_area_level_2' in components) {\n $('#start-order-order-location-search-city').val(components.administrative_area_level_2);\n }\n\n $(\"#start-order-order-location-search-zipcode\").val(\n components.postal_code\n );\n\n $(\n \"#start-order-order-location-search-delivery\"\n ).removeClass(\"form-alert\");\n $(\"[data-delivery-error]\").text(\"\");\n $(\n \"#start-order-order-location-search-error-delivery\"\n ).addClass(\"hide\");\n } else {\n $(\"#start-order-order-location-search-delivery\").addClass(\n \"form-alert\"\n );\n $(\"[data-delivery-error]\").text(\n \"This address is not within this restaurant's delivery range.\"\n );\n $(\n \"#start-order-order-location-search-error-delivery\"\n ).removeClass(\"hide\");\n }\n\n charleys_hide_loading();\n } else {\n $(\"#start-order-order-location-search-delivery\").addClass(\n \"form-alert\"\n );\n $(\"[data-delivery-error]\").text(\n \"This address is not within this restaurant's delivery range.\"\n );\n $(\n \"#start-order-order-location-search-error-delivery\"\n ).removeClass(\"hide\");\n\n charleys_hide_loading();\n }\n },\n complete: function () {\n charleys_hide_loading();\n },\n });\n // console.log(place);\n }\n });\n }\n\n if ($(\"#start-order-order-location-search\").length) {\n const inputD = $(\"#start-order-order-location-search\")[0];\n const options = {\n // componentRestrictions: { country: \"us\" },\n fields: [\"address_components\", \"geometry\"],\n strictBounds: false,\n // types: ['(regions)'],\n };\n\n const autocompleteD = new google.maps.places.Autocomplete(\n inputD,\n options\n );\n autocompleteD.addListener(\"place_changed\", function () {\n const place = autocompleteD.getPlace();\n if (place.geometry) {\n // ttmap.systemZoomChange = true;\n // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n olo_get_nearby_locations(\n place.geometry.location.lat(),\n place.geometry.location.lng(),\n \"\",\n \"start-order\"\n );\n // console.log(place);\n\n var components = {};\n $.each(place.address_components, function (k, v1) {\n $.each(v1.types, function (k2, v2) {\n components[v2] = v1.long_name;\n });\n });\n\n // console.log($('#order-location-search-streetaddress').val());\n // console.log($('#order-location-search-city').val());\n // console.log($('#order-location-search-zipcode').val());\n }\n });\n\n // initMap();\n }\n\n $(\"#start-order-select-order-type-button\").click(function () {\n //$('#' + view_context + '-select-order-type').foundation('close');\n \n var validAddress = true;\n var isDelivery = Boolean(\n $('input[name=\"start-order-order-type\"]:checked').val() == \"dispatch\"\n );\n // console.log(\"location id\");\n // console.log($(this).closest(\".location-item\").attr(\"data-location-id\"));\n var vendorid = $(this)\n .closest(\".location-item\") \n .attr(\"data-location-id\");\n var supportsbaskettransfers =\n $(this)\n .closest(\".location-item\")\n .attr(\"data-supportsbaskettransfers\") == \"true\";\n\n // Delivery requires a full address, thus fails validation if no street address is present\n if (\n isDelivery &&\n !$(\"#start-order-order-location-search-streetaddress\").val().length\n ) {\n validAddress = false;\n }\n\n // console.log(\"validAddress\", validAddress);\n\n $(\"#start-order-order-location-search\").removeClass(\"form-alert\");\n $(\"#start-order-order-location-search-error\").addClass(\"hide\");\n\n if (validAddress) {\n\n\n charleys_show_loading();\n setAddressComponents(\"start-order\");\n selectLocation(\n vendorid,\n supportsbaskettransfers,\n false,\n \"start-order\"\n );\n } else {\n $(\"#start-order-order-location-search\").addClass(\"form-alert\");\n $(\"#start-order-order-location-search-error\").removeClass(\"hide\");\n }\n });\n\n populate_user_restaurants(\"start-order\");\n\n let googleStoreSlug = getCookie('charleys_google_store_slug');\n let googleHandoffMode = getCookie('charleys_google_handoff_mode');\n\n if (typeof googleStoreSlug !== 'undefined' && googleStoreSlug.length > 0) {\n if (googleHandoffMode == 'pickup' || googleHandoffMode == 'curbside' || googleHandoffMode == 'dispatch') {\n //$('#home-select-order-type').find('.order-type-select').val(googleHandoffMode);\n if (googleHandoffMode == 'dinein') {\n $('#home-dinein').trigger('click');\n }\n if (googleHandoffMode == 'curbside') {\n $('#home-curbside').trigger('click');\n }\n if (googleHandoffMode == 'dispatch') {\n $('#home-delivery').trigger('click');\n $('#home-order-location-search').removeClass('hide');\n $('#home-order-location-search-building').removeClass('hide');\n $('.fa-location-dot').removeClass('hide');\n }\n }\n\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action: 'get_olo_restaurant_by_slug',\n authtoken: localStorage.getItem('charleys_auth_token'),\n slug: googleStoreSlug\n },\n success: function (response) {\n var results = JSON.parse(response);\n\n if (results.id) {\n setAsStore(results.id);\n\n // console.log('klug dinein');\n // console.log(results.supportsdinein);\n if (results.supportsdinein != true) {\n $(\"label[for='home-dinein']\").hide();\n }\n if (results.supportsdispatch != true) {\n $(\"label[for='home-dispatch']\").hide();\n }\n if (results.supportscurbside != true) {\n $(\"label[for='home-curbside']\").hide();\n }\n $('#home-select-order-type').find('.data-order-type-location-id').text(results.id);\n $('#home-select-order-type').find('.data-order-type-location-sbt').text(results.supportsbaskettransfers);\n $('#home-select-order-type').foundation('open');\n }\n }\n });\n }\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n\nfunction fitToMarkerBounds_order(ttmapObj) {\n // console.log(\"fitToMarkerBounds\");\n\n if (order_markers.length) {\n var bbox = [\n [0, 0],\n [0, 0],\n ];\n var lats = [];\n var lngs = [];\n\n for (var i = 0; i < order_markers.length; i++) {\n var lnglat = order_markers[i].getLngLat();\n lats.push(lnglat.lng);\n lngs.push(lnglat.lat);\n }\n\n var minlat = Math.min.apply(null, lats),\n maxlat = Math.max.apply(null, lats);\n var minlng = Math.min.apply(null, lngs),\n maxlng = Math.max.apply(null, lngs);\n\n bbox = [\n [minlat, minlng],\n [maxlat, maxlng],\n ];\n\n ttmapObj.fitBounds(bbox, {\n padding: { top: 75, bottom: 75, left: 75, right: 75 },\n maxZoom: 12,\n });\n }\n} // end fitToMarkerBounds\n","var transitionDuration = 300;\nvar canCheckout = false;\nif (localStorage.getItem(\"charleys_override_can_checkout\")) {\n canCheckout = true;\n localStorage.removeItem(\"charleys_override_can_checkout\");\n}\nvar checkoutFrame = {};\nvar userHasSearched = false;\n\nvar $contentContainer = jQuery(\".wf-ordering-container\");\nvar templateRoot = \"/wp-content/themes/Charleys/parts/block/templates/\";\n\nvar phonesMasks = [\n { mask: \"(###) ###-####\" },\n { mask: \"(###) ###-##############\" },\n];\nvar dateMasks = [{ mask: \"##/##\" }];\nfunction toTitleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n}\n// Document Ready Actions\njQuery(document).ready(function ($) {\n\n //single use button util \n $('button[showsingleuseproducts]').click(function () {\n change_view(\"menu\");\n localStorage.setItem('readOnlyCategoryMenuItemCarryOver', 'CHOOSE FROM THE FOLLOWING:');\n });\n // console.log('doc loaded', $(\"[data-add-another-menu-item]\"));\n\n $(\"a[data-header-account-link]\").click(function (e) {\n e.preventDefault();\n if ($(\"#shopping-cart-view\").is(\":visible\")) {\n $(\"#shopping-cart-view\").foundation(\"close\");\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n }\n if ($(\"#product-detail-view\").is(\":visible\")) {\n $(\"#product-detail-view\").foundation(\"close\");\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n }\n var accountNavDropdown = $(this).attr(\"data-toggle\");\n if (isUserLoggedIn(true)) {\n // console.log(\"user is logged in\");\n $(\"#\" + accountNavDropdown).removeClass(\"hide\");\n $('.signInButton').addClass(\"hide\");\n $('.accountButton').removeClass(\"hide\");\n // console.log(accountNavDropdown);\n // $('#'+accountNavDropdown).foundation('toggle');\n } else {\n // console.log(\"user is NOT logged in\");\n // accountNavDropdown.addClass('hide');\n $(\"#\" + accountNavDropdown).addClass(\"hide\");\n $('.signInButton').removeClass(\"hide\");\n $('.accountButton').addClass(\"hide\");\n\n window.location.href = $(this).attr(\"href\");\n }\n });\n if (isUserLoggedIn(true)) {\n // console.log('#1');\n $('.accountButton').removeClass(\"hide\");\n $('.signInButton').addClass(\"hide\");\n } else {\n // console.log('#2');\n $('.accountButton').addClass(\"hide\");\n $('.signInButton').removeClass(\"hide\");\n }\n\n if ($(\".wf-ordering\").length) {\n $(\"[data-header-order-link]\").addClass(\"hide\");\n $(\"[data-header-ecomm-link]\").removeClass(\"hide\");\n\n // if the page is visited with a store id in tow, set the store to the customer's store as their entry point was likely from an \"order now\" link\n if (\n urlParam(\"storeid\") &&\n (urlParam(\"storeid\") !==\n localStorage.getItem(\"charleys_visitor_nearest_location_id\") ||\n urlParam(\"storeid\") !==\n localStorage.getItem(\"charleys_customer_store_location_id\"))\n ) {\n charleys_show_overloading();\n // console.log('-- Set Store --'); \n\n setAsStore(urlParam(\"storeid\"));\n\n setTimeout(function () {\n var hash = $(location).attr(\"hash\");\n history.replaceState &&\n history.replaceState(\n null,\n \"\",\n location.pathname +\n location.search\n .replace(/[\\?&]storeid=[^&]+/, \"\")\n .replace(/^&/, \"?\") +\n hash\n );\n // console.log('-- RELOAD --');\n location.reload();\n }, 750);\n }\n\n charleys_get_route();\n updateBasketDisplay();\n\n // De-sticky to the top navigation\n if ($(\"header.header\").length) {\n $(\"header.header\").foundation(\"_destroy\");\n }\n\n // Guest Checkout User Info\n $(\"#guest-first-name\").val(\n localStorage.getItem(\"charleys_customer_guest_first_name\")\n );\n $(\"#guest-last-name\").val(\n localStorage.getItem(\"charleys_customer_guest_last_name\")\n );\n $(\"#guest-email-address\").val(\n localStorage.getItem(\"charleys_customer_guest_email_address\")\n );\n $(\"#guest-phone-number\").val(\n localStorage.getItem(\"charleys_customer_guest_phone_number\")\n );\n\n $(\"#guest-signin-prompt\").submit(function (e) {\n e.preventDefault();\n });\n\n $(\"#guest-signin-prompt\").bind(\"formvalid.zf.abide\", function (e, target) {\n e.preventDefault();\n localStorage.setItem(\n \"charleys_customer_guest_first_name\",\n $(\"#guest-first-name\").val()\n );\n localStorage.setItem(\n \"charleys_customer_guest_last_name\",\n $(\"#guest-last-name\").val()\n );\n localStorage.setItem(\n \"charleys_customer_guest_email_address\",\n $(\"#guest-email-address\").val()\n );\n localStorage.setItem(\n \"charleys_customer_guest_phone_number\",\n $(\"#guest-phone-number\").val()\n );\n\n $(\"#guest-signin-prompt\").foundation(\"close\");\n change_view(\"checkout\");\n });\n\n $('#continue-as-guest').click(function (e) {\n e.preventDefault();\n });\n\n $(\".cart-favorite-button\").click(function () {\n $(\".cart-favorite-order\").foundation(\"open\");\n });\n\n $(\".cart-confirm-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_set_fave\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n basketid: localStorage.getItem(\"charleys_customer_basket_id\"),\n description: $(\"[data-cart-favorite-order-description]\").val(),\n },\n success: function (response) {\n fave_result = JSON.parse(response);\n\n if (fave_result.code == 200) {\n alert(fave_result.message);\n $(\".cart-favorite-order\").foundation(\"open\");\n } else if (fave_result.faves[0].id) {\n $(\"[data-fave-id]\").text(fave_result.faves[0].id);\n\n $(\".cart-favorite-button\").addClass(\"location-favorite-active\");\n }\n },\n });\n });\n\n // Remove reveal modal\n $(\".cart-favorite-order\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $favorite_reveal = new Foundation.Reveal($(\"#cart-favorite-order\"), {});\n\n // $(\"input#guest-phone-number\").keyup(function() {\n // $(this).val($(this).val().replace(/^(\\d{3})(\\d{3})(\\d+)$/, \"($1)$2-$3\"));\n // });\n $(\"input#guest-phone-number\").inputmask({\n mask: phonesMasks,\n greedy: false,\n definitions: { \"#\": { validator: \"[0-9]\", cardinality: 1 } },\n });\n\n // Reload upsell items on cart open\n $(\"#shopping-cart-view\").on(\"open.zf.reveal\", function () {\n if ($(\"#cart-upsell-items-list\").length) {\n $(\"#cart-upsell-items-list\").slick(\"refresh\");\n }\n $(\".reveal-overlay\").addClass('differnt-popup-overlay');\n });\n }\n\n //when [data-add-another-menu-item] button is clicked, load wf-ordering-menu template into view\n $(\"[data-add-another-menu-item]\").click(function () {\n change_view(\"menu\");\n });\n $(\"ul.menu li.specific-menu\").click(function () {\n // console.log('ahh');\n change_view(\"menu\");\n });\n\n //when .edit-button clicked, load .wf-ordering-start-order template\n $(\"[data-edit-location-button]\").click(function () {\n // change_view(\"start-order\");\n $(\"#shopping-cart-view\").foundation(\"close\");\n $(\"#checkout-edit-store-location\").foundation(\"open\");\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n });\n\n // Change store location form action\n $(\"#change-store-location\").click(function () {\n change_view(\"start-order\");\n });\n\n // Change order type\n $(\"#change-order-type\").click(function () {\n change_view(\"start-order\");\n });\n});\n\njQuery(window).on(\"hashchange\", function (e) {\n if (jQuery(\".wf-ordering\").length) {\n // console.log(\"hashchange\");\n charleys_get_route();\n // updateBasketDisplay();\n window.scrollTo(0, 0);\n }\n});\n\n// Changes the current view\nfunction change_view(hash) {\n // console.log(\"change view: \", hash);\n var $ = jQuery;\n\n\n\n if (window.location.href.indexOf(\"/order\") > -1) {\n history.pushState(null, null, \"#\" + hash);\n $(window).trigger(\"hashchange\");\n } else {\n window.location.href = \"/order/#\" + hash;\n }\n if ((hash == \"checkout\") && (hash != \"order\")) {\n $('body.page-id-18022').addClass('checkout-page');\n } else {\n $('body.page-id-18022').removeClass('checkout-page');\n }\n if (hash) {\n // console.log('sdghasdg');\n $('.homepage-order-status.order-tracker').addClass('hide');\n } else {\n const currentPath = window.location.pathname;\n\n // console.log('asdghasdg', currentPath);\n $('.homepage-order-status.order-tracker').removeClass('hide');\n }\n} // change_view\n\n// Routes view dependent on the url hash\nfunction charleys_get_route() {\n // console.log(\"routing\");\n var route = \"\";\n var $ = jQuery;\n\n if (window.location.hash) {\n route = window.location.hash.substr(1);\n }\n route = route.split(\"_\")[0];\n\n charleys_show_topnav();\n charleys_show_topnav_location();\n\n // Empty of all elements inside\n $contentContainer.empty();\n\n switch (route) {\n case \"menu\":\n case \"menu-product-view\":\n view_menu();\n break; // end view-menu\n case \"menu-cart\":\n view_menu(true);\n break;\n case \"checkout\":\n view_checkout();\n break;\n\n case \"order-status\":\n case \"order-complete\":\n view_order_complete();\n break;\n\n case \"signup\":\n view_signup();\n break; // end signup\n\n case \"login\":\n view_login();\n break; // end login\n\n case \"forgotpass\":\n // console.log(\"forgotpass\");\n view_forgotpassword();\n break;\n\n case \"signout\":\n view_signout();\n break; // end signout\n\n case \"account\":\n if (isUserLoggedIn()) {\n view_account();\n } else {\n change_view(\"login\");\n }\n break; // end my-account\n\n case \"account-manage\":\n if (isUserLoggedIn()) {\n view_account_manage();\n } else {\n change_view(\"login\");\n }\n break; // end my-account\n\n case \"account-recent\":\n if (isUserLoggedIn()) {\n view_account_recent();\n } else {\n change_view(\"login\");\n }\n break;\n\n case \"account-favorite\":\n if (isUserLoggedIn()) {\n view_account_favorite();\n } else {\n change_view(\"login\");\n }\n break;\n\n case \"account-rewards\":\n if (isUserLoggedIn()) {\n view_account_rewards();\n } else {\n change_view(\"login\");\n }\n break;\n\n // case \"location-detail\":\n // view_location_detail();\n // break;\n\n case \"\":\n case \"home\":\n case \"find-store\":\n case \"start-order\":\n default: // Ref: wp-content/themes/Charleys/assets/scripts/js/block/wf-ordering-view-start-order.js\n view_start_order();\n break;\n // view_home();\n // break; // end '', 'home', default\n } // end Switch (template routing & actions)\n}\n\n// check if auth token is still valid\nfunction isUserLoggedIn(softCheck = false) {\n var $ = jQuery;\n\n // console.log(\"check user statuss\");\n\n // Just look for the stored auth token, no need to query OLO to validate\n if (softCheck) {\n return Boolean(localStorage.getItem(\"charleys_auth_token\"));\n }\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n var isLoggedIn = false;\n\n return $.ajax({\n type: 'POST',\n url: ajax_url,\n async: false,\n data: {\n action: 'olo_user_authtoken_status',\n authtoken: localStorage.getItem('charleys_auth_token')\n },\n success: function (response) {\n isLoggedIn = (response === \"true\");\n if (!isLoggedIn) {\n signout();\n }\n return isLoggedIn;\n }\n });\n\n return isLoggedIn;\n\n } else {\n // console.log('#3');\n $('.accountButton').addClass(\"hide\");\n $('.signInButton').removeClass(\"hide\");\n return false;\n }\n\n}\n\n// View: Location Detail\n// function view_location_detail() {\n// var $ = jQuery;\n//\n// charleys_hide_topnav_location();\n// charleys_show_loading();\n//\n// $contentContainer\n// .load(templateRoot + \"wf-ordering-location-detail.html\", function () {\n// $('input[name=\"location-detail-order-type\"]').change(function () {\n// if (\n// $('input[name=\"location-detail-order-type\"]:checked').val() !==\n// \"dispatch\"\n// ) {\n// $(\"[data-search-pickup]\").removeClass(\"hide\");\n// $(\"[data-search-deliver]\").addClass(\"hide\");\n// $(\"#location-detail-order-location-search-building\").val(\"\");\n// } else {\n// $(\"[data-search-pickup]\").addClass(\"hide\");\n// $(\"[data-search-deliver]\").removeClass(\"hide\");\n// }\n// });\n//\n// // Hide/show schedule elements\n// $('input[name=\"location-detail-order-schedule\"]').change(function () {\n// if (\n// $('input[name=\"location-detail-order-schedule\"]:checked').val() ==\n// \"advance\"\n// ) {\n// $(\"#location-detail-schedule-time\").removeClass(\"hide\");\n// } else {\n// $(\"#location-detail-schedule-time\").addClass(\"hide\");\n// }\n// // console.log($('input[name=\"order-schedule\"]:checked').val());\n// });\n//\n// var todaysDate = new Date();\n// var tomorrowsDate = new Date().addDays(1);\n// var scheduleDates = getDates(todaysDate, new Date().addDays(45));\n// var daysOfWeek = [\n// \"Sunday\",\n// \"Monday\",\n// \"Tuesday\",\n// \"Wednesday\",\n// \"Thursday\",\n// \"Friday\",\n// \"Saturday\",\n// ];\n//\n// for (var i = 0; i < scheduleDates.length; i++) {\n// var dayValue =\n// scheduleDates[i].getFullYear() +\n// \"-\" +\n// zeroPad(scheduleDates[i].getMonth() + 1, 2) +\n// \"-\" +\n// zeroPad(scheduleDates[i].getDate(), 2);\n// var dayLabel =\n// daysOfWeek[scheduleDates[i].getDay()] +\n// \" \" +\n// (scheduleDates[i].getMonth() + 1) +\n// \"/\" +\n// scheduleDates[i].getDate();\n//\n// if (scheduleDates[i].getTime() === todaysDate.getTime()) {\n// dayLabel = \"Today\";\n// }\n// if (scheduleDates[i].getTime() === tomorrowsDate.getTime()) {\n// dayLabel = \"Tomorrow\";\n// }\n//\n// $(\"[data-order-location-detail-time-wanted-day]\").append(\n// '\"\n// );\n// }\n//\n// var timeSelection = createQuarterHourIntervals();\n//\n// for (var ii = 0; ii < timeSelection.length; ii++) {\n// $(\"[data-order-location-detail-time-wanted-time]\").append(\n// '\"\n// );\n// }\n//\n// $(\"select#location-detail-time-wanted-day\").change(function () {\n// if (\n// $(\n// 'select#location-detail-time-wanted-day option[value=\"' +\n// $(this).val() +\n// '\"]'\n// ).text() == \"Today\"\n// ) {\n// var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n// console.log(currentTime);\n// $(\"select#location-detail-time-wanted-time-slot option\").each(\n// function () {\n// if ($(this).val() < currentTime) {\n// $(this).addClass(\"hide\");\n// }\n// $(\"select#location-detail-time-wanted-time-slot\").val(\n// currentTime\n// );\n// }\n// );\n// } else {\n// $(\"select#location-detail-time-wanted-time-slot option\").each(\n// function () {\n// $(this).removeClass(\"hide\");\n// }\n// );\n// }\n// });\n//\n// $(\"select#location-detail-time-wanted-day\").trigger(\"change\");\n//\n// // Autocomplete for location search\n// if ($(\"#location-detail-order-location-search-delivery\").length) {\n// const inputD = $(\"#location-detail-order-location-search-delivery\")[0];\n// const options = {\n// // componentRestrictions: { country: \"us\" },\n// fields: [\"address_components\", \"geometry\"],\n// strictBounds: false,\n// // types: ['(regions)'],\n// };\n//\n// const autocompleteD = new google.maps.places.Autocomplete(\n// inputD,\n// options\n// );\n// autocompleteD.addListener(\"place_changed\", function () {\n// const place = autocompleteD.getPlace();\n// if (place.geometry) {\n// // ttmap.systemZoomChange = true;\n// // getLocations(place.geometry.location.lat(), place.geometry.location.lng(), '', true);\n// olo_get_nearby_locations(\n// place.geometry.location.lat(),\n// place.geometry.location.lng(),\n// \"\",\n// \"location-detail\"\n// );\n// // console.log(place);\n//\n// var components = {};\n// $.each(place.address_components, function (k, v1) {\n// $.each(v1.types, function (k2, v2) {\n// components[v2] = v1.long_name;\n// });\n// });\n//\n// if (components.street_number && components.route) {\n// $(\"#location-detail-order-location-search-streetaddress\").val(\n// components.street_number + \" \" + components.route\n// );\n// }\n// $(\"#location-detail-order-location-search-city\").val(\n// components.locality\n// );\n// $(\"#location-detail-order-location-search-zipcode\").val(\n// components.postal_code\n// );\n//\n// // console.log($('#order-location-search-streetaddress').val());\n// // console.log($('#order-location-search-city').val());\n// // console.log($('#order-location-search-zipcode').val());\n// }\n// });\n//\n// $(\"#location-detail-order-location-search-form\").submit(function (e) {\n// e.preventDefault();\n//\n// console.log(\"search locations\");\n//\n// $(\"#location-detail-order-location-search\").blur();\n//\n// var address = $(\"#location-detail-order-location-search\").val();\n// var geocoder = new google.maps.Geocoder();\n//\n// if (address.length) {\n// geocoder.geocode(\n// {\n// address: address,\n// },\n// function (results, status) {\n// console.log(\"GEOCODER STATUS \", status, results);\n// if (status == google.maps.GeocoderStatus.OK) {\n// // console.log(results);\n//\n// var components = {};\n// $.each(results[0].address_components, function (k, v1) {\n// $.each(v1.types, function (k2, v2) {\n// components[v2] = v1.long_name;\n// });\n// });\n//\n// // console.log('address components', components);\n//\n// if (components.street_number && components.route) {\n// $(\n// \"#location-detail-order-location-search-streetaddress\"\n// ).val(components.street_number + \" \" + components.route);\n// }\n// $(\"#location-detail-order-location-search-city\").val(\n// components.locality\n// );\n// $(\"#location-detail-order-location-search-zipcode\").val(\n// components.postal_code\n// );\n//\n// olo_get_nearby_locations(\n// results[0].geometry.location.lat(),\n// results[0].geometry.location.lng(),\n// \"\",\n// \"location-detail\"\n// );\n// } else {\n// $(\"#location-detail-order-location-search\").val(\"\");\n// charleys_hide_loading();\n// }\n// }\n// );\n// } else {\n// charleys_hide_loading();\n// }\n// });\n// // initMap();\n// }\n//\n// $(\"#location-detail-select-order-type-button\").click(function () {\n// //$('#' + view_context + '-select-order-type').foundation('close');\n//\n// var validAddress = true;\n// var isDelivery = Boolean(\n// $('input[name=\"location-detail-order-type\"]:checked').val() ==\n// \"dispatch\"\n// );\n// console.log(\"location id\");\n// console.log($(this).closest(\".location-item\").attr(\"data-location-id\"));\n// var vendorid = $(this)\n// .closest(\".location-item\")\n// .attr(\"data-location-id\");\n// var supportsbaskettransfers =\n// $(this)\n// .closest(\".location-item\")\n// .attr(\"data-supportsbaskettransfers\") == \"true\";\n//\n// // Delivery requires a full address, thus fails validation if no street address is present\n// if (\n// isDelivery &&\n// !$(\"#location-detail-order-location-search-streetaddress\").val()\n// .length\n// ) {\n// validAddress = false;\n// }\n//\n// console.log(\"validAddress\", validAddress);\n//\n// $(\"#location-detail-order-location-search\").removeClass(\"form-alert\");\n// $(\"#location-detail-order-location-search-error\").addClass(\"hide\");\n//\n// if (validAddress) {\n// charleys_show_loading();\n// setAddressComponents(\"location-detail\");\n// selectLocation(\n// vendorid,\n// supportsbaskettransfers,\n// false,\n// \"location-detail\"\n// );\n// } else {\n// $(\"#location-detail-order-location-search\").addClass(\"form-alert\");\n// $(\"#location-detail-order-location-search-error\").removeClass(\"hide\");\n// }\n// });\n//\n// $(\".location-favorite\").click(function (e) {\n// e.stopPropagation();\n// if (!$(this).hasClass(\"location-favorite-active\")) {\n//\n// olo_delete_fave_location(\n// $(\".location-favorite-active\")\n// .closest(\".location-item\")\n// .data(\"location-id\")\n// );\n//\n// // $(\".location-favorite-active\").find(\".fa-star\").addClass(\"fa-star-o\");\n//\n// // $(\".location-favorite-active\")\n// // .find(\".fa-star\")\n// // .removeClass(\"fa-star\");\n//\n// $(\".location-favorite-active\").removeClass(\n// \"location-favorite-active\"\n// );\n//\n// olo_set_fave_location(\n// $(this).closest(\".location-item\").data(\"location-id\")\n// );\n//\n// $(this).addClass('current-location');\n//\n// // $(this).find(\".fa-star-o\").addClass(\"fa-star\");\n// // $(this).find(\".fa-star-o\").removeClass(\"fa-star-o\");\n// $(this).addClass(\"location-favorite-active\");\n// }\n// });\n//\n// const params = new Proxy(new URLSearchParams(window.location.search), {\n// get: (searchParams, prop) => searchParams.get(prop),\n// });\n// var vendorid = params.vendorid;\n//\n// $.ajax({\n// type: \"POST\",\n// url: ajax_url,\n// data: {\n// action: \"olo_get_restaurant\",\n// restaurant_id: vendorid,\n// },\n// success: function (response) {\n// var result = JSON.parse(response);\n// console.log(\"result\");\n// console.log(result);\n// if (result.id) {\n// var vendorid = result.id;\n//\n// $(\"[data-location-id]\").attr(\"data-location-id\", result.id);\n// $(\"[data-location-name]\").text(result.name);\n// $(\"[data-location-address]\").text(result.streetaddress);\n// $(\"[data-location-city-zip]\").text(\n// result.city + \", \" + result.state + \" \" + result.zip\n// );\n// $(\"[data-location-phone]\").text(result.telephone);\n//\n// if (!result.canpickup) {\n// $(\"label[for='pickup']\").hide();\n// if ($(\"#pickup\").prop(\"checked\")) {\n// $(\"#pickup\").prop(\"checked\", false);\n// $(\"#curbside\").prop(\"checked\", true);\n// }\n// }\n//\n// if (!result.supportscurbside) {\n// $(\"label[for='curbside']\").hide();\n// if ($(\"#curbside\").prop(\"checked\")) {\n// $(\"#curbside\").prop(\"checked\", false);\n// $(\"#dispatch\").prop(\"checked\", true);\n// }\n// }\n//\n// if (!result.supportsdinein) {\n// $(\"label[for='dinein']\").hide();\n// if ($(\"#dinein\").prop(\"checked\")) {\n// $(\"#dinein\").prop(\"checked\", false);\n// $(\"#dispatch\").prop(\"checked\", true);\n// }\n// }\n//\n// if (!result.supportsdispatch) {\n// $(\"label[for='dispatch']\").hide();\n// }\n//\n// result.calendar.forEach(function (hourscalendar) {\n// var hourstype;\n//\n// switch (hourscalendar.type) {\n// case \"business\":\n// hourstype = \"dinein\";\n// break;\n// case \"curbsidepickup\":\n// hourstype = \"curbside\";\n// break;\n// case \"dispatch\":\n// hourstype = \"delivery\";\n// break;\n// }\n//\n// hourscalendar.ranges.forEach(function (range) {\n// var weekday = range.weekday.toLowerCase();\n//\n// // format the stupid nonstandard olo dates\n// var startDateRaw = range.start;\n// var endDateRaw = range.end;\n//\n// var jsStartDate = new Date(\n// startDateRaw.substring(0, 4),\n// startDateRaw.substring(4, 6),\n// startDateRaw.substring(6, 8),\n// startDateRaw.substring(9, 11),\n// startDateRaw.substring(12, 14),\n// 0,\n// 0\n// );\n// var jsEndDate = new Date(\n// endDateRaw.substring(0, 4),\n// endDateRaw.substring(4, 6),\n// endDateRaw.substring(6, 8),\n// endDateRaw.substring(9, 11),\n// endDateRaw.substring(12, 14),\n// 0,\n// 0\n// );\n//\n// var startTimeFormatted = jsStartDate.toLocaleString(\"en-US\", {\n// hour: \"numeric\",\n// minute: \"numeric\",\n// hour12: true,\n// });\n// var endTimeFormatted = jsEndDate.toLocaleString(\"en-US\", {\n// hour: \"numeric\",\n// minute: \"numeric\",\n// hour12: true,\n// });\n//\n// $(\"#hours-\" + hourstype)\n// .find(\"[data-hours-\" + weekday + \"]\")\n// .text(startTimeFormatted + \" - \" + endTimeFormatted);\n// });\n//\n// // set fave button status\n// $.ajax({\n// type: \"POST\",\n// url: ajax_url,\n// data: {\n// action: \"olo_get_fave_locations\",\n// authtoken: localStorage.getItem(\"charleys_auth_token\"),\n// },\n// success: function (response) {\n// result = JSON.parse(response);\n//\n// var is_fave = false;\n// if (\"favelocations\" in result) {\n// result.favelocations.every(function (fave) {\n// if (fave.vendorid == vendorid) {\n// is_fave = true;\n// }\n// return !is_fave;\n// });\n// }\n//\n// if (is_fave) {\n// $(\".location-favorite\").addClass(\n// \"location-favorite-active\"\n// );\n// $(\".location-favorite\")\n// .find(\".fa-star-o\")\n// .addClass(\"fa-star\");\n// $(\".location-favorite\")\n// .find(\".fa-star-o\")\n// .removeClass(\"fa-star-o\");\n// }\n// },\n// });\n// });\n// }\n//\n// charleys_hide_loading();\n// },\n// });\n//\n// $(\".order-button\").click(function () {\n// if (\n// $(\"#location-detail-select-order-type-embedded\").hasClass(\n// \"location-order-type-container-hidden\"\n// )\n// ) {\n// $(\"#location-detail-select-order-type-embedded\").removeClass(\n// \"location-order-type-container-hidden\"\n// );\n// } else {\n// $(\"#location-detail-select-order-type-embedded\").addClass(\n// \"location-order-type-container-hidden\"\n// );\n// }\n// });\n//\n// $(\".hours-tab-title\").click(function () {\n// $(\".hours-tab-title\").removeClass(\"active\");\n// $(this).addClass(\"active\");\n//\n// $(\".hours-tab-content\").addClass(\"hide\");\n// var contentid = $(this).attr(\"id\").replace(\"tab-\", \"\");\n// $(\"#\" + contentid).removeClass(\"hide\");\n// });\n// })\n// .hide()\n// .fadeIn(transitionDuration);\n// } // view_location_detail()\n\nfunction populate_user_restaurants(view_context) {\n var $ = jQuery;\n\n // console.log(\"populate user restaurants\", view_context);\n\n var restaurants = [];\n var location_count = 0;\n var locations_processed = 0;\n\n // if user navigated from location page, display the location selected there\n if (\n localStorage.getItem(\"charleys_location_page_location_id\") &&\n !localStorage.getItem(\"charleys_location_page_location_id\").includes(\"wp_\")\n ) {\n location_count++;\n // set selected\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_restaurant\",\n restaurant_id: localStorage.getItem(\n \"charleys_location_page_location_id\"\n ),\n get_calendar: true,\n },\n success: function (response, view_context) {\n var result = JSON.parse(response);\n // console.log(\"populate_user_restaurants 1\", result);\n if (result.id) {\n restaurants.push(result);\n locations_processed++;\n }\n\n if (locations_processed >= location_count) {\n set_location_selections(restaurants, view_context);\n }\n },\n });\n }\n\n // If there's already a selected location, display it\n if (\n localStorage.getItem(\"charleys_customer_store_location_id\") &&\n !localStorage.getItem(\"charleys_customer_store_location_id\").includes(\"wp_\")\n ) {\n location_count++;\n\n // Function to fetch restaurant info by ID\n function fetchRestaurantInfo(restaurantId) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_restaurant\",\n restaurant_id: restaurantId,\n get_calendar: true,\n }\n }).then(response => {\n var result = JSON.parse(response);\n // console.log(\"Restaurant info for ID\", restaurantId, result);\n return result;\n }).catch(() => {\n console.error(\"Failed to fetch restaurant info for ID\", restaurantId);\n return null;\n });\n }\n\n // Function to process all restaurants\n function processRestaurants(restaurantIds) {\n var restaurants = [];\n var locations_processed = 0;\n var location_count = restaurantIds.length; // Number of locations to process\n\n // Fetch info for each restaurant\n var fetchPromises = restaurantIds.map(restaurantId => fetchRestaurantInfo(restaurantId));\n\n // Wait for all AJAX calls to complete\n $.when.apply($, fetchPromises).then(function () {\n var results = Array.prototype.slice.call(arguments);\n\n results.forEach(result => {\n if (result && result.id) {\n // Make sure this restaurant isn't already in the list\n var exists = restaurants.some(restaurant => result.id == restaurant.id);\n\n if (!exists) {\n restaurants.push(result);\n }\n locations_processed++;\n }\n });\n\n // Check if all locations have been processed\n if (locations_processed >= location_count) {\n set_location_selections(restaurants);\n }\n });\n }\n\n // Get the customer store location ID and ensure it is processed first\n var customerStoreId = localStorage.getItem(\"charleys_customer_store_location_id\");\n\n if (customerStoreId) {\n fetchRestaurantInfo(customerStoreId).then(result => {\n var restaurantIds = [\n customerStoreId,\n localStorage.getItem(\"nearByStore1\"),\n localStorage.getItem(\"nearByStore2\"),\n localStorage.getItem(\"nearByStore3\")\n ].filter(Boolean); // Remove null or empty values\n\n processRestaurants(restaurantIds);\n });\n }\n }\n\n\n // If the user has favorite location(s), display them\n if (localStorage.getItem(\"charleys_auth_token\")) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_fave_locations\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n result = JSON.parse(response);\n\n // console.log(Boolean(result.favelocations));\n\n if (result.favelocations && result.favelocations.length) {\n location_count = location_count + result.favelocations.length;\n\n result.favelocations.forEach(function (fave) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_restaurant\",\n restaurant_id: fave.vendorid,\n get_calendar: true,\n },\n success: function (response) {\n var result = JSON.parse(response);\n // console.log(\n // \"populate_user_restaurants 3 fav locations\",\n // result\n // );\n if (result.id) {\n // make sure this restaurant isn't already in the list\n var exists = false;\n restaurants.forEach(function (restaurant) {\n if (result.id == restaurant.id) {\n exists = true;\n }\n });\n\n if (!exists) {\n restaurants.push(result);\n }\n\n locations_processed++;\n }\n\n if (locations_processed >= location_count) {\n set_location_selections(restaurants, view_context);\n charleys_hide_loading();\n }\n },\n });\n });\n } else {\n if (locations_processed >= location_count) {\n set_location_selections(restaurants, view_context);\n charleys_hide_loading();\n }\n }\n },\n });\n } else {\n if (locations_processed >= location_count) {\n set_location_selections(restaurants, view_context);\n charleys_hide_loading();\n }\n }\n //add functionality for map overlay\n function hideOverlay() {\n const overlay = document.querySelector('.location-map-overlay');\n // console.log(\"Overlay element:\", overlay);\n\n if (overlay) {\n // console.log(\"Overlay found, setting timeout\");\n setTimeout(() => {\n overlay.classList.add('hide');\n // console.log(\"Class 'hide' added to overlay\");\n }, 5000);\n } else {\n // console.log(\"Overlay not found\");\n }\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Hide overlay after 5 seconds\n hideOverlay();\n\n // Add event listener for the close button\n const closeButton = document.getElementById('closeMapOverlay');\n if (closeButton) {\n closeButton.addEventListener('click', function () {\n const overlay = document.querySelector('.location-map-overlay');\n if (overlay) {\n overlay.classList.add('hide');\n // console.log(\"Class 'hide' added to overlay via button click\");\n }\n });\n }\n\n // Add event listener for the search field\n const startOrderInput = document.getElementById('start-order-order-location-search');\n if (startOrderInput) {\n startOrderInput.addEventListener('click', function () {\n const overlay = document.querySelector('.location-map-overlay');\n if (overlay) {\n overlay.classList.add('hide');\n // console.log(\"Class 'hide' added to overlay via input click\");\n }\n });\n }\n\n} // populate_user_restaurants(view_context)\n\n// Move payment method to active state for checkout\nfunction usePayment(billingAccountId) {\n var $ = jQuery;\n\n // console.log(\"use payment\");\n\n $(\"[data-billing-schemes-active]\").append(\n $(\"#billing-account-\" + billingAccountId)\n );\n\n configPaymentOptions();\n}\n\n// Remove payment method from active state for checkout\nfunction removePayment(billingAccountId) {\n var $ = jQuery;\n\n // console.log(\"remove payment\");\n\n $(\"[data-billing-accounts-saved]\").append(\n $(\"#billing-account-\" + billingAccountId)\n );\n\n configPaymentOptions();\n}\n\n// Configure payment options\nfunction configPaymentOptions() {\n var $ = jQuery;\n\n var activeCount = $(\n \"[data-billing-schemes-active] .active-payment:not(.hide)\"\n ).length;\n\n if (activeCount > 0) {\n $(\"[data-billing-accounts-saved] .active-payment:not(.hide)\").each(\n function () {\n $(this).find(\"[data-split]\").removeClass(\"hide\");\n $(this).find(\"[data-use]\").addClass(\"hide\");\n }\n );\n $(\"[data-no-payments]\").addClass(\"hide\");\n } else {\n $(\"[data-billing-accounts-saved] .active-payment:not(.hide)\").each(\n function () {\n $(this).find(\"[data-split]\").addClass(\"hide\");\n $(this).find(\"[data-use]\").removeClass(\"hide\");\n }\n );\n $(\"[data-no-payments]\").removeClass(\"hide\");\n }\n\n if ($(\"[data-billing-accounts-saved] .active-payment:not(.hide)\").length) {\n $(\"#stored-payments\").removeClass(\"hide\");\n } else {\n $(\"#stored-payments\").addClass(\"hide\");\n }\n setPaymentSplit();\n}\n\n// View: Signup\nfunction view_signup() {\n var $ = jQuery;\n $contentContainer\n .load(templateRoot + \"wf-ordering-signup.html\", function () {\n activateSignUp($contentContainer.find(\"#punchh-signup-form\"));\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// View: Login\nfunction view_login() {\n var $ = jQuery;\n $contentContainer\n .load(templateRoot + \"wf-ordering-login.html\", function () {\n activateSignIn($contentContainer.find(\"#punchh-login-form\"));\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// Function to create signup form\nfunction activateSignUp($formItem) {\n var $ = jQuery;\n\n // charleys_hide_topnav();\n charleys_show_loading();\n\n $(\"input#punchh_phone\").inputmask({\n mask: phonesMasks,\n greedy: false,\n definitions: { \"#\": { validator: \"[0-9]\", cardinality: 1 } },\n });\n\n var signUpFormAbide = new Foundation.Abide($formItem, {});\n\n $(\"#basketGuid\").val(localStorage.getItem(\"charleys_customer_basket_id\"));\n\n $.when(olo_get_all_restaurants()).done(function (restaurants_json) {\n var $locationDropdown = $(\"#punchh_location\");\n var restaurants = JSON.parse(restaurants_json);\n\n $.each(restaurants.restaurants, function (key, restaurant) {\n $locationDropdown.append(\n '\"\n );\n });\n\n charleys_hide_loading();\n });\n\n $formItem.on(\"submit\", function (e) {\n e.preventDefault();\n });\n $formItem.on(\"formvalid.zf.abide\", function (e, target) {\n // alert('valid');\n charleys_show_loading();\n\n var signup_channel = 'MobileEmail';\n\n if (typeof punchh_signup_channel !== 'undefined' && punchh_signup_channel.length > 0) {\n signup_channel = punchh_signup_channel;\n }\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"punchh_signup_user\",\n signup_data: {\n first_name: $formItem.find('input[name=\"first_name\"]').val(),\n last_name: $formItem.find('input[name=\"last_name\"]').val(),\n email: $formItem.find('input[name=\"email\"]').val(),\n phone: $formItem\n .find('input[name=\"phone\"]')\n .val()\n .replace(/[^\\d.-]/g, \"\"),\n password: $formItem.find('input[name=\"password\"]').val(),\n password_confirmation: $formItem\n .find('input[name=\"password_confirm\"]')\n .val(),\n \"signup_channel\": signup_channel,\n // \"favourite_location_ids\" : $contentContainer.find('select[name=\"location\"]').val()\n },\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n\n // Check for errors\n if (result.data.errors !== undefined) {\n // errors found\n charleys_set_form_errors(result.data.errors, $formItem);\n charleys_hide_loading();\n } else {\n // success\n if (typeof result.data.access_token !== \"undefined\") {\n // Login User\n punchh_olo_sso(result.data.access_token, result.data.user_id, true);\n $(\"#login-rewards-prompt-view\").foundation(\"close\");\n $(\"#thanks-prompt-view\").foundation(\"open\");\n } else {\n // Throw generic error\n }\n }\n },\n });\n });\n}\n\n//function to create login form\nfunction activateSignIn($formItem) {\n var $ = jQuery;\n\n var loginFormAbide = new Foundation.Abide($formItem, {});\n\n // console.log($formItem.length);\n\n $(\"#basketGuid\").val(localStorage.getItem(\"charleys_customer_basket_id\"));\n\n $formItem.on(\"submit\", function (e) {\n e.preventDefault();\n });\n $formItem.on(\"formvalid.zf.abide\", function (e, target) {\n // alert('valid');\n // console.log(\"data\");\n charleys_show_loading();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"punchh_login_user\",\n login_data: {\n email: $(\"#punchh-login-form\").find('input[name=\"email\"]').val(),\n password: $(\"#punchh-login-form\")\n .find('input[name=\"password\"]')\n .val(),\n },\n recaptcha: $(\"#g-recaptcha-response\").val(),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n\n // Check for errors\n if (\n result.data == null ||\n \"errors\" in result.data ||\n \"error\" in result.data\n ) {\n // errors found\n var formerrors = {};\n if (result.data !== null && result.data.errors !== null) {\n formerrors = result.data.errors;\n }\n if (result.data !== null && result.data.error !== null) {\n formerrors = {\n base: result.data.error,\n };\n }\n charleys_set_form_errors(formerrors, $(\"#punchh-login-form\"));\n charleys_hide_loading();\n } else {\n // success\n if (typeof result.data.access_token !== \"undefined\") {\n // Login User\n punchh_olo_sso(result.data.access_token, result.data.user_id);\n // charleys_hide_loading();\n $(\"#login-rewards-prompt-view\").foundation(\"close\");\n } else {\n // Throw generic error\n }\n }\n },\n });\n });\n}\n// View: Forgot Password\nfunction view_forgotpassword() {\n var $ = jQuery;\n $contentContainer\n .load(templateRoot + \"wf-ordering-forgotpassword.html\", function () {\n activateForgotPassword(\n $contentContainer.find(\"#punchh-forgotpassword-form\")\n );\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\n// Function to create forgot password form\nfunction activateForgotPassword($formItem) {\n var $ = jQuery;\n\n var forgotPasswordFormAbide = new Foundation.Abide($formItem, {});\n\n $formItem.on(\"submit\", function (e) {\n e.preventDefault();\n });\n $formItem.on(\"formvalid.zf.abide\", function (e, target) {\n // alert('valid');\n charleys_show_loading();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"punchh_forgotpassword_user\",\n email: $formItem.find('input[name=\"email\"]').val(),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n\n $(\"[data-abide-success]\").show();\n $(\"[data-abide-error]\").hide();\n\n charleys_hide_loading();\n },\n });\n });\n}\n// View: Signout\nfunction view_signout() {\n signout();\n change_view(\"login\");\n}\n\nfunction signout() {\n var $ = jQuery;\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_user_authtoken\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) { },\n });\n\n // Remove Access Elements\n localStorage.removeItem(\"charleys_access_token\");\n localStorage.removeItem(\"charleys_user_id\");\n localStorage.removeItem(\"charleys_auth_token\");\n localStorage.removeItem(\"charleys_customer_membership_id\");\n clearBasketSession();\n $('.accountButton').addClass(\"hide\");\n $('.signInButton').removeClass(\"hide\");\n}\n\n// View: Home\nfunction view_home() {\n var $ = jQuery;\n\n charleys_show_topnav();\n charleys_hide_topnav_location();\n\n // TODO: include modifier costs in prices of order items\n\n $contentContainer\n .load(templateRoot + \"wf-ordering-home.html\", function () {\n charleys_show_loading();\n\n // Remove reveal modal\n $(\n \"#account-select-order-type, #home-select-order-type\",\n \"#menu-select-order-type\",\n \"#location-detail-select-order-type\"\n ).each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $select_order_type_reveal = new Foundation.Reveal(\n $(\"#home-select-order-type\"),\n {}\n );\n\n // Remove reveal modal\n $(\".home-add-favorite-order\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n $(\".home-delete-favorite-order\").each(function () {\n if (typeof $(this).attr(\"aria-hidden\") !== \"undefined\") {\n $(this).parent().remove();\n }\n });\n\n // Recreate reveal modals\n var $add_favorite_reveal = new Foundation.Reveal(\n $(\"#home-add-favorite-order\"),\n {}\n );\n var $delete_favorite_reveal = new Foundation.Reveal(\n $(\"#home-delete-favorite-order\"),\n {}\n );\n\n $(\"#home-select-order-type-button\").click(function () {\n if ($(\".data-order-type-recent-id\").text() !== \"\") {\n startRecentOrder($(\".data-order-type-recent-id\").text(), \"home\");\n }\n\n if ($(\".data-order-type-fave-id\").text() !== \"\") {\n startFavoriteOrder($(\".data-order-type-fave-id\").text(), \"home\");\n }\n\n if ($('.data-order-type-location-id:first').text() !== \"\") {\n startReferralOrder($('.data-order-type-location-id:first').text(), $('.data-order-type-location-sbt:first').text(), 'home');\n }\n });\n\n // Hide/show schedule elements\n $('input[name=\"home-order-schedule\"]').change(function () {\n if ($('input[name=\"home-order-schedule\"]:checked').val() == \"advance\") {\n $(\"#home-schedule-time\").removeClass(\"hide\");\n } else {\n $(\"#home-schedule-time\").addClass(\"hide\");\n }\n // console.log($('input[name=\"order-schedule\"]:checked').val());\n });\n\n var todaysDate = new Date();\n var tomorrowsDate = new Date().addDays(1);\n var scheduleDates = getDates(todaysDate, new Date().addDays(45));\n var daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n for (var i = 0; i < scheduleDates.length; i++) {\n var dayValue =\n scheduleDates[i].getFullYear() +\n \"-\" +\n zeroPad(scheduleDates[i].getMonth() + 1, 2) +\n \"-\" +\n zeroPad(scheduleDates[i].getDate(), 2);\n var dayLabel =\n daysOfWeek[scheduleDates[i].getDay()] +\n \" \" +\n (scheduleDates[i].getMonth() + 1) +\n \"/\" +\n scheduleDates[i].getDate();\n\n if (scheduleDates[i].getTime() === todaysDate.getTime()) {\n dayLabel = \"Today\";\n }\n if (scheduleDates[i].getTime() === tomorrowsDate.getTime()) {\n dayLabel = \"Tomorrow\";\n }\n\n $(\"[data-home-order-time-wanted-day]\").append(\n '\"\n );\n }\n\n var timeSelection = createQuarterHourIntervals();\n\n for (var ii = 0; ii < timeSelection.length; ii++) {\n $(\"[data-home-order-time-wanted-time]\").append(\n '\"\n );\n }\n\n $(\"select#home-time-wanted-day\").change(function () {\n if (\n $(\n 'select#home-time-wanted-day option[value=\"' + $(this).val() + '\"]'\n ).text() == \"Today\"\n ) {\n var currentTime = convert12to24Hour(formatAMPM(roundToNearest15()));\n // console.log(currentTime);\n $(\"select#home-time-wanted-time-slot option\").each(function () {\n if ($(this).val() < currentTime) {\n $(this).addClass(\"hide\");\n }\n $(\"select#home-time-wanted-time-slot\").val(currentTime);\n });\n } else {\n $(\"select#home-time-wanted-time-slot option\").each(function () {\n $(this).removeClass(\"hide\");\n });\n }\n });\n\n $(\"select#home-time-wanted-day\").trigger(\"change\");\n\n var totalLoadBeforeComplete = 2; // Will not remove loading overlay until all async elements have loaded\n\n // Set Hero Section\n\n var $sliderContainer = $(\"#order-hero-section\");\n $.each(heroSliderData, function (key, slider) {\n var $sliderItem = $(\"[data-hero-item-template].hide\").clone();\n\n $sliderItem.css({\n \"background-image\": \"url(\" + slider.background_image_url + \")\",\n });\n $sliderItem\n .find(\"[data-overlay-text]\")\n .html(decodeURIComponent(slider.overlay_text));\n\n $sliderItem.removeClass(\"hide\");\n $sliderContainer.append($sliderItem);\n });\n\n $(\"[data-hero-item-template].hide\").remove();\n\n if ($(\"#order-hero-section\").length) {\n $(\"#order-hero-section\").slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n arrows: false,\n dots: true,\n autoplay: false,\n // autoplaySpeed: 4000,\n });\n }\n\n // Retrieve Recent Orders\n if (isUserLoggedIn()) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_recent_orders\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n var results = JSON.parse(response);\n\n if (results.orders !== undefined && results.orders.length > 0) {\n totalLoadBeforeComplete++;\n\n // cache menu for each restaurant\n var menu_results_cache = {};\n\n var order_locations = [];\n results.orders.forEach(function (order) {\n if (\n !order_locations.length ||\n !order_locations.includes(order.vendorid)\n ) {\n order_locations.push(order.vendorid);\n }\n });\n\n var menus_cached = 0;\n order_locations.forEach(function (order_location) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: order_location,\n },\n success: function (response) {\n menu_results_cache[order_location] = JSON.parse(response);\n menus_cached++;\n\n if (menus_cached == order_locations.length) {\n results.orders.forEach(function (order) {\n if (\n (order.status == \"Completed\" ||\n order.status == \"In Progress\" ||\n order.status == \"Scheduled\") &&\n order.products.length > 0\n ) {\n var $recent_order = $(\n \"[data-recent-order-template].hide\"\n ).clone();\n $recent_order\n .find(\"[data-recent-order-title]\")\n .text(order.name);\n $recent_order\n .find(\"[data-recent-order-id]\")\n .text(order.id);\n $recent_order.find(\".recent-order-id\").text(order.id);\n $recent_order\n .find(\"[data-recent-order-vendor-id]\")\n .text(order.vendorid);\n $recent_order\n .find(\"[data-recent-order-vendor-name]\")\n .text(order.vendorname);\n\n var formatted_date =\n order.timeplaced.substring(0, 4) +\n \"-\" +\n order.timeplaced.substring(4, 6) +\n \"-\" +\n order.timeplaced.substring(6, 8) +\n order.timeplaced.substring(8);\n $recent_order\n .find(\"[data-recent-order-date]\")\n .text(formatted_date);\n $recent_order\n .find(\"[data-recent-order-status]\")\n .text(order.status);\n\n var status_processed = order.status\n .toLowerCase()\n .replace(/ /g, \"_\");\n $recent_order\n .find(\"[data-status='\" + status_processed + \"']\")\n .removeClass(\"hide\");\n\n // get metadata about favorite menu items from associated restaurant menu\n var menu_results = menu_results_cache[order.vendorid];\n\n order.products.forEach(function (product) {\n var matched = false;\n var product_calories;\n var product_price;\n var product_image_filename;\n\n menu_results.categories.every(function (category) {\n category.products.every(function (cat_product) {\n if (product.name == cat_product.name) {\n product_calories = cat_product.basecalories;\n // product_price = cat_product.cost;\n product_image_path = menu_results.imagepath;\n product_image_filename =\n cat_product.imagefilename;\n matched = true;\n }\n return !matched;\n });\n return !matched;\n });\n\n var $recent_item = $recent_order\n .find(\"[data-recent-order-item-template]\")\n .clone();\n\n if (product_image_filename != null) {\n $recent_item\n .find(\"img\")\n .attr(\n \"src\",\n product_image_path + product_image_filename\n );\n } else {\n $recent_item\n .find(\"img\")\n .attr(\n \"src\",\n \"/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\"\n );\n }\n\n $recent_item\n .find(\"[data-recent-order-item-name]\")\n .text(product.name);\n if (product_calories != null) {\n $recent_item\n .find(\"[data-recent-order-item-calories]\")\n .text(product_calories + \" Calories | \");\n }\n // $recent_item.find('[data-recent-order-item-price]').text(product_price);\n\n var choiceArray = [];\n product.choices.forEach(function (choice) {\n choiceArray.push(choice.name);\n });\n\n $recent_item.removeClass(\"hide\");\n $recent_item\n .find(\"[data-recent-order-item-choices]\")\n .text(choiceArray.join(\", \"));\n $recent_item.removeAttr(\n \"data-recent-order-item-template\"\n );\n $recent_order\n .find(\".recent-order-items\")\n .append($recent_item);\n });\n\n $recent_order.removeClass(\"hide\");\n $(\"[data-recent-orders-list]\").append($recent_order);\n\n $(\"[data-recent-orders-list]\").removeClass(\"hide\");\n $(\"[data-recent-orders-loading]\").addClass(\"hide\");\n\n $(\".recent-order-place-button\").click(function () {\n $(\".data-order-type-fave-id\").text(\"\");\n $(\".data-order-type-recent-id\").text(\n $(this)\n .closest(\".recent-order\")\n .find(\"[data-recent-order-id]\")\n .text()\n );\n window.scrollTo(0, 0);\n $(\"#home-select-order-type\").foundation(\"open\");\n });\n }\n });\n\n $(\".home-favorite-button\").click(function () {\n if ($(this).hasClass(\"location-favorite-active\")) {\n $(\n \".home-delete-favorite-order-favorite-order-id\"\n ).text(\n $(this).parent().find(\".favorite-order-id\").text()\n );\n $(\"#home-delete-favorite-order\").foundation(\"open\");\n } else {\n $(\".home-add-favorite-order-recent-order-id\").text(\n $(this).parent().find(\".recent-order-id\").text()\n );\n $(\"#home-add-favorite-order\").foundation(\"open\");\n }\n });\n\n $(\".home-confirm-add-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket_from_order\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n orderid: $(\n \".home-add-favorite-order-recent-order-id\"\n ).text(),\n },\n success: function (response) {\n result = JSON.parse(response);\n // console.log(response);\n // console.log(result);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_set_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n basketid: result.id,\n description: $(\n \"[data-favorite-order-description]\"\n ).val(),\n },\n success: function (response) {\n fave_result = JSON.parse(response);\n\n if (fave_result.code == 200) {\n alert(fave_result.message);\n $(\".home-add-favorite-order\").foundation(\n \"open\"\n );\n } else if (fave_result.faves[0].id) {\n window.location.reload();\n }\n },\n });\n },\n });\n });\n\n $(\".home-confirm-delete-favorite-button\").click(\n function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n faveid: $(\n \".home-delete-favorite-order-favorite-order-id\"\n ).text(),\n },\n success: function (response) {\n window.location.reload();\n },\n });\n }\n );\n\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n charleys_hide_loading();\n }\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n charleys_hide_loading();\n }\n },\n });\n });\n } else {\n $(\"[data-recent-orders-loading]\").addClass(\"hide\");\n $(\"[data-recent-orders-not-found]\").removeClass(\"hide\");\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n charleys_hide_loading();\n }\n },\n });\n }\n\n // Retrieve favorite orders\n // console.log(\"Retrieve favorite orders\");\n if (isUserLoggedIn()) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_faves\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n var results = JSON.parse(response);\n\n if (results.faves !== undefined && results.faves.length > 0) {\n totalLoadBeforeComplete++;\n\n // cache menu for each restaurant\n var menu_results_cache = {};\n\n var order_locations = [];\n results.faves.forEach(function (fave) {\n // if (!order_locations.contains(fave.vendorid)) {\n if (\n !order_locations.length ||\n !order_locations.includes(fave.vendorid)\n ) {\n order_locations.push(fave.vendorid);\n }\n });\n\n var menus_cached = 0;\n order_locations.forEach(function (order_location) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: order_location,\n },\n success: function (response) {\n menu_results_cache[order_location] = JSON.parse(response);\n menus_cached++;\n\n if (menus_cached == order_locations.length) {\n results.faves.forEach(function (fave) {\n var $fave_order = $(\n \"[data-favorite-order-template].hide\"\n ).clone();\n $fave_order\n .find(\"[data-favorite-order-title]\")\n .text(fave.name);\n $fave_order\n .find(\"[data-favorite-order-id]\")\n .text(fave.id);\n $fave_order.find(\".favorite-order-id\").text(fave.id);\n $fave_order\n .find(\"[data-favorite-order-vendor-id]\")\n .text(fave.vendorid);\n $fave_order\n .find(\"[data-favorite-order-vendor-name]\")\n .text(fave.vendorname);\n\n var menu_results = menu_results_cache[fave.vendorid];\n\n fave.products.forEach(function (product) {\n var matched = false;\n var product_calories;\n var product_price;\n var product_image_filename;\n\n menu_results.categories.every(function (category) {\n category.products.every(function (cat_product) {\n if (product.productid == cat_product.id) {\n product_calories = cat_product.basecalories;\n // product_price = cat_product.cost;\n product_image_path = menu_results.imagepath;\n product_image_filename =\n cat_product.imagefilename;\n matched = true;\n }\n return !matched;\n });\n return !matched;\n });\n\n var $fave_item = $fave_order\n .find(\"[data-favorite-order-item-template]\")\n .clone();\n\n if (product_image_filename != null) {\n $fave_item\n .find(\"img\")\n .attr(\n \"src\",\n product_image_path + product_image_filename\n );\n } else {\n $fave_item\n .find(\"img\")\n .attr(\n \"src\",\n \"/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg\"\n );\n }\n\n $fave_item\n .find(\"[data-favorite-order-item-name]\")\n .text(product.name);\n if (product_calories != null) {\n $fave_item\n .find(\"[data-favorite-order-item-calories]\")\n .text(product_calories + \" Calories | \");\n }\n // $fave_item.find('[data-favorite-order-item-price]').text(product_price);\n\n var choiceArray = [];\n product.choices.forEach(function (choice) {\n choiceArray.push(choice.name);\n });\n\n $fave_item.removeClass(\"hide\");\n $fave_item\n .find(\"[data-favorite-order-item-choices]\")\n .text(choiceArray.join(\", \"));\n $fave_item.removeAttr(\n \"data-favorite-order-item-template\"\n );\n $fave_order\n .find(\".favorite-order-items\")\n .append($fave_item);\n });\n\n $fave_order.removeClass(\"hide\");\n $(\"[data-favorite-orders-list]\").append($fave_order);\n\n $(\".account-favorite-button\").click(function () {\n $(\".data-delete-fave-id\").text(\n $(this).parent().find(\".favorite-order-id\").text()\n );\n $(\".account-delete-favorite-order\").foundation(\n \"open\"\n );\n });\n\n $(\".account-delete-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n faveid: $(\"[data-delete-fave-id]\").text(),\n },\n success: function (response) {\n window.location.reload();\n },\n });\n });\n\n $(\"[data-favorite-orders-loading]\").addClass(\"hide\");\n $(\"[data-favorite-orders-list]\").removeClass(\"hide\");\n\n $(\".fave-order-place-button\").click(function () {\n $(\".data-order-type-recent-id\").text(\"\");\n $(\".data-order-type-fave-id\").text(\n $(this)\n .closest(\".favorite-order\")\n .find(\"[data-favorite-order-id]\")\n .text()\n );\n window.scrollTo(0, 0);\n $(\"#home-select-order-type\").foundation(\"open\");\n });\n });\n\n $(\".home-favorite-button\").click(function () {\n if ($(this).hasClass(\"location-favorite-active\")) {\n $(\n \".home-delete-favorite-order-favorite-order-id\"\n ).text(\n $(this).parent().find(\".favorite-order-id\").text()\n );\n $(\"#home-delete-favorite-order\").foundation(\"open\");\n } else {\n $(\".home-add-favorite-order-recent-order-id\").text(\n $(this).parent().find(\".recent-order-id\").text()\n );\n $(\"#home-add-favorite-order\").foundation(\"open\");\n }\n });\n\n $(\".home-confirm-add-favorite-button\").click(function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket_from_order\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n orderid: $(\n \".home-add-favorite-order-recent-order-id\"\n ).text(),\n },\n success: function (response) {\n result = JSON.parse(response);\n // console.log(response);\n // console.log(result);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_set_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n basketid: result.id,\n description: $(\n \"[data-favorite-order-description]\"\n ).val(),\n },\n success: function (response) {\n fave_result = JSON.parse(response);\n\n if (fave_result.code == 200) {\n alert(fave_result.message);\n $(\".home-add-favorite-order\").foundation(\n \"open\"\n );\n } else if (fave_result.faves[0].id) {\n window.location.reload();\n }\n },\n });\n },\n });\n });\n\n $(\".home-confirm-delete-favorite-button\").click(\n function () {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_fave\",\n authtoken: localStorage.getItem(\n \"charleys_auth_token\"\n ),\n faveid: $(\n \".home-delete-favorite-order-favorite-order-id\"\n ).text(),\n },\n success: function (response) {\n window.location.reload();\n },\n });\n }\n );\n\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n charleys_hide_loading();\n }\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n charleys_hide_loading();\n }\n },\n });\n });\n } else {\n $(\"[data-favorite-orders-loading]\").addClass(\"hide\");\n $(\"[data-favorite-orders-not-found]\").removeClass(\"hide\");\n }\n },\n complete: function () {\n totalLoadBeforeComplete--;\n if (totalLoadBeforeComplete == 0) {\n charleys_hide_loading();\n }\n },\n });\n }\n })\n .hide()\n .fadeIn(transitionDuration);\n}\n\nfunction getCookie(name) {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop().split(';').shift();\n}\n\nfunction eraseCookie(name) {\n let date = new Date();\n date.setTime(date.getTime() + (-1));\n let expires = \"; expires=\" + date.toGMTString();\n document.cookie = name + \"=\" + \"\" + expires + \"; path=/\";\n}\n\n// Start a recent order\nfunction startRecentOrder(order_id, view_context) {\n var $ = jQuery;\n\n // console.log(\"Start Recent: \" + order_id);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket_from_order\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n orderid: order_id,\n },\n success: function (response) {\n result = JSON.parse(response);\n // console.log(response);\n // console.log(result);\n\n if (result.id) {\n // console.log(\"setting basket id to new basket: \" + result.id);\n localStorage.setItem(\"charleys_customer_basket_id\", result.id);\n localStorage.setItem(\n \"charleys_customer_store_location_id\",\n result.vendorid\n );\n\n $.when(olo_get_restaurant(result.vendorid)).done(function (\n restaurant_json\n ) {\n var restaurant = JSON.parse(restaurant_json);\n localStorage.setItem(\n \"charleys_customer_store_location_name\",\n restaurant.name\n );\n hideFakeMenuIfAddedLocation();\n\n });\n\n var validAddress = true;\n // var isDelivery = Boolean($('input[name=\"order-type\"]:checked').val() == 'dispatch');\n var isDelivery = Boolean(\n $('input[name=\"' + view_context + '-order-type\"]:checked').val() ==\n \"dispatch\"\n );\n var vendorid = result.vendorid;\n var supportsbaskettransfers = result.supportsbaskettransfers;\n\n // Delivery requires a full address, thus fails validation if no street address is present\n if (\n isDelivery &&\n !$(\"#\" + view_context + \"-order-location-search-streetaddress\").val()\n .length\n ) {\n validAddress = false;\n }\n\n // console.log(\"validAddress\", validAddress);\n\n $(\"#\" + view_context + \"-order-location-search\").removeClass(\n \"form-alert\"\n );\n $(\"#\" + view_context + \"-order-location-search-error\").addClass(\"hide\");\n\n if (validAddress) {\n charleys_show_loading();\n setAddressComponents(view_context);\n\n var showcartdialog = true;\n selectLocation(\n vendorid,\n supportsbaskettransfers,\n showcartdialog,\n view_context\n );\n } else {\n $(\"#\" + view_context + \"-order-location-search\").addClass(\n \"form-alert\"\n );\n $(\"#\" + view_context + \"-order-location-search-error\").removeClass(\n \"hide\"\n );\n }\n }\n },\n });\n}\n\n// Start a favorite order\nfunction startFavoriteOrder(fave_id, view_context) {\n var $ = jQuery;\n\n // console.log(\"Start Favorite: \" + fave_id);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket_from_fave\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n faveid: fave_id,\n },\n success: function (response) {\n result = JSON.parse(response);\n // console.log(response);\n // console.log(result);\n\n if (result.id) {\n // console.log(\"setting basket id to new basket: \" + result.id);\n localStorage.setItem(\"charleys_customer_basket_id\", result.id);\n localStorage.setItem(\n \"charleys_customer_store_location_id\",\n result.vendorid\n );\n\n $.when(olo_get_restaurant(result.vendorid)).done(function (\n restaurant_json\n ) {\n var restaurant = JSON.parse(restaurant_json);\n localStorage.setItem(\n \"charleys_customer_store_location_name\",\n restaurant.name\n );\n hideFakeMenuIfAddedLocation();\n\n });\n\n var validAddress = true;\n // var isDelivery = Boolean($('input[name=\"order-type\"]:checked').val() == 'dispatch');\n var isDelivery = Boolean(\n $('input[name=\"' + view_context + '-order-type\"]:checked').val() ==\n \"dispatch\"\n );\n var vendorid = result.vendorid;\n var supportsbaskettransfers = result.supportsbaskettransfers;\n\n // Delivery requires a full address, thus fails validation if no street address is present\n if (\n isDelivery &&\n !$(\"#\" + view_context + \"-order-location-search-streetaddress\").val()\n .length\n ) {\n validAddress = false;\n }\n\n // console.log(\"validAddress\", validAddress);\n\n $(\"#\" + view_context + \"-order-location-search\").removeClass(\n \"form-alert\"\n );\n $(\"#\" + view_context + \"-order-location-search-error\").addClass(\"hide\");\n\n if (validAddress) {\n charleys_show_loading();\n setAddressComponents(view_context);\n\n var showcartdialog = true;\n selectLocation(\n vendorid,\n supportsbaskettransfers,\n showcartdialog,\n view_context\n );\n } else {\n $(\"#\" + view_context + \"-order-location-search\").addClass(\n \"form-alert\"\n );\n $(\"#\" + view_context + \"-order-location-search-error\").removeClass(\n \"hide\"\n );\n }\n }\n },\n });\n}\n\n// Start a referral order\nfunction startReferralOrder(location_id, supportsbaskettransfers, view_context) {\n var $ = jQuery;\n\n // console.log('Start Referral: ' + location_id);\n localStorage.setItem('charleys_customer_store_location_id', location_id);\n\n var validAddress = true;\n var isDelivery = Boolean($('select[name=\"' + view_context + '-order-type\"]').val() == 'dispatch');\n var vendorid = location_id;\n\n // Delivery requires a full address, thus fails validation if no street address is present\n if (isDelivery && !$('#' + view_context + '-order-location-search-streetaddress').val().length) {\n validAddress = false;\n }\n\n // console.log('validAddress', validAddress);\n\n $('#' + view_context + '-order-location-search').removeClass('form-alert');\n $('#' + view_context + '-order-location-search-error').addClass('hide');\n\n if (validAddress) {\n charleys_show_loading();\n\n eraseCookie('charleys_google_store_slug');\n eraseCookie('charleys_google_handoff_mode');\n\n setAddressComponents(view_context);\n\n var showcartdialog = false;\n selectLocation(vendorid, supportsbaskettransfers, showcartdialog, view_context);\n\n } else {\n $('#' + view_context + '-order-location-search').addClass('form-alert');\n $('#' + view_context + '-order-location-search-error').removeClass('hide');\n }\n}\n\n// Set Payment Splits\nfunction setPaymentSplit() {\n var $ = jQuery;\n var splitCount = $(\n \"[data-billing-schemes-active] .active-payment:not(.hide)\"\n ).length;\n\n // Auto set split payments evenly between\n calcSplitPayment();\n\n if (splitCount > 1) {\n // console.log(\"split payment\");\n $(\"[data-split-totals]\").removeClass(\"hide\");\n $(\"[data-billing-schemes-active] .active-payment:not(.hide)\").each(\n function () {\n $(this).find(\"[data-split-input]\").removeClass(\"hide\");\n }\n );\n // Balance inputs while editing\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").on(\n \"keyup\",\n function () {\n // calcSplitPayment();\n balanceSplitPayment();\n }\n );\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").on(\n \"blur\",\n function () {\n fillEmptySplitPayment();\n }\n );\n } else {\n // console.log(\"single payment\");\n $(\"[data-split-totals]\").addClass(\"hide\");\n $(\"[data-billing-schemes-active] .active-payment:not(.hide)\").each(\n function () {\n $(this).find(\"[data-split-input]\").addClass(\"hide\");\n }\n );\n\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").off(\n \"keyup blur\"\n );\n }\n}\n\nfunction calcSplitPayment() {\n var $ = jQuery;\n\n // var totalToSplit = Number($(\"[data-cart-grand-total]\").attr(\"data-cart-grand-total\"));\n // var totalToSplit = Number($('[data-cart-grand-total]').attr('data-cart-grand-total').replace(',', ''));\n var totalToSplit = Number(\n $(\"[data-cart-grand-total]\").attr(\"data-cart-grand-total\")\n );\n\n var splitCount = $(\"[data-billing-schemes-active] .active-payment:not(.hide)\").length;\n var totalSplits = 0;\n var remainingBalance = 0;\n\n $(\"[data-total-to-split]\").text(\"$ \" + formatMoney(totalToSplit));\n\n // for (var i = 0; i < splitCount - 1; i++) {\n // var inputVal = Number(formatMoney((totalToSplit * 100) / splitCount / 100));\n // $(\n // $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\")[i]\n // ).val(formatMoney(inputVal));\n // totalSplits += inputVal;\n // }\n //\n // remainingBalance = totalToSplit - totalSplits;\n // $($(\"[data-billing-schemes-active] .active-payment:not(.hide) input\")[splitCount - 1]).val(formatMoney(remainingBalance));\n\n // console.log(\"total to split\", totalToSplit, formatMoney(totalToSplit));\n\n $($('[data-billing-schemes-active] .active-payment:not(.hide) input')[splitCount - 1]).val(formatMoney(totalToSplit));\n for (var i = 0; i < splitCount - 1; i++) {\n $($('[data-billing-schemes-active] .active-payment:not(.hide) input')[i]).val(formatMoney(0));\n }\n\n // $(\"[data-remaining-balance]\").text(\"$ 0.00\");\n}\n\n// Balance split payments\nfunction balanceSplitPayment() {\n var $ = jQuery;\n\n var totalToSplit = Number(\n $(\"[data-cart-grand-total]\").attr(\"data-cart-grand-total\")\n );\n var splitCount =\n $(\"[data-billing-schemes-active] .active-payment:not(.hide)\").length - 1;\n var totalSplits = 0;\n var remainingBalance = 0;\n\n $(\"[data-total-to-split]\").text(\"$ \" + formatMoney(totalToSplit));\n\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").each(\n function () {\n totalSplits += (Number($(this).val()) * 100) / 100;\n }\n );\n\n remainingBalance = (totalToSplit * 100 - totalSplits * 100) / 100;\n\n $(\"[data-remaining-balance]\").text(\"$ \" + formatMoney(remainingBalance));\n\n if (remainingBalance > 0 || remainingBalance < 0) {\n $(\".remaingin-balance-row\").each(function () {\n $(this).addClass(\"error\");\n });\n } else {\n $(\".remaingin-balance-row\").each(function () {\n $(this).removeClass(\"error\");\n });\n }\n} // balanceSplitPayment()\n\nfunction fillEmptySplitPayment() {\n var $ = jQuery;\n var totalToSplit = Number(\n $(\"[data-cart-grand-total]\").attr(\"data-cart-grand-total\")\n );\n var totalSplits = 0;\n\n // Get collective total\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").each(\n function () {\n if ($(this).val() !== \"\") {\n totalSplits += (Number($(this).val()) * 100) / 100;\n }\n }\n );\n\n $(\"[data-billing-schemes-active] .active-payment:not(.hide) input\").each(\n function () {\n if ($(this).val() === \"\") {\n $(this).val(formatMoney(totalToSplit - totalSplits));\n balanceSplitPayment();\n return false;\n }\n }\n );\n\n balanceSplitPayment();\n} // fillEmptySplitPayment()\n\n// Set CC Fields for CC payment entry\nfunction setCCFields() {\n var $ = jQuery;\n\n $(\".credit-card-info-div\").empty();\n $(\".cvv-info-div\").empty();\n $(\"#expiredate\").val(\"\");\n $(\"#postalCode\").val(\"\");\n\n $(\"#credit-card-add-card\").prop(\"disabled\", true);\n $(\"#credit-card-add-card\").removeClass(\"hide\");\n $(\"#credit-card-update-card\").prop(\"disabled\", true);\n $(\"#credit-card-update-card\").addClass(\"hide\");\n\n var cardFieldStyle =\n \"width: 100%;\" +\n \"height: 100%;\" +\n \"margin: 0;\" +\n \"padding: 8px;\" +\n \"border-width: 0px;\" +\n \"border-radius: 0;\" +\n \"background-color: #fff;\" +\n \"font-size: 16px;\" +\n \"font-weight: 400;\" +\n \"line-height: 1.5;\" +\n \"color: #000;\" +\n \"appearance: none;\";\n\n checkoutFrame = new Olo.CheckoutFrame({\n cardElement: \"credit-card-info-div\",\n cvvElement: \"cvv-info-div\",\n });\n\n var checkoutFrameInit = {\n brandAccessId: brandAccessId, // global set in wp-content/themes/Charleys/parts/block/content-wf-ordering.php\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n styles: {\n \"cardNumber\": cardFieldStyle,\n \"cvv\": cardFieldStyle,\n },\n cardNumber: {\n placeholder: \"Card Number\",\n },\n cvv: {\n placeholder: \"CVV\",\n },\n };\n\n // console.log(\"checkoutframeinit: \", checkoutFrameInit);\n\n checkoutFrame.initialize(checkoutFrameInit);\n} // setCCFields\n\nfunction setCheckoutError(errorMessage) {\n var $ = jQuery;\n if (errorMessage == \"\") {\n errorMessage =\n \"We were unable to process your order at this time. Plase insure the information provided below is correct.\";\n }\n\n $(\".checkout-error [data-error-message]\").text(errorMessage);\n $(\".checkout-error\").removeClass(\"hide\");\n\n $(\"html, body\").animate({ scrollTop: 0 }, 500);\n}\n\nfunction clearCheckoutError() {\n var $ = jQuery;\n $(\".checkout-error [data-error-message]\").text(\"\");\n $(\".checkout-error\").addClass(\"hide\");\n}\n\n// function punchh_get_all_restaurants() {\n// var $ = jQuery;\n// //olo_get_all_restaurants\n// return $.ajax({\n// type: 'POST',\n// url: ajax_url,\n// data: {\n// action : 'punchh_get_all_restaurants'\n// },\n// success: function(response) {\n// // console.log(response);\n// // console.log(JSON.parse(response));\n// //\n// // var results = JSON.parse(response);\n// },\n// complete: function() {\n//\n// }\n// });\n// }\n\nfunction olo_get_rewards_schemes() {\n var $ = jQuery;\n\n if (\n localStorage.getItem(\"charleys_auth_token\") &&\n localStorage.getItem(\"charleys_customer_basket_id\")\n ) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_rewards_schemes\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n if (\"schemes\" in result) {\n if (\"membership\" in result.schemes[0]) {\n if (result.schemes[0].membership !== null) {\n localStorage.setItem(\n \"charleys_customer_membership_id\",\n result.schemes[0].membership.id\n );\n // olo_get_qualifying_rewards();\n }\n }\n }\n },\n complete: function () { },\n });\n } else {\n // No account, No Rewards\n return [JSON.stringify({})];\n }\n}\n\nfunction olo_get_applied_rewards() {\n var $ = jQuery;\n if (localStorage.getItem(\"charleys_customer_basket_id\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_applied_rewards\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n membershipid: localStorage.getItem(\"charleys_customer_membership_id\"),\n },\n success: function (response) {\n console.log(response);\n },\n complete: function () { },\n });\n } else {\n // No account, No Rewards\n return [JSON.stringify({})];\n }\n}\n\nfunction olo_get_qualifying_rewards() {\n var $ = jQuery;\n\n if (\n localStorage.getItem(\"charleys_auth_token\") &&\n localStorage.getItem(\"charleys_customer_basket_id\") &&\n localStorage.getItem(\"charleys_customer_membership_id\")\n ) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_qualifying_rewards\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n membershipid: localStorage.getItem(\"charleys_customer_membership_id\"),\n },\n success: function (response) {\n console.log(response);\n },\n complete: function () { },\n });\n } else {\n // No account, No Rewards\n return [JSON.stringify({})];\n }\n}\n\nfunction olo_add_reward_to_basket(reward_reference) {\n var $ = jQuery;\n\n if (\n localStorage.getItem(\"charleys_auth_token\") &&\n localStorage.getItem(\"charleys_customer_basket_id\")\n ) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_add_reward_to_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n membershipid: localStorage.getItem(\"charleys_customer_membership_id\"),\n references: reward_reference,\n },\n success: function (response) {\n // console.log(response);\n\n var result = JSON.parse(response);\n\n if (\"code\" in result) {\n setCheckoutError(result.message);\n } else {\n clearCheckoutError();\n }\n },\n complete: function () { },\n });\n } else {\n // No account, No Rewards\n return [JSON.stringify({})];\n }\n}\n\nfunction olo_remove_reward_to_basket(rewardid) {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_customer_basket_id\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_remove_reward_to_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n rewardId: rewardid,\n },\n success: function (response) {\n console.log(response);\n },\n complete: function () { },\n });\n } else {\n // No account, No Rewards\n return [JSON.stringify({})];\n }\n}\n\nfunction olo_get_gift_card_balance(billingSchemeId, cardnumber, pin) {\n var $ = jQuery;\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_gift_card_balance\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n billingSchemeId: billingSchemeId,\n cardnumber: cardnumber,\n pin: pin,\n },\n success: function (response) {\n // console.log(JSON.parse(response));\n },\n complete: function () { },\n });\n}\n\nfunction olo_get_all_restaurants() {\n var $ = jQuery;\n //olo_get_all_restaurants\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_all_restaurants\",\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n //\n // var results = JSON.parse(response);\n },\n complete: function () { },\n });\n}\n\nfunction olo_get_user_details() {\n var $ = jQuery;\n // olo_get_user_details\n if (localStorage.getItem(\"charleys_auth_token\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_user_details\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) { },\n });\n } else {\n return false;\n }\n}\n\nfunction olo_get_user_contact_details() {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_user_contact_details\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) { },\n });\n } else {\n return false;\n }\n}\n\nfunction olo_get_user_communication_details() {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_user_communication_details\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) { },\n });\n } else {\n return false;\n }\n}\n\nfunction olo_get_billing_accounts() {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_billing_accounts\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) { },\n });\n } else {\n return [JSON.stringify({})];\n }\n}\n\n// Sets billing account to default\nfunction olo_default_billing_account(billingAccountId) {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_default_billing_account\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n billingAccountId: billingAccountId,\n },\n success: function (response) { },\n });\n } else {\n return [JSON.stringify({})];\n }\n}\n\n// Deletes Billing Account\nfunction olo_delete_billing_account(billingAccountId) {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_auth_token\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_billing_account\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n billingAccountId: billingAccountId,\n },\n success: function (response) { },\n });\n } else {\n return [JSON.stringify({})];\n }\n}\n\nfunction olo_get_billing_schemes() {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_customer_basket_id\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_billing_schemes\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n //\n // var results = JSON.parse(response);\n },\n complete: function () { },\n });\n } else {\n return false;\n }\n}\n\nfunction olo_validate_basket() {\n var $ = jQuery;\n\n if (localStorage.getItem(\"charleys_customer_basket_id\")) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_validate_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n //\n // var results = JSON.parse(response);\n // console.log('validate basket', response);\n },\n complete: function () { },\n });\n } else {\n return false;\n }\n}\n\nfunction olo_get_ccsf_payment_token() {\n var $ = jQuery;\n // if(!localStorage.getItem('charleys_customer_ccsf_token')) {\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_ccsf_payment_token\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n //\n // var results = JSON.parse(response);\n //\n // localStorage.setItem('charleys_customer_ccsf_token', results.accesstoken);\n },\n complete: function () { },\n });\n // } else {\n // return [JSON.stringify({\n // accesstoken: localStorage.getItem('charleys_customer_ccsf_token')\n // })];\n // }\n}\n\nfunction addItemToBasket() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n // console.log(\"add item\");\n\n var productSelections = {\n chainproductid: Number(\n $(\"#item-add-to-cart\").attr(\"data-menu-selection-chain-id\")\n ),\n quantity: Number($(\"#product-item-qty\").val()),\n choices: [],\n recipient: $(\"#item-customer-name\").val(),\n };\n\n var $productView = $(\"#product-detail-view\");\n var productVariant = [];\n\n // Get Primary Choices\n\n $productView.find(\"input[data-item-selector]:checked\").each(function () {\n var choiceQty = 1;\n var choiceID = $(this).attr(\"id\");\n var chainOptionID = $(this).attr(\"data-chainoptionid\");\n\n // Only proceed if a chain option ID is present\n if (chainOptionID) {\n\n var choice = {\n name: $('label[for=\"' + choiceID + '\"] strong').text(),\n chainchoiceid: chainOptionID,\n quantity: choiceQty,\n };\n\n if (!$(this).is(\"[data-item-selector-modifier]\")) {\n productSelections.choices.push(choice);\n }\n\n var modChoices = getSelectedModifiers($(this).attr('id'));\n\n if (modChoices.length) {\n choice.choices = modChoices;\n }\n }\n });\n\n // console.log(productVariant);\n\n var itemPrice = Number(\n $(\"#item-add-to-cart\")\n .find(\"[data-item-selection-price]\")\n .text()\n .replace(\"$ \", \"\")\n );\n\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n var addToCartData = {\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"USD\",\n value: itemPrice,\n items: [\n {\n item_id: $(\"#item-add-to-cart\").attr(\"data-menu-selection-id\"),\n item_name: $(\"#product-detail-view\")\n .find(\"[data-product-view-title]:first\")\n .text(),\n affiliation: localStorage.getItem(\n \"charleys_customer_store_location_name\"\n ), //$('[data-menu-selected-store]:first').text(),\n price: itemPrice,\n item_variant: productVariant.join(\", \"),\n quantity: Number($(\"#product-item-qty\").val()),\n },\n ],\n },\n };\n // console.log(\"GA4:\", addToCartData);\n window.dataLayer.push(addToCartData);\n\n // console.log(JSON.stringify(productSelections));\n // return;\n\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action: 'olo_add_to_basket',\n productSelections: JSON.stringify(productSelections),\n basketGuid: localStorage.getItem('charleys_customer_basket_id')\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n\n if ('code' in result) {\n charleys_hide_loading();\n $('[data-add-to-cart-message]').text(result.message);\n $('[data-add-to-cart-message]').removeClass('hide');\n } else {\n $('[data-add-to-cart-message]').addClass('hide');\n // Close menu selection modal\n $('#product-detail-view').foundation('close');\n // Reset the current state to the menu view\n if (window.location.hash !== '#menu-product-view') {\n history.replaceState({}, '', window.location.pathname + '#menu');\n }\n $.when(\n updateBasketDisplay(true)\n ).done(function () {\n charleys_hide_loading();\n });\n }\n },\n complete: function () {\n\n }\n });\n}\n\n// New recursion method\nfunction getSelectedModifiers(choiceID) {\n var $ = jQuery.noConflict();\n var selectedModifiers = [];\n\n // capture product modifiers\n if ($('[data-modifier-for=\"' + choiceID + '\"]').length) {\n\n // Find the modifiers for this selection\n $('[data-modifier-for=\"' + choiceID + '\"]').each(function () {\n\n var modifierID = $(this).attr('data-modifier-id');\n\n // Get the selected options for this modifier\n $('input[data-option-for-modifier=\"' + modifierID + '\"]:checked').each(function () {\n\n var subChoiceQty = 1;\n var subChoiceId = $(this).attr(\"id\");\n var subChoice = [];\n var subChoiceChainID = $(this).attr(\"data-chainoptionid\");\n\n var subChoiceName = $('label[for=\"' + subChoiceId + '\"] strong').text()\n var subChoiceModLevel = Number($(this).attr('data-modifier-level'));\n\n // Adjust qty\n if ($('[data-qty-for=\"' + subChoiceId + '\"]').length) {\n if (\n $('[data-qty-for=\"' + subChoiceId + '\"]').is(\n 'input[type=\"radio\"]'\n )\n ) {\n subChoiceQty = Number(\n $('[data-qty-for=\"' + subChoiceId + '\"]:checked').val()\n );\n } else {\n subChoiceQty = Number(\n $('[data-qty-for=\"' + subChoiceId + '\"]').val()\n );\n }\n }\n\n var subChoice = {\n // name: subChoiceName, // Debug field (optioal)\n chainchoiceid: subChoiceChainID,\n quantity: subChoiceQty,\n // modifierLevel: subChoiceModLevel, // Debug field (optioal)\n choices: getSelectedModifiers(subChoiceId)\n };\n\n selectedModifiers.push(subChoice);\n\n });\n\n });\n }\n\n return selectedModifiers;\n}\n\nfunction updateItemInBasket() {\n var $ = jQuery;\n\n charleys_show_loading();\n\n // console.log(\"update item\");\n\n var productSelections = {\n productid: Number(\n $(\"#item-add-to-cart-update\").attr(\"data-update-product-id\")\n ),\n quantity: Number($(\"#product-item-qty\").val()),\n choices: [],\n recipient: $(\"#item-customer-name\").val(),\n };\n\n var $productView = $(\"#product-detail-view\");\n var productVariant = [];\n\n $productView\n .find(\n \"input[data-item-selector]:checked, input[data-item-selector-modifier]:checked\"\n )\n .each(function () {\n var choiceQty = 1;\n var choiceID = $(this).attr(\"id\");\n var chainOptionID = $(this).attr(\"data-chainoptionid\");\n\n if (chainOptionID) {\n if ($('[data-qty-for=\"' + choiceID + '\"]').length) {\n if (\n $('[data-qty-for=\"' + choiceID + '\"]').is('input[type=\"radio\"]')\n ) {\n choiceQty = Number(\n $('[data-qty-for=\"' + choiceID + '\"]:checked').val()\n );\n } else {\n choiceQty = Number($('[data-qty-for=\"' + choiceID + '\"]').val());\n }\n }\n\n var choice = {\n choiceid: $(this).attr(\"id\"),\n quantity: choiceQty,\n };\n\n productSelections.choices.push(choice);\n productVariant.push($(this).next(\"label\").find(\"strong\").text());\n }\n });\n\n // console.log(productVariant);\n\n var itemPrice = Number(\n $(\"#item-add-to-cart\")\n .find(\"[data-item-selection-price]\")\n .text()\n .replace(\"$ \", \"\")\n );\n\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n var addToCartData = {\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"USD\",\n value: itemPrice,\n items: [\n {\n item_id: $(\"#item-add-to-cart\").attr(\"data-menu-selection-id\"),\n item_name: $(\"#product-detail-view\")\n .find(\"[data-product-view-title]:first\")\n .text(),\n affiliation: localStorage.getItem(\n \"charleys_customer_store_location_name\"\n ), //$('[data-menu-selected-store]:first').text(),\n price: itemPrice,\n item_variant: productVariant.join(\", \"),\n quantity: Number($(\"#product-item-qty\").val()),\n },\n ],\n },\n };\n // console.log(\"GA4:\", addToCartData);\n window.dataLayer.push(addToCartData);\n\n productSelections = {\n products: [productSelections],\n };\n\n // console.log(JSON.stringify(productSelections));\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_update_basket_product\",\n productSelections: JSON.stringify(productSelections),\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n },\n complete: function () {\n // Close menu selection modal\n $(\"#product-detail-view\").foundation(\"close\");\n // Reset the current state to the menu view\n if (window.location.hash !== \"#menu-product-view\") {\n history.replaceState({}, \"\", \"#menu\");\n }\n updateBasketDisplay(true);\n charleys_hide_loading();\n },\n });\n}\nvar $ = jQuery;\n\nfunction selectAllDefaultSelectsion(element, currentInputId) { \n console.log('triggered selectAllDefaultSelectsion function');\n var $ = jQuery;\n\n $matchingChildFieldset = $(element).closest('.product-option-group').find(`fieldset[data-modifier-for=\"${currentInputId}\"]`);\n if ($matchingChildFieldset.length > 0) {\n // console.log('matchingChildFieldset found');\n $defaultInputBoxes = $matchingChildFieldset.find('span input[radiodefualtcheckedstate]');\n if ($defaultInputBoxes.length > 0) {\n // console.log('$defaultInputBoxes', $defaultInputBoxes);\n\n $defaultInputBoxes.each(function () { // Iterate through each element in $defaultInputBoxes\n const $defaultInputBox = $(this); // Wrap the current element in jQuery\n // const $defaultInputBoxesLabel = $defaultInputBox.siblings('label'); // scope this to only look at the single item\n // console.log('$defaultInputBox', $defaultInputBox);\n\n $defaultInputBox.prop('checked', true);\n $defaultInputBox.parent().addClass('selected');\n\n //see if clindren have default selects\n const defaultInputBoxesId = $defaultInputBox.attr('id');\n $matchingChildChildFieldset = $defaultInputBox.closest('fieldset').siblings(`fieldset[data-modifier-for=\"${defaultInputBoxesId}\"]`);\n\n if ($matchingChildChildFieldset.length > 0) {\n $childDefaultInputBoxes = $matchingChildChildFieldset.find('span input[radiodefualtcheckedstate]');\n if ($childDefaultInputBoxes.length > 0) {\n // console.log('$childDefaultInputBoxes', $childDefaultInputBoxes); \n\n $childDefaultInputBoxes.prop('checked', true);\n $childDefaultInputBoxes.parent().addClass('selected');\n }\n } \n //ingredent popup\n $matchingChildChildIngredientFieldset = $defaultInputBox.closest('.product-modifier-groups').siblings('#main-ingredient-customizer-information-parent').find(`fieldset[data-modifier-for=\"${defaultInputBoxesId}\"]`);\n // console.log('$matchingChildChildIngredientFieldset ', $matchingChildChildIngredientFieldset);\n\n if($matchingChildChildIngredientFieldset.length > 0) {\n $childDefaultInputBoxes = $matchingChildChildIngredientFieldset.find('span input[radiodefualtcheckedstate]');\n if ($childDefaultInputBoxes.length > 0) {\n // console.log('$childDefaultInputBoxes', $childDefaultInputBoxes); \n\n $childDefaultInputBoxes.prop('checked', true);\n $childDefaultInputBoxes.parent().addClass('selected');\n }\n }\n });\n }\n // validateItemForm();\n\n }\n}\nfunction validateDrinkAndSidePopupPresentation() {\n var $ = jQuery;\n // console.log('check buttons');\n\n let $drinkComboButton = $(`[combo-drink-selection-customizer-information-popup].drink-modifier-parents`);\n let $sideComboButton = $(`[combo-side-selection-customizer-information-popup].side-modifier-parents`);\n if ($drinkComboButton.is('[data-is-valid=\"false\"][data-is-required=\"true\"]') || $sideComboButton.is('[data-is-valid=\"false\"][data-is-required=\"true\"]')) {\n // console.log('drink/side is not valid');\n $('button#combo-side-selection-customizer-information-popup').each(function () {\n $(this).removeClass('checked');\n $(this).find('div.selected-info').empty();\n $(this).find('span[duplicated-data-mandatory-label]').removeClass('valid').text('required');\n });\n }\n}\nfunction validateItemForm(comboChange, inputChanged = jQuery(this), useInput) {\n var $ = jQuery;\n // console.log(\"validateItemForm\"); \n //\n //\n if (comboChange) {\n console.log('combo change');\n\n let $ = jQuery;\n jQuery('[data-product-option-group]:not(.hide) .main-ingredient-customizer-information-parent ul.selected-info li').remove();\n\n //DrinkAndSidePopupPresentation\n let $drinkComboButton = $(`[combo-drink-selection-customizer-information-popup].drink-modifier-parents`);\n let $sideComboButton = $(`[combo-side-selection-customizer-information-popup].side-modifier-parents`);\n $drinkComboButton.attr('data-is-valid', 'false');\n $sideComboButton.attr('data-is-valid', 'false');\n validateDrinkAndSidePopupPresentation();\n\n\n let $noSelectedOptions = $('.product-modifier:not(.option-hide) input').parent('.selected');\n\n $noSelectedOptions.each(function () {\n // Get legend and label text for the current element\n let legendsName = $(this).parent().find('legend').text();\n // let labelsObject = $(this).find('label');\n let labelsName = $(this).find('label').text();\n\n\n // Find the fieldset that matches the legend \n let $transferNoSelectedOptionsToMe = $('.product-modifier.option-hide').filter(function () {\n let legendMatch = $(this).find('legend').text() === legendsName;\n return legendMatch; // Return true if both match\n });\n\n // Find the label that matches labelsName within $transferNoSelectedOptionsToMe\n let matchingLabel = $transferNoSelectedOptionsToMe.find('label').filter(function () {\n return $(this).text() === labelsName;\n });\n\n // // Console log the result for each iteration\n // console.log('$transferNoSelectedOptionsToMe', $transferNoSelectedOptionsToMe);\n // console.log('Matching label:', matchingLabel);\n if (matchingLabel.length) {\n matchingLabel.siblings('input').prop('checked', true);\n // matchingLabel.parent().addClass('selected');\n }\n\n if (matchingLabel.is('.ingredient-modifier-children.option-hide > [data-product-option-modifier-option-for-ingredient-selection] > label')) {\n // console.log('ahhh', labelsName, matchingLabel, 'a', matchingLabel.parent().parent().parent().find('input'));\n matchingLabel.siblings('input').prop('checked', true);\n // matchingLabel.parent().parent().parent().parent('.ingredient-modifier-parents').addClass('dsgasdgasdg'); \n matchingLabel.parent().parent().parent('[data-product-option-modifier-option-for-ingredient-selection]').children('input').prop('checked', true);\n // matchingLabel.parent().parent().parent('[data-product-option-modifier-option-for-ingredient-selection]').find('input').prop('checked', true);\n if (labelsName.trim().toLowerCase() === 'regular') {\n return; // Continue to the next iteration without appending\n }\n let uniqueTextA = '';\n let text = $(this).find('strong').text();\n let label = $(this).parent().parent().find('legend').text();\n if (text && label) {\n uniqueTextA += (uniqueTextA ? ' ' : '') + label + ': ' + text;\n // console.log(uniqueTextA);\n\n let $selectedInfo = $(this).closest('#main-ingredient-customizer-information-parent').find('.main-ingredients-cont ul.selected-info');\n // $selectedInfo.addClass('adgasdgsdg');\n $selectedInfo.append('
  • ' + uniqueTextA + '
  • ');\n }\n }\n\n\n\n });\n\n\n } else {\n $('fieldset.wings-side-selector>span>input, fieldset.cheesesteak-size-selector>span>input').each(function () {\n // console.log('asdgasdga');\n if ($(this).is('[radiodefualtcheckedstate=\"true\"]')) {\n // console.log('Attribute found for:', this);\n const backgroundImage = $(this).siblings('label').css('background-image');\n // console.log('Background image:', backgroundImage);\n\n $(this).closest('[data-product-option-group]').css('background-image', backgroundImage);\n\n let mainIngredientHideShowCont = $(this).closest('[data-product-option-group-options]').find('#main-ingredient-customizer-information-parent');\n if (mainIngredientHideShowCont.find('.product-modifier-groups fieldset:not(.option-hide)')) {\n mainIngredientHideShowCont.removeClass('hide').removeClass('option-hide');\n if ($(this).is('fieldset.wings-side-selector>span>input')) {\n mainIngredientHideShowCont.find('p#product-detail-content-label').addClass('hide');\n }\n }\n } else {\n let mainIngredientHideShowCont = $(this).closest('[data-product-option-group-options]').find('#main-ingredient-customizer-information-parent');\n const fieldsets = $(this).find('fieldset:not(.option-hide)');\n if (fieldsets.length > 0) {\n // console.log('hii!', fieldsets);\n mainIngredientHideShowCont.addClass('fdhgsdfh').css('display', 'none');\n }\n // console.log('No radiodefaultcheckedstate=\"true\" for:', this);\n }\n });\n\n jQuery('fieldset.cheesesteak-size-selector>span>input, fieldset.wings-side-selector>span>input').on('change', function () {\n const backgroundImage = $(this).siblings('label').css('background-image');\n // console.log(backgroundImage);\n $(this).closest('[data-product-option-group]').css('background-image', backgroundImage);\n });\n\n //functions for side and drink validation \n function validateSideOrDrinkSelection(drinkOrSide) {\n let $parentPopup = $(`[combo-${drinkOrSide}-selection-customizer-information-popup].${drinkOrSide}-modifier-parents`);\n let $childModifiers = $(`[combo-${drinkOrSide}-selection-customizer-information-popup].${drinkOrSide}-modifier-children:not(.option-hide)`);\n let $validationFooter = $(`.combo-${drinkOrSide}-selection-customizer-information-popup.customizer-information-popup .pop-up-footer`);\n let $mandatoryLabel = $(`.combo-${drinkOrSide}-selection-customizer-information-parent:not(.hide) .combo-${drinkOrSide}-selection-customizer-information.popup-info-wrap button span[duplicated-data-mandatory-label]`);\n // console.log('asdgasdg');\n if ($parentPopup.is('[data-is-valid=\"true\"][data-is-required=\"true\"]')) {\n $validationFooter.addClass('valid-popup');\n\n if ($childModifiers.is('[data-is-valid=\"false\"][data-is-required=\"true\"]')) {\n $mandatoryLabel.removeClass('valid').text('Required');\n // console.log('Child exists and is not valid', $childModifiers);\n $validationFooter.removeClass('valid-popup');\n\n } else {\n $mandatoryLabel.addClass('valid').text('Completed');\n // console.log('Child/parent exists and is valid');\n $validationFooter.addClass('valid-popup');\n }\n } else {\n $validationFooter.removeClass('valid-popup');\n }\n }\n function removeSelectedFromOtherElements(drinkOrSide, thisPassedObject) {\n $(`[combo-${drinkOrSide}-selection-customizer-information-popup].${drinkOrSide}-modifier-parents > [data-product-option-modifier-option-for-combo-${drinkOrSide}-selection]`)\n .not(thisPassedObject.parent())\n .removeClass('selected')\n .find('input') // Find the input box (radio button) within the excluded elements\n .prop('checked', false);\n\n //insert selected item\n $(`.combo-${drinkOrSide}-selection-customizer-information-parent .customizer-information-popup-button .opened`).removeClass('hide');\n $(`.combo-${drinkOrSide}-selection-customizer-information-parent .customizer-information-popup-button`).addClass('checked');\n let labelHtml = thisPassedObject.next('label').html();\n // console.log(labelHtml);\n $(`.combo-${drinkOrSide}-selection-customizer-information-parent .customizer-information-popup-button div.selected-info`).html(labelHtml);\n }\n // function selectDefualtsForParentElements(drinkOrSide, thisPassedObject) {\n // const $siblings = thisPassedObject.siblings(`.${drinkOrSide}-modifier-children:not(.option-hide)`);\n // const $selectedAfterInitialLoad = thisPassedObject.parent().siblings(`.${drinkOrSide}-modifier-children:not(.option-hide)`).find('span input[radiodefualtcheckedstate]').toArray();\n // let cantUseOtherElse = false;\n // // console.log('#3');\n\n // if (thisPassedObject.is(`[combo-${drinkOrSide}-selection-customizer-information-popup].${drinkOrSide}-modifier-parents > [data-product-option-modifier-option-for-combo-${drinkOrSide}-selection] input`)) {\n // // Handle default elements\n // // console.log('#1');\n // $siblings.find('span input[radiodefualtcheckedstate]').each(function () {\n // // console.log('#2');\n // $(this).prop('checked', true);\n // $(this).parent().addClass('selected');\n // // const $labelBox = $(this).siblings('label'); \n // // $labelBox.click();\n // // validateItemForm();\n\n // });\n\n // cantUseOtherElse = true;\n // validateItemForm();\n\n // } else if ($selectedAfterInitialLoad.length > 0 && !cantUseOtherElse) {\n // // Process elements after initial load\n // $selectedAfterInitialLoad.forEach(function (element) {\n // // $(element).prop('checked', true);\n // // $(element).parent().addClass('selected');\n\n // const $labelBox = $(element).siblings('label');\n // if ($labelBox.length) {\n // $labelBox.click();\n // }\n // });\n // // validateItemForm();\n\n // }\n // }\n\n //\n sideIsTriggered = false;\n //click default options && validate popupp\n $('[combo-side-selection-customizer-information-popup].side-modifier-parents [data-product-option-modifier-option-for-combo-side-selection]>input').on('change', function () {\n if (!sideIsTriggered) {\n\n\n if ($(this).is('[combo-side-selection-customizer-information-popup].side-modifier-parents > [data-product-option-modifier-option-for-combo-side-selection] > input')) {\n //remove selected from other elements\n removeSelectedFromOtherElements('side', $(this));\n }\n // validate \n validateSideOrDrinkSelection('side');\n sideIsTriggered = true;\n }\n });\n\n drinkIsTriggered = false;\n $('[combo-drink-selection-customizer-information-popup].drink-modifier-parents [data-product-option-modifier-option-for-combo-drink-selection]>input').on('change', function () {\n if (!drinkIsTriggered) {\n\n if ($(this).is('[combo-drink-selection-customizer-information-popup].drink-modifier-parents > [data-product-option-modifier-option-for-combo-drink-selection] > input')) {\n //remove selected from other elements\n removeSelectedFromOtherElements('drink', $(this));\n }\n // validates \n validateSideOrDrinkSelection('drink');\n drinkIsTriggered = true;\n }\n });\n\n\n // Attach the event handler\n if (inputChanged) {\n if (inputChanged.is('input[data-item-selector], input[data-item-selector-modifier]')) {\n if (inputChanged.prop('checked')) {\n\n if (inputChanged.is('.ingredient-modifier-children > [data-product-option-modifier-option-for-ingredient-selection] > input')) {\n // insert selected content\n inputChanged.closest('#main-ingredient-customizer-information-parent').find('.customizer-information-popup-button .opened').removeClass('hide option-hide');\n inputChanged.closest('#main-ingredient-customizer-information-parent').find('.customizer-information-popup-button').addClass('checked');\n\n inputChanged.closest('#main-ingredient-customizer-information-parent').find('ul.selected-info li').remove();\n\n $('.product-modifier.ingredient-modifier-parents:not(.option-hide) .ingredient-modifier-children')\n .find('span input:checked') // Find all checked input elementss \n .each(function () {\n // console.log('i clickssssss');\n // Get the text content of without the tags\n let labelText = $(this).next('label').find('strong').text();\n\n // Skip if labelText is \"Regular\"\n if (labelText.trim().toLowerCase() === 'regular') {\n return; // Continue to the next iteration without appending \n }\n\n let legendText = $(this).parent().parent().find('legend').text();\n let $selectedInfo = $(this).closest('#main-ingredient-customizer-information-parent').find('.main-ingredients-cont ul.selected-info');\n\n // Check if the combination of legendText and labelText already exists\n let existingItem = $selectedInfo.find('li').filter(function () {\n return $(this).text() === legendText + ': ' + labelText;\n });\n\n // If no existing item is found, append the new item\n if (existingItem.length === 0 && labelText) {\n $selectedInfo.append('
  • ' + legendText + ': ' + labelText + '
  • ');\n }\n }); \n\n } else if (inputChanged.is('.size-selector>span>input')) {\n validateDrinkAndSidePopupPresentation();\n jQuery('[data-product-option-group]:not(.hide) .main-ingredient-customizer-information-parent ul.selected-info li').remove();\n } else if (inputChanged.is('.cheesesteak-size-selector>span>input')) {\n jQuery('[data-product-option-group]:not(.hide) .main-ingredient-customizer-information-parent ul.selected-info li').remove();\n }\n // // Check defaults\n // let $strongElements = $(this).siblings('.ingredient-modifier-children').find('span input[radiodefualtcheckedstate]').toArray();\n // // console.log('dsfghsfdgh', $strongElements);\n // $strongElements.forEach(function (element) {\n // let $labelBox = $(element).siblings('label');\n // if ($labelBox.length) {\n // // $labelBox.addClass('sdfgsdg');\n // $labelBox.click();\n // // console.log($labelBox, 'triggered!');\n // }\n // });\n let element = inputChanged[0];\n const currentInputId = inputChanged.attr('id');\n selectAllDefaultSelectsion(element, currentInputId);\n validateItemForm();\n }\n }\n\n }\n // Hide and show main ingredient customize box\n //intital hide\n let $this = $('.main-ingredient-customizer-information-parent');\n // const visibleFieldsets = $this.find('[data-modifier-groups-for-ingredient-customizer] fieldset').not('.hide, .option-hide');\n // let fieldset = $this.find('[data-modifier-groups-for-ingredient-customizer] fieldset');\n if ($this.find('[data-modifier-groups-for-ingredient-customizer] fieldset legend').text().trim() === '' && !$('.right-col').hasClass('formatting-classic-combo')) {\n // console.log('#1!!');\n\n // console.log('content exitst');\n $this.addClass('hide option-hide');\n $('.right-col:not(.formatting-classic-combo) .main-ingredient-customizer-information-parent').each(function () {\n // console.log('#4!!');\n $(this).addClass('hide option-hide');\n });\n // fieldset.addClass('hide option-hide');\n }\n // else if ($('.right-col').hasClass('formatting-add-accordian')) {\n // console.log('#2!!');\n // const legendText = visibleFieldsets.find('legend').text().trim();\n // // console.log('sdgasdg', legendText);\n // if ((!visibleFieldsets.hasClass('hide') || !visibleFieldsets.hasClass('option-hide')) && (legendText || !legendText === '')) {\n // // console.log('#1!!', visibleFieldsets);\n // visibleFieldsets.closest('#main-ingredient-customizer-information-parent').removeClass('hide option-hide');\n // // console.log('#2!!: show', visibleFieldsets);\n // } else {\n // visibleFieldsets.closest('#main-ingredient-customizer-information-parent').addClass('hide option-hide');\n // // console.log('#2!!: hide', visibleFieldsets);\n // }\n // }\n else {\n // console.log('#3!!');\n $('.right-col button#customizer-information-popup').addClass('hide option-hide');\n setTimeout(function () {\n $('.right-col button#customizer-information-popup').removeClass('hide option-hide');\n\n $('.right-col .main-ingredient-customizer-information-parent').each(function () {\n const fieldsets = $(this).find('fieldset:not(.option-hide)');\n\n if (fieldsets.length === 0) {\n // console.log('#3!! hide', $(this));\n $(this).addClass('hide option-hide');\n } else {\n // console.log('#3!! no hide', $(this));\n $(this).removeClass('hide option-hide');\n }\n });\n }, 200);\n\n }\n // hide on change\n if (inputChanged) {\n if (inputChanged.is('[data-product-options] span input, .formatting-classic-combo-wings .wings-side-selector:not(.cheesesteak-size-selector) span input')) {\n // console.log('sdgdsgasdgasdgas');\n let mainIngredientHideShowCont = inputChanged.closest('[data-product-option-group-options]').find('#main-ingredient-customizer-information-parent');\n if (mainIngredientHideShowCont) {\n const fieldsets = $(mainIngredientHideShowCont).find('fieldset:not(.option-hide)');\n\n if (fieldsets.length > 0) {\n // console.log('no hide!', mainIngredientHideShowCont);\n mainIngredientHideShowCont.removeClass('hide option-hide');\n // $(this).removeClass('hide option-hide').css('display', 'block');\n } else {\n // console.log('hide!', mainIngredientHideShowCont);\n mainIngredientHideShowCont.addClass('hide option-hide');\n }\n }\n \n // if (inputChanged.is('.formatting-classic-combo-wings .wings-side-selector:not(.cheesesteak-size-selector) span input')) {\n // $labelBox = $(this).parent().parent().siblings('.size-selector:not(.option-hide)').find('input[radiodefualtcheckedstate]').siblings('label');\n // $labelBox.click();\n // console.log('i clickss 2', $labelBox);\n\n // } else {\n // $labelBox = $(this).parent().parent().siblings('.formatting-classic-combo [data-modifier-groups], .formatting-30-50-pc-wings [data-modifier-groups]').find('.size-selector:not(.option-hide)').find('input[radiodefualtcheckedstate]').siblings('label');\n // $labelBox.click();\n // // jQuery('[data-product-option-group]:not(.hide) .main-ingredient-customizer-information-parent ul.selected-info li').remove();\n\n // $labelBox2 = $(this).parent().parent().siblings('#main-ingredient-customizer-information-parent').find('input[radiodefualtcheckedstate]');\n // $labelBox2Sibiling = $labelBox2.parent('span[data-product-option-modifier-option-for-ingredient-selection]').siblings('span');\n // // $labelBox2Sibiling.addClass('sadgasdg');\n // if ($labelBox2 && !$labelBox2Sibiling.hasClass('selected')) {\n // $labelBox2.prop('checked', true);\n // $labelBox2.parent().addClass('selected');\n // // $labelBox2.click();\n // // console.log('i clickss 3', $labelBox2Sibiling); \n // }\n // $labelBox2.siblings('fieldset.ingredient-modifier-children').removeClass('option-hide');\n\n\n // }\n // let element = inputChanged[0];\n // const currentInputId = inputChanged.attr('id');\n // selectAllDefaultSelectsion(element, currentInputId);\n // validateItemForm();\n }\n }\n\n }\n\n // Update Visual Selection\n $(\n \"[data-product-options] input[data-item-selector], [data-modifier-group] input[data-item-selector-modifier], [combo-side-selection-customizer-information-popup] input[data-item-selector-modifier], [combo-drink-selection-customizer-information-popup] input[data-item-selector-modifier], [main-ingredient-customizer-information-popup] input[data-item-selector-modifier]\"\n ).each(function () {\n if ($(this).prop(\"checked\")) {\n $(this).parent().addClass(\"selected\");\n } else {\n $(this).parent().removeClass(\"selected\");\n }\n });\n // Add selected image to dropdown on combo items\n // $classicComboParentSelector = $('.right-col.formatting-classic-combo .product-option-wrap>div.product-option-group>[data-product-option-group-options]>fieldset>span>input');\n // if ($classicComboParentSelector.is(':checked')) {\n // let $labelSibling = $classicComboParentSelector.siblings('label');\n\n // // Get the inline style attribute\n // let style = $labelSibling.attr('style');\n\n // // if (style) {\n // // // console.log('style', style);\n // // } else {\n // // // console.log('nooo');\n // // }\n // }\n\n\n //hide and show combo info\n const showComboSelections = $('fieldset.highlight > span:nth-of-type(2)').hasClass('selected');\n const parentElement = $('fieldset.highlight').closest('.product-option-group');\n if (parentElement) {\n parentElement.addClass('comboParentSelector');\n\n // Select the elements within .comboParentSelector\n $('.comboParentSelector .combo-side-selection-customizer-information-parent, .comboParentSelector .combo-drink-selection-customizer-information-parent').each(function () {\n // Check if .combo-side-selection-customizer-information-parent or .combo-drink-selection-customizer-information-parent exists\n if ($(this).length > 0) {\n // Determine visibility based on showComboSelections \n if (showComboSelections) {\n $(this).removeClass('hide option-hide');\n } else {\n $(this).addClass('hide option-hide');\n }\n }\n });\n\n }\n\n\n\n\n $(\"[data-product-option-group]:not(.hide)\").each(function () {\n var $productOptionGroup = $(this);\n var $productOptions = $(this).find(\n \"[data-product-options]:not(.hide), [data-modifier-group][data-maxselects]:not(.option-hide), [data-modifier-group]:not(.option-hide), [combo-side-selection-customizer-information-popup]:not(.option-hide), [combo-drink-selection-customizer-information-popup]:not(.option-hide), [main-ingredient-customizer-information-popup]:not(.option-hide)\"\n );\n\n // Selectors\n $productOptions.each(function () {\n // console.log('Raw maxSelects:', $(this).attr(\"data-maxselects\"));\n var minSelects = Number($(this).attr(\"data-minselects\")) || 0,\n maxSelects = Number($(this).attr(\"data-maxselects\")) || 0,\n minChoiceQty = Number($(this).attr(\"data-minchoicequantity\")) || 0,\n maxChoiceQty = Number($(this).attr(\"data-maxchoicequantity\")) || 0,\n isValid = $(this).attr(\"data-is-valid\"),\n isRequired = $(this).attr(\"data-is-required\");\n\n // console.log('maxSelects', Number($(this).attr(\"data-maxselects\")));\n // Set Valid State\n var fieldsetValid = true;\n\n // Enable/Disable Selectors based on max qty\n if (maxSelects !== 0) {\n var selectedQty = 0;\n $(this)\n .find(\"input[data-item-selector]:checked, input[data-item-selector-modifier]:checked\")\n .each(function () {\n var selectionID = $(this).attr(\"id\");\n var itemQty = 0;\n $(\n 'input[radio][data-qty-for=\"' + $(this).attr(\"id\") + '\"]:checked, input[type=\"number\"][data-qty-for=\"' + $(this).attr(\"id\") + '\"]'\n ).each(function () {\n itemQty += Number($(this).val());\n });\n if (itemQty == 0) {\n itemQty = 1;\n }\n // console.log(\"itemQty: \" + itemQty);\n selectedQty += itemQty;\n });\n // console.log('selectedQty: '+selectedQty);\n // if(selectedQty == 0) {\n // selectedQty = 1;\n // }\n if (selectedQty == maxSelects) {\n $(this)\n .find(\"input[data-item-selector]:not(:checked), input[data-item-selector-modifier]:not(:checked)\")\n .prop(\"disabled\", true);\n $(this)\n .find(\"button.qtyplus, button.qtyminus\")\n .prop(\"disabled\", true);\n $(this)\n .find('input[type=\"radio\"][value=\"2\"].qtyinput:not(:checked)')\n .prop(\"disabled\", true);\n } else {\n $(this).find(\"input[data-item-selector], input[data-item-selector-modifier]\").prop(\"disabled\", false);\n $(this)\n .find(\"button.qtyplus, button.qtyminus, input.qtyinput\")\n .prop(\"disabled\", false);\n $(this)\n .find('input[type=\"radio\"].qtyinput:not(:checked)')\n .prop(\"disabled\", false);\n }\n\n // Disable if not available\n if (\n $(this)\n .find(\"input[data-item-selector], input[data-item-selector-modifier]\")\n .attr(\"data-available-now\") == \"false\"\n ) {\n $(this).find(\"input[data-item-selector], input[data-item-selector-modifier]\").prop(\"disabled\", true);\n }\n\n // if($(this).find('input[data-item-selector]:checked').length == maxSelects) {\n // $(this).find('input[data-item-selector]:not(:checked)').prop('disabled', true);\n // } else {\n // $(this).find('input[data-item-selector]').prop('disabled', false);\n // }\n }\n\n if (isRequired) {\n var numSelected = $(this).find(\n \"input[data-item-selector]:checked, input[data-item-selector-modifier]:checked\"\n ).length;\n if (numSelected < minSelects || !numSelected) {\n fieldsetValid = false;\n }\n }\n\n $(this).attr(\"data-is-valid\", fieldsetValid);\n\n // console.log();\n });\n\n // Show/Hide product quantity selectors\n $productOptions.find(\"[data-qty-container-for]\").each(function () {\n var selectedItem = $(this).attr(\"data-qty-container-for\");\n\n if (\n $(\n 'input[data-item-selector][id=\"' +\n selectedItem +\n '\"], input[data-item-selector-modifier][id=\"' +\n selectedItem +\n '\"]'\n ).prop(\"checked\")\n ) {\n $(this).removeClass(\"option-hide\"); // Show QTY Selector\n } else {\n $(this).addClass(\"option-hide\"); // Hide QTY Selector\n $(this)\n .find(\"input[data-item-selector-modifier]\")\n .each(function () {\n $(this).prop(\"checked\", false);\n });\n }\n });\n\n // Show/Hide Modifiers\n $productOptionGroup.find(\"[data-modifier-for]\").each(function () {\n var selectedItem = $(this).attr(\"data-modifier-for\");\n\n if (\n $('input[data-item-selector][id=\"' + selectedItem + '\"]').prop(\n \"checked\"\n ) ||\n $('input[data-item-selector-modifier][id=\"' + selectedItem + '\"]').prop(\n \"checked\"\n )\n ) {\n $(this).removeClass(\"option-hide\"); // Show Modifier\n } else {\n $(this).addClass(\"option-hide\"); // Hide Modifier\n $(this)\n .find(\"input[data-item-selector-modifier]\")\n .each(function () {\n $(this).prop(\"checked\", false);\n });\n }\n });\n });\n\n var formValid = false;\n\n if (!$('[data-is-valid=\"false\"]:not(.option-hide)').length) {\n formValid = true;\n }\n\n if (formValid) {\n $(\"#item-add-to-cart\").prop(\"disabled\", false);\n $(\"#item-add-to-cart-update\").prop(\"disabled\", false);\n } else {\n $(\"#item-add-to-cart\").prop(\"disabled\", true);\n $(\"#item-add-to-cart-update\").prop(\"disabled\", true);\n }\n\n // console.log(\"Form Status: \" + formValid);\n return formValid;\n}\n\nfunction calculateProductTotal() {\n var $ = jQuery;\n\n var itemTotal = 0;\n var itemCalories = 0;\n\n $(\n \"[data-product-selection-list] [data-product-selection-item]:not(.hide)\"\n ).remove();\n\n $(\n \"#product-detail-view [data-base-price] input[data-item-selector]:checked, #product-detail-view [data-product-option-group]:not(.hide) fieldset:not(.option-hide) input[data-item-selector]:checked, #product-detail-view [data-product-option-group]:not(.hide) fieldset:not(.option-hide) input[data-item-selector-modifier]:checked\"\n ).each(function () {\n var selectedID = $(this).attr(\"id\");\n\n var selectedQty = 0;\n $(\n 'input[type=\"radio\"][data-qty-for=\"' +\n $(this).attr(\"id\") +\n '\"]:checked, input[type=\"number\"][data-qty-for=\"' +\n $(this).attr(\"id\") +\n '\"]'\n ).each(function () {\n selectedQty += Number($(this).val());\n });\n\n if (selectedQty == 0) {\n selectedQty = 1;\n }\n\n // console.log('ID: ' + selectedID, 'Label: ' + $('label[for=\"'+$(this).attr('id')+'\"]').text(), 'Cost: $'+formatMoney($(this).attr('data-cost')), 'Qty: ' + selectedQty);\n\n itemTotal += Number($(this).attr(\"data-cost\")) * selectedQty;\n if ($(this).attr(\"data-calories\")) {\n // console.log('itemCalories', Number($(this).attr(\"data-calories\")));\n\n itemCalories += Number($(this).attr(\"data-calories\")) * selectedQty;\n // console.log('itemCalories', $(this).siblings('label').text(), itemCalories);\n } else {\n // console.log('askjfgaskjf', this);\n }\n\n // Add item to list\n var $itemSelectorContainer = $(\"[data-product-selection-list]\");\n var $itemSelectorItem = $(\n \"[data-product-selection-list] [data-product-selection-item].hide\"\n ).clone();\n var itemID = $(this).attr(\"id\");\n var itemName = $(\"label[for=\" + itemID + \"]\")\n .find(\"strong\")\n .text();\n\n var itemQty = 1;\n if ($('input[data-qty-for=\"' + itemID + '\"]:checked').length) {\n itemQty = Number($('[data-qty-for=\"' + itemID + '\"]:checked').val());\n }\n if ($('input[type=\"number\"][data-qty-for=\"' + itemID + '\"]').length) {\n itemQty = Number(\n $('input[type=\"number\"][data-qty-for=\"' + itemID + '\"]').val()\n );\n }\n\n if (itemQty > 1) {\n itemName = itemName + \" (\" + itemQty + \")\";\n }\n\n if (itemName.length) {\n $itemSelectorItem.text(itemName);\n $itemSelectorItem.attr(\"data-item-id\", itemID);\n\n $itemSelectorItem.removeClass(\"hide\");\n $itemSelectorContainer.append($itemSelectorItem);\n\n $itemSelectorItem.click(function () {\n var unselectID = $(this).attr(\"data-item-id\");\n $(\"#\" + unselectID)\n .prop(\"checked\", false)\n .change();\n // console.log(\"unselected\", $(\"#\" + unselectID));\n });\n } else {\n $itemSelectorItem.remove();\n }\n });\n\n // console.log('Total: ', '$'+formatMoney(itemTotal));\n\n var productQty = $(\"#product-item-qty\").val();\n\n itemTotal *= Number(productQty);\n itemCalories *= Number(productQty);\n if (itemCalories != 0 || itemCalories != '0') {\n $(\"[data-product-total-calories]\").text(itemCalories + \" Calories\");\n }\n $(\"[data-item-selection-price]\").text(\"$ \" + formatMoney(itemTotal));\n}\n\nfunction clearProductOptions() {\n // Clears out all options in preparation for loading another set of options.\n var $ = jQuery;\n $(\"#product-detail-view [data-product-option-group]:not(.hide)\").each(\n function () {\n $(this).remove();\n }\n );\n}\n\nfunction clearBasketSession() {\n var $ = jQuery;\n\n // Address Selections\n localStorage.removeItem(\"charleys_customer_address_selected\");\n localStorage.removeItem(\"charleys_customer_address_streetaddress\");\n localStorage.removeItem(\"charleys_customer_address_city\");\n localStorage.removeItem(\"charleys_customer_address_zipcode\");\n\n // Modes\n localStorage.removeItem(\"charleys_customer_deliverymode\");\n localStorage.removeItem(\"charleys_customer_schedule\");\n\n // Basket\n localStorage.removeItem(\"charleys_customer_basket_id\");\n\n // Payment Token\n localStorage.removeItem(\"charleys_customer_ccsf_token\");\n\n // Schedule\n localStorage.removeItem(\"charleys_customer_scheduled_time\");\n localStorage.removeItem(\"charleys_customer_scheduled_day\");\n\n // Guest Checkout\n // localStorage.removeItem(\"charleys_customer_guest_first_name\");\n // localStorage.removeItem(\"charleys_customer_guest_last_name\");\n localStorage.removeItem(\"charleys_customer_guest_phone_number\");\n localStorage.removeItem(\"charleys_customer_guest_email_address\");\n\n updateBasketDisplay();\n}\n\nfunction charleys_set_form_errors(errorData, $form) {\n var $ = jQuery;\n\n if (errorData) {\n Object.keys(errorData).forEach((k, i) => {\n // console.log(result.data.errors[k]);\n if ($('input[name=\"' + k + '\"]').length) {\n var $inputErrorMessage = $('input[name=\"' + k + '\"]').next();\n $inputErrorMessage.attr(\"original-error\", $inputErrorMessage.text());\n $inputErrorMessage.text(errorData[k]);\n $form.foundation(\"addErrorClasses\", $('input[name=\"' + k + '\"]'), []);\n }\n\n if (k == \"base\") {\n $form.find(\"[data-abide-error] p\").text(errorData[k]);\n }\n });\n }\n\n $form.find(\"[data-abide-error]\").show();\n} // charleys_set_form_errors\n\nfunction punchh_get_user_offers() {\n var $ = jQuery;\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"punchh_get_user_offers\",\n accesstoken: localStorage.getItem(\"charleys_access_token\"),\n },\n success: function (response) {\n // console.log(response);\n },\n complete: function () {\n charleys_hide_loading();\n },\n });\n}\n\nfunction punchh_get_user_points() {\n var $ = jQuery;\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"punchh_get_user_points\",\n accesstoken: localStorage.getItem(\"charleys_access_token\"),\n },\n success: function (response) {\n // console.log(response);\n },\n complete: function () {\n charleys_hide_loading();\n },\n });\n}\n\nfunction punchh_olo_sso(providertoken, provideruserid, isNewAccount = false) {\n var $ = jQuery;\n\n // console.log(\"olo_ss0\", providertoken);\n\n localStorage.setItem(\"charleys_access_token\", providertoken);\n localStorage.setItem(\"charleys_user_id\", provideruserid);\n\n var olo_sso_creds = {\n provider: \"punchh\",\n providertoken: providertoken,\n provideruserid: provideruserid,\n basketid: $('input[name=\"basketGuid\"]').val(),\n };\n\n if (isNewAccount) {\n olo_sso_creds.firstname = $('input[name=\"first_name\"]').val();\n olo_sso_creds.lastname = $('input[name=\"last_name\"]').val();\n olo_sso_creds.contactnumber = $('input[name=\"phone\"]')\n .val()\n .replace(/[^\\d.-]/g, \"\");\n olo_sso_creds.emailaddress = $('input[name=\"email\"]').val();\n }\n\n // console.log(olo_sso_creds);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"punchh_olo_authenticate\",\n olo_sso_creds: olo_sso_creds,\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n\n var result = JSON.parse(response);\n\n localStorage.setItem(\"charleys_auth_token\", result.authtoken);\n $('.accountButton').removeClass(\"hide\");\n $('.signInButton').addClass(\"hide\");\n\n if (isNewAccount) {\n $.when(olo_set_fave_location(Number($(\"#punchh_location\").val()))).done(\n function (restaurant_json) {\n // console.log(restaurant_json);\n olo_login_route();\n }\n );\n } else {\n olo_login_route();\n }\n },\n complete: function () {\n charleys_hide_loading();\n },\n });\n} // punchh_olo_sso\n\nfunction olo_login_route() {\n // Check for basket\n if (localStorage.getItem(\"charleys_customer_basket_id\")) {\n change_view(\"checkout\");\n } else {\n change_view(\"home\");\n }\n}\n\nfunction olo_set_fave_location(restaurant_id) {\n var $ = jQuery;\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_set_fave_location\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n restaurant_id: restaurant_id,\n },\n success: function (response) { },\n complete: function () { },\n });\n}\n\nfunction olo_delete_fave_location(restaurant_id) {\n var $ = jQuery;\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_delete_fave_location\",\n authtoken: localStorage.getItem(\"charleys_auth_token\"),\n restaurant_id: restaurant_id,\n },\n success: function (response) { },\n complete: function () { },\n });\n}\n\nfunction olo_get_nearby_locations(lat, lng, dist, view_context) {\n // console.log(\"get nearby locations\");\n\n charleys_show_loading();\n\n // console.log(\"getLocations\", lat, lng, dist);\n var $ = jQuery;\n\n var nearbyData = {\n action: \"get_nearby_locations\",\n lat: lat,\n long: lng,\n distance: dist,\n };\n\n // if($('[name=\"order-type\"]:checked').val() == 'dispatch') {\n //if($('input[name=\"' + view_context + '-order-type\"]:checked').val() == 'dispatch') {\n // nearbyData.is_delivery = true;\n //}\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: nearbyData,\n success: function (response) {\n // console.log(response);\n var result = JSON.parse(response);\n userHasSearched = true;\n if (result.status == \"success\" && result.data !== null) {\n // console.log('result.data.restaurants', result.data.restaurants);\n //var isDelivery = false;\n // if($('[name=\"order-type\"]:checked').val() == 'dispatch') {\n //if($('input[name=\"' + view_context + '-order-type\"]:checked').val() == 'dispatch') {\n // isDelivery = true;\n //}\n\n set_location_selections(result.data.restaurants, view_context);\n // charleys_hide_loading();\n } else {\n // console.log('no result.data.restaurants', result.data.restaurants);\n\n set_location_selections({}, view_context);\n // charleys_hide_loading();\n }\n },\n complete: function () { },\n });\n}\n\nfunction clearLocationList() {\n var $ = jQuery;\n // move the order type selector outside of the location item so it doesn't get wiped out\n $(\"#start-order-order-location-search-error-delivery\").addClass(\"hide\");\n $(\"#start-order-order-location-search-error\").addClass(\"hide\");\n $(\".wf-ordering-start-order\").append(\n $(\"#start-order-select-order-type-embedded\")\n );\n // Clear any restaurant listings\n $(\"[data-location-list] [data-location-item-template]:not(.hide)\").remove();\n}\n\nfunction set_location_selections(restaurants, view_context) {\n var $ = jQuery;\n\n // console.log(\"Set Location Selections\", restaurants);\n\n clearLocationList();\n\n //var orderType = $('input[name=\"' + view_context + '-order-type\"]:checked').val();\n\n // Hide not found message\n $(\"[data-location-not-found]\").addClass(\"hide\");\n $(\"[data-location-found]\").addClass(\"hide\");\n $(\"[data-location-not-selected]\").addClass(\"hide\");\n $(\"#\" + view_context + \"-order-location-search\").removeClass(\"form-alert\");\n $(\"#\" + view_context + \"-order-location-search-error\").addClass(\"hide\");\n $(\"#\" + view_context + \"-order-location-search-error-delivery\").addClass(\n \"hide\"\n );\n\n //var isDelivery = false;\n // if($('[name=\"order-type\"]:checked').val() == 'dispatch') {\n //if(orderType == 'dispatch') {\n // isDelivery = true;\n //}\n //redo search if user clicks wings box\n $(\"#wingsLocationsCheckbox\").change(function () {\n $(\"#start-order-order-location-search-form\").submit();\n });\n // Clear all map markers\n if ($(\"#tt-map\").length) {\n for (var m = 0; m < order_markers.length; m++) {\n order_markers[m].remove();\n }\n order_markers = [];\n }\n // Create a Set to keep track of processed restaurant IDs\n const processedIds = new Set();\n if (restaurants !== null && restaurants.length) {\n for (var i = 0; i < restaurants.length; i++) {\n const restaurant = restaurants[i];\n if (!processedIds.has(restaurant.id)) {\n // console.log('restaurant.id', restaurant.id);\n processedIds.add(restaurant.id);\n if ($('#wingsLocationsCheckbox').prop('checked')) {\n //only wings\n if (restaurants[i]['location_groups'].split(',').includes('cpsw')) {\n // console.log(\"only wings\");\n getLocationInfo();\n }\n } else {\n //all stores\n // console.log(\"not only wings\");\n getLocationInfo();\n }\n function getLocationInfo() {\n if (restaurants[i].isavailable) {\n // Ensure store is available\n\n // console.log(restaurants[i]);\n //console.log(isDelivery, restaurants[i].supportsdispatch);\n\n if ($(\"#tt-map\").length) {\n\n var order_popupHTML =\n '
    ' +\n \"\" +\n restaurants[i].name +\n \"\" +\n \"
    \" +\n '
    ' +\n restaurants[i].streetaddress +\n \"
    \" +\n restaurants[i].city +\n \", \" +\n restaurants[i].state +\n \" \" +\n restaurants[i].zip +\n \"
    \" +\n '\";\n if ((\"location_groups\" in restaurants[i]) && restaurants[i][\"location_groups\"].includes(\"cpsw\")) {\n order_popupHTML += '

    WINGS AVAILABLE

    ';\n }\n\n order_markers.push(\n createMarker(\n [\n parseFloat(restaurants[i].longitude),\n parseFloat(restaurants[i].latitude),\n ],\n order_popupHTML,\n ttmap_order\n )\n );\n }\n\n var supportedOrderTypes = [];\n\n // Since we have to use olo_check_delivery_coverage, php will convert booleans to strings in json.\n var canDispatch =\n restaurants[i].supportsdispatch === \"true\"\n ? true\n : restaurants[i].supportsdispatch === \"false\"\n ? false\n : restaurants[i].supportsdispatch;\n if (canDispatch) {\n supportedOrderTypes.push(\"dispatch\");\n }\n var canCurbside =\n restaurants[i].supportscurbside === \"true\"\n ? true\n : restaurants[i].supportscurbside === \"false\"\n ? false\n : restaurants[i].supportscurbside;\n if (canCurbside) {\n supportedOrderTypes.push(\"curbside\");\n }\n var canPickup =\n restaurants[i].canpickup === \"true\"\n ? true\n : restaurants[i].canpickup === \"false\"\n ? false\n : restaurants[i].canpickup;\n if (canPickup) {\n supportedOrderTypes.push(\"pickup\");\n }\n var canDinein =\n restaurants[i].supportsdinein === \"true\"\n ? true\n : restaurants[i].supportsdinein === \"false\"\n ? false\n : restaurants[i].supportsdinein;\n if (canDinein) {\n supportedOrderTypes.push(\"dinein\");\n }\n\n // if(isDelivery && !(supportedOrderTypes.includes('dispatch'))) { // If customer has chosen delivery, ensure it supports dispatch\n // console.log('continue');\n // continue;\n // }\n\n //console.log(orderType, supportedOrderTypes);\n\n //if(!supportedOrderTypes.includes(orderType)) {\n // console.log('continue');\n // continue;\n //}\n\n var $locationItem = $('#order-location-list [data-location-item-template].hide').clone();\n\n var locationHours = '';\n\n $.each(restaurants[i].calendar, function (key, calendar) {\n // console.log('calendar', calendar);\n if (typeof calendar.ranges !== 'undefined' && calendar.ranges !== null && calendar.ranges.length) {\n var storeCalendar = calendar.ranges[0];\n var startDate = new Date(storeCalendar.start.substr(0, 4) + '-' + storeCalendar.start.substr(4, 2) + '-' + storeCalendar.start.substr(6, 2) + 'T' + storeCalendar.start.substr(9, 5));\n var endDate = new Date(storeCalendar.end.substr(0, 4) + '-' + storeCalendar.end.substr(4, 2) + '-' + storeCalendar.end.substr(6, 2) + 'T' + storeCalendar.end.substr(9, 5));\n\n var hourslabel = calendar.type.charAt(0).toUpperCase() + calendar.type.substr(1).toLowerCase();\n if (calendar.label !== null) {\n hourslabel = calendar.label.charAt(0).toUpperCase() + calendar.label.substr(1).toLowerCase();\n } else if (calendar.type == 'dinein') {\n hourslabel = \"Dine In\";\n }\n\n locationHours += hourslabel + ' Hours: ' + formatAMPM(startDate) + ' - ' + formatAMPM(endDate) + '
    ';\n }\n });\n\n $locationItem.find('[data-location-hours]').html(locationHours);\n $locationItem.find('.order-button').attr('data-store-url', restaurants[i].url);\n $locationItem.find('.order-button').attr('data-store-number', restaurants[i].extref);\n\n // military base alt. flow\n let militaryBaseIds = [\n 254063, // #209 Andrews AFB\n 254058, // #292 Fort Leavenworth\n 254050, // #242 Ft Gregg Adams\n 254072, // #195 Fort Robins AFB\n 254056, // #418 Fort Leonard Wood\n 254066, // #163 Fort Jackson\n 254070, // #388 Fort Irwin\n 254061, // #139 Fort Sam Houston \n 254085, // #532 Nellis\n 254077, // #247 Fort Stewart Exchange \n 254073, // #142 Tinker Barracks\n 254055, // #394 Schofield Barracks\n 254083, // #612 Fort Bliss\n 254051, // #77 Hickam AFB\n 254227, // #396 Fort Sill \n 254053, // #277 Barksdale AFB\n 254065, // #221 Fort Eisenhower\n 251330, // #366 Luke AFB \n 254229, // #351 Fort Eustis \n 254084, // #678 Fort Bliss III \n 254059, // #594 Randolph AFB II\n 254079, // #177 Fort Carson\n 254074, // #411 Holloman AFB\n 254069, // #91 Elmendorf AFB\n 254067, // #393 Peterson AFB\n 254064, // #308 Eglin AFB \n 251327, // #353 Fort Drum\n 251340, // #499 Fort Moore \n 251329, // #376 Travis AFB\n 251331, // #845 Fort Huachuca \n 251343, // #845 Fort Meade II \n 226114, // #679 JBLM North Post Food Court\n 226115, // #232 Fort Liberty Mini Mall Food Court\n 226116, // #230 Ft Lewis Shopping Center Food Ct\n 226117, // #326 Ft Liberty North Post Food Court\n 226118, // #325 JBLM McChord Food Court\n 226119,\n 226120, // #188 Fort Campbell Food Court\n 226121, // #119 Ft Liberty S Post Food Court\n 226122, // #375 Ft Liberty 82nd Airborne Food Ct\n 226123, // #869 Ft Cavazos Clear Creek Food Court\n 251341, // #303 Hill AFB\n 251332, // #804 Fort Belvoir II\n 251335, // #549 Fort Riley II\n // 251334, // #360 Edwards AFB\n 251338, // #350 Davis Monthan AFB\n 251339, // #140 Fort Riley\n 251342, // #614 Fort Johnson II\n 251333, // #342 Fort Knox\n 226116 // #230 Ft Lewis Shopping Center Food Ct\n ];\n\n if (militaryBaseIds.includes(restaurants[i][\"id\"])) {\n $locationItem.find(\".location-button-container\").addClass(\"hide\");\n $locationItem.find(\".location-button-container-military\").removeClass(\"hide\");\n }\n if ((\"location_groups\" in restaurants[i]) && restaurants[i][\"location_groups\"].includes(\"cpsw\")) {\n $locationItem.find(\".location-indicators\").removeClass(\"hidden\");\n $locationItem.find(\".location-indicator-wing\").removeClass(\"hide\");\n // console.log(\"yes wings :)\");\n\n } else {\n // console.log(\"no wings :(\");\n }\n $locationItem.find(\".pickup-button\").click(function () {\n // window.location.href = $(this).closest('.location-item').find('.order-button').attr('data-store-url');\n });\n\n let doordashLink = 'https://doordash.com';\n switch (restaurants[i][\"id\"]) {\n case 254063: // #209 Andrews AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-joint-base-andrews-2526803/';\n break;\n case 254058: // #292 Fort Leavenworth\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-leavenworth-2491527/';\n break;\n case 254050: // #242 Ft Gregg Adams\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-fort-lee-1841987/';\n break;\n case 254072: // #195 Fort Robins AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-robins-air-force-base-23106290/';\n break;\n case 254056: // #418 Fort Leonard Wood\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-fort-leonard-wood-2303991/';\n break;\n case 254066: // #163 Fort Jackson\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-columbia-2427717/';\n break;\n case 254070: // #388 Fort Irwin\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-fort-irwin-2197122/';\n break;\n case 254061: // #139 Fort Sam Houston\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-san-antonio-2197204/';\n break;\n case 254085: // #532 Nellis\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-nellis-air-force-base-2375699/';\n break;\n case 254077: // #247 Fort Stewart Exchange\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-and-wings-fort-stewart-2196993/';\n break;\n case 254073: // #142 Tinker Barracks\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-oklahoma-city-2529666/';\n break;\n case 254055: // #394 Schofield Barracks\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-schofield-barracks-2267619/';\n break;\n case 254083: // #612 Fort Bliss\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bliss-1794073/';\n break;\n case 254051: // #77 Hickam AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-joint-base-pearl-harbor-hickam-2267758/';\n break;\n case 254227: // #396 Fort Sill\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-sill-1841729/';\n break;\n case 254053: // #277 Barksdale AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-barksdale-air-force-base-24700402/';\n break;\n case 254065: // #221 Fort Eisenhower\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-augusta-1825126/';\n break;\n case 251330: // #366 Luke AFB \n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-glendale-24063923/';\n break;\n case 254229: // #351 Fort Eustis \n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-newport-news-2137844/';\n break;\n case 254084: // #678 Fort Bliss III \n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bliss-1794170/';\n break;\n case 254059: // #594 Randolph AFB II\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-universal-city-2195468/';\n break;\n case 254079: // #177 Fort Carson\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-carson-1662330/';\n break;\n case 254074: // #411 Holloman AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-holloman-air-force-base-2376559/';\n break;\n case 254069: // #91 Elmendorf AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-anchorage-2375955/';\n break;\n case 254067: // #393 Peterson AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-colorado-springs-24063755/';\n break;\n case 254064: // #308 Eglin AFB \n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-eglin-air-force-base-1897146/';\n break;\n case 251327: // #353 Fort Drum\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-drum-1897286/';\n break;\n case 251340: // #499 Fort Moore \n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-benning-1899555/';\n break;\n case 251329: // #376 Travis AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-carson-1662330/';\n break;\n case 251331: // #323 Fort Huachuca\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-sierra-vista-2433373/';\n break;\n case 251343: // #845 Fort Meade II \n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-meade-2466507/';\n break;\n case 226114: // #679 JBLM North Post Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-lewis-1841146/29765746/';\n break;\n case 226115: // #232 Fort Liberty Mini Mall Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672000/29134952/';\n break;\n case 226116: // #230 Ft Lewis Shopping Center Food Ct\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-tacoma-1841808/29165348/';\n break;\n case 226117: // #326 Ft Liberty North Post Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672038/29130357/';\n break;\n case 226118: // #325 JBLM McChord Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-joint-base-lewis-mcchord-1841832/29157347/';\n break;\n case 226119:\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-hood-1624506/29154949/';\n break;\n case 226120: // #188 Fort Campbell Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-campbell-1897032/29139351/';\n break;\n case 226121: // #119 Ft Liberty S Post Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672652/29129355/';\n break;\n case 226122: // #375 Ft Liberty 82nd Airborne Food Ct\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672005/29158152/';\n break;\n case 226123: // #869 Ft Cavazos Clear Creek Food Court\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-hood-1624917/29167948/';\n break;\n\n case 251341: // #303 Hill AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-hill-air-force-base-2526788/';\n break;\n case 251332: // #804 Fort Belvoir II\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-belvoir-1897088/';\n break;\n case 251335: // #549 Fort Riley II\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-riley-2376578/';\n break;\n // case 251334: // #360 Edwards AFB\n // doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-riley-2376578/';\n // break;\n case 251338: // #350 Davis Monthan AFB\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-tucson-2491517/';\n break;\n\n case 251339: // #140 Fort Riley\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-riley-2377506/';\n break;\n case 251342: // #614 Fort Johnson II\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-polk-south-2433364/';\n break;\n case 251333: // #342 Fort Knox\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-fort-knox-2526590/';\n break;\n case 226116: // #230 Ft Lewis Shopping Center Food Ct\n doordashLink = 'https://www.doordash.com/store/charleys-cheesesteaks-tacoma-1841808/29165348/';\n break;\n }\n\n $locationItem.find(\".delivery-button\").click(function () {\n window.location.href = doordashLink;\n });\n\n new Foundation.Accordion($locationItem.find('[data-accordion]'));\n\n if (restaurants[i].customerfacingmessage) {\n $locationItem.find('[data-location-customer-message]').text(restaurants[i].customerfacingmessage);\n $locationItem.find('[data-location-customer-message]').removeClass('hide');\n }\n\n // if(restaurants[i].calendar) {\n // var storeCalendar = restaurants[i].calendar[0].ranges[0];\n // var startDate = new Date(storeCalendar.start.substr(0,4) + '-' + storeCalendar.start.substr(4,2) + '-' + storeCalendar.start.substr(6,2) + 'T' + storeCalendar.start.substr(9, 5));\n // var endDate = new Date(storeCalendar.end.substr(0,4) + '-' + storeCalendar.end.substr(4,2) + '-' + storeCalendar.end.substr(6,2) + 'T' + storeCalendar.end.substr(9, 5));\n //\n // $locationItem.find('[data-location-hours]').text('Business Hours: ' + formatAMPM(startDate) + ' - ' + formatAMPM(endDate));\n //\n // if(restaurants[i].calendar.length > 1) {\n // var deliveryCalendar = restaurants[i].calendar[1].ranges[0];\n // var startDate_d = new Date(deliveryCalendar.start.substr(0,4) + '-' + deliveryCalendar.start.substr(4,2) + '-' + deliveryCalendar.start.substr(6,2) + 'T' + storeCalendar.start.substr(9, 5));\n // var endDate_d = new Date(deliveryCalendar.end.substr(0,4) + '-' + deliveryCalendar.end.substr(4,2) + '-' + deliveryCalendar.end.substr(6,2) + 'T' + storeCalendar.end.substr(9, 5));\n //\n // $locationItem.find('[data-location-hours-delivery]').text('Delivery Hours: ' + formatAMPM(startDate_d) + ' - ' + formatAMPM(endDate_d));\n // } else {\n // $locationItem.find('[data-location-hours-delivery]').remove();\n // }\n // } else {\n // $locationItem.find('[data-location-hours]').remove();\n // $locationItem.find('[data-location-hours-delivery]').remove();\n // }\n\n $locationItem.find(\"[data-location-name]\").html(restaurants[i][\"name\"]);\n\n // Fav button\n if (\n localStorage.getItem(\"charleys_visitor_nearest_location_id\") ==\n restaurants[i][\"id\"]\n ) {\n $locationItem\n .find(\".set-location-button\")\n .addClass(\"current-location\");\n }\n\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-location-id\", restaurants[i][\"id\"]);\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-title\", restaurants[i][\"name\"]);\n // console.log('adsgasdg', restaurants[i]);\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-permalink\", restaurants[i][\"permalink\"]);\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-store-id\", restaurants[i][\"extref\"]);\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-location-groups\", restaurants[i][\"location_groups\"]);\n\n if (experienceOptInStores === null || (experienceOptInStores !== null && experienceOptInStores.includes($locationItem.attr(\"data-store-number\")))) {\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-order-url\", \"/order/?store=\" + restaurants[i][\"slug\"]);\n } else {\n $locationItem\n .find(\".set-location-button\")\n .attr(\"data-order-url\", restaurants[i][\"url\"]);\n }\n\n $locationItem.find(\".set-location-button\").click(function () {\n setAsStore(\n $(this).attr(\"data-location-id\"),\n $(this).attr(\"data-title\"),\n $(this).attr(\"data-order-url\"),\n $(this).attr(\"data-permalink\"),\n $(this).attr(\"data-store-id\"),\n $(this).attr(\"data-location-groups\")\n );\n });\n\n // console.log('distance: ', restaurants[i]['distance'], Number(restaurants[i]['distance']));\n\n if (restaurants[i][\"distance\"] == 0) {\n $locationItem.find(\"[data-location-distance]\").addClass(\"hide\");\n }\n $locationItem\n .find(\"[data-location-distance]\")\n .text(restaurants[i][\"distance\"] + \" miles away\");\n\n var storeAddress =\n restaurants[i][\"streetaddress\"] +\n \"
    \" +\n restaurants[i][\"city\"] +\n \", \" +\n restaurants[i][\"state\"] +\n \" \" +\n restaurants[i][\"zip\"];\n $locationItem.find(\"[data-location-address]\").html(storeAddress);\n $locationItem\n .find(\"[data-location-phone]\")\n .attr(\"href\", \"tel:\" + restaurants[i][\"telephone\"].replace(/[\\s()-]/g, \"\"))\n .text(restaurants[i][\"telephone\"]);\n\n $locationItem\n .find(\".location-learn-more\")\n .attr(\"href\", restaurants[i][\"permalink\"]);\n\n $locationItem.attr(\"data-store-number\", restaurants[i][\"extref\"]);\n $locationItem.attr(\"data-store-url\", restaurants[i][\"url\"]);\n\n $locationItem.attr(\"data-location-id\", restaurants[i][\"id\"]);\n $locationItem.attr(\"data-location-name\", restaurants[i][\"name\"]);\n $locationItem.attr(\n \"data-location-address\",\n restaurants[i][\"streetaddress\"]\n );\n $locationItem.attr(\n \"data-location-city-zip\",\n restaurants[i][\"city\"] +\n \", \" +\n restaurants[i][\"state\"] +\n \" \" +\n restaurants[i][\"zip\"]\n );\n\n $locationItem.attr(\n \"data-supportsbaskettransfers\",\n restaurants[i][\"supportsbaskettransfers\"]\n );\n\n $locationItem.find(\".location-learn-more\").click(function (e) {\n e.stopPropagation();\n });\n\n supportedOrderTypes.forEach(function (supportedOrderType) {\n $locationItem\n .find(\".supported-order-type-\" + supportedOrderType)\n .text(\"yes\");\n });\n\n // Select A Location\n $locationItem.find(\".order-button\").click(function () {\n // console.log(\"clicked\");\n $(this).fadeOut(400, function () {\n $(this).hide(); // Optional: ensure the element is completely hidden\n });\n hideFakeMenuIfAddedLocation();\n if (experienceOptInStores === null || (experienceOptInStores !== null && experienceOptInStores.includes($(this).attr(\"data-store-number\")))) {\n\n var thisOrderTypeContainer = $(this)\n .closest(\".location-item\")\n .find(\".location-order-type-container\");\n\n $(\"#start-order-order-location-search-error-delivery\").addClass(\n \"hide\"\n );\n $(\"#start-order-order-location-search-error\").addClass(\"hide\");\n\n if (!thisOrderTypeContainer.hasClass(\"last-selected\")) {\n $(\".location-order-type-container.last-selected\").addClass(\n \"location-order-type-container-hidden\"\n );\n $(\".location-order-type-container\").removeClass(\"last-selected\");\n\n thisOrderTypeContainer.addClass(\"last-selected\");\n\n $(\"#start-order-select-order-type-embedded\").appendTo(\n thisOrderTypeContainer\n );\n $(\"#start-order-select-order-type-embedded\").removeClass(\"hide\");\n }\n\n if (\n thisOrderTypeContainer.hasClass(\n \"location-order-type-container-hidden\"\n )\n ) {\n thisOrderTypeContainer.removeClass(\n \"location-order-type-container-hidden\"\n );\n\n } else {\n thisOrderTypeContainer.addClass(\n \"location-order-type-container-hidden\"\n );\n }\n\n var thisLocationItem = $(this).closest(\".location-item\");\n\n $(\".start-order-order-type-label\").show();\n $(\"#pickup\").prop(\"checked\", true).change();\n // $(\"#start-order-asap\").prop(\"checked\", true).change();\n\n if (\n thisLocationItem.find(\".supported-order-type-pickup\").text() !=\n \"yes\"\n ) {\n $(\"label[for='pickup']\").hide();\n if ($(\"#pickup\").prop(\"checked\")) {\n $(\"#pickup\").prop(\"checked\", false);\n $(\"#curbside\").prop(\"checked\", true);\n }\n\n }\n\n if (\n thisLocationItem.find(\".supported-order-type-curbside\").text() !=\n \"yes\"\n ) {\n $(\"label[for='curbside']\").hide();\n if ($(\"#curbside\").prop(\"checked\")) {\n $(\"#curbside\").prop(\"checked\", false);\n $(\"#dispatch\").prop(\"checked\", true);\n }\n }\n\n if (\n thisLocationItem.find(\".supported-order-type-dinein\").text() !=\n \"yes\"\n ) {\n $(\"label[for='dinein']\").hide();\n if ($(\"#dinein\").prop(\"checked\")) {\n $(\"#dinein\").prop(\"checked\", false);\n $(\"#dispatch\").prop(\"checked\", true);\n }\n }\n\n if (\n thisLocationItem.find(\".supported-order-type-dispatch\").text() !=\n \"yes\"\n ) {\n $(\"label[for='dispatch']\").hide();\n }\n\n $([document.documentElement, document.body]).animate(\n {\n scrollTop: $(\"#start-order-select-order-type-embedded\")\n .closest(\".location-item\")\n .offset().top,\n },\n 1000\n );\n\n } else {\n\n // Opt-out store, go to store page\n charleys_show_loading();\n if (localStorage.getItem('charleys_access_token')) {\n window.location = 'https://order.charleys.com/login/punchh/' + localStorage.getItem('charleys_access_token');\n } else {\n window.location = $(this).attr('data-store-url');\n }\n\n }\n //$('.data-order-type-location-id').text($(this).attr('data-location-id'));\n\n //$('#' + view_context + '-select-order-type').foundation('open');\n //$('#' + view_context + '-select-order-type-button').trigger('click');\n });\n\n // set fave button status\n // if (localStorage.getItem(\"charleys_auth_token\")) {\n // $.ajax({\n // type: \"POST\",\n // url: ajax_url,\n // data: {\n // action: \"olo_get_fave_locations\",\n // authtoken: localStorage.getItem(\"charleys_auth_token\"),\n // },\n // success: function (response) {\n // result = JSON.parse(response);\n //\n // var is_fave = false;\n // if (\"favelocations\" in result) {\n // result.favelocations.every(function (fave) {\n // if (fave.vendorid == $locationItem.attr(\"data-location-id\")) {\n // is_fave = true;\n // }\n // return !is_fave;\n // });\n // }\n //\n // if (is_fave) {\n // $locationItem\n // .find(\".location-favorite\")\n // .addClass(\"location-favorite-active\");\n // $locationItem.find(\".fa-star-o\").addClass(\"fa-star\");\n // $locationItem.find(\".fa-star-o\").removeClass(\"fa-star-o\");\n // }\n // },\n // });\n // }\n\n $locationItem.removeClass(\"hide\");\n $(\"[data-location-list]\").append($locationItem);\n }\n }\n } else {\n // console.log('processedId already exists');\n }\n\n }\n\n if (!$(\"[data-location-list] .location-item:not(.hide)\").length) {\n if (userHasSearched) {\n $(\"[data-location-not-found]\").removeClass(\"hide\");\n } else {\n $(\"[data-location-not-selected]\").removeClass(\"hide\");\n }\n } else {\n $(\"[data-location-found]\").removeClass(\"hide\");\n }\n if ($(\"#tt-map\").length) {\n\n fitToMarkerBounds_order(ttmap_order);\n }\n } else {\n if (userHasSearched) {\n $(\"[data-location-found]\").addClass(\"hide\");\n $(\"[data-location-not-found]\").removeClass(\"hide\");\n } else {\n $(\"[data-location-not-selected]\").removeClass(\"hide\");\n }\n }\n\n $(\".location-favorite\").click(function (e) {\n e.stopPropagation();\n if (!$(this).hasClass(\"location-favorite-active\")) {\n olo_delete_fave_location(\n $(\".location-favorite-active\")\n .closest(\".location-item\")\n .data(\"location-id\")\n );\n\n // $(\".location-favorite-active\").find(\".fa-star\").addClass(\"fa-star-o\");\n // $(\".location-favorite-active\").find(\".fa-star\").removeClass(\"fa-star\");\n\n $(\".location-favorite-active\").removeClass(\"location-favorite-active\");\n\n olo_set_fave_location(\n $(this).closest(\".location-item\").data(\"location-id\")\n );\n\n $(this).addClass(\"current-location\");\n\n // $(this).find(\".fa-star-o\").addClass(\"fa-star\");\n // $(this).find(\".fa-star-o\").removeClass(\"fa-star-o\");\n $(this).addClass(\"location-favorite-active\");\n }\n });\n\n /*\n $('#' + view_context + '-select-order-type-button').click(function() {\n //$('#' + view_context + '-select-order-type').foundation('close');\n\n var validAddress = true;\n var isDelivery = Boolean($('input[name=\"' + view_context + '-order-type\"]:checked').val() == 'dispatch');\n console.log('location id');\n console.log($(this).closest('#' + view_context + '-select-order-type').find('[data-order-type-location-id]').text());\n var vendorid = $(this).closest('#' + view_context + '-select-order-type').find('[data-order-type-location-id]').text();\n var supportsbaskettransfers = ($(this).attr('data-supportsbaskettransfers') == 'true');\n\n // Delivery requires a full address, thus fails validation if no street address is present\n if(isDelivery && !$('#' + view_context + '-order-location-search-streetaddress').val().length) {\n validAddress = false;\n }\n\n console.log('validAddress', validAddress);\n\n $('#' + view_context + '-order-location-search').removeClass('form-alert');\n $('#' + view_context + '-order-location-search-error').addClass('hide');\n\n if(validAddress) {\n\n charleys_show_loading();\n setAddressComponents(view_context);\n selectLocation(vendorid, supportsbaskettransfers, false, view_context);\n\n } else {\n $('#' + view_context + '-order-location-search').addClass('form-alert');\n $('#' + view_context + '-order-location-search-error').removeClass('hide');\n }\n });\n */\n\n charleys_hide_loading();\n}\n\nfunction selectLocation(\n vendorid,\n supportsbaskettransfers,\n showcartdialog = false,\n view_context\n) {\n var $ = jQuery;\n // console.log(\n // \"selectLocation\",\n // vendorid,\n // supportsbaskettransfers,\n // showcartdialog,\n // view_context\n // );\n // clearBasketSession();\n charleys_show_loading();\n $.when(olo_create_basket(vendorid, supportsbaskettransfers)).done(function (\n ocb_json\n ) {\n // console.log(ocb_json);\n var ocb = JSON.parse(ocb_json);\n $.when(\n olo_set_basket_settings(\n view_context,\n ocb.earliestreadytime,\n Number(ocb.leadtimeestimateminutes)\n )\n ).done(function (osbs_json) {\n // Go to the restaurant menu\n var osbs = JSON.parse(osbs_json);\n // console.log('osbs', osbs);\n // Display basket setting errors\n // Dispatch address\n if (\"dispatchaddress\" in osbs && \"code\" in osbs.dispatchaddress) {\n $(\"[data-delivery-error]\").text(osbs.dispatchaddress.message);\n $(\n \"#\" + view_context + \"-order-location-search-error-delivery\"\n ).removeClass(\"hide\");\n clearBasketSession(); // Remove the cart session to prevent menu selection and checkout\n charleys_hide_loading();\n // Time wanted\n } else if (\"timewanted\" in osbs && \"code\" in osbs.timewanted) {\n $(\"[data-delivery-error]\").text(osbs.timewanted.message);\n $(\n \"#\" + view_context + \"-order-location-search-error-delivery\"\n ).removeClass(\"hide\");\n clearBasketSession(); // Remove the cart session to prevent menu selection and checkout\n charleys_hide_loading();\n // Delivery mode\n } else if (\"deliverymode\" in osbs && \"code\" in osbs.deliverymode) {\n $(\"[data-delivery-error]\").text(osbs.deliverymode.message);\n $(\n \"#\" + view_context + \"-order-location-search-error-delivery\"\n ).removeClass(\"hide\");\n clearBasketSession(); // Remove the cart session to prevent menu selection and checkout\n charleys_hide_loading();\n // Otherwise, good to proceed\n } else {\n updateBasketDisplay();\n if ($(\"#home-select-order-type\").length) {\n $(\"#home-select-order-type\").foundation(\"close\");\n }\n if ($(\"#account-select-order-type\").length) {\n $(\"#account-select-order-type\").foundation(\"close\");\n }\n if ($(\"#location-detail-select-order-type\").length) {\n $(\"#location-detail-select-order-type\").foundation(\"close\");\n }\n\n if (view_context == \"block\") {\n change_view(\"menu-cart\");\n } else {\n charleys_hide_loading();\n change_view(\"menu\");\n }\n\n if (showcartdialog) {\n $(\"#shopping-cart-view\").foundation(\"open\");\n $(\".reveal-overlay\").addClass('differnt-popup-overlay');\n } else {\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n\n }\n }\n });\n });\n}\n\nfunction setGoogleReferral() {\n var $ = jQuery;\n\n let googleReferralToken = getCookie('charleys_google_referral_token');\n // console.log('googleReferralToken');\n // console.log(googleReferralToken);\n\n if (typeof googleReferralToken !== 'undefined' && googleReferralToken.length > 0) {\n $.ajax({\n type: 'POST',\n url: ajax_url,\n data: {\n action: 'set_olo_basket_referral',\n authtoken: localStorage.getItem('charleys_auth_token'),\n basketGuid: localStorage.getItem('charleys_customer_basket_id')\n }\n });\n }\n}\n\nfunction setAddressComponents(view_context) {\n var $ = jQuery;\n\n let address_selected = $(\"#\" + view_context + \"-order-location-search\").val();\n if (view_context == \"start-order\" || view_context == \"location-detail\") {\n address_selected = $(\n \"#\" + view_context + \"-order-location-search-delivery\"\n ).val();\n }\n\n localStorage.setItem(\"charleys_customer_address_selected\", address_selected);\n localStorage.setItem(\n \"charleys_customer_address_streetaddress\",\n $(\"#\" + view_context + \"-order-location-search-streetaddress\").val()\n );\n localStorage.setItem(\n \"charleys_customer_address_city\",\n $(\"#\" + view_context + \"-order-location-search-city\").val()\n );\n localStorage.setItem(\n \"charleys_customer_address_zipcode\",\n $(\"#\" + view_context + \"-order-location-search-zipcode\").val()\n );\n\n // if($('[name=\"order-type\"]:checked') == 'dispatch') {\n if (\n $('input[name=\"' + view_context + '-order-type\"]:checked').val() ==\n \"dispatch\"\n ) {\n localStorage.setItem(\n \"charleys_customer_address_building\",\n $(\"#\" + view_context + \"-order-location-search-building\").val()\n );\n } else {\n localStorage.removeItem(\"charleys_customer_address_building\");\n }\n\n localStorage.setItem(\n \"charleys_customer_schedule\",\n $('input[name=\"' + view_context + '-order-schedule\"]:checked').val()\n );\n\n var deliverymode = $(\n 'input[name=\"' + view_context + '-order-type\"]:checked'\n ).val();\n\n // localStorage.setItem('charleys_customer_deliverymode', $('[name=\"order-type\"]:checked').val());\n localStorage.setItem(\"charleys_customer_deliverymode\", deliverymode);\n\n if (\n $('[name=\"' + view_context + '-order-schedule\"]:checked').val() == \"advance\"\n ) {\n localStorage.setItem(\n \"charleys_customer_scheduled_day\",\n $(\"#\" + view_context + \"-time-wanted-day\").val()\n );\n localStorage.setItem(\n \"charleys_customer_scheduled_time\",\n $(\"#\" + view_context + \"-time-wanted-time-slot\").val()\n );\n } else {\n localStorage.removeItem(\"charleys_customer_scheduled_day\");\n localStorage.removeItem(\"charleys_customer_scheduled_time\");\n }\n}\n\nfunction updateBasketDisplay(openBasket = false) {\n var $ = jQuery;\n\n // console.log(\"updateBasket\");\n\n charleys_show_loading();\n\n canCheckout = false;\n\n $(\".shopping-cart-icon [data-counter]\").addClass(\"hide\");\n\n // if(isUserLoggedIn(true)) {\n // $('[data-group-order-button]').removeClass('hide');\n // } else {\n // $('[data-group-order-button]').addClass('hide');\n // }\n\n // Session Basket ID is present, check if basket exists in OLO systems\n if (localStorage.getItem(\"charleys_customer_basket_id\")) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n // console.log(response);\n // console.log('customers basket', JSON.parse(response));\n var result = JSON.parse(response);\n\n // reset basket\n $(\"[data-cart-empty]\").removeClass(\"hide\");\n $(\"[data-cart-product-template]:not(.hide), [data-tax-row-template]:not(.hide)\").each(function () {\n $(this).remove();\n });\n $(\"[data-cart-upsell-items]\").addClass(\"hide\");\n $(\"[data-cart-totals]\").addClass(\"hide\");\n $(\".shopping-cart-icon [data-counter]\").addClass(\"hide\");\n\n // Basket Found\n if (result.id) {\n // console.log(\"basket found\");\n // Show cart location detail block\n $(\"[data-location-order-details]\").removeClass(\"hide\");\n $(\"[data-add-another-menu-item]\").removeClass(\"hide\");\n $(\"[data-start-a-new-order]\").addClass(\"hide\");\n\n // Set Delivery and Time Mode\n var deliverymode = result.deliverymode;\n if (result.deliverymode == \"dispatch\") {\n deliverymode = \"Delivery\";\n }\n $(\"[data-delivery-mode]\").text(deliverymode);\n $(\"[data-timemode]\").text(result.timemode.toUpperCase());\n\n var customer_schedule = result.timemode.toUpperCase();\n\n // console.log(customer_schedule, result);\n\n if (customer_schedule !== \"ASAP\") {\n var timeWanted = \"\";\n if (result.timewanted) {\n timeWanted = result.timewanted.split(\" \");\n }\n var scheduledTime = \"\";\n var scheduledDate = \"\";\n\n // console.log(timeWanted.length);\n\n if (timeWanted.length > 0) {\n scheduledDate = timeWanted[0];\n scheduledTime = timeWanted[1];\n scheduledDate =\n scheduledDate.substring(4, 6) +\n \"-\" +\n scheduledDate.substring(6, 8) +\n \"-\" +\n scheduledDate.substring(0, 4);\n }\n\n // console.log(scheduledTime);\n\n if (scheduledTime.substring(0, 2) > 12) {\n scheduledTime =\n scheduledTime.substring(0, 2) -\n 12 +\n scheduledTime.substring(2) +\n \" PM\";\n } else {\n if (scheduledTime.substring(0, 2) == 12) {\n scheduledTime = scheduledTime + \" PM\";\n } else {\n scheduledTime = scheduledTime + \" AM\";\n }\n }\n\n customer_schedule =\n \"at \" +\n scheduledTime +\n \" on \" +\n scheduledDate +\n \"\";\n } else {\n customer_schedule =\n \"\" + customer_schedule.toUpperCase() + \"\";\n }\n $(\"[data-delivery-timing]\").html(customer_schedule);\n\n $.when(\n olo_get_restaurant(\n localStorage.getItem(\"charleys_customer_store_location_id\")\n )\n ).done(function (restaurant_data_json) {\n var restaurant_data = JSON.parse(restaurant_data_json);\n // console.log('restaurant_data', restaurant_data);\n $(\"[data-menu-selected-store]\").text(restaurant_data.name);\n\n restaurant_data.labels.forEach(function (label) {\n if (\n label.key ==\n \"handoffmode_\" +\n localStorage.getItem(\"charleys_customer_deliverymode\")\n ) {\n $(\"[data-menu-handoff-mode]\").text(label.value);\n }\n });\n\n var customer_schedule = localStorage.getItem(\n \"charleys_customer_schedule\"\n );\n if (customer_schedule !== \"asap\") {\n var scheduledTime = localStorage.getItem(\n \"charleys_customer_scheduled_time\"\n );\n\n if (scheduledTime.substring(0, 2) > 12) {\n scheduledTime =\n scheduledTime.substring(0, 2) -\n 12 +\n scheduledTime.substring(2) +\n \" PM\";\n } else {\n scheduledTime = scheduledTime + \" AM\";\n }\n\n customer_schedule =\n \"at \" +\n scheduledTime +\n \" on \" +\n localStorage.getItem(\"charleys_customer_scheduled_day\");\n } else {\n customer_schedule = customer_schedule.toUpperCase();\n }\n $(\"[data-menu-handoff-time]\").text(customer_schedule);\n\n // show formatted store hours\n var hoursCalendar;\n var calendarMatched = false;\n\n // if there is a specific calendar of hours for this delivery type (e.g. dispatch), use it\n // restaurant_data.calendar.every(function (calendar) {\n // if (\n // calendar.type ==\n // localStorage.getItem(\"charleys_customer_deliverymode\")\n // ) {\n // hoursCalendar = calendar;\n // calendarMatched = true;\n // }\n //\n // return !calendarMatched;\n // });\n\n // otherwise use the regular business hours\n // if (calendarMatched == false) {\n // restaurant_data.calendar.every(function (calendar) {\n // if (calendar.type == \"business\") {\n // hoursCalendar = calendar;\n // calendarMatched = true;\n // }\n //\n // return !calendarMatched;\n // });\n // }\n\n // format the stupid nonstandard olo dates\n // var startDateRaw = hoursCalendar.ranges[0].start;\n // var endDateRaw = hoursCalendar.ranges[0].end;\n //\n // var jsStartDate = new Date(\n // startDateRaw.substring(0, 4),\n // startDateRaw.substring(4, 6),\n // startDateRaw.substring(6, 8),\n // startDateRaw.substring(9, 11),\n // startDateRaw.substring(12, 14),\n // 0,\n // 0\n // );\n // var jsEndDate = new Date(\n // endDateRaw.substring(0, 4),\n // endDateRaw.substring(4, 6),\n // endDateRaw.substring(6, 8),\n // endDateRaw.substring(9, 11),\n // endDateRaw.substring(12, 14),\n // 0,\n // 0\n // );\n //\n // var startTimeFormatted = jsStartDate.toLocaleString(\"en-US\", {\n // hour: \"numeric\",\n // minute: \"numeric\",\n // hour12: true,\n // });\n // var endTimeFormatted = jsEndDate.toLocaleString(\"en-US\", {\n // hour: \"numeric\",\n // minute: \"numeric\",\n // hour12: true,\n // });\n //\n // $(\".store-hours\").text(\n // \"Hours \" + startTimeFormatted + \" - \" + endTimeFormatted\n // );\n //\n // $(\"[data-store-info]\").removeClass(\"hide\");\n });\n\n // result.vendorid\n\n // Set Lead Time\n var leadTime = result.leadtimeestimateminutes;\n if (Number(leadTime) > 60) {\n var leadTimeHours = Math.floor(Number(leadTime) / 60);\n var leadTimeMinutes = Number(leadTime) - leadTimeHours * 60;\n leadTime = leadTimeHours + \" hrs\";\n if (leadTimeMinutes > 0) {\n leadTime += \" \" + leadTimeMinutes + \" mins\";\n }\n } else {\n leadTime += \" mins\";\n }\n $(\"[data-leadtimeestimateminutes]\").text(\"(\" + leadTime + \" est.)\");\n // Set Time wanted\n if (result.timewanted && result.deliverymode == \"dispatch\") {\n // console.log(result.timewanted);\n var timeWantedString =\n result.timewanted.slice(0, 4) +\n \"-\" +\n result.timewanted.slice(4, 6) +\n \"-\" +\n result.timewanted.slice(6, 8) +\n \"T\" +\n result.timewanted.slice(9, 14) +\n \":00\";\n // console.log(timeWantedString);\n var timeWanted = new Date(timeWantedString);\n var timeWantedDisplay =\n timeWanted.toLocaleDateString(\"en-US\") +\n \" at \" +\n timeWanted.toLocaleTimeString(\"en-US\");\n\n $(\"[data-timemode]\").text(\n result.timemode.toUpperCase() + \" (\" + timeWantedDisplay + \")\"\n );\n $(\"[data-leadtimeestimateminutes]\").text(\n \"(\" + timeWantedDisplay + \")\"\n );\n }\n\n // Basket Products\n if (result.products.length) {\n // Display upsell Items\n if ($(\"[data-cart-upsell-items]\").length) {\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_basket_upsell_items\",\n basketGuid: localStorage.getItem(\n \"charleys_customer_basket_id\"\n ),\n },\n success: function (response) {\n var upsells = JSON.parse(response);\n\n // Testing Upsell Items\n //if(true) {\n // upsells = JSON.parse('{\"groups\": [{\"title\": \"Desserts\",\"items\": [{\"id\": 416618,\"name\": \"Green Tea\",\"cost\": \"3.19\",\"shortdescription\": \"A lightly sweetened mix of citrus & green tea flavors.\",\"minquantity\": 1,\"maxquantity\": 12}, {\"id\": 15510697,\"name\": \"Spindrift - Blackberry\",\"cost\": \"2.19\",\"shortdescription\": \"Sparkling water with a touch of real blackberry juice\",\"minquantity\": 1,\"maxquantity\": 12}]}]}');\n //}\n\n // console.log('upsells: ', upsells);\n\n // Clear upsell display\n var $upsellContainer = $(\"[data-cart-upsell-items-list]\");\n $upsellContainer\n .find(\"[data-cart-upsell-item]:not(.hide)\")\n .each(function () {\n $(this).remove();\n });\n\n if (upsells.groups.length) {\n $(\"#cart-upsell-items-list.slick-initialized\").slick(\n \"unslick\"\n );\n $(\"[data-cart-upsell-item]:not(.hide)\").remove();\n\n var itemAdded = false;\n\n $.each(upsells.groups, function (key, group) {\n $.each(group.items, function (key, item) {\n // if (item.cost !== \"$0.00\") {\n var $upsellItem = $(\n \"[data-cart-upsell-item].hide\"\n ).clone();\n\n if (\"images\" in item) {\n $.each(item.images, function (key, image) {\n if (image.groupname == \"mobile-webapp-menu\") {\n $upsellItem.find(\".product-image\").css({\n \"background-image\":\n \"url(\" +\n upsells.imagepath +\n image.filename +\n \")\",\n });\n }\n });\n }\n\n $upsellItem\n .find(\"[data-product-title]\")\n .text(toTitleCase(item.name));\n\n $upsellItem\n .find(\"[data-add-upsell-to-cart]\")\n .attr(\"data-item-id\", item.id);\n\n $upsellItem\n .find(\"[data-description]\")\n .text(item.shortdescription);\n if (item.cost !== \"$0.00\") {\n $upsellItem\n .find(\"[data-price]\")\n .html(\n item.cost.replace(\"$\", \"$\") +\n \"/ea.\"\n );\n } else {\n $upsellItem.find(\"[data-price]\").remove();\n }\n\n $upsellItem.removeClass(\"hide\");\n $upsellContainer.append($upsellItem);\n\n itemAdded = true;\n\n $upsellItem\n .find(\"[data-add-upsell-to-cart]\")\n .click(function () {\n charleys_show_loading();\n\n let productId = $(this).attr(\"data-item-id\");\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu_options\",\n productId: productId,\n },\n success: function (response) {\n // console.log('Raw Response:', response);\n\n var optionGroups =\n JSON.parse(response).optiongroups;\n // if product is customizable\n if (optionGroups.length > 0) {\n // open as product detail item\n change_view(\"menu__\" + productId);\n } else {\n // else add directly as upsell item\n $.when(\n olo_add_upsell_items(productId, 1)\n ).done(function (upsell_item_json) {\n charleys_hide_loading();\n // console.log(upsell_item_json);\n updateBasketDisplay(true);\n });\n }\n },\n });\n });\n // }\n });\n });\n\n if (itemAdded) {\n $(\"[data-cart-upsell-items]\").removeClass(\"hide\");\n }\n\n $(\"#cart-upsell-items-list\").slick({\n infinite: true,\n slidesToShow: 3,\n slidesToScroll: 3,\n dots: true,\n autoplay: false,\n responsive: [\n {\n breakpoint: 1025,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2\n }\n }\n ]\n });\n } else {\n $(\"[data-cart-upsell-items]\").addClass(\"hide\");\n }\n },\n });\n }\n\n if (result.deliverymode == \"dispatch\") {\n $(\".location-order-details [data-row-deliverymode]\").text(\n \"Delivery\"\n );\n // $(\".location-order-details [data-store-address]\").text(restaurant_data.streetaddress);\n } else {\n $(\".location-order-details [data-row-deliverymode]\").text(\n \"Pickup\"\n );\n // $(\".location-order-details [data-store-address]\").text(restaurant_data.streetaddress);\n }\n canCheckout = true;\n $(\".shopping-cart-icon [data-counter]\").text(\n result.products.length\n );\n $(\".shopping-cart-icon [data-counter]\").removeClass(\"hide\");\n\n //get product image call\n let restaurant_id = localStorage.getItem(\"charleys_customer_store_location_id\");\n\n for (var i = 0; i < result.products.length; i++) {\n var $cartProduct = $(\n \"[data-cart-product-template].hide:first\"\n ).clone();\n\n var product = result.products[i];\n\n // console.log('product', product);\n //get product image\n $cartProduct\n .find(\"[data-product-img]\")\n .attr(\"id\", product.productId);\n // Check if the product.id is already in productsOrderImgs\n let productsIdForGettingImg = product.productId;\n let productsOrderImgs = JSON.parse(localStorage.getItem('productsOrderImgs')) || [];\n let productsOrderMetaData = JSON.parse(localStorage.getItem('productsOrderMetaData')) || [];\n let existingProduct = productsOrderImgs.find(item => item.id === productsIdForGettingImg);\n let existingProductMetaData = productsOrderMetaData.find(item => item.id === productsIdForGettingImg);\n\n if (existingProduct && existingProductMetaData) {\n // console.log('The variable productsIdForGettingImg exists in local storage.');\n $cartProduct.find(\"[data-product-img]\").attr(\"src\", existingProduct.imagePath).removeClass(\"hide\");\n } else if (restaurant_id) {\n // console.log('Call ajax for productsIdForGettingImg');\n\n // Initialize the productsOrderImgs array\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"get_olo_get_menu\",\n restaurant_id: restaurant_id,\n },\n success: function (response) {\n let rawProductData = JSON.parse(response);\n // console.log('Raw Response:', rawProductData);\n function getMenuItemImages(categoryType) {\n // console.log('categories', categoryType);\n if (categoryType && categoryType.length > 0) {\n categoryType.forEach(category => {\n if (category.products && category.products.length > 0) {\n // Iterate over products within each category\n category.products.forEach(product => {\n // Check if the product ID is in the productsIdForGettingImg array\n if (productsIdForGettingImg === product.id) {\n let formattedImagePath;\n let productsOrderImgs = JSON.parse(localStorage.getItem('productsOrderImgs')) || [];\n let productsOrderMetaData = JSON.parse(localStorage.getItem('productsOrderMetaData')) || [];\n // product.metadata.forEach((item) => console.log('Metadata Value:', item.value)); \n if (product.imagefilename) {\n // console.log('Image Filename:', rawProductData.imagepath + product.imagefilename);\n formattedImagePath = rawProductData.imagepath + product.imagefilename;\n $(\"#\" + product.id + \"[data-product-img]\")\n .attr(\"src\", formattedImagePath).removeClass(\"hide\");\n // console.log('cart', \"#\" + product.id + \"[data-product-img]\");\n } else {\n formattedImagePath = '/wp-content/themes/Charleys/assets/images/charleys-product-placeholder.svg';\n $(\"#\" + product.id + \"[data-product-img]\")\n .attr(\"src\", formattedImagePath).removeClass(\"hide\");\n }\n if (product.metadata) {\n formattedMetaData = product.metadata.map(item => item.value);\n // console.log('formattedMetaData', formattedMetaData);\n if (formattedMetaData[0] === 'Hide indent values of 2 and above') {\n $(\"span[regular-option]\").parent().addClass('hide');\n }\n } else {\n formattedMetaData = null;\n }\n productsOrderImgs.push({\n id: product.id,\n imagePath: formattedImagePath\n });\n productsOrderMetaData.push({\n id: product.id,\n metaDataValue: formattedMetaData\n });\n // Store the productsOrderImgs array in local storage\n localStorage.setItem('productsOrderImgs', JSON.stringify(productsOrderImgs));\n localStorage.setItem('productsOrderMetaData', JSON.stringify(productsOrderMetaData));\n // console.log('Stored productsOrderImgs in local storage:', productsOrderImgs);\n // console.log('Stored productsOrderMetaData in local storage:', productsOrderMetaData);\n }\n });\n } else {\n // console.log('No products found in this category');\n }\n\n });\n }\n }\n getMenuItemImages(rawProductData.categories);\n getMenuItemImages(rawProductData.singleusecategories);\n\n\n }\n });\n } else {\n // console.log('no work ;(');\n }\n\n\n //end of get product image\n\n var recipient = \"\";\n if (product.recipient) {\n var recipientSpan = $('').text(product.recipient);\n $cartProduct.find(\"[data-recipient]\").empty().append(recipientSpan);\n }\n\n $cartProduct\n .find(\"[data-qty]\")\n .text(product.quantity);\n // if (product.quantity > 1) {\n // $cartProduct.find(\"[data-qty]\").removeClass(\"hide\");\n // } else {\n // $cartProduct.find(\"[data-qty]\").addClass(\"hide\");\n // }\n\n // Add select option for qty over 9\n // may want to add incremental options from 9 to destination quantity?\n // console.log('product', product);\n if (product.quantity > 9) {\n $cartProduct\n .find(\"[data-qty-cart-update]\")\n .append('');\n }\n\n $cartProduct\n .find(\"[data-qty-cart-update]\")\n .val(product.quantity);\n\n // Add some details\n $cartProduct\n .find(\"[data-qty-cart-update]\")\n .attr(\"data-product-id\", product.id)\n .attr(\"data-product-choices\", JSON.stringify(product.choices))\n .attr('data-product-recipient', product.recipient);\n\n // Actin for quantity change\n $cartProduct.find(\"[data-qty-cart-update]\").change(function () {\n\n charleys_show_loading();\n\n var productSelectionsQty = {\n productid: Number($(this).attr(\"data-product-id\")),\n quantity: Number($(this).val()),\n choices: [],\n recipient: $(this).attr('data-product-recipient')\n };\n\n var choiceJSON = JSON.parse($(this).attr(\"data-product-choices\"));\n\n for (let j = 0; j < choiceJSON.length; j++) {\n var choiceQty = choiceJSON[j].quantity;\n var choiceID = choiceJSON[j].optionid;\n\n var choice = {\n quantity: choiceQty,\n choiceid: choiceID,\n };\n\n productSelectionsQty.choices.push(choice);\n }\n\n productSelectionsQty = {\n products: [productSelectionsQty]\n };\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_update_basket_product\",\n productSelections: JSON.stringify(productSelectionsQty),\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n // console.log('update basket response', response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n if (\n result.errors &&\n result.errors.length > 0 &&\n result.errors[0].message.includes(\"Please enter a valid quantity between\")\n ) {\n // Extract the \"between # and #\" part using a regular expression\n let match = result.errors[0].message.match(/between (\\d+) and (\\d+)/);\n\n if (match) {\n // Get the numbers from the regex match\n let min = match[1];\n let max = match[2];\n if (min === max) {\n alert(`You can only have ${min} of this item in your cart.`);\n } else {\n alert(`You can only have between ${min} and ${max} of this item in your cart.`);\n }\n // Display the alert with the extracted values\n }\n }\n },\n error: function () {\n // Log error details\n // console.log(\"AJAX request failed:\");\n },\n complete: function () {\n // Close menu selection modal\n $(\"#product-detail-view\").foundation(\"close\");\n // Reset the current state to the menu view\n if (window.location.hash !== \"#menu-product-view\") {\n history.replaceState({}, \"\", \"#menu\");\n }\n updateBasketDisplay(true);\n charleys_hide_loading();\n },\n });\n\n });\n\n\n\n\n $cartProduct\n .find(\"[data-product-edit-url]\")\n .attr(\"href\", \"#menu_\" + product.id + \"_\" + product.productId);\n\n $cartProduct\n .find(\"[data-product-edit-url]\")\n .attr(\"data-product-id\", product.productId);\n $cartProduct\n .find(\"[data-product-edit-url]\")\n .attr(\"data-product-choices\", JSON.stringify(product.choices));\n //combo upsell stuff \n if (product.choices) {\n product.choices.forEach(function (choice) {\n if (choice.name === \"No\" && (choice.indent === 1 || choice.indent === 0)) {\n // console.log('display combo upsell');\n $cartProduct\n .find(\"[data-product-edit-url][data-make-it-a-combo-upsell]\")\n .removeClass('hide')\n .on('click', function () {\n // Before navigating to the new page, set the scroll flag\n localStorage.setItem('scrollToComboModifier', 'true');\n localStorage.setItem('scrollToComboModifierOptions', JSON.stringify(product.choices));\n });\n }\n });\n }\n\n $cartProduct\n .find(\"[data-product-name]\")\n .text(\n product.name.toLowerCase().replace(/\\b(?!\\()[a-z]/g, function (char, index, fullText) {\n // Check if the character is inside parentheses\n if (fullText[index - 1] !== \"(\") {\n return char.toUpperCase(); // Capitalize the letter if not inside parentheses\n } else {\n return char; // Leave the letter as lowercase if inside parentheses\n }\n })\n );\n\n $cartProduct\n .find(\"[data-price]\")\n .text(\"$\" + formatMoney(product.totalcost));\n\n if (product.choices && product.choices.length) {\n // console.log('product.choices', product.choices);\n let productsOrderMetaData = JSON.parse(localStorage.getItem('productsOrderMetaData'));\n hideAtIndentOf2 = false;\n\n if (productsOrderMetaData) {\n let existingProductMetaData = productsOrderMetaData.find(product => product.id === productsIdForGettingImg);\n if (existingProductMetaData && existingProductMetaData.metaDataValue && existingProductMetaData.metaDataValue[0] === 'Hide indent values of 2 and above') {\n hideAtIndentOf2 = true;\n // console.log('hideAtIndentOf2', hideAtIndentOf2);\n }\n }\n\n\n // console.log('hideAtIndentOf2', hideAtIndentOf2);\n var $dataChoicesContainer = $cartProduct.find(\"[data-choices]\");\n var $dataSizeChoiceContainer = $cartProduct.find(\"[data-size-choice]\");\n\n // Clear the containers first\n $dataChoicesContainer.empty();\n $dataSizeChoiceContainer.empty();\n\n // Initialize variables to hold the choices\n let currentGroup = [];\n let firstIndentOneName = null;\n let firstIndentOneProcessed = false; // Flag to track first indent 1\n\n // Define special names where we want a colon instead of a comma\n var colonNames = ['Regular', 'Small', 'Large', 'Extra', 'None', 'Lite', 'Place on the Side'];\n\n // Loop through the product.choices\n for (let ii = 0; ii < product.choices.length; ii++) {\n let choice = product.choices[ii];\n let choiceName = choice.name;\n\n // Handle indent of 0\n if (choice.indent === 0) {\n if (choiceName.toLowerCase() === \"yes\" || choiceName.toLowerCase() === \"no\") {\n // console.log('Handling \"Yes\" or \"No\":', choiceName);\n firstIndentOneName = true;\n } else if (choiceName.toLowerCase() !== \"product size\") {\n $dataSizeChoiceContainer.append('

    ' + choiceName + '

    ');\n }\n continue; // Skip further processing for indent 0\n }\n\n // Handle indent of 1\n if (choice.indent === 1) {\n // Update the first indent 1 name if not already set\n if (!firstIndentOneProcessed && firstIndentOneName) {\n $dataSizeChoiceContainer.append('

    ' + choiceName + '

    ');\n firstIndentOneProcessed = true; // Set flag to true after processing\n } else if (choiceName === 'Regular') {\n\n } else {\n // If there's an existing group, append it to the DOM\n if (currentGroup.length > 0) {\n // console.log('choiceName', choice.name);\n $dataChoicesContainer.append('

    ' + currentGroup.join(', ') + '

    ');\n }\n\n // Start a new group with the current choice name\n currentGroup = [choiceName];\n }\n } else if (choice.indent > 1) {\n // Check if the choice name should use a colon or comma as a separator\n if (colonNames.includes(choiceName)) {\n // console.log('sdfgasdg', choiceName, choice.indent);\n // Append the last item with a colon and start a new group with this choice\n if ((choice.indent === 3 && choiceName.includes('Regular')) || (hideAtIndentOf2 === true && choiceName.includes('Regular'))) {\n let lastChoice = currentGroup.pop();\n const index = currentGroup.indexOf(lastChoice);\n if (index > -1) {\n currentGroup.splice(index, 1); // Removes the lastChoice from the array\n }\n } else if (choiceName.includes('Regular')) {\n let lastChoice = currentGroup.pop();\n currentGroup.push('' + lastChoice + ': ' + choiceName + '');\n } else if (currentGroup.length > 0) {\n let lastChoice = currentGroup.pop();\n currentGroup.push(lastChoice + ': ' + choiceName);\n } else {\n currentGroup.push(choiceName + '');\n }\n } else {\n currentGroup.push(choiceName);\n }\n }\n }\n\n // After the loop, append the last group if it exists\n if (currentGroup.length > 0) {\n // console.log('currentGroup', currentGroup);\n $dataChoicesContainer.append('

    ' + currentGroup.join(', ') + '

    ');\n }\n }\n else {\n $cartProduct.find(\"[data-choices]\").addClass(\"hide\");\n $cartProduct.find(\".toggle-choices\").addClass(\"hide\");\n }\n\n\n $cartProduct\n .find(\"[data-remove-item]\")\n .attr(\"data-product-id\", product.id);\n $cartProduct\n .find(\"[data-remove-item]\")\n .attr(\"data-product-name\", product.name);\n $cartProduct\n .find(\"[data-remove-item]\")\n .attr(\"data-product-price\", formatMoney(product.totalcost));\n // if (choices) {\n // $cartProduct\n // .find(\"[data-remove-item]\")\n // .attr(\"data-product-variant\", choices.join(\", \"));\n // } else {\n // $cartProduct\n // .find(\"[data-remove-item]\")\n // .attr(\"data-product-variant\", \"\");\n // }\n\n $cartProduct\n .find(\"[data-remove-item]\")\n .attr(\"data-product-qty\", product.quantity);\n\n $cartProduct.find(\"[data-remove-item]\").click(function () {\n var productId = Number($(this).attr(\"data-product-id\"));\n var productName = $(this).attr(\"data-product-name\");\n var productPrice = $(this).attr(\"data-product-price\");\n var productVariant = $(this).attr(\"data-product-variant\");\n var productQuantity = Number($(this).attr(\"data-product-qty\"));\n\n // remove cart item\n charleys_show_loading();\n\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n var addToCartData = {\n event: \"remove_from_cart\",\n ecommerce: {\n currency: \"USD\",\n value: productPrice,\n items: [\n {\n item_id: productId,\n item_name: productName,\n affiliation: localStorage.getItem(\n \"charleys_customer_store_location_name\"\n ), //$('[data-menu-selected-store]:first').text(),\n price: productPrice,\n item_variant: productVariant,\n quantity: productQuantity,\n },\n ],\n },\n };\n // console.log(\"GA4\", addToCartData);\n window.dataLayer.push(addToCartData);\n\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_remove_from_basket\",\n basketGuid: localStorage.getItem(\n \"charleys_customer_basket_id\"\n ),\n basketProductId: productId,\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n },\n complete: function () {\n // refresh cart view\n updateBasketDisplay();\n },\n });\n });\n\n $cartProduct.removeClass(\"hide\");\n $(\"[data-cart-product-selections]\").append($cartProduct);\n }\n\n //end of get product image call\n\n $(\"[data-cart-empty]\").addClass(\"hide\");\n\n $(\"[data-cart-subtotal]\").text(\"$ \" + formatMoney(result.subtotal));\n $(\"[data-cart-subtotal]\").attr(\n \"data-cart-subtotal\",\n formatMoney(result.subtotal)\n );\n\n // Display Rewards/Discounts\n if (result.discounts && result.discounts.length) {\n for (var iv = 0; iv < result.discounts.length; iv++) {\n var $taxRow = $('[data-tax-row-template].hide').clone();\n $taxRow.find('[data-label]').text(result.discounts[iv].description);\n $taxRow.find('[data-tax]').text('($ ' + formatMoney(result.discounts[iv].amount) + ')');\n\n $taxRow.removeClass('hide');\n $('[data-taxes-table]').append($taxRow);\n }\n }\n // console.log('results', result, result.taxes)\n // Display taxes\n if (result.taxes && result.taxes.length) {\n for (var iii = 0; iii < result.taxes.length; iii++) {\n var $taxRow = $(\"[data-tax-row-template].hide\").clone();\n $taxRow.find(\"[data-label]\").text(result.taxes[iii].label);\n $taxRow\n .find(\"[data-tax]\")\n .text(\"$ \" + formatMoney(result.taxes[iii].tax));\n\n $taxRow.removeClass(\"hide\");\n $(\"[data-taxes-table]\").append($taxRow);\n }\n }\n\n // Display tip\n if (Number(result.tip)) {\n var $taxRow = $(\"[data-tax-row-template].hide\").clone();\n $taxRow.find(\"[data-label]\").text(\"Tip\");\n $taxRow.find(\"[data-tax]\").text(\"$ \" + formatMoney(result.tip));\n\n $taxRow.removeClass(\"hide\");\n $(\"[data-taxes-table]\").append($taxRow);\n\n if ($(\"#custom-tip-amount\").length) {\n $(\"#custom-tip-amount\").val(formatMoney(result.tip));\n }\n }\n\n // Display fees\n if (result.fees && result.fees.length) {\n for (var v = 0; v < result.fees.length; v++) {\n var $taxRow = $(\"[data-tax-row-template].hide\").clone();\n $taxRow.find(\"[data-label]\").text(result.fees[v].amount);\n $taxRow\n .find(\"[data-tax]\")\n .text(\"$ \" + formatMoney(result.fees[v].amount));\n\n $taxRow.removeClass(\"hide\");\n $(\"[data-taxes-table]\").append($taxRow);\n }\n }\n\n if (result.customerhandoffcharge) {\n var $taxRow = $(\"[data-tax-row-template].hide\").clone();\n\n $taxRow.find(\"[data-label]\").text(\"Delivery Fee\");\n $taxRow\n .find(\"[data-tax]\")\n .text(\"$ \" + formatMoney(result.customerhandoffcharge));\n\n $taxRow.removeClass(\"hide\");\n $(\"[data-taxes-table]\").append($taxRow);\n }\n\n $(\"[data-cart-grand-total]\").attr(\n \"data-cart-grand-total\",\n formatMoney(result.total)\n );\n $(\"[data-cart-grand-total]\").text(\"$ \" + formatMoney(result.total));\n\n $(\"[data-cart-totals]\").removeClass(\"hide\");\n\n // display tip\n if ($(\"[data-tip-container]\").length) {\n if (result.allowstip) {\n // if(true) {\n $(\"[data-tip-container]\").removeClass(\"hide\");\n // console.log(\"Tip Status: \", result.allowstip);\n\n if (result.deliverymode == \"dispatch\") {\n $(\"[data-tip-note]\").text(\" – 100% goes to the driver\");\n } else {\n $(\"[data-tip-note]\").text(\n \" – 100% goes to the restaurant staff\"\n );\n }\n\n // tip amount display for buttons\n $(\"[data-tip-amount]\").each(function () {\n var tipAmount =\n Math.round(\n (Number(result.subtotal) *\n 100 *\n (Number($(this).attr(\"data-tip-amount\")) * 100)) /\n 100\n ) / 100;\n // $(this).text('$ ' + formatMoney(tipAmount));\n // $(this).parent().prev().attr('data-amount', tipAmount);\n $(this).val(tipAmount);\n });\n\n $(\"#custom-tip-amount\").inputmask({\n alias: \"numeric\",\n allowMinus: false,\n digits: 2,\n max: 9999.99,\n });\n } else {\n $(\"[data-tip-container]\").addClass(\"hide\");\n }\n }\n\n // Custom Fields\n if (\n result.customfields.length &&\n $(\"[data-custom-fields-info]\").length\n ) {\n var customFields = [];\n // filter customf fields to only applicable basket types\n // console.log(result.deliverymode);\n for (var b = 0; b < result.customfields.length; b++) {\n if (\n result.customfields[b].scope.includes(result.deliverymode) &&\n result.deliverymode !== \"pickup\"\n ) {\n // console.log(result.customfields[b].scope);\n customFields.push(result.customfields[b]);\n }\n }\n\n // Put Custom Fields In Order\n customFields.sort(function (a, b) {\n if (a.id < b.id) {\n return -1;\n }\n if (a.id > b.id) {\n return 1;\n }\n return 0;\n });\n\n // console.log(\"custom fields\", customFields);\n\n // If custom fields are available, display them\n if (customFields.length) {\n for (var c = 0; c < customFields.length; c++) {\n var $cField = $(\n \"[data-custom-fields-info] [data-custom-fields-form] [data-custom-field-template].hide\"\n ).clone();\n\n var fieldLabel = customFields[c].label;\n\n $cField\n .find(\"input\")\n .attr(\"data-custom-field-id\", customFields[c].id);\n $cField.find(\"input\").attr(\"value\", customFields[c].value);\n\n if (customFields[c].isrequired) {\n $cField.find(\"input\").prop(\"required\", true);\n fieldLabel += \" *\";\n }\n $cField.find(\"[data-custom-field-label]\").text(fieldLabel);\n\n $cField.removeClass(\"hide\");\n $(\n \"[data-custom-fields-info] [data-custom-fields-form]\"\n ).append($cField);\n }\n\n // new Foundation.Abide($('#custom-fields'), {});\n\n $(\"[data-custom-fields-info]\").removeClass(\"hide\");\n $(\n \"[data-custom-fields-info] [data-custom-fields-form] [data-custom-field-template].hide\"\n ).remove();\n }\n }\n\n var loginRewardsPromptView = '';\n\n var signupRewardsPromptView =\n '';\n\n function displaySignInForm() {\n $(\"#login-rewards-prompt-view\").html(loginRewardsPromptView);\n $(\"#login-rewards-prompt-view\").foundation(\"open\");\n activateSignIn($(\"#login-rewards-prompt-view form\"));\n $(\"#rewards-signup\").click(displaySignUpForm);\n $(\"#forgotpassword\").click(function () {\n $(\"#login-rewards-prompt-view\").foundation(\"close\");\n displayForgotPasswordForm();\n });\n }\n\n function displaySignUpForm() {\n //show signup view\n $(\"#login-rewards-prompt-view\").html(signupRewardsPromptView);\n activateSignUp($(\"#login-rewards-prompt-view form\"));\n //recenter view\n $(\"#login-rewards-prompt-view\").css(\n \"top\",\n $(window).height() / 2 -\n $(\"#login-rewards-prompt-view\").height() / 2 +\n \"px\"\n );\n\n $(\"#rewards-signin\").click(displaySignInForm);\n }\n\n function displayForgotPasswordForm() {\n $(\"#forgot-prompt-view\").foundation(\"open\");\n activateForgotPassword($(\"#forgot-prompt-view form\"));\n $(\"#forgot-prompt-view .login-link\").click(function () {\n $(\"#forgot-prompt-view\").foundation(\"close\");\n displaySignInForm();\n });\n }\n\n $(\".cart-checkout\").off(\"click\");\n // Checkout button\n $(\".cart-checkout\").click(function () {\n var cartItems = [];\n $(\n \"[data-cart-product-selections] .cart-product:not(.hide) .remove-item\"\n ).each(function () {\n var productId = Number($(this).attr(\"data-product-id\"));\n var productName = $(this).attr(\"data-product-name\");\n var productPrice = $(this).attr(\"data-product-price\");\n var productVariant = $(this).attr(\"data-product-variant\");\n var productQuantity = Number($(this).attr(\"data-product-qty\"));\n\n cartItems.push({\n item_id: productId,\n item_name: productName,\n affiliation: localStorage.getItem(\n \"charleys_customer_store_location_name\"\n ), //$('[data-menu-selected-store]:first').text(),\n price: productPrice,\n item_variant: productVariant,\n quantity: productQuantity,\n });\n });\n\n // GA4 open shopping cart\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ ecommerce: null });\n var ga4Data = {\n event: \"begin_checkout\",\n ecommerce: {\n currency: \"USD\",\n // 'value': Number($('[data-cart-grand-total]').attr('data-cart-grand-total')),\n value: Number(\n $(\"[data-cart-subtotal]\").attr(\"data-cart-subtotal\")\n ),\n items: cartItems,\n },\n };\n // console.log(\"GA4: \", ga4Data);\n window.dataLayer.push(ga4Data);\n\n // Close Cart\n $(\"#shopping-cart-view\").foundation(\"close\");\n if (localStorage.getItem(\"charleys_access_token\")) {\n // Go to checkout\n change_view(\"checkout\");\n } else {\n // Display login prompt\n displaySignInForm();\n //$('#login-rewards-prompt-view').foundation('open');\n }\n });\n\n $(\"#rewards-signup\").click(displaySignUpForm);\n } else {\n $(\".cart-checkout\").off(\"click\");\n\n if (window.location.hash == \"#checkout\") {\n change_view(\"menu\");\n }\n } // if(result.products.length)\n\n setPaymentSplit();\n\n // Update Applied Reward List\n if (result.appliedrewards.length) {\n updateRewardsList(result.appliedrewards, [\n result.appliedrewards[0].reference,\n ]);\n } else {\n $.when(olo_get_qualifying_rewards()).done(function (\n qual_rewards_json\n ) {\n // console.log(qual_rewards_json);\n var qual_rewards = JSON.parse(qual_rewards_json);\n\n updateRewardsList(qual_rewards.rewards);\n });\n }\n\n // Clear displayed coupons\n $(\n \"[data-coupon-apply-list] [data-coupon-apply-template]:not(.hide)\"\n ).remove();\n $(\"[data-coupon-description]\").addClass(\"hide\");\n\n // testing coupon display\n // result.coupon = {\n // \"couponcode\": \"Take20\",\n // \"description\": \"Take 20% off order\"\n // };\n\n // Display Coupons\n if (result.coupon) {\n var $couponItem = $(\n \"[data-coupon-apply-list] [data-coupon-apply-template].hide\"\n ).clone();\n var $couponDescription = $(\"[data-coupon-description]\");\n\n $couponItem.attr(\n \"aria-label\",\n \"Click to Remove Coupon: \" + result.coupon.couponcode\n );\n $couponItem.attr(\"data-remove-coupon\", result.coupon.couponcode);\n $couponItem.html(\"\" + result.coupon.couponcode + \"\");\n $couponDescription.text(result.coupon.description);\n $couponDescription.removeClass(\"hide\");\n\n // $couponItem.text(\n // \"Coupon: \" +\n // result.coupon.couponcode +\n // \" - \" +\n // result.coupon.description\n // );\n\n $couponItem.removeClass(\"hide\");\n\n $(\"[data-coupon-apply-list]\").append($couponItem);\n $(\"[data-coupon-apply-list]\").removeClass(\"hide\");\n $(\"[data-coupon-code-entry]\").addClass(\"hide\");\n\n $couponItem.click(function () {\n // Remove Coupon\n charleys_show_loading();\n $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_remove_coupon_from_basket\",\n basketGuid: localStorage.getItem(\n \"charleys_customer_basket_id\"\n ),\n },\n success: function (response) {\n // console.log(response);\n },\n complete: function () {\n charleys_hide_loading();\n updateBasketDisplay();\n },\n });\n });\n } else {\n $(\"[data-coupon-apply-list]\").addClass(\"hide\");\n $(\"[data-coupon-code-entry]\").removeClass(\"hide\");\n }\n } else {\n $(\"[data-location-order-details]\").addClass(\"hide\");\n $(\"[data-add-another-menu-item]\").addClass(\"hide\");\n $(\"[data-start-a-new-order]\").removeClass(\"hide\");\n\n $(\"[data-delivery-mode]\").text(\"\");\n $(\"[data-timemode]\").text(\"\");\n $(\"[data-leadtimeestimateminutes]\").text(\"\");\n\n clearBasketSession();\n }\n // charleys_hide_loading();\n },\n complete: function () {\n if (openBasket) {\n $(\"#shopping-cart-view\").foundation(\"open\");\n $(\".reveal-overlay\").addClass('differnt-popup-overlay');\n } else {\n $(\".reveal-overlay\").removeClass('differnt-popup-overlay');\n\n }\n\n charleys_hide_loading();\n },\n });\n } else {\n // No cart\n $(\".shopping-cart-icon [data-counter]\").text(0);\n\n // reset basket\n $(\"[data-cart-empty]\").removeClass(\"hide\");\n $(\n \"[data-cart-product-template]:not(.hide), [data-tax-row-template]:not(.hide)\"\n ).each(function () {\n $(this).remove();\n });\n $(\"[data-cart-upsell-items]\").addClass(\"hide\");\n $(\"[data-cart-totals]\").addClass(\"hide\");\n $(\".shopping-cart-icon [data-counter]\").addClass(\"hide\");\n\n charleys_hide_loading();\n }\n} // updateBasketDisplay()\n\nfunction updateRewardsList(rewards, applied_rewards = []) {\n var $ = jQuery;\n\n // console.log(rewards, applied_rewards);\n\n var $rewards_list = $(\"[data-reward-item-list]\");\n var $rewards_list_cart = $(\"[data-reward-item-list-cart]\");\n\n // Remove any listed rewards\n $rewards_list.find(\"[data-reward-item-template]:not(.hide)\").remove();\n $rewards_list_cart.find(\"[data-reward-item-template]:not(.hide)\").remove();\n\n if (typeof rewards === \"undefined\") {\n $(\"[data-rewards-container]\").addClass(\"hide\");\n $(\"[data-rewards-upsell]\").removeClass(\"hide\");\n $(\"[data-reward-messaging]\").addClass(\"hide\");\n } else {\n $(\"[data-rewards-container]\").removeClass(\"hide\");\n $(\"[data-rewards-upsell]\").addClass(\"hide\");\n $(\"[data-reward-messaging]\").removeClass(\"hide\");\n\n }\n\n // List rewards\n if (rewards && rewards.length) {\n // Display rewards\n $(\"[data-reward-not-found]\").addClass(\"hide\");\n $rewards_list.removeClass(\"hide\");\n $rewards_list_cart.removeClass(\"hide\");\n\n $.each(rewards, function (key, reward) {\n var $reward_template = $(\"[data-reward-item-template].hide\").clone();\n\n $reward_template\n .find(\"input\")\n .attr(\"id\", reward.rewardid + \"_\" + reward.reference);\n $reward_template.find(\"input\").attr(\"data-reference\", reward.reference);\n $reward_template.find(\"input\").attr(\"data-rewardid\", reward.rewardid);\n $reward_template\n .find(\"label\")\n .attr(\"for\", reward.rewardid + \"_\" + reward.reference);\n\n var quanityAvailable = reward.quantityavailable + \" \";\n if (quanityAvailable < 2) {\n quanityAvailable = \"\";\n }\n $reward_template\n .find(\"label .title\")\n .text(quanityAvailable + reward.label);\n $reward_template.find(\"label .description\").text(reward.fineprint);\n\n if (applied_rewards.includes(reward.reference)) {\n $reward_template.find(\"input\").prop(\"checked\", true);\n }\n\n $reward_template.removeClass(\"hide\");\n $rewards_list.append($reward_template);\n\n // for Cart\n $reward_template_cart = $reward_template.clone();\n $reward_template_cart\n .find(\"input\")\n .attr(\"id\", reward.rewardid + \"_\" + reward.reference + \"_cart\");\n $reward_template_cart\n .find(\"label\")\n .attr(\"for\", reward.rewardid + \"_\" + reward.reference + \"_cart\");\n $rewards_list_cart.append($reward_template_cart);\n });\n\n // Select Reward\n $rewards_list.find('input[name=\"reward-selector\"]').change(rewardChange);\n $rewards_list_cart\n .find('input[name=\"reward-selector\"]')\n .change(rewardChange);\n\n function rewardChange() {\n charleys_show_loading();\n\n // var $selectedReward = $(\"[data-reward-item-list]\").find('input[name=\"reward-selector\"]:checked');\n // var $selectedRewardCart = $(\"[data-reward-item-list-cart]\").find('input[name=\"reward-selector\"]:checked');\n\n var $isSelected = $(this).prop(\"checked\");\n\n // console.log($isSelected, $(this).attr(\"data-reference\"));\n\n if ($isSelected) {\n // apply Reward\n $.when(olo_add_reward_to_basket($(this).attr(\"data-reference\"))).done(\n function (reward_json) {\n // console.log(reward_json);\n var reward = JSON.parse(reward_json);\n if (\"code\" in reward) {\n // display Error\n // reset reward boxes\n $('input[name=\"reward-selector\"]').each(function () {\n $(this).prop(\"checked\", false);\n });\n } else {\n // Reward Applied.\n }\n // $.when(olo_validate_basket()).done(function (validate_json) {\n // charleys_hide_loading();\n updateBasketDisplay();\n // });\n }\n );\n } else {\n // Remove Reward\n var applied_reward_ids = [$(this).attr(\"data-rewardid\")];\n\n if (applied_reward_ids.length) {\n $.when(olo_remove_reward_to_basket(applied_reward_ids[0])).done(\n function (remove_reward_json) {\n // console.log(remove_reward_json);\n // $.when(olo_validate_basket()).done(function (validate_json) {\n // charleys_hide_loading();\n updateBasketDisplay();\n // });\n }\n );\n }\n }\n }\n } else {\n // No rewards Available\n $(\"[data-reward-not-found]\").removeClass(\"hide\");\n $rewards_list.addClass(\"hide\");\n $rewards_list_cart.addClass(\"hide\");\n }\n}\n\nfunction olo_add_upsell_items(itemid, quantity) {\n var $ = jQuery;\n\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n var itemPrice = Number(\n $(\n 'button[data-add-upsell-to-cart][data-item-id=\"' +\n itemid +\n '\"] .product-details [data-price]'\n )\n .first()\n .text()\n .replace(\"$ \", \"\")\n .replace(\"/ea.\", \"\")\n );\n var addToCartData = {\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"USD\",\n value: itemPrice,\n items: [\n {\n item_id: itemid,\n item_name: $(\n 'button[data-add-upsell-to-cart][data-item-id=\"' +\n itemid +\n '\"] .product-details [data-product-title]'\n )\n .first()\n .text(),\n affiliation: localStorage.getItem(\n \"charleys_customer_store_location_name\"\n ), //$('[data-menu-selected-store]:first').text(),\n price: itemPrice,\n item_variant: \"Upsell\",\n quantity: quantity,\n },\n ],\n },\n };\n // console.log(\"GA4:\", addToCartData);\n window.dataLayer.push(addToCartData);\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_add_upsell_items\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n itemid: itemid,\n quantity: quantity,\n },\n success: function (response) { },\n complete: function () { },\n });\n}\n\nfunction olo_create_basket(vendorid, supportsbaskettransfers, reset = false) {\n var $ = jQuery;\n\n var existingbasketguid = localStorage.getItem(\"charleys_customer_basket_id\");\n var existingvendorid = localStorage.getItem(\n \"charleys_customer_store_location_id\"\n );\n\n // console.log(\"New: \" + vendorid, \"Existing: \" + existingvendorid);\n\n // Freshen Store Info\n // localStorage.setItem('charleys_customer_location_name', $(this).attr('data-location-name'));\n // localStorage.setItem('charleys_customer_location_address', $(this).attr('data-location-address'));\n // localStorage.setItem('charleys_customer_location_city_zip', $(this).attr('data-location-city-zip'));\n\n if (\n existingbasketguid &&\n existingvendorid !== vendorid &&\n supportsbaskettransfers\n ) {\n // If basket exists but store has changed, transfer basket to new store.\n // console.log(\"Transfer Basket\");\n\n localStorage.setItem(\"charleys_customer_store_location_id\", vendorid);\n\n $.when(olo_get_restaurant(vendorid)).done(function (restaurant_json) {\n var restaurant = JSON.parse(restaurant_json);\n localStorage.setItem(\n \"charleys_customer_store_location_name\",\n restaurant.name\n );\n hideFakeMenuIfAddedLocation();\n\n });\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_transfer_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n vendorid: vendorid,\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n //\n // if(result.id) {\n // return result.id;\n // }\n var result = JSON.parse(response);\n // Pick up new Basket ID\n if (result.basket.id) {\n localStorage.setItem(\"charleys_customer_basket_id\", result.basket.id);\n updateBasketDisplay();\n return result.basket.id;\n }\n },\n complete: function () { },\n });\n } else if (existingbasketguid && existingvendorid == vendorid && !reset) {\n // if basket and store match session values, return basket\n // console.log(\"Basket Exists and Matches Current Vendor, return existing\");\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_basket\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n //\n // if(result.id) {\n // return result.id;\n // }\n },\n complete: function () { },\n });\n } else {\n // Create fresh basket\n // console.log(\"Create a fresh basket\");\n localStorage.setItem(\"charleys_customer_store_location_id\", vendorid);\n\n $.when(olo_get_restaurant(vendorid)).done(function (restaurant_json) {\n var restaurant = JSON.parse(restaurant_json);\n localStorage.setItem(\n \"charleys_customer_store_location_name\",\n restaurant.name\n );\n hideFakeMenuIfAddedLocation();\n });\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_create_basket\",\n vendorid: vendorid,\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n var result = JSON.parse(response);\n\n if (result.id) {\n localStorage.setItem(\"charleys_customer_basket_id\", result.id);\n updateBasketDisplay();\n return result.id;\n }\n },\n complete: function () { },\n });\n }\n}\n\nfunction olo_check_delivery_coverage(restaurants, view_context) {\n var $ = jQuery;\n\n var delivery_details = {\n handoffmode: $(\n 'input[name=\"' + view_context + '-order-type\"]:checked'\n ).val(), //$('input[name=\"order-type\"]:checked').val(),\n timewantedmode: $(\n 'input[name=\"' + view_context + '-order-schedule\"]:checked'\n ).val(),\n street: $(\n \"#\" + view_context + \"-order-location-search-streetaddress\"\n ).val(),\n city: $(\"#\" + view_context + \"-order-location-search-city\").val(),\n zipcode: $(\"#\" + view_context + \"-order-location-search-zipcode\").val(),\n };\n\n if (delivery_details.timewantedmode !== \"asap\") {\n delivery_details.timewantedutc =\n $(\"#\" + view_context + \"-time-wanted-day\")\n .val()\n .replace(/-/g, \"\") +\n \" \" +\n $(\"#\" + view_context + \"-time-wanted-time-slot\").val(); // yyyymmdd hh:mm\n }\n\n // console.log(\"delivery_details\", delivery_details);\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_check_delivery_coverage\",\n restaurants: restaurants,\n delivery_details: delivery_details,\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n },\n complete: function () { },\n });\n}\n\nfunction olo_get_restaurant(vendorid, getCalendar = false) {\n var $ = jQuery;\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: {\n action: \"olo_get_restaurant\",\n restaurant_id: vendorid,\n get_calendar: getCalendar,\n },\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n },\n complete: function () { },\n });\n}\n\nfunction olo_set_basket_settings(\n view_context,\n earliestReadyTime = \"\",\n leadtimeminutes = 0\n) {\n var $ = jQuery;\n\n var scheduleDate = \"\";\n var scheduleTime = \"\";\n\n if ($(\"#\" + view_context + \"-time-wanted-day\").val()) {\n scheduleDate = $(\"#\" + view_context + \"-time-wanted-day\")\n .val()\n .split(\"-\");\n }\n if ($(\"#\" + view_context + \"-time-wanted-time-slot\").val()) {\n scheduleTime = $(\"#\" + view_context + \"-time-wanted-time-slot\")\n .val()\n .split(\":\");\n }\n\n // Set Handoff /baskets/{basketGuid}/deliverymode\n // Set Delivery Address /baskets/{basketGuid}/deliveryaddress\n // Set Time Wanted (schedule) /baskets/{basketGuid}/timewanted\n\n var deliverymode = $(\n 'input[name=\"' + view_context + '-order-type\"]:checked'\n ).val();\n\n var apiData = {\n action: \"olo_set_basket_settings\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n // deliverymode: $('input[name=\"order-type\"]:checked').val(),\n deliverymode: deliverymode,\n deliveryaddress: {\n streetaddress: $(\n \"#\" + view_context + \"-order-location-search-streetaddress\"\n ).val(),\n city: $(\"#\" + view_context + \"-order-location-search-city\").val(),\n zipcode: $(\"#\" + view_context + \"-order-location-search-zipcode\").val(),\n building: $(\"#\" + view_context + \"-order-location-search-building\").val(),\n },\n schedule: $(\n 'input[name=\"' + view_context + '-order-schedule\"]:checked'\n ).val(),\n };\n\n if (apiData.schedule !== \"asap\") {\n apiData.timewanted = {\n ismanualfire: false,\n year: scheduleDate[0],\n month: scheduleDate[1],\n day: scheduleDate[2],\n hour: scheduleTime[0],\n minute: scheduleTime[1],\n };\n } else {\n apiData.timewanted = {};\n // Determine earliest available time\n var d = new Date(),\n currentTime =\n [\n d.getFullYear(),\n (d.getMonth() + 1).padLeft(),\n d.getDate().padLeft(),\n ].join(\"\") +\n \" \" +\n [d.getHours().padLeft(), d.getMinutes().padLeft()].join(\":\");\n\n // console.log(\n // currentTime,\n // earliestReadyTime,\n // leadtimeminutes,\n // currentTime < earliestReadyTime\n // );\n\n /*if(currentTime < earliestReadyTime) {\n apiData.schedule = \"advance\";\n var pickupTime = new Date(earliestReadyTime.substr(0,4) + '-' +\n earliestReadyTime.substr(4,2) + '-' +\n earliestReadyTime.substr(6,2) + ' ' +\n earliestReadyTime.substr(9,2) + ':' +\n earliestReadyTime.substr(12,2))\n .getTime() + (leadtimeminutes * 60000);\n\n pickupTime = new Date(pickupTime);\n\n apiData.timewanted = {\n ismanualfire: false,\n year: pickupTime.getFullYear(),\n month: (pickupTime.getMonth()+1).padLeft(),\n day: pickupTime.getDate().padLeft(),\n hour: pickupTime.getHours().padLeft(),\n minute: pickupTime.getMinutes().padLeft()\n };\n\n // Add lead time in minutes for dispatch\n if(apiData.deliverymode == 'dispatch') {\n var deliveryTime = new Date(apiData.timewanted.year + '-' +\n apiData.timewanted.month + '-' +\n apiData.timewanted.day + ' ' +\n apiData.timewanted.hour + ':' +\n apiData.timewanted.minute)\n .getTime() + (leadtimeminutes * 60000);\n\n var newDeliveryTime = new Date(deliveryTime);\n\n apiData.timewanted.year = newDeliveryTime.getFullYear();\n apiData.timewanted.month = (newDeliveryTime.getMonth()+1).padLeft();\n apiData.timewanted.day = newDeliveryTime.getDate().padLeft();\n apiData.timewanted.hour = newDeliveryTime.getHours().padLeft();\n apiData.timewanted.minute = newDeliveryTime.getMinutes().padLeft();\n }\n\n localStorage.setItem('charleys_customer_schedule', apiData.schedule);\n localStorage.setItem('charleys_customer_scheduled_day', apiData.timewanted.year + '-' + apiData.timewanted.month + '-' + apiData.timewanted.day);\n localStorage.setItem('charleys_customer_scheduled_time', apiData.timewanted.hour + ':' + apiData.timewanted.minute);\n }*/\n }\n\n // console.log(apiData);\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: apiData,\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n },\n complete: function () { },\n });\n}\n\nfunction olo_set_delivery_instructions() {\n var $ = jQuery;\n if (localStorage.getItem(\"charleys_customer_deliverymode\") == \"dispatch\") {\n var apiData = {\n action: \"olo_set_delivery_instructions\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n deliveryaddress: {\n streetaddress: localStorage.getItem(\n \"charleys_customer_address_streetaddress\"\n ),\n city: localStorage.getItem(\"charleys_customer_address_city\"),\n zipcode: localStorage.getItem(\"charleys_customer_address_zipcode\"),\n building: localStorage.getItem(\"charleys_customer_address_building\"),\n phonenumber: $(\"[data-customer-phone]\").text().replace(/\\D/g, \"\"),\n specialinstructions: $(\"#checkout-delivery-instructions\").val(),\n },\n };\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: apiData,\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n },\n complete: function () { },\n });\n } else {\n return false;\n }\n}\n\nfunction olo_set_custom_fields() {\n var $ = jQuery;\n if (\n $(\"[data-custom-fields-info]:not(.hide)\").length &&\n $(\"[data-custom-field-template]:not(.hide)\").length\n ) {\n var apiData = {\n action: \"olo_set_custom_fields\",\n basketGuid: localStorage.getItem(\"charleys_customer_basket_id\"),\n customFields: [],\n };\n\n $(\"[data-custom-field-template]:not(.hide)\").each(function () {\n apiData.customFields.push({\n id: $(this).find(\"input\").attr(\"data-custom-field-id\"),\n value: $(this).find(\"input\").val(),\n });\n });\n\n return $.ajax({\n type: \"POST\",\n url: ajax_url,\n data: apiData,\n success: function (response) {\n // console.log(response);\n // console.log(JSON.parse(response));\n // var result = JSON.parse(response);\n },\n complete: function () { },\n });\n } else {\n return false;\n }\n}\n\n// function olo_create_basket(vendorid) {\n// var $ = jQuery;\n//\n// charleys_show_loading();\n//\n// var deliveryaddress = {};\n//\n// if(deliverymode == 'delivery') {\n// deliveryaddress = {\n// building: '',\n// streetaddress: '',\n// city: '',\n// zipcode: ''\n// };\n// }\n//\n// // Create Basket /baskets/create\n// $.ajax({\n// type: 'POST',\n// url: ajax_url,\n// data: {\n// action : 'olo_create_basket',\n// vendorid : vendorid,\n// authtoken: localStorage.getItem('charleys_auth_token'),\n// deliverymode: deliverymode,\n// deliveryaddress: deliveryaddress\n// },\n// success: function(response) {\n// console.log(response);\n// var result = JSON.parse(response);\n// if(result.status == \"success\") {\n//\n// }\n// },\n// complete: function() {\n// charleys_hide_loading();\n// }\n// });\n//\n// // Set Handoff /baskets/{basketGuid}/deliverymode\n//\n// // Set Delivery Address /baskets/{basketGuid}/deliveryaddress\n//\n// // Set Time Wanted (schedule) /baskets/{basketGuid}/timewanted\n// }\n\nfunction charleys_show_loading() {\n var $ = jQuery;\n $(\".wf-ordering-loading:not(.overloader)\").removeClass(\"hide\");\n // console.log(\"show loader\");\n}\n\n// A Loader to end all loaders - no function to hide it, so use it only if waiting on a page reload\nfunction charleys_show_overloading() {\n var $ = jQuery;\n var $newloader = $(\".wf-ordering-loading\").clone();\n $newloader.addClass(\"overloader\");\n $(\".wf-ordering\").append($newloader);\n $newloader.removeClass(\"hide\");\n}\nfunction charleys_hide_overloading() {\n var $ = jQuery;\n var $newloader = $(\".wf-ordering-loading\");\n // Add the 'hide' class to all matching elements\n $newloader.each(function () {\n $(this).addClass(\"hide\");\n });\n}\n\nfunction charleys_hide_loading() {\n var $ = jQuery;\n $(\".wf-ordering-loading:not(.overloader)\").addClass(\"hide\");\n // console.log(\"hide loader\");\n}\n\nfunction charleys_show_topnav() {\n var $ = jQuery;\n $(\".wf-ordering .wf-ordering-topnav\").removeClass(\"hide\");\n}\n\nfunction charleys_hide_topnav() {\n var $ = jQuery;\n $(\".wf-ordering .wf-ordering-topnav\").addClass(\"hide\");\n}\n\nfunction charleys_show_topnav_location() {\n var $ = jQuery;\n $(\".wf-ordering .wf-ordering-topnav .fa-location-dot\").removeClass(\"hide\");\n}\n\nfunction charleys_hide_topnav_location() {\n var $ = jQuery;\n $(\".wf-ordering .wf-ordering-topnav .fa-location-dot\").addClass(\"hide\");\n}\n\nfunction formatAMPM(date) {\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var ampm = hours >= 12 ? \"pm\" : \"am\";\n hours = hours % 12;\n hours = hours ? hours : 12; // the hour '0' should be '12'\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n var strTime = hours + \":\" + minutes + \" \" + ampm;\n return strTime;\n}\n\nDate.prototype.addDays = function (days) {\n var date = new Date(this.valueOf());\n date.setDate(date.getDate() + days);\n return date;\n};\n\nfunction getDates(startDate, stopDate) {\n var dateArray = new Array();\n var currentDate = startDate;\n while (currentDate <= stopDate) {\n dateArray.push(new Date(currentDate));\n currentDate = currentDate.addDays(1);\n }\n return dateArray;\n}\n\nfunction zeroPad(num, places) {\n var zero = places - num.toString().length + 1;\n return Array(+(zero > 0 && zero)).join(\"0\") + num;\n}\n\nfunction createQuarterHourIntervals() {\n var earliestToday = new Date();\n earliestToday.setHours(0, 0, 0, 0);\n var from = roundToNearest15(earliestToday);\n var until = from.addDays(1);\n\n var max = (Math.abs(until - from) / (60 * 60 * 1000)) * 4;\n var time = new Date(from);\n var intervals = []; // more clear name than hours\n\n // console.log(max);\n\n for (var i = 0; i < max; i++) {\n intervals.push(formatAMPM(time));\n time.setMinutes(time.getMinutes() + 15);\n }\n return intervals;\n}\n\nfunction roundToNearest15(date = new Date()) {\n const minutes = 15;\n const ms = 1000 * 60 * minutes;\n\n return new Date(Math.ceil(date.getTime() / ms) * ms);\n}\n\nfunction convert12to24Hour(time) {\n var hours = Number(time.match(/^(\\d+)/)[1]);\n var minutes = Number(time.match(/:(\\d+)/)[1]);\n var AMPM = time.match(/\\s(.*)$/)[1];\n if (AMPM == \"pm\" && hours < 12) hours = hours + 12;\n if (AMPM == \"am\" && hours == 12) hours = hours - 12;\n var sHours = hours.toString();\n var sMinutes = minutes.toString();\n if (hours < 10) sHours = \"0\" + sHours;\n if (minutes < 10) sMinutes = \"0\" + sMinutes;\n return sHours + \":\" + sMinutes;\n}\n\nfunction setQuantityElem($elem, min, max, step) {\n var $input = $elem.find(\"input.qtyinput\");\n var $btnMinus = $elem.find(\".qtyminus\");\n var $btnPlus = $elem.find(\".qtyplus\");\n\n min = Number(min);\n max = Number(max);\n step = Number(step);\n\n if (min < 1) {\n min = 1;\n }\n\n if ($input.length && $btnMinus.length && $btnPlus.length) {\n $input.val(min);\n\n $input.attr(\"min\", min);\n $input.attr(\"max\", max);\n $input.attr(\"step\", step);\n\n function qtyminus(e) {\n var current = Number($input.val());\n var newval = current - step;\n if (newval < min) {\n newval = min;\n } else if (newval > max) {\n newval = max;\n }\n $input.val(Number(newval));\n $input.trigger(\"change\");\n e.preventDefault();\n }\n\n function qtyplus(e) {\n var current = Number($input.val());\n var newval = current + step;\n if (newval > max) newval = max;\n $input.val(Number(newval));\n $input.trigger(\"change\");\n e.preventDefault();\n }\n\n $btnMinus.off(\"click\");\n $btnPlus.off(\"click\");\n\n $btnMinus.click(qtyminus);\n $btnPlus.click(qtyplus);\n }\n}\n","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = false;\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;","/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = false;\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.core\"]=factory(require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"]=factory(root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=0);/******/}(/************************************************************************//******/{/***/\"./js/entries/plugins/foundation.core.js\":/*!***********************************************!*\\\n !*** ./js/entries/plugins/foundation.core.js ***!\n \\***********************************************//*! exports provided: Foundation, Plugin, rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear *//***/function jsEntriesPluginsFoundationCoreJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.core */\"./js/foundation.core.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"];});/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ../../foundation.core.plugin */\"./js/foundation.core.plugin.js\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ../../foundation.core.utils */\"./js/foundation.core.utils.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Plugin\",function(){return _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__[\"Plugin\"];});/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"rtl\",function(){return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"rtl\"];});/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"GetYoDigits\",function(){return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"GetYoDigits\"];});/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"RegExpEscape\",function(){return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"RegExpEscape\"];});/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"transitionend\",function(){return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"];});/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"onLoad\",function(){return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"onLoad\"];});/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"ignoreMousedisappear\",function(){return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"ignoreMousedisappear\"];});// --- Foundation Core API ---\n// Initialize Foundation and add some utilities to its public API for backward compatibility.\n// Please note that every utility do not have to be added to the core API.\n_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].addToJquery(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);// Every plugin depends on plugin now, we can include that on the core for the\n// script inclusion path.\n_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].Plugin=_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__[\"Plugin\"];// These are now separated out, but historically were a part of this module,\n// and since this is here for backwards compatibility we include them in\n// this entry.\n_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].rtl=_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"rtl\"];_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].GetYoDigits=_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"GetYoDigits\"];_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].transitionend=_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"];_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].RegExpEscape=_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"RegExpEscape\"];_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"].onLoad=_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"onLoad\"];window.Foundation=_foundation_core__WEBPACK_IMPORTED_MODULE_1__[\"Foundation\"];// --- Foundation Core exports ---\n// Export \"Plugin\" and all core utilities, since the `foundation.core` entry plays the role of\n// all core source files.\n/***/},/***/\"./js/foundation.core.js\":/*!*******************************!*\\\n !*** ./js/foundation.core.js ***!\n \\*******************************//*! exports provided: Foundation *//***/function jsFoundationCoreJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return Foundation;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.utils */\"./js/foundation.core.utils.js\");/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.mediaQuery */\"./js/foundation.util.mediaQuery.js\");function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}var FOUNDATION_VERSION='6.7.5';// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation={version:FOUNDATION_VERSION,/**\n * Stores initialized plugins.\n */_plugins:{},/**\n * Stores generated unique ids for plugin instances\n */_uuids:[],/**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */plugin:function plugin(_plugin,name){// Object key to use when adding to global Foundation object\n// Examples: Foundation.Reveal, Foundation.OffCanvas\nvar className=name||functionName(_plugin);// Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n// Examples: data-reveal, data-off-canvas\nvar attrName=hyphenate(className);// Add to the Foundation object and the plugins list (for reflowing)\nthis._plugins[attrName]=this[className]=_plugin;},/**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */registerPlugin:function registerPlugin(plugin,name){var pluginName=name?hyphenate(name):functionName(plugin.constructor).toLowerCase();plugin.uuid=Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__[\"GetYoDigits\"])(6,pluginName);if(!plugin.$element.attr(\"data-\".concat(pluginName))){plugin.$element.attr(\"data-\".concat(pluginName),plugin.uuid);}if(!plugin.$element.data('zfPlugin')){plugin.$element.data('zfPlugin',plugin);}/**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */plugin.$element.trigger(\"init.zf.\".concat(pluginName));this._uuids.push(plugin.uuid);return;},/**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */unregisterPlugin:function unregisterPlugin(plugin){var pluginName=hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));this._uuids.splice(this._uuids.indexOf(plugin.uuid),1);plugin.$element.removeAttr(\"data-\".concat(pluginName)).removeData('zfPlugin')/**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */.trigger(\"destroyed.zf.\".concat(pluginName));for(var prop in plugin){if(typeof plugin[prop]==='function'){plugin[prop]=null;//clean up script to prep for garbage collection.\n}}return;},/**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */reInit:function reInit(plugins){var isJQ=plugins instanceof jquery__WEBPACK_IMPORTED_MODULE_0___default.a;try{if(isJQ){plugins.each(function(){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('zfPlugin')._init();});}else{var type=_typeof(plugins),_this=this,fns={'object':function object(plgs){plgs.forEach(function(p){p=hyphenate(p);jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-'+p+']').foundation('_init');});},'string':function string(){plugins=hyphenate(plugins);jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-'+plugins+']').foundation('_init');},'undefined':function undefined(){this.object(Object.keys(_this._plugins));}};fns[type](plugins);}}catch(err){console.error(err);}finally{return plugins;}},/**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */reflow:function reflow(elem,plugins){// If plugins is undefined, just grab everything\nif(typeof plugins==='undefined'){plugins=Object.keys(this._plugins);}// If plugins is a string, convert it to an array with one item\nelse if(typeof plugins==='string'){plugins=[plugins];}var _this=this;// Iterate through each plugin\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(plugins,function(i,name){// Get the current plugin\nvar plugin=_this._plugins[name];// Localize the search to all elements inside elem, as well as elem itself, unless elem === document\nvar $elem=jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function(){return typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(\"zfPlugin\")==='undefined';});// For each plugin found, initialize it\n$elem.each(function(){var $el=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),opts={reflow:true};if($el.attr('data-options')){$el.attr('data-options').split(';').forEach(function(option){var opt=option.split(':').map(function(el){return el.trim();});if(opt[0])opts[opt[0]]=parseValue(opt[1]);});}try{$el.data('zfPlugin',new plugin(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),opts));}catch(er){console.error(er);}finally{return;}});});},getFnName:functionName,addToJquery:function addToJquery(){// TODO: consider not making this a jQuery function\n// TODO: need way to reflow vs. re-initialize\n/**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */var foundation=function foundation(method){var type=_typeof(method),$noJS=jquery__WEBPACK_IMPORTED_MODULE_0___default()('.no-js');if($noJS.length){$noJS.removeClass('no-js');}if(type==='undefined'){//needs to initialize the Foundation object, or an individual plugin.\n_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__[\"MediaQuery\"]._init();Foundation.reflow(this);}else if(type==='string'){//an individual method to invoke on a plugin or group of plugins\nvar args=Array.prototype.slice.call(arguments,1);//collect all the arguments, if necessary\nvar plugClass=this.data('zfPlugin');//determine the class of plugin\nif(typeof plugClass!=='undefined'&&typeof plugClass[method]!=='undefined'){//make sure both the class and method exist\nif(this.length===1){//if there's only one, call it directly.\nplugClass[method].apply(plugClass,args);}else{this.each(function(i,el){//otherwise loop through the jQuery collection and invoke the method on each\nplugClass[method].apply(jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).data('zfPlugin'),args);});}}else{//error for no class or no method\nthrow new ReferenceError(\"We're sorry, '\"+method+\"' is not an available method for \"+(plugClass?functionName(plugClass):'this element')+'.');}}else{//error for invalid argument type\nthrow new TypeError(\"We're sorry, \".concat(type,\" is not a valid parameter. You must use a string representing the method you wish to invoke.\"));}return this;};jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.foundation=foundation;return jquery__WEBPACK_IMPORTED_MODULE_0___default.a;}};Foundation.util={/**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */throttle:function throttle(func,delay){var timer=null;return function(){var context=this,args=arguments;if(timer===null){timer=setTimeout(function(){func.apply(context,args);timer=null;},delay);}};}};window.Foundation=Foundation;// Polyfill for requestAnimationFrame\n(function(){if(!Date.now||!window.Date.now)window.Date.now=Date.now=function(){return new Date().getTime();};var vendors=['webkit','moz'];for(var i=0;i1?results[1].trim():\"\";}else if(typeof fn.prototype==='undefined'){return fn.constructor.name;}else{return fn.prototype.constructor.name;}}function parseValue(str){if('true'===str)return true;else if('false'===str)return false;else if(!isNaN(str*1))return parseFloat(str);return str;}// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str){return str.replace(/([a-z])([A-Z])/g,'$1-$2').toLowerCase();}/***/},/***/\"./js/foundation.core.plugin.js\":/*!**************************************!*\\\n !*** ./js/foundation.core.plugin.js ***!\n \\**************************************//*! exports provided: Plugin *//***/function jsFoundationCorePluginJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Plugin\",function(){return Plugin;});/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core.utils */\"./js/foundation.core.utils.js\");function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:6;var namespace=arguments.length>1?arguments[1]:undefined;var str='';var chars='0123456789abcdefghijklmnopqrstuvwxyz';var charsLength=chars.length;for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:{},_ref$ignoreLeaveWindo=_ref.ignoreLeaveWindow,ignoreLeaveWindow=_ref$ignoreLeaveWindo===void 0?false:_ref$ignoreLeaveWindo,_ref$ignoreReappear=_ref.ignoreReappear,ignoreReappear=_ref$ignoreReappear===void 0?false:_ref$ignoreReappear;return function leaveEventHandler(eLeave){for(var _len=arguments.length,rest=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key];}var callback=handler.bind.apply(handler,[this,eLeave].concat(rest));// The mouse left: call the given callback if the mouse entered elsewhere\nif(eLeave.relatedTarget!==null){return callback();}// Otherwise, check if the mouse actually left the window.\n// In firefox if the user switched between windows, the window sill have the focus by the time\n// the event is triggered. We have to debounce the event to test this case.\nsetTimeout(function leaveEventDebouncer(){if(!ignoreLeaveWindow&&document.hasFocus&&!document.hasFocus()){return callback();}// Otherwise, wait for the mouse to reeapear outside of the element,\nif(!ignoreReappear){jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).one('mouseenter',function reenterEventHandler(eReenter){if(!jquery__WEBPACK_IMPORTED_MODULE_0___default()(eLeave.currentTarget).has(eReenter.target).length){// Fill where the mouse finally entered.\neLeave.relatedTarget=eReenter.target;callback();}});}},0);};}/***/},/***/\"./js/foundation.util.mediaQuery.js\":/*!******************************************!*\\\n !*** ./js/foundation.util.mediaQuery.js ***!\n \\******************************************//*! exports provided: MediaQuery *//***/function jsFoundationUtilMediaQueryJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"MediaQuery\",function(){return MediaQuery;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o===\"string\")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n===\"Object\"&&o.constructor)n=o.constructor.name;if(n===\"Map\"||n===\"Set\")return Array.from(o);if(n===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i').appendTo(document.head);}var extractedStyles=jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family');var namedQueries;namedQueries=parseStyleToObject(extractedStyles);self.queries=[];// reset\nfor(var key in namedQueries){if(namedQueries.hasOwnProperty(key)){self.queries.push({name:key,value:\"only screen and (min-width: \".concat(namedQueries[key],\")\")});}}this.current=this._getCurrentSize();this._watcher();},/**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */_reInit:function _reInit(){this.isInitialized=false;this._init();},/**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */atLeast:function atLeast(size){var query=this.get(size);if(query){return window.matchMedia(query).matches;}return false;},/**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */only:function only(size){return size===this._getCurrentSize();},/**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */upTo:function upTo(size){var nextSize=this.next(size);// If the next breakpoint does not match, the screen is smaller than\n// the upper limit of this breakpoint.\nif(nextSize){return!this.atLeast(nextSize);}// If there is no next breakpoint, the \"size\" breakpoint does not have\n// an upper limit and the screen will always be within it or smaller.\nreturn true;},/**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */is:function is(size){var parts=size.trim().split(' ').filter(function(p){return!!p.length;});var _parts=_slicedToArray(parts,2),bpSize=_parts[0],_parts$=_parts[1],bpModifier=_parts$===void 0?'':_parts$;// Only the breakpont\nif(bpModifier==='only'){return this.only(bpSize);}// At least the breakpoint (included)\nif(!bpModifier||bpModifier==='up'){return this.atLeast(bpSize);}// Up to the breakpoint (included)\nif(bpModifier==='down'){return this.upTo(bpSize);}throw new Error(\"\\n Invalid breakpoint passed to MediaQuery.is().\\n Expected a breakpoint name formatted like \\\" \\\", got \\\"\".concat(size,\"\\\".\\n \"));},/**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */get:function get(size){for(var i in this.queries){if(this.queries.hasOwnProperty(i)){var query=this.queries[i];if(size===query.name)return query.value;}}return null;},/**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */next:function next(size){var _this=this;var queryIndex=this.queries.findIndex(function(q){return _this._getQueryName(q)===size;});if(queryIndex===-1){throw new Error(\"\\n Unknown breakpoint \\\"\".concat(size,\"\\\" passed to MediaQuery.next().\\n Ensure it is present in your Sass \\\"$breakpoints\\\" setting.\\n \"));}var nextQuery=this.queries[queryIndex+1];return nextQuery?nextQuery.name:null;},/**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */_getQueryName:function _getQueryName(value){if(typeof value==='string')return value;if(_typeof(value)==='object')return value.name;throw new TypeError(\"\\n Invalid value passed to MediaQuery._getQueryName().\\n Expected a breakpoint name (String) or a breakpoint query (Object), got \\\"\".concat(value,\"\\\" (\").concat(_typeof(value),\")\\n \"));},/**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */_getCurrentSize:function _getCurrentSize(){var matched;for(var i=0;i0){return 1;}if(typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).attr('tabindex')==='undefined'&&aTabIndex>0){return-1;}if(aTabIndex===0&&bTabIndex>0){return 1;}if(bTabIndex===0&&aTabIndex>0){return-1;}if(aTabIndexbTabIndex){return 1;}});}function parseKey(event){var key=keyCodes[event.which||event.keyCode]||String.fromCharCode(event.which).toUpperCase();// Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\nkey=key.replace(/\\W+/,'');if(event.shiftKey)key=\"SHIFT_\".concat(key);if(event.ctrlKey)key=\"CTRL_\".concat(key);if(event.altKey)key=\"ALT_\".concat(key);// Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\nkey=key.replace(/_$/,'');return key;}var Keyboard={keys:getKeyCodes(keyCodes),/**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */parseKey:parseKey,/**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */handleKey:function handleKey(event,component,functions){var commandList=commands[component],keyCode=this.parseKey(event),cmds,command,fn;if(!commandList)return console.warn('Component not defined!');// Ignore the event if it was already handled\nif(event.zfIsKeyHandled===true)return;// This component does not differentiate between ltr and rtl\nif(typeof commandList.ltr==='undefined'){cmds=commandList;// use plain list\n}else{// merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\nif(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__[\"rtl\"])())cmds=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({},commandList.ltr,commandList.rtl);else cmds=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({},commandList.rtl,commandList.ltr);}command=cmds[keyCode];fn=functions[command];// Execute the handler if found\nif(fn&&typeof fn==='function'){var returnValue=fn.apply();// Mark the event as \"handled\" to prevent future handlings\nevent.zfIsKeyHandled=true;// Execute function when event was handled\nif(functions.handled||typeof functions.handled==='function'){functions.handled(returnValue);}}else{// Execute function when event was not handled\nif(functions.unhandled||typeof functions.unhandled==='function'){functions.unhandled();}}},/**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */findFocusable:findFocusable,/**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */register:function register(componentName,cmds){commands[componentName]=cmds;},// TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n//\n/**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */trapFocus:function trapFocus($element){var $focusable=findFocusable($element),$firstFocusable=$focusable.eq(0),$lastFocusable=$focusable.eq(-1);$element.on('keydown.zf.trapfocus',function(event){if(event.target===$lastFocusable[0]&&parseKey(event)==='TAB'){event.preventDefault();$firstFocusable.focus();}else if(event.target===$firstFocusable[0]&&parseKey(event)==='SHIFT_TAB'){event.preventDefault();$lastFocusable.focus();}});},/**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */releaseFocus:function releaseFocus($element){$element.off('keydown.zf.trapfocus');}};/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */function getKeyCodes(kcs){var k={};for(var kc in kcs){if(kcs.hasOwnProperty(kc))k[kcs[kc]]=kcs[kc];}return k;}/***/},/***/23:/*!**************************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.util.keyboard.js ***!\n \\**************************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.keyboard.js */\"./js/entries/plugins/foundation.util.keyboard.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.util.keyboard.js.map\n\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};!function(e,t){\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))&&\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))?module.exports=t(require(\"./foundation.core\"),require(\"jquery\")):\"function\"==typeof define&&define.amd?define([\"./foundation.core\",\"jquery\"],t):\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))?exports[\"foundation.util.keyboard\"]=t(require(\"./foundation.core\"),require(\"jquery\")):(e.__FOUNDATION_EXTERNAL__=e.__FOUNDATION_EXTERNAL__||{},e.__FOUNDATION_EXTERNAL__[\"foundation.util.keyboard\"]=t(e.__FOUNDATION_EXTERNAL__[\"foundation.core\"],e.jQuery));}(window,function(n,r){return i={\"./foundation.core\":function foundationCore(e,t){e.exports=n;},\"./js/entries/plugins/foundation.util.keyboard.js\":function jsEntriesPluginsFoundationUtilKeyboardJs(e,t,n){\"use strict\";n.r(t);var r=n(\"./foundation.core\");n.d(t,\"Foundation\",function(){return r.Foundation;});var o=n(\"./js/foundation.util.keyboard.js\");n.d(t,\"Keyboard\",function(){return o.Keyboard;}),r.Foundation.Keyboard=o.Keyboard;},\"./js/foundation.util.keyboard.js\":function jsFoundationUtilKeyboardJs(e,t,n){\"use strict\";n.r(t),n.d(t,\"Keyboard\",function(){return f;});var t=n(\"jquery\"),o=n.n(t),i=n(\"./foundation.core\"),r={9:\"TAB\",13:\"ENTER\",27:\"ESCAPE\",32:\"SPACE\",35:\"END\",36:\"HOME\",37:\"ARROW_LEFT\",38:\"ARROW_UP\",39:\"ARROW_RIGHT\",40:\"ARROW_DOWN\"},u={};function a(e){return!!e&&e.find(\"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\").filter(function(){return!(!o()(this).is(\":visible\")||o()(this).attr(\"tabindex\")<0);}).sort(function(e,t){if(o()(e).attr(\"tabindex\")===o()(t).attr(\"tabindex\"))return 0;var n=parseInt(o()(e).attr(\"tabindex\"),10),r=parseInt(o()(t).attr(\"tabindex\"),10);return void 0===o()(e).attr(\"tabindex\")&&0arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i').appendTo(document.head);}var extractedStyles=jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family');var namedQueries;namedQueries=parseStyleToObject(extractedStyles);self.queries=[];// reset\nfor(var key in namedQueries){if(namedQueries.hasOwnProperty(key)){self.queries.push({name:key,value:\"only screen and (min-width: \".concat(namedQueries[key],\")\")});}}this.current=this._getCurrentSize();this._watcher();},/**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */_reInit:function _reInit(){this.isInitialized=false;this._init();},/**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */atLeast:function atLeast(size){var query=this.get(size);if(query){return window.matchMedia(query).matches;}return false;},/**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */only:function only(size){return size===this._getCurrentSize();},/**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */upTo:function upTo(size){var nextSize=this.next(size);// If the next breakpoint does not match, the screen is smaller than\n// the upper limit of this breakpoint.\nif(nextSize){return!this.atLeast(nextSize);}// If there is no next breakpoint, the \"size\" breakpoint does not have\n// an upper limit and the screen will always be within it or smaller.\nreturn true;},/**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */is:function is(size){var parts=size.trim().split(' ').filter(function(p){return!!p.length;});var _parts=_slicedToArray(parts,2),bpSize=_parts[0],_parts$=_parts[1],bpModifier=_parts$===void 0?'':_parts$;// Only the breakpont\nif(bpModifier==='only'){return this.only(bpSize);}// At least the breakpoint (included)\nif(!bpModifier||bpModifier==='up'){return this.atLeast(bpSize);}// Up to the breakpoint (included)\nif(bpModifier==='down'){return this.upTo(bpSize);}throw new Error(\"\\n Invalid breakpoint passed to MediaQuery.is().\\n Expected a breakpoint name formatted like \\\" \\\", got \\\"\".concat(size,\"\\\".\\n \"));},/**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */get:function get(size){for(var i in this.queries){if(this.queries.hasOwnProperty(i)){var query=this.queries[i];if(size===query.name)return query.value;}}return null;},/**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */next:function next(size){var _this=this;var queryIndex=this.queries.findIndex(function(q){return _this._getQueryName(q)===size;});if(queryIndex===-1){throw new Error(\"\\n Unknown breakpoint \\\"\".concat(size,\"\\\" passed to MediaQuery.next().\\n Ensure it is present in your Sass \\\"$breakpoints\\\" setting.\\n \"));}var nextQuery=this.queries[queryIndex+1];return nextQuery?nextQuery.name:null;},/**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */_getQueryName:function _getQueryName(value){if(typeof value==='string')return value;if(_typeof(value)==='object')return value.name;throw new TypeError(\"\\n Invalid value passed to MediaQuery._getQueryName().\\n Expected a breakpoint name (String) or a breakpoint query (Object), got \\\"\".concat(value,\"\\\" (\").concat(_typeof(value),\")\\n \"));},/**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */_getCurrentSize:function _getCurrentSize(){var matched;for(var i=0;ie.length)&&(t=e.length);for(var n=0,r=new Array(t);n').appendTo(document.head);var e,t,n,r=u()(\".foundation-mq\").css(\"font-family\");for(n in t={},e=\"string\"==typeof(r=r)&&(r=r.trim().slice(1,-1))?t=r.split(\"&\").reduce(function(e,t){var n=t.replace(/\\+/g,\" \").split(\"=\"),t=n[0],n=n[1],t=decodeURIComponent(t),n=void 0===n?null:decodeURIComponent(n);return e.hasOwnProperty(t)?Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]:e[t]=n,e;},{}):t,this.queries=[],e){e.hasOwnProperty(n)&&this.queries.push({name:n,value:\"only screen and (min-width: \".concat(e[n],\")\")});}this.current=this._getCurrentSize(),this._watcher();},_reInit:function _reInit(){this.isInitialized=!1,this._init();},atLeast:function atLeast(e){e=this.get(e);return!!e&&window.matchMedia(e).matches;},only:function only(e){return e===this._getCurrentSize();},upTo:function upTo(e){e=this.next(e);return!e||!this.atLeast(e);},is:function is(e){var t=s(e.trim().split(\" \").filter(function(e){return!!e.length;}),2),n=t[0],t=t[1],t=void 0===t?\"\":t;if(\"only\"===t)return this.only(n);if(!t||\"up\"===t)return this.atLeast(n);if(\"down\"===t)return this.upTo(n);throw new Error('\\n Invalid breakpoint passed to MediaQuery.is().\\n Expected a breakpoint name formatted like \" \", got \"'.concat(e,'\".\\n '));},get:function get(e){for(var t in this.queries){if(this.queries.hasOwnProperty(t)){t=this.queries[t];if(e===t.name)return t.value;}}return null;},next:function next(t){var n=this,e=this.queries.findIndex(function(e){return n._getQueryName(e)===t;});if(-1===e)throw new Error('\\n Unknown breakpoint \"'.concat(t,'\" passed to MediaQuery.next().\\n Ensure it is present in your Sass \"$breakpoints\" setting.\\n '));e=this.queries[e+1];return e?e.name:null;},_getQueryName:function _getQueryName(e){if(\"string\"==typeof e)return e;if(\"object\"===a(e))return e.name;throw new TypeError('\\n Invalid value passed to MediaQuery._getQueryName().\\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"'.concat(e,'\" (').concat(a(e),\")\\n \"));},_getCurrentSize:function _getCurrentSize(){for(var e,t=0;t1&&arguments[1]!==undefined?arguments[1]:'zf';menu.attr('role','menubar');menu.find('a').attr({'role':'menuitem'});var items=menu.find('li').attr({'role':'none'}),subMenuClass=\"is-\".concat(type,\"-submenu\"),subItemClass=\"\".concat(subMenuClass,\"-item\"),hasSubClass=\"is-\".concat(type,\"-submenu-parent\"),applyAria=type!=='accordion';// Accordions handle their own ARIA attriutes.\nitems.each(function(){var $item=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),$sub=$item.children('ul');if($sub.length){$item.addClass(hasSubClass);if(applyAria){var firstItem=$item.children('a:first');firstItem.attr({'aria-haspopup':true,'aria-label':firstItem.attr('aria-label')||firstItem.text()});// Note: Drilldowns behave differently in how they hide, and so need\n// additional attributes. We should look if this possibly over-generalized\n// utility (Nest) is appropriate when we rework menus in 6.4\nif(type==='drilldown'){$item.attr({'aria-expanded':false});}}$sub.addClass(\"submenu \".concat(subMenuClass)).attr({'data-submenu':'','role':'menubar'});if(type==='drilldown'){$sub.attr({'aria-hidden':true});}}if($item.parent('[data-submenu]').length){$item.addClass(\"is-submenu-item \".concat(subItemClass));}});return;},Burn:function Burn(menu,type){var//items = menu.find('li'),\nsubMenuClass=\"is-\".concat(type,\"-submenu\"),subItemClass=\"\".concat(subMenuClass,\"-item\"),hasSubClass=\"is-\".concat(type,\"-submenu-parent\");menu.find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li').removeClass(\"\".concat(subMenuClass,\" \").concat(subItemClass,\" \").concat(hasSubClass,\" is-submenu-item submenu is-active\")).removeAttr('data-submenu').css('display','');}};/***/},/***/26:/*!**********************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.util.nest.js ***!\n \\**********************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.nest.js */\"./js/entries/plugins/foundation.util.nest.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.util.nest.js.map\n\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};!function(e,t){\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))&&\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))?module.exports=t(require(\"./foundation.core\"),require(\"jquery\")):\"function\"==typeof define&&define.amd?define([\"./foundation.core\",\"jquery\"],t):\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))?exports[\"foundation.util.nest\"]=t(require(\"./foundation.core\"),require(\"jquery\")):(e.__FOUNDATION_EXTERNAL__=e.__FOUNDATION_EXTERNAL__||{},e.__FOUNDATION_EXTERNAL__[\"foundation.util.nest\"]=t(e.__FOUNDATION_EXTERNAL__[\"foundation.core\"],e.jQuery));}(window,function(n,r){return u={\"./foundation.core\":function foundationCore(e,t){e.exports=n;},\"./js/entries/plugins/foundation.util.nest.js\":function jsEntriesPluginsFoundationUtilNestJs(e,t,n){\"use strict\";n.r(t);var r=n(\"./foundation.core\");n.d(t,\"Foundation\",function(){return r.Foundation;});var o=n(\"./js/foundation.util.nest.js\");n.d(t,\"Nest\",function(){return o.Nest;}),r.Foundation.Nest=o.Nest;},\"./js/foundation.util.nest.js\":function jsFoundationUtilNestJs(e,t,n){\"use strict\";n.r(t),n.d(t,\"Nest\",function(){return r;});var t=n(\"jquery\"),s=n.n(t),r={Feather:function Feather(e){var r=1li, > li > ul, .menu, .menu > li, [data-submenu] > li\").removeClass(\"\".concat(n,\" \").concat(r,\" \").concat(t,\" is-submenu-item submenu is-active\")).removeAttr(\"data-submenu\").css(\"display\",\"\");}};},26:function _(e,t,n){e.exports=n(\"./js/entries/plugins/foundation.util.nest.js\");},jquery:function jquery(e,t){e.exports=r;}},i={},o.m=u,o.c=i,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0});},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==(typeof t===\"undefined\"?\"undefined\":_typeof(t))&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t){o.d(n,r,function(e){return t[e];}.bind(null,r));}return n;},o.n=function(e){var t=e&&e.__esModule?function(){return e.default;}:function(){return e;};return o.d(t,\"a\",t),t;},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t);},o.p=\"\",o(o.s=26);function o(e){if(i[e])return i[e].exports;var t=i[e]={i:e,l:!1,exports:{}};return u[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports;}var u,i;});//# sourceMappingURL=foundation.util.nest.min.js.map\n'use strict';var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=factory(require(\"./foundation.core\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports[\"foundation.util.timer\"]=factory(require(\"./foundation.core\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.timer\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=27);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./js/entries/plugins/foundation.util.timer.js\":/*!*****************************************************!*\\\n !*** ./js/entries/plugins/foundation.util.timer.js ***!\n \\*****************************************************//*! exports provided: Foundation, Timer *//***/function jsEntriesPluginsFoundationUtilTimerJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.util.timer */\"./js/foundation.util.timer.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Timer\",function(){return _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__[\"Timer\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].Timer=_foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__[\"Timer\"];/***/},/***/\"./js/foundation.util.timer.js\":/*!*************************************!*\\\n !*** ./js/foundation.util.timer.js ***!\n \\*************************************//*! exports provided: Timer *//***/function jsFoundationUtilTimerJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Timer\",function(){return Timer;});function Timer(elem,options,cb){var _this=this,duration=options.duration,//options is an object for easily adding features later.\nnameSpace=Object.keys(elem.data())[0]||'timer',remain=-1,start,timer;this.isPaused=false;this.restart=function(){remain=-1;clearTimeout(timer);this.start();};this.start=function(){this.isPaused=false;// if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\nclearTimeout(timer);remain=remain<=0?duration:remain;elem.data('paused',false);start=Date.now();timer=setTimeout(function(){if(options.infinite){_this.restart();//rerun the timer.\n}if(cb&&typeof cb==='function'){cb();}},remain);elem.trigger(\"timerstart.zf.\".concat(nameSpace));};this.pause=function(){this.isPaused=true;//if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\nclearTimeout(timer);elem.data('paused',true);var end=Date.now();remain=remain-(end-start);elem.trigger(\"timerpaused.zf.\".concat(nameSpace));};}/***/},/***/27:/*!***********************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.util.timer.js ***!\n \\***********************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.timer.js */\"./js/entries/plugins/foundation.util.timer.js\");/***/}/******/}));});//# sourceMappingURL=foundation.util.timer.js.map\n\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};!function(t,e){\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))&&\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))?module.exports=e(require(\"./foundation.core\")):\"function\"==typeof define&&define.amd?define([\"./foundation.core\"],e):\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))?exports[\"foundation.util.timer\"]=e(require(\"./foundation.core\")):(t.__FOUNDATION_EXTERNAL__=t.__FOUNDATION_EXTERNAL__||{},t.__FOUNDATION_EXTERNAL__[\"foundation.util.timer\"]=e(t.__FOUNDATION_EXTERNAL__[\"foundation.core\"]));}(window,function(n){return o={\"./foundation.core\":function foundationCore(t,e){t.exports=n;},\"./js/entries/plugins/foundation.util.timer.js\":function jsEntriesPluginsFoundationUtilTimerJs(t,e,n){\"use strict\";n.r(e);var o=n(\"./foundation.core\");n.d(e,\"Foundation\",function(){return o.Foundation;});var r=n(\"./js/foundation.util.timer.js\");n.d(e,\"Timer\",function(){return r.Timer;}),o.Foundation.Timer=r.Timer;},\"./js/foundation.util.timer.js\":function jsFoundationUtilTimerJs(t,e,n){\"use strict\";function o(e,t,n){var o,r,i=this,u=t.duration,a=Object.keys(e.data())[0]||\"timer\",f=-1;this.isPaused=!1,this.restart=function(){f=-1,clearTimeout(r),this.start();},this.start=function(){this.isPaused=!1,clearTimeout(r),f=f<=0?u:f,e.data(\"paused\",!1),o=Date.now(),r=setTimeout(function(){t.infinite&&i.restart(),n&&\"function\"==typeof n&&n();},f),e.trigger(\"timerstart.zf.\".concat(a));},this.pause=function(){this.isPaused=!0,clearTimeout(r),e.data(\"paused\",!0);var t=Date.now();f-=t-o,e.trigger(\"timerpaused.zf.\".concat(a));};}n.r(e),n.d(e,\"Timer\",function(){return o;});},27:function _(t,e,n){t.exports=n(\"./js/entries/plugins/foundation.util.timer.js\");}},i={},r.m=o,r.c=i,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n});},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==(typeof e===\"undefined\"?\"undefined\":_typeof(e))&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e){r.d(n,o,function(t){return e[t];}.bind(null,o));}return n;},r.n=function(t){var e=t&&t.__esModule?function(){return t.default;}:function(){return t;};return r.d(e,\"a\",e),e;},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e);},r.p=\"\",r(r.s=27);function r(t){if(i[t])return i[t].exports;var e=i[t]={i:t,l:!1,exports:{}};return o[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports;}var o,i;});//# sourceMappingURL=foundation.util.timer.min.js.map\n'use strict';var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports[\"foundation.util.touch\"]=factory(require(\"./foundation.core\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.touch\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=28);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./js/entries/plugins/foundation.util.touch.js\":/*!*****************************************************!*\\\n !*** ./js/entries/plugins/foundation.util.touch.js ***!\n \\*****************************************************//*! exports provided: Foundation, Touch *//***/function jsEntriesPluginsFoundationUtilTouchJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.util.touch */\"./js/foundation.util.touch.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Touch\",function(){return _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__[\"Touch\"];});/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_2__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_2__[\"Foundation\"];});_foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__[\"Touch\"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);window.Foundation.Touch=_foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__[\"Touch\"];/***/},/***/\"./js/foundation.util.touch.js\":/*!*************************************!*\\\n !*** ./js/foundation.util.touch.js ***!\n \\*************************************//*! exports provided: Touch *//***/function jsFoundationUtilTouchJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Touch\",function(){return Touch;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.moveThreshold&&elapsedTime<=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.timeThreshold){dir=dx>0?'left':'right';}// else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n// dir = dy > 0 ? 'down' : 'up';\n// }\nif(dir){e.preventDefault();onTouchEnd.apply(this,arguments);jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('swipe',Object.assign({},e)),dir).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(\"swipe\".concat(dir),Object.assign({},e)));}}}function onTouchStart(e){if(e.touches.length===1){startPosX=e.touches[0].pageX;startEvent=e;isMoving=true;didMoved=false;startTime=new Date().getTime();this.addEventListener('touchmove',onTouchMove,{passive:true===jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.preventDefault});this.addEventListener('touchend',onTouchEnd,false);}}function init(){this.addEventListener&&this.addEventListener('touchstart',onTouchStart,{passive:true});}// function teardown() {\n// this.removeEventListener('touchstart', onTouchStart);\n// }\nvar SpotSwipe=/*#__PURE__*/function(){function SpotSwipe(){_classCallCheck(this,SpotSwipe);this.version='1.0.0';this.enabled='ontouchstart'in document.documentElement;this.preventDefault=false;this.moveThreshold=75;this.timeThreshold=200;this._init();}_createClass(SpotSwipe,[{key:\"_init\",value:function _init(){jquery__WEBPACK_IMPORTED_MODULE_0___default.a.event.special.swipe={setup:init};jquery__WEBPACK_IMPORTED_MODULE_0___default.a.event.special.tap={setup:init};jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(['left','up','down','right'],function(){jquery__WEBPACK_IMPORTED_MODULE_0___default.a.event.special[\"swipe\".concat(this)]={setup:function setup(){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).on('swipe',jquery__WEBPACK_IMPORTED_MODULE_0___default.a.noop);}};});}}]);return SpotSwipe;}();/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/Touch.setupSpotSwipe=function(){jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe=new SpotSwipe(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);};/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/Touch.setupTouchHandler=function(){jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.addTouch=function(){this.each(function(i,el){jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).bind('touchstart touchmove touchend touchcancel',function(event){//we pass the original event object because the jQuery event\n//object is normalized to w3c specs and does not provide the TouchList\nhandleTouch(event);});});var handleTouch=function handleTouch(event){var touches=event.changedTouches,first=touches[0],eventTypes={touchstart:'mousedown',touchmove:'mousemove',touchend:'mouseup'},type=eventTypes[event.type],simulatedEvent;if('MouseEvent'in window&&typeof window.MouseEvent==='function'){simulatedEvent=new window.MouseEvent(type,{'bubbles':true,'cancelable':true,'screenX':first.screenX,'screenY':first.screenY,'clientX':first.clientX,'clientY':first.clientY});}else{simulatedEvent=document.createEvent('MouseEvent');simulatedEvent.initMouseEvent(type,true,true,window,1,first.screenX,first.screenY,first.clientX,first.clientY,false,false,false,false,0/*left*/,null);}first.target.dispatchEvent(simulatedEvent);};};};Touch.init=function(){if(typeof jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe==='undefined'){Touch.setupSpotSwipe(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);Touch.setupTouchHandler(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);}};/***/},/***/28:/*!***********************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.util.touch.js ***!\n \\***********************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.touch.js */\"./js/entries/plugins/foundation.util.touch.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.util.touch.js.map\n\"use strict\";var _typeof=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};!function(e,t){\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))&&\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))?module.exports=t(require(\"./foundation.core\"),require(\"jquery\")):\"function\"==typeof define&&define.amd?define([\"./foundation.core\",\"jquery\"],t):\"object\"==(typeof exports===\"undefined\"?\"undefined\":_typeof(exports))?exports[\"foundation.util.touch\"]=t(require(\"./foundation.core\"),require(\"jquery\")):(e.__FOUNDATION_EXTERNAL__=e.__FOUNDATION_EXTERNAL__||{},e.__FOUNDATION_EXTERNAL__[\"foundation.util.touch\"]=t(e.__FOUNDATION_EXTERNAL__[\"foundation.core\"],e.jQuery));}(window,function(n,o){return u={\"./foundation.core\":function foundationCore(e,t){e.exports=n;},\"./js/entries/plugins/foundation.util.touch.js\":function jsEntriesPluginsFoundationUtilTouchJs(e,t,n){\"use strict\";n.r(t);var o=n(\"jquery\"),o=n.n(o),i=n(\"./js/foundation.util.touch.js\");n.d(t,\"Touch\",function(){return i.Touch;});var u=n(\"./foundation.core\");n.d(t,\"Foundation\",function(){return u.Foundation;}),i.Touch.init(o.a),window.Foundation.Touch=i.Touch;},\"./js/foundation.util.touch.js\":function jsFoundationUtilTouchJs(e,t,n){\"use strict\";n.r(t),n.d(t,\"Touch\",function(){return s;});var t=n(\"jquery\"),i=n.n(t);function u(e,t){for(var n=0;n=i.a.spotSwipe.moveThreshold&&c<=i.a.spotSwipe.timeThreshold?01&&arguments[1]!==undefined?arguments[1]:{};this.$element=element;this.options=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(true,{},Abide.defaults,this.$element.data(),options);this.isEnabled=true;this.formnovalidate=null;this.className='Abide';// ie9 back compat\nthis._init();}/**\n * Initializes the Abide plugin and calls functions to get Abide functioning on load.\n * @private\n */},{key:\"_init\",value:function _init(){var _this2=this;this.$inputs=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.merge(// Consider as input to validate:\nthis.$element.find('input').not('[type=\"submit\"]'),// * all input fields expect submit\nthis.$element.find('textarea, select')// * all textareas and select fields\n);this.$submits=this.$element.find('[type=\"submit\"]');var $globalErrors=this.$element.find('[data-abide-error]');// Add a11y attributes to all fields\nif(this.options.a11yAttributes){this.$inputs.each(function(i,input){return _this2.addA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(input));});$globalErrors.each(function(i,error){return _this2.addGlobalErrorA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(error));});}this._events();}/**\n * Initializes events for Abide.\n * @private\n */},{key:\"_events\",value:function _events(){var _this3=this;this.$element.off('.abide').on('reset.zf.abide',function(){_this3.resetForm();}).on('submit.zf.abide',function(){return _this3.validateForm();});this.$submits.off('click.zf.abide keydown.zf.abide').on('click.zf.abide keydown.zf.abide',function(e){if(!e.key||e.key===' '||e.key==='Enter'){e.preventDefault();_this3.formnovalidate=e.target.getAttribute('formnovalidate')!==null;_this3.$element.submit();}});if(this.options.validateOn==='fieldChange'){this.$inputs.off('change.zf.abide').on('change.zf.abide',function(e){_this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));});}if(this.options.liveValidate){this.$inputs.off('input.zf.abide').on('input.zf.abide',function(e){_this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));});}if(this.options.validateOnBlur){this.$inputs.off('blur.zf.abide').on('blur.zf.abide',function(e){_this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));});}}/**\n * Calls necessary functions to update Abide upon DOM change\n * @private\n */},{key:\"_reflow\",value:function _reflow(){this._init();}/**\n * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled\n * @returns {Boolean}\n * @private\n */},{key:\"_validationIsDisabled\",value:function _validationIsDisabled(){if(this.isEnabled===false){// whole validation disabled\nreturn true;}else if(typeof this.formnovalidate==='boolean'){// triggered by $submit\nreturn this.formnovalidate;}// triggered by Enter in non-submit input\nreturn this.$submits.length?this.$submits[0].getAttribute('formnovalidate')!==null:false;}/**\n * Enables the whole validation\n */},{key:\"enableValidation\",value:function enableValidation(){this.isEnabled=true;}/**\n * Disables the whole validation\n */},{key:\"disableValidation\",value:function disableValidation(){this.isEnabled=false;}/**\n * Checks whether or not a form element has the required attribute and if it's checked or not\n * @param {Object} element - jQuery object to check for required attribute\n * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty\n */},{key:\"requiredCheck\",value:function requiredCheck($el){if(!$el.attr('required'))return true;var isGood=true;switch($el[0].type){case'checkbox':isGood=$el[0].checked;break;case'select':case'select-one':case'select-multiple':var opt=$el.find('option:selected');if(!opt.length||!opt.val())isGood=false;break;default:if(!$el.val()||!$el.val().length)isGood=false;}return isGood;}/**\n * Get:\n * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:\n * 1. The element's direct sibling('s).\n * 2. The element's parent's children.\n * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.\n *\n * This allows for multiple form errors per input, though if none are found, no form errors will be shown.\n *\n * @param {Object} $el - jQuery object to use as reference to find the form error selector.\n * @param {String[]} [failedValidators] - List of failed validators.\n * @returns {Object} jQuery object with the selector.\n */},{key:\"findFormError\",value:function findFormError($el,failedValidators){var _this4=this;var id=$el.length?$el[0].id:'';var $error=$el.siblings(this.options.formErrorSelector);if(!$error.length){$error=$el.parent().find(this.options.formErrorSelector);}if(id){$error=$error.add(this.$element.find(\"[data-form-error-for=\\\"\".concat(id,\"\\\"]\")));}if(!!failedValidators){$error=$error.not('[data-form-error-on]');failedValidators.forEach(function(v){$error=$error.add($el.siblings(\"[data-form-error-on=\\\"\".concat(v,\"\\\"]\")));$error=$error.add(_this4.$element.find(\"[data-form-error-for=\\\"\".concat(id,\"\\\"][data-form-error-on=\\\"\").concat(v,\"\\\"]\")));});}return $error;}/**\n * Get the first element in this order:\n * 2. The '+_this.options.submenuToggleText+'');}else{$elem.attr({'aria-controls':subId,'aria-expanded':isActive,'id':linkId});}$sub.attr({'aria-labelledby':linkId,'aria-hidden':!isActive,'role':'group','id':subId});});var initPanes=this.$element.find('.is-active');if(initPanes.length){initPanes.each(function(){_this.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));});}this._events();}/**\n * Adds event handlers for items within the menu.\n * @private\n */},{key:\"_events\",value:function _events(){var _this=this;this.$element.find('li').each(function(){var $submenu=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]');if($submenu.length){if(_this.options.submenuToggle){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu',function(){_this.toggle($submenu);});}else{jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu',function(e){e.preventDefault();_this.toggle($submenu);});}}}).on('keydown.zf.accordionMenu',function(e){var $element=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),$elements=$element.parent('ul').children('li'),$prevElement,$nextElement,$target=$element.children('[data-submenu]');$elements.each(function(i){if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)){$prevElement=$elements.eq(Math.max(0,i-1)).find('a').first();$nextElement=$elements.eq(Math.min(i+1,$elements.length-1)).find('a').first();if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]:visible').length){// has open sub menu\n$nextElement=$element.find('li:first-child').find('a').first();}if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':first-child')){// is first element of sub menu\n$prevElement=$element.parents('li').first().find('a').first();}else if($prevElement.parents('li').first().children('[data-submenu]:visible').length){// if previous element has open sub menu\n$prevElement=$prevElement.parents('li').find('li:last-child').find('a').first();}if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':last-child')){// is last element of sub menu\n$nextElement=$element.parents('li').first().next('li').find('a').first();}return;}});_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__[\"Keyboard\"].handleKey(e,'AccordionMenu',{open:function open(){if($target.is(':hidden')){_this.down($target);$target.find('li').first().find('a').first().focus();}},close:function close(){if($target.length&&!$target.is(':hidden')){// close active sub of this item\n_this.up($target);}else if($element.parent('[data-submenu]').length){// close currently open sub\n_this.up($element.parent('[data-submenu]'));$element.parents('li').first().find('a').first().focus();}},up:function up(){$prevElement.focus();return true;},down:function down(){$nextElement.focus();return true;},toggle:function toggle(){if(_this.options.submenuToggle){return false;}if($element.children('[data-submenu]').length){_this.toggle($element.children('[data-submenu]'));return true;}},closeAll:function closeAll(){_this.hideAll();},handled:function handled(preventDefault){if(preventDefault){e.preventDefault();}}});});//.attr('tabindex', 0);\n}/**\n * Closes all panes of the menu.\n * @function\n */},{key:\"hideAll\",value:function hideAll(){this.up(this.$element.find('[data-submenu]'));}/**\n * Opens all panes of the menu.\n * @function\n */},{key:\"showAll\",value:function showAll(){this.down(this.$element.find('[data-submenu]'));}/**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */},{key:\"toggle\",value:function toggle($target){if(!$target.is(':animated')){if(!$target.is(':hidden')){this.up($target);}else{this.down($target);}}}/**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */},{key:\"down\",value:function down($target){var _this2=this;// If having multiple submenus active is disabled, close all the submenus\n// that are not parents or children of the targeted submenu.\nif(!this.options.multiOpen){// The \"branch\" of the targetted submenu, from the component root to\n// the active submenus nested in it.\nvar $targetBranch=$target.parentsUntil(this.$element).add($target).add($target.find('.is-active'));// All the active submenus that are not in the branch.\nvar $othersActiveSubmenus=this.$element.find('.is-active').not($targetBranch);this.up($othersActiveSubmenus);}$target.addClass('is-active').attr({'aria-hidden':false});if(this.options.submenuToggle){$target.prev('.submenu-toggle').attr({'aria-expanded':true});}else{$target.parent('.is-accordion-submenu-parent').attr({'aria-expanded':true});}$target.slideDown(this.options.slideSpeed,function(){/**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */_this2.$element.trigger('down.zf.accordionMenu',[$target]);});}/**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */},{key:\"up\",value:function up($target){var _this3=this;var $submenus=$target.find('[data-submenu]');var $allmenus=$target.add($submenus);$submenus.slideUp(0);$allmenus.removeClass('is-active').attr('aria-hidden',true);if(this.options.submenuToggle){$allmenus.prev('.submenu-toggle').attr('aria-expanded',false);}else{$allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded',false);}$target.slideUp(this.options.slideSpeed,function(){/**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */_this3.$element.trigger('up.zf.accordionMenu',[$target]);});}/**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */},{key:\"_destroy\",value:function _destroy(){this.$element.find('[data-submenu]').slideDown(0).css('display','');this.$element.find('a').off('click.zf.accordionMenu');this.$element.find('[data-is-parent-link]').detach();if(this.options.submenuToggle){this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');this.$element.find('.submenu-toggle').remove();}_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__[\"Nest\"].Burn(this.$element,'accordion');}}]);return AccordionMenu;}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"Plugin\"]);AccordionMenu.defaults={/**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */parentLink:false,/**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */slideSpeed:250,/**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */submenuToggle:false,/**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */submenuToggleText:'Toggle menu',/**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */multiOpen:true};/***/},/***/2:/*!**************************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.accordionMenu.js ***!\n \\**************************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.accordionMenu.js */\"./js/entries/plugins/foundation.accordionMenu.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.accordionMenu.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"./foundation.util.box\"),require(\"./foundation.util.keyboard\"),require(\"./foundation.util.nest\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"./foundation.util.box\",\"./foundation.util.keyboard\",\"./foundation.util.nest\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.drilldown\"]=factory(require(\"./foundation.core\"),require(\"./foundation.util.box\"),require(\"./foundation.util.keyboard\"),require(\"./foundation.util.nest\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.drilldown\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.box\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.keyboard\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.nest\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_util_box__,__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__,__WEBPACK_EXTERNAL_MODULE__foundation_util_nest__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=3);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.util.box\":/*!********************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.box\"],\"amd\":\"./foundation.util.box\",\"commonjs\":\"./foundation.util.box\",\"commonjs2\":\"./foundation.util.box\"} ***!\n \\********************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilBox(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_box__;/***/},/***/\"./foundation.util.keyboard\":/*!****************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.keyboard\"],\"amd\":\"./foundation.util.keyboard\",\"commonjs\":\"./foundation.util.keyboard\",\"commonjs2\":\"./foundation.util.keyboard\"} ***!\n \\****************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilKeyboard(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;/***/},/***/\"./foundation.util.nest\":/*!************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.nest\"],\"amd\":\"./foundation.util.nest\",\"commonjs\":\"./foundation.util.nest\",\"commonjs2\":\"./foundation.util.nest\"} ***!\n \\************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilNest(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_nest__;/***/},/***/\"./js/entries/plugins/foundation.drilldown.js\":/*!****************************************************!*\\\n !*** ./js/entries/plugins/foundation.drilldown.js ***!\n \\****************************************************//*! exports provided: Foundation, Drilldown *//***/function jsEntriesPluginsFoundationDrilldownJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.drilldown */\"./js/foundation.drilldown.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Drilldown\",function(){return _foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__[\"Drilldown\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__[\"Drilldown\"],'Drilldown');/***/},/***/\"./js/foundation.drilldown.js\":/*!************************************!*\\\n !*** ./js/foundation.drilldown.js ***!\n \\************************************//*! exports provided: Drilldown *//***/function jsFoundationDrilldownJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Drilldown\",function(){return Drilldown;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.util.keyboard */\"./foundation.util.keyboard\");/* harmony import */var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.nest */\"./foundation.util.nest\");/* harmony import */var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__);/* harmony import */var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./foundation.util.box */\"./foundation.util.box\");/* harmony import */var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i');}$link.data('savedHref',$link.attr('href')).removeAttr('href').attr('tabindex',0);$link.children('[data-submenu]').attr({'aria-hidden':true,'tabindex':0,'role':'group'});_this._events($link);});this.$submenus.each(function(){var $menu=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),$back=$menu.find('.js-drilldown-back');if(!$back.length){switch(_this.options.backButtonPosition){case\"bottom\":$menu.append(_this.options.backButton);break;case\"top\":$menu.prepend(_this.options.backButton);break;default:console.error(\"Unsupported backButtonPosition value '\"+_this.options.backButtonPosition+\"'\");}}_this._back($menu);});this.$submenus.addClass('invisible');if(!this.options.autoHeight){this.$submenus.addClass('drilldown-submenu-cover-previous');}// create a wrapper on element if it doesn't exist.\nif(!this.$element.parent().hasClass('is-drilldown')){this.$wrapper=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.wrapper).addClass('is-drilldown');if(this.options.animateHeight)this.$wrapper.addClass('animate-height');this.$element.wrap(this.$wrapper);}// set wrapper\nthis.$wrapper=this.$element.parent();this.$wrapper.css(this._getMaxDims());}},{key:\"_resize\",value:function _resize(){this.$wrapper.css({'max-width':'none','min-height':'none'});// _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\nthis.$wrapper.css(this._getMaxDims());}/**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */},{key:\"_events\",value:function _events($elem){var _this=this;$elem.off('click.zf.drilldown').on('click.zf.drilldown',function(e){if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul','li').hasClass('is-drilldown-submenu-parent')){e.preventDefault();}// if(e.target !== e.currentTarget.firstElementChild){\n// return false;\n// }\n_this._show($elem.parent('li'));if(_this.options.closeOnClick){var $body=jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');$body.off('.zf.drilldown').on('click.zf.drilldown',function(ev){if(ev.target===_this.$element[0]||jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0],ev.target)){return;}ev.preventDefault();_this._hideAll();$body.off('.zf.drilldown');});}});}/**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */},{key:\"_registerEvents\",value:function _registerEvents(){if(this.options.scrollTop){this._bindHandler=this._scrollTop.bind(this);this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);}this.$element.on('mutateme.zf.trigger',this._resize.bind(this));}/**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */},{key:\"_scrollTop\",value:function _scrollTop(){var _this=this;var $scrollTopElement=_this.options.scrollTopElement!==''?jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this.options.scrollTopElement):_this.$element,scrollPos=parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset,10);jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({scrollTop:scrollPos},_this.options.animationDuration,_this.options.animationEasing,function(){/**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */if(this===jquery__WEBPACK_IMPORTED_MODULE_0___default()('html')[0])_this.$element.trigger('scrollme.zf.drilldown');});}/**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */},{key:\"_keyboardEvents\",value:function _keyboardEvents(){var _this=this;this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown',function(e){var $element=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),$elements=$element.parent('li').parent('ul').children('li').children('a'),$prevElement,$nextElement;$elements.each(function(i){if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)){$prevElement=$elements.eq(Math.max(0,i-1));$nextElement=$elements.eq(Math.min(i+1,$elements.length-1));return;}});_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__[\"Keyboard\"].handleKey(e,'Drilldown',{next:function next(){if($element.is(_this.$submenuAnchors)){_this._show($element.parent('li'));$element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])($element),function(){$element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();});return true;}},previous:function previous(){_this._hide($element.parent('li').parent('ul'));$element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])($element),function(){setTimeout(function(){$element.parent('li').parent('ul').parent('li').children('a').first().focus();},1);});return true;},up:function up(){$prevElement.focus();// Don't tap focus on first element in root ul\nreturn!$element.is(_this.$element.find('> li:first-child > a'));},down:function down(){$nextElement.focus();// Don't tap focus on last element in root ul\nreturn!$element.is(_this.$element.find('> li:last-child > a'));},close:function close(){// Don't close on element in root ul\nif(!$element.is(_this.$element.find('> li > a'))){_this._hide($element.parent().parent());$element.parent().parent().siblings('a').focus();}},open:function open(){if(_this.options.parentLink&&$element.attr('href')){// Link with href\nreturn false;}else if(!$element.is(_this.$menuItems)){// not menu item means back button\n_this._hide($element.parent('li').parent('ul'));$element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])($element),function(){setTimeout(function(){$element.parent('li').parent('ul').parent('li').children('a').first().focus();},1);});return true;}else if($element.is(_this.$submenuAnchors)){// Sub menu item\n_this._show($element.parent('li'));$element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])($element),function(){$element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();});return true;}},handled:function handled(preventDefault){if(preventDefault){e.preventDefault();}}});});// end keyboardAccess\n}/**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */},{key:\"_hideAll\",value:function _hideAll(){var _this2=this;var $elem=this.$element.find('.is-drilldown-submenu.is-active');$elem.addClass('is-closing');$elem.parent().closest('ul').removeClass('invisible');if(this.options.autoHeight){var calcHeight=$elem.parent().closest('ul').data('calcHeight');this.$wrapper.css({height:calcHeight});}/**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */this.$element.trigger('close.zf.drilldown');$elem.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])($elem),function(){$elem.removeClass('is-active is-closing');/**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */_this2.$element.trigger('closed.zf.drilldown');});}/**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */},{key:\"_back\",value:function _back($elem){var _this=this;$elem.off('click.zf.drilldown');$elem.children('.js-drilldown-back').on('click.zf.drilldown',function(){_this._hide($elem);// If there is a parent submenu, call show\nvar parentSubMenu=$elem.parent('li').parent('ul').parent('li');if(parentSubMenu.length){_this._show(parentSubMenu);}else{_this.$currentMenu=_this.$element;}});}/**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */},{key:\"_menuLinkEvents\",value:function _menuLinkEvents(){var _this=this;this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown',function(){setTimeout(function(){_this._hideAll();},0);});}/**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */},{key:\"_setShowSubMenuClasses\",value:function _setShowSubMenuClasses($elem,trigger){$elem.addClass('is-active').removeClass('invisible').attr('aria-hidden',false);$elem.parent('li').attr('aria-expanded',true);if(trigger===true){this.$element.trigger('open.zf.drilldown',[$elem]);}}/**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */},{key:\"_setHideSubMenuClasses\",value:function _setHideSubMenuClasses($elem,trigger){$elem.removeClass('is-active').addClass('invisible').attr('aria-hidden',true);$elem.parent('li').attr('aria-expanded',false);if(trigger===true){$elem.trigger('hide.zf.drilldown',[$elem]);}}/**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */},{key:\"_showMenu\",value:function _showMenu($elem,autoFocus){var _this=this;// Reset drilldown\nvar $expandedSubmenus=this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');$expandedSubmenus.each(function(){_this._setHideSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));});// Save the menu as the currently displayed one.\nthis.$currentMenu=$elem;// If target menu is root, focus first link & exit\nif($elem.is('[data-drilldown]')){if(autoFocus===true)$elem.find('li > a').first().focus();if(this.options.autoHeight)this.$wrapper.css('height',$elem.data('calcHeight'));return;}// Find all submenus on way to root incl. the element itself\nvar $submenus=$elem.children().first().parentsUntil('[data-drilldown]','[data-submenu]');// Open target menu and all submenus on its way to root\n$submenus.each(function(index){// Update height of first child (target menu) if autoHeight option true\nif(index===0&&_this.options.autoHeight){_this.$wrapper.css('height',jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight'));}var isLastChild=index===$submenus.length-1;// Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n// Last child makes sure the event gets always triggered even if going through several menus\nif(isLastChild===true){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)),function(){if(autoFocus===true){$elem.find('li > a').first().focus();}});}_this._setShowSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),isLastChild);});}/**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */},{key:\"_show\",value:function _show($elem){var $submenu=$elem.children('[data-submenu]');$elem.attr('aria-expanded',true);this.$currentMenu=$submenu;//hide drilldown parent menu when submenu is open\n// this removes it from the dom so that the tab key will take the user to the next visible element\n$elem.parent().closest('ul').addClass('invisible');// add visible class to submenu to override invisible class above\n$submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden',false);if(this.options.autoHeight){this.$wrapper.css({height:$submenu.data('calcHeight')});}/**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */this.$element.trigger('open.zf.drilldown',[$elem]);}/**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */},{key:\"_hide\",value:function _hide($elem){if(this.options.autoHeight)this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});$elem.parent().closest('ul').removeClass('invisible');$elem.parent('li').attr('aria-expanded',false);$elem.attr('aria-hidden',true);$elem.addClass('is-closing').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"transitionend\"])($elem),function(){$elem.removeClass('is-active is-closing visible');$elem.blur().addClass('invisible');});/**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */$elem.trigger('hide.zf.drilldown',[$elem]);}/**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */},{key:\"_getMaxDims\",value:function _getMaxDims(){var maxHeight=0,result={},_this=this;// Recalculate menu heights and total max height\nthis.$submenus.add(this.$element).each(function(){var height=_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__[\"Box\"].GetDimensions(this).height;maxHeight=height>maxHeight?height:maxHeight;if(_this.options.autoHeight){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight',height);}});if(this.options.autoHeight)result.height=this.$currentMenu.data('calcHeight');else result['min-height']=\"\".concat(maxHeight,\"px\");result['max-width']=\"\".concat(this.$element[0].getBoundingClientRect().width,\"px\");return result;}/**\n * Destroys the Drilldown Menu\n * @function\n */},{key:\"_destroy\",value:function _destroy(){jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').off('.zf.drilldown');if(this.options.scrollTop)this.$element.off('.zf.drilldown',this._bindHandler);this._hideAll();this.$element.off('mutateme.zf.trigger');_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__[\"Nest\"].Burn(this.$element,'drilldown');this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');this.$submenuAnchors.each(function(){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off('.zf.drilldown');});this.$element.find('[data-is-parent-link]').detach();this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');this.$element.find('a').each(function(){var $link=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);$link.removeAttr('tabindex');if($link.data('savedHref')){$link.attr('href',$link.data('savedHref')).removeData('savedHref');}else{return;}});}}]);return Drilldown;}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"Plugin\"]);Drilldown.defaults={/**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */autoApplyClass:true,/**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
  • Back
  • '\n */backButton:'
  • Back
  • ',/**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */backButtonPosition:'top',/**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
    '\n */wrapper:'
    ',/**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */parentLink:false,/**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */closeOnClick:false,/**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */autoHeight:false,/**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */animateHeight:false,/**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */scrollTop:false,/**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */scrollTopElement:'',/**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */scrollTopOffset:0,/**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */animationDuration:500,/**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */animationEasing:'swing'// holdOpen: false\n};/***/},/***/3:/*!**********************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.drilldown.js ***!\n \\**********************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.drilldown.js */\"./js/entries/plugins/foundation.drilldown.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.drilldown.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"./foundation.util.box\"),require(\"./foundation.util.keyboard\"),require(\"./foundation.util.motion\"),require(\"./foundation.util.touch\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"./foundation.util.box\",\"./foundation.util.keyboard\",\"./foundation.util.motion\",\"./foundation.util.touch\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.dropdown\"]=factory(require(\"./foundation.core\"),require(\"./foundation.util.box\"),require(\"./foundation.util.keyboard\"),require(\"./foundation.util.motion\"),require(\"./foundation.util.touch\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.dropdown\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.box\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.keyboard\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.motion\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.touch\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_util_box__,__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__,__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__,__WEBPACK_EXTERNAL_MODULE__foundation_util_touch__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=4);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.util.box\":/*!********************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.box\"],\"amd\":\"./foundation.util.box\",\"commonjs\":\"./foundation.util.box\",\"commonjs2\":\"./foundation.util.box\"} ***!\n \\********************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilBox(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_box__;/***/},/***/\"./foundation.util.keyboard\":/*!****************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.keyboard\"],\"amd\":\"./foundation.util.keyboard\",\"commonjs\":\"./foundation.util.keyboard\",\"commonjs2\":\"./foundation.util.keyboard\"} ***!\n \\****************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilKeyboard(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;/***/},/***/\"./foundation.util.motion\":/*!********************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.motion\"],\"amd\":\"./foundation.util.motion\",\"commonjs\":\"./foundation.util.motion\",\"commonjs2\":\"./foundation.util.motion\"} ***!\n \\********************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMotion(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;/***/},/***/\"./foundation.util.touch\":/*!****************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.touch\"],\"amd\":\"./foundation.util.touch\",\"commonjs\":\"./foundation.util.touch\",\"commonjs2\":\"./foundation.util.touch\"} ***!\n \\****************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilTouch(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_touch__;/***/},/***/\"./js/entries/plugins/foundation.dropdown.js\":/*!***************************************************!*\\\n !*** ./js/entries/plugins/foundation.dropdown.js ***!\n \\***************************************************//*! exports provided: Foundation, Dropdown *//***/function jsEntriesPluginsFoundationDropdownJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.dropdown */\"./js/foundation.dropdown.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Dropdown\",function(){return _foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__[\"Dropdown\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__[\"Dropdown\"],'Dropdown');/***/},/***/\"./js/foundation.dropdown.js\":/*!***********************************!*\\\n !*** ./js/foundation.dropdown.js ***!\n \\***********************************//*! exports provided: Dropdown *//***/function jsFoundationDropdownJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Dropdown\",function(){return Dropdown;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.util.keyboard */\"./foundation.util.keyboard\");/* harmony import */var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_positionable__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.positionable */\"./js/foundation.positionable.js\");/* harmony import */var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./foundation.util.triggers */\"./js/foundation.util.triggers.js\");/* harmony import */var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(/*! ./foundation.util.touch */\"./foundation.util.touch\");/* harmony import */var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i-1,$elements=isTab?_this.$tabs:$element.siblings('li').add($element),$prevElement,$nextElement;$elements.each(function(i){if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)){$prevElement=$elements.eq(i-1);$nextElement=$elements.eq(i+1);return;}});var nextSibling=function nextSibling(){$nextElement.children('a:first').focus();e.preventDefault();},prevSibling=function prevSibling(){$prevElement.children('a:first').focus();e.preventDefault();},openSub=function openSub(){var $sub=$element.children('ul.is-dropdown-submenu');if($sub.length){_this._show($sub);$element.find('li > a:first').focus();e.preventDefault();}else{return;}},closeSub=function closeSub(){//if ($element.is(':first-child')) {\nvar close=$element.parent('ul').parent('li');close.children('a:first').focus();_this._hide(close);e.preventDefault();//}\n};var functions={open:openSub,close:function close(){_this._hide(_this.$element);_this.$menuItems.eq(0).children('a').focus();// focus to first element\ne.preventDefault();}};if(isTab){if(_this._isVertical()){// vertical menu\nif(_this._isRtl()){// right aligned\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions,{down:nextSibling,up:prevSibling,next:closeSub,previous:openSub});}else{// left aligned\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions,{down:nextSibling,up:prevSibling,next:openSub,previous:closeSub});}}else{// horizontal menu\nif(_this._isRtl()){// right aligned\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions,{next:prevSibling,previous:nextSibling,down:openSub,up:closeSub});}else{// left aligned\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions,{next:nextSibling,previous:prevSibling,down:openSub,up:closeSub});}}}else{// not tabs -> one sub\nif(_this._isRtl()){// right aligned\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions,{next:closeSub,previous:openSub,down:nextSibling,up:prevSibling});}else{// left aligned\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions,{next:openSub,previous:closeSub,down:nextSibling,up:prevSibling});}}_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].handleKey(e,'DropdownMenu',functions);});}/**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */},{key:\"_addBodyHandler\",value:function _addBodyHandler(){var _this2=this;var $body=jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body);this._removeBodyHandler();$body.on('click.zf.dropdownMenu tap.zf.dropdownMenu',function(e){var isItself=!!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).closest(_this2.$element).length;if(isItself)return;_this2._hide();_this2._removeBodyHandler();});}/**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */},{key:\"_removeBodyHandler\",value:function _removeBodyHandler(){jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');}/**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */},{key:\"_show\",value:function _show($sub){var idx=this.$tabs.index(this.$tabs.filter(function(i,el){return jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).find($sub).length>0;}));var $sibs=$sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');this._hide($sibs,idx);$sub.css('visibility','hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active');var clear=_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__[\"Box\"].ImNotTouchingYou($sub,null,true);if(!clear){var oldClass=this.options.alignment==='left'?'-right':'-left',$parentLi=$sub.parent('.is-dropdown-submenu-parent');$parentLi.removeClass(\"opens\".concat(oldClass)).addClass(\"opens-\".concat(this.options.alignment));clear=_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__[\"Box\"].ImNotTouchingYou($sub,null,true);if(!clear){$parentLi.removeClass(\"opens-\".concat(this.options.alignment)).addClass('opens-inner');}this.changed=true;}$sub.css('visibility','');if(this.options.closeOnClick){this._addBodyHandler();}/**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */this.$element.trigger('show.zf.dropdownMenu',[$sub]);}/**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */},{key:\"_hide\",value:function _hide($elem,idx){var $toClose;if($elem&&$elem.length){$toClose=$elem;}else if(typeof idx!=='undefined'){$toClose=this.$tabs.not(function(i){return i===idx;});}else{$toClose=this.$element;}var somethingToClose=$toClose.hasClass('is-active')||$toClose.find('.is-active').length>0;if(somethingToClose){var $activeItem=$toClose.find('li.is-active');$activeItem.add($toClose).attr({'data-is-click':false}).removeClass('is-active');$toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');if(this.changed||$toClose.find('opens-inner').length){var oldClass=this.options.alignment==='left'?'right':'left';$toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass(\"opens-inner opens-\".concat(this.options.alignment)).addClass(\"opens-\".concat(oldClass));this.changed=false;}clearTimeout($activeItem.data('_delay'));this._removeBodyHandler();/**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */this.$element.trigger('hide.zf.dropdownMenu',[$toClose]);}}/**\n * Destroys the plugin.\n * @function\n */},{key:\"_destroy\",value:function _destroy(){this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('.zf.dropdownMenu');_foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__[\"Nest\"].Burn(this.$element,'dropdown');}}]);return DropdownMenu;}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__[\"Plugin\"]);/**\n * Default settings for plugin\n */DropdownMenu.defaults={/**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */disableHover:false,/**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */disableHoverOnTouch:true,/**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */autoclose:true,/**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */hoverDelay:50,/**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */clickOpen:false,/**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */closingTime:500,/**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */alignment:'auto',/**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */closeOnClick:true,/**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */closeOnClickInside:true,/**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */verticalClass:'vertical',/**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */rightClass:'align-right',/**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */forceFollow:true};/***/},/***/5:/*!*************************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.dropdownMenu.js ***!\n \\*************************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.dropdownMenu.js */\"./js/entries/plugins/foundation.dropdownMenu.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.dropdownMenu.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"./foundation.util.imageLoader\"),require(\"./foundation.util.mediaQuery\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"./foundation.util.imageLoader\",\"./foundation.util.mediaQuery\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.equalizer\"]=factory(require(\"./foundation.core\"),require(\"./foundation.util.imageLoader\"),require(\"./foundation.util.mediaQuery\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.equalizer\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.imageLoader\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.mediaQuery\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__,__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=6);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.util.imageLoader\":/*!****************************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.imageLoader\"],\"amd\":\"./foundation.util.imageLoader\",\"commonjs\":\"./foundation.util.imageLoader\",\"commonjs2\":\"./foundation.util.imageLoader\"} ***!\n \\****************************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilImageLoader(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__;/***/},/***/\"./foundation.util.mediaQuery\":/*!************************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.mediaQuery\"],\"amd\":\"./foundation.util.mediaQuery\",\"commonjs\":\"./foundation.util.mediaQuery\",\"commonjs2\":\"./foundation.util.mediaQuery\"} ***!\n \\************************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMediaQuery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;/***/},/***/\"./js/entries/plugins/foundation.equalizer.js\":/*!****************************************************!*\\\n !*** ./js/entries/plugins/foundation.equalizer.js ***!\n \\****************************************************//*! exports provided: Foundation, Equalizer *//***/function jsEntriesPluginsFoundationEqualizerJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.equalizer */\"./js/foundation.equalizer.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Equalizer\",function(){return _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__[\"Equalizer\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__[\"Equalizer\"],'Equalizer');/***/},/***/\"./js/foundation.equalizer.js\":/*!************************************!*\\\n !*** ./js/foundation.equalizer.js ***!\n \\************************************//*! exports provided: Equalizer *//***/function jsFoundationEqualizerJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Equalizer\",function(){return Equalizer;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.util.mediaQuery */\"./foundation.util.mediaQuery\");/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.imageLoader */\"./foundation.util.imageLoader\");/* harmony import */var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i0;this.isNested=this.$element.parentsUntil(document.body,'[data-equalizer]').length>0;this.isOn=false;this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var imgs=this.$element.find('img');var tooSmall;if(this.options.equalizeOn){tooSmall=this._checkMQ();jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',this._checkMQ.bind(this));}else{this._events();}if(typeof tooSmall!=='undefined'&&tooSmall===false||typeof tooSmall==='undefined'){if(imgs.length){Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__[\"onImagesLoaded\"])(imgs,this._reflow.bind(this));}else{this._reflow();}}}/**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */},{key:\"_pauseEvents\",value:function _pauseEvents(){this.isOn=false;this.$element.off({'.zf.equalizer':this._bindHandler.onPostEqualizedBound,'resizeme.zf.trigger':this._bindHandler.onResizeMeBound,'mutateme.zf.trigger':this._bindHandler.onResizeMeBound});}/**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */},{key:\"_onResizeMe\",value:function _onResizeMe(){this._reflow();}/**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */},{key:\"_onPostEqualized\",value:function _onPostEqualized(e){if(e.target!==this.$element[0]){this._reflow();}}/**\n * Initializes events for Equalizer.\n * @private\n */},{key:\"_events\",value:function _events(){this._pauseEvents();if(this.hasNested){this.$element.on('postequalized.zf.equalizer',this._bindHandler.onPostEqualizedBound);}else{this.$element.on('resizeme.zf.trigger',this._bindHandler.onResizeMeBound);this.$element.on('mutateme.zf.trigger',this._bindHandler.onResizeMeBound);}this.isOn=true;}/**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */},{key:\"_checkMQ\",value:function _checkMQ(){var tooSmall=!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__[\"MediaQuery\"].is(this.options.equalizeOn);if(tooSmall){if(this.isOn){this._pauseEvents();this.$watched.css('height','auto');}}else{if(!this.isOn){this._events();}}return tooSmall;}/**\n * A noop version for the plugin\n * @private\n */},{key:\"_killswitch\",value:function _killswitch(){return;}/**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */},{key:\"_reflow\",value:function _reflow(){if(!this.options.equalizeOnStack){if(this._isStacked()){this.$watched.css('height','auto');return false;}}if(this.options.equalizeByRow){this.getHeightsByRow(this.applyHeightByRow.bind(this));}else{this.getHeights(this.applyHeight.bind(this));}}/**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */},{key:\"_isStacked\",value:function _isStacked(){if(!this.$watched[0]||!this.$watched[1]){return true;}return this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top;}/**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */},{key:\"getHeights\",value:function getHeights(cb){var heights=[];for(var i=0,len=this.$watched.length;i`.\n * - `background`: replace the `background-image` CSS property.\n * - `html`: replace the element content.\n * @option\n * @type {string}\n * @default 'auto'\n */type:'auto'};Interchange.SPECIAL_QUERIES={'landscape':'screen and (orientation: landscape)','portrait':'screen and (orientation: portrait)','retina':'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'};/***/},/***/\"./js/foundation.util.triggers.js\":/*!****************************************!*\\\n !*** ./js/foundation.util.triggers.js ***!\n \\****************************************//*! exports provided: Triggers *//***/function jsFoundationUtilTriggersJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Triggers\",function(){return Triggers;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}var MutationObserver=function(){var prefixes=['WebKit','Moz','O','Ms',''];for(var i=0;i0&&this.options.transition==='push'){// If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n// Limit to push transition since there's no transform scope for overlap\nthis.options.contentScroll=false;}var inCanvasFor=this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);if(inCanvasFor&&inCanvasFor.length===2){// Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\nthis.options.inCanvasOn=inCanvasFor[1];}else if(this.options.inCanvasOn){// Ensure the CSS class is set\nthis.$element.addClass(\"in-canvas-for-\".concat(this.options.inCanvasOn));}if(this.options.inCanvasOn){this._checkInCanvas();}// Initally remove all transition/position CSS classes from off-canvas content container.\nthis._removeContentClasses();}/**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */},{key:\"_events\",value:function _events(){var _this3=this;this.$element.off('.zf.trigger .zf.offCanvas').on({'open.zf.trigger':this.open.bind(this),'close.zf.trigger':this.close.bind(this),'toggle.zf.trigger':this.toggle.bind(this),'keydown.zf.offCanvas':this._handleKeyboard.bind(this)});if(this.options.closeOnClick===true){var $target=this.options.contentOverlay?this.$overlay:this.$content;$target.on({'click.zf.offCanvas':this.close.bind(this)});}if(this.options.inCanvasOn){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',function(){_this3._checkInCanvas();});}}/**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */},{key:\"_setMQChecker\",value:function _setMQChecker(){var _this=this;this.onLoadListener=Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__[\"onLoad\"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window),function(){if(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__[\"MediaQuery\"].atLeast(_this.options.revealOn)){_this.reveal(true);}});jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',function(){if(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__[\"MediaQuery\"].atLeast(_this.options.revealOn)){_this.reveal(true);}else{_this.reveal(false);}});}/**\n * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n * @private\n */},{key:\"_checkInCanvas\",value:function _checkInCanvas(){this.isInCanvas=_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__[\"MediaQuery\"].atLeast(this.options.inCanvasOn);if(this.isInCanvas===true){this.close();}}/**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */},{key:\"_removeContentClasses\",value:function _removeContentClasses(hasReveal){if(typeof hasReveal!=='boolean'){this.$content.removeClass(this.contentClasses.base.join(' '));}else if(hasReveal===false){this.$content.removeClass(\"has-reveal-\".concat(this.position));}}/**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */},{key:\"_addContentClasses\",value:function _addContentClasses(hasReveal){this._removeContentClasses(hasReveal);if(typeof hasReveal!=='boolean'){this.$content.addClass(\"has-transition-\".concat(this.options.transition,\" has-position-\").concat(this.position));}else if(hasReveal===true){this.$content.addClass(\"has-reveal-\".concat(this.position));}}/**\n * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n * @private\n */},{key:\"_fixStickyElements\",value:function _fixStickyElements(){this.$sticky.each(function(_,el){var $el=jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);// If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n// Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\nif($el.css('position')==='fixed'){// Save current inline styling to restore it if undoing the absolute fixing\nvar topVal=parseInt($el.css('top'),10);$el.data('offCanvasSticky',{top:topVal});var absoluteTopVal=jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).scrollTop()+topVal;$el.css({top:\"\".concat(absoluteTopVal,\"px\"),width:'100%',transition:'none'});}});}/**\n * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n * This reverts the changes of _fixStickyElements()\n * @private\n */},{key:\"_unfixStickyElements\",value:function _unfixStickyElements(){this.$sticky.each(function(_,el){var $el=jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);var stickyData=$el.data('offCanvasSticky');// If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\nif(_typeof(stickyData)==='object'){$el.css({top:\"\".concat(stickyData.top,\"px\"),width:'',transition:''});$el.data('offCanvasSticky','');}});}/**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */},{key:\"reveal\",value:function reveal(isRevealed){if(isRevealed){this.close();this.isRevealed=true;this.$element.attr('aria-hidden','false');this.$element.off('open.zf.trigger toggle.zf.trigger');this.$element.removeClass('is-closed');}else{this.isRevealed=false;this.$element.attr('aria-hidden','true');this.$element.off('open.zf.trigger toggle.zf.trigger').on({'open.zf.trigger':this.open.bind(this),'toggle.zf.trigger':this.toggle.bind(this)});this.$element.addClass('is-closed');}this._addContentClasses(isRevealed);}/**\n * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n * @function\n * @private\n */},{key:\"_stopScrolling\",value:function _stopScrolling(){return false;}/**\n * Save current finger y-position\n * @param event\n * @private\n */},{key:\"_recordScrollable\",value:function _recordScrollable(event){var elem=this;elem.lastY=event.touches[0].pageY;}/**\n * Prevent further scrolling when it hits the edges\n * @param event\n * @private\n */},{key:\"_preventDefaultAtEdges\",value:function _preventDefaultAtEdges(event){var elem=this;var _this=event.data;var delta=elem.lastY-event.touches[0].pageY;elem.lastY=event.touches[0].pageY;if(!_this._canScroll(delta,elem)){event.preventDefault();}}/**\n * Handle continuous scrolling of scrollbox\n * Don't bubble up to _preventDefaultAtEdges\n * @param event\n * @private\n */},{key:\"_scrollboxTouchMoved\",value:function _scrollboxTouchMoved(event){var elem=this;var _this=event.data;var parent=elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');var delta=elem.lastY-event.touches[0].pageY;parent.lastY=elem.lastY=event.touches[0].pageY;event.stopPropagation();if(!_this._canScroll(delta,elem)){if(!_this._canScroll(delta,parent)){event.preventDefault();}else{parent.scrollTop+=delta;}}}/**\n * Detect possibility of scrolling\n * @param delta\n * @param elem\n * @returns boolean\n * @private\n */},{key:\"_canScroll\",value:function _canScroll(delta,elem){var up=delta<0;var down=delta>0;var allowUp=elem.scrollTop>0;var allowDown=elem.scrollTop1){this.geoSync();}if(this.options.accessible){// allow wrapper to be focusable to enable arrow navigation\nthis.$wrapper.attr('tabindex',0);}}/**\n * Creates a jQuery collection of bullets, if they are being used.\n * @function\n * @private\n */},{key:\"_loadBullets\",value:function _loadBullets(){this.$bullets=this.$element.find(\".\".concat(this.options.boxOfBullets)).find('button');}/**\n * Sets a `timer` object on the orbit, and starts the counter for the next slide.\n * @function\n */},{key:\"geoSync\",value:function geoSync(){var _this=this;this.timer=new _foundation_util_timer__WEBPACK_IMPORTED_MODULE_3__[\"Timer\"](this.$element,{duration:this.options.timerDelay,infinite:false},function(){_this.changeSlide(true);});this.timer.start();}/**\n * Sets wrapper and slide heights for the orbit.\n * @function\n * @private\n */},{key:\"_prepareForOrbit\",value:function _prepareForOrbit(){this._setWrapperHeight();}/**\n * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.\n * @function\n * @private\n * @param {Function} cb - a callback function to fire when complete.\n */},{key:\"_setWrapperHeight\",value:function _setWrapperHeight(cb){//rewrite this to `for` loop\nvar max=0,temp,counter=0,_this=this;this.$slides.each(function(){temp=this.getBoundingClientRect().height;jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-slide',counter);// hide all slides but the active one\nif(!/mui/g.test(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].className)&&_this.$slides.filter('.is-active')[0]!==_this.$slides.eq(counter)[0]){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css({'display':'none'});}max=temp>max?temp:max;counter++;});if(counter===this.$slides.length){this.$wrapper.css({'height':max});//only change the wrapper height property once.\nif(cb){cb(max);}//fire callback with max height dimension.\n}}/**\n * Sets the max-height of each slide.\n * @function\n * @private\n */},{key:\"_setSlideHeight\",value:function _setSlideHeight(height){this.$slides.each(function(){jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css('max-height',height);});}/**\n * Adds event listeners to basically everything within the element.\n * @function\n * @private\n */},{key:\"_events\",value:function _events(){var _this=this;//***************************************\n//**Now using custom event - thanks to:**\n//** Yohai Ararat of Toronto **\n//***************************************\n//\nthis.$element.off('.resizeme.zf.trigger').on({'resizeme.zf.trigger':this._prepareForOrbit.bind(this)});if(this.$slides.length>1){if(this.options.swipe){this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit').on('swipeleft.zf.orbit',function(e){e.preventDefault();_this.changeSlide(true);}).on('swiperight.zf.orbit',function(e){e.preventDefault();_this.changeSlide(false);});}//***************************************\nif(this.options.autoPlay){this.$slides.on('click.zf.orbit',function(){_this.$element.data('clickedOn',_this.$element.data('clickedOn')?false:true);_this.timer[_this.$element.data('clickedOn')?'pause':'start']();});if(this.options.pauseOnHover){this.$element.on('mouseenter.zf.orbit',function(){_this.timer.pause();}).on('mouseleave.zf.orbit',function(){if(!_this.$element.data('clickedOn')){_this.timer.start();}});}}if(this.options.navButtons){var $controls=this.$element.find(\".\".concat(this.options.nextClass,\", .\").concat(this.options.prevClass));$controls.attr('tabindex',0)//also need to handle enter/return and spacebar key presses\n.on('click.zf.orbit touchend.zf.orbit',function(e){e.preventDefault();_this.changeSlide(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hasClass(_this.options.nextClass));});}if(this.options.bullets){this.$bullets.on('click.zf.orbit touchend.zf.orbit',function(){if(/is-active/g.test(this.className)){return false;}//if this is active, kick out of function.\nvar idx=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('slide'),ltr=idx>_this.$slides.filter('.is-active').data('slide'),$slide=_this.$slides.eq(idx);_this.changeSlide(ltr,$slide,idx);});}if(this.options.accessible){this.$wrapper.add(this.$bullets).on('keydown.zf.orbit',function(e){// handle keyboard event with keyboard util\n_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__[\"Keyboard\"].handleKey(e,'Orbit',{next:function next(){_this.changeSlide(true);},previous:function previous(){_this.changeSlide(false);},handled:function handled(){// if bullet is focused, make sure focus moves\nif(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).is(_this.$bullets)){_this.$bullets.filter('.is-active').focus();}}});});}}}/**\n * Resets Orbit so it can be reinitialized\n */},{key:\"_reset\",value:function _reset(){// Don't do anything if there are no slides (first run)\nif(typeof this.$slides==='undefined'){return;}if(this.$slides.length>1){// Remove old events\nthis.$element.off('.zf.orbit').find('*').off('.zf.orbit');// Restart timer if autoPlay is enabled\nif(this.options.autoPlay){this.timer.restart();}// Reset all sliddes\nthis.$slides.each(function(el){jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).removeClass('is-active is-active is-in').removeAttr('aria-live').hide();});// Show the first slide\nthis.$slides.first().addClass('is-active').show();// Triggers when the slide has finished animating\nthis.$element.trigger('slidechange.zf.orbit',[this.$slides.first()]);// Select first bullet if bullets are present\nif(this.options.bullets){this._updateBullets(0);}}}/**\n * Changes the current slide to a new one.\n * @function\n * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.\n * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.\n * @param {Number} idx - the index of the new slide in its collection, if one chosen.\n * @fires Orbit#slidechange\n */},{key:\"changeSlide\",value:function changeSlide(isLTR,chosenSlide,idx){if(!this.$slides){return;}// Don't freak out if we're in the middle of cleanup\nvar $curSlide=this.$slides.filter('.is-active').eq(0);if(/mui/g.test($curSlide[0].className)){return false;}//if the slide is currently animating, kick out of the function\nvar $firstSlide=this.$slides.first(),$lastSlide=this.$slides.last(),dirIn=isLTR?'Right':'Left',dirOut=isLTR?'Left':'Right',_this=this,$newSlide;if(!chosenSlide){//most of the time, this will be auto played or clicked from the navButtons.\n$newSlide=isLTR?//if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!\nthis.options.infiniteWrap?$curSlide.next(\".\".concat(this.options.slideClass)).length?$curSlide.next(\".\".concat(this.options.slideClass)):$firstSlide:$curSlide.next(\".\".concat(this.options.slideClass))//pick next slide if moving left to right\n:this.options.infiniteWrap?$curSlide.prev(\".\".concat(this.options.slideClass)).length?$curSlide.prev(\".\".concat(this.options.slideClass)):$lastSlide:$curSlide.prev(\".\".concat(this.options.slideClass));//pick prev slide if moving right to left\n}else{$newSlide=chosenSlide;}if($newSlide.length){/**\n * Triggers before the next slide starts animating in and only if a next slide has been found.\n * @event Orbit#beforeslidechange\n */this.$element.trigger('beforeslidechange.zf.orbit',[$curSlide,$newSlide]);if(this.options.bullets){idx=idx||this.$slides.index($newSlide);//grab index to update bullets\nthis._updateBullets(idx);}if(this.options.useMUI&&!this.$element.is(':hidden')){_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__[\"Motion\"].animateIn($newSlide.addClass('is-active'),this.options[\"animInFrom\".concat(dirIn)],function(){$newSlide.css({'display':'block'}).attr('aria-live','polite');});_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__[\"Motion\"].animateOut($curSlide.removeClass('is-active'),this.options[\"animOutTo\".concat(dirOut)],function(){$curSlide.removeAttr('aria-live');if(_this.options.autoPlay&&!_this.timer.isPaused){_this.timer.restart();}//do stuff?\n});}else{$curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();$newSlide.addClass('is-active is-in').attr('aria-live','polite').show();if(this.options.autoPlay&&!this.timer.isPaused){this.timer.restart();}}/**\n * Triggers when the slide has finished animating in.\n * @event Orbit#slidechange\n */this.$element.trigger('slidechange.zf.orbit',[$newSlide]);}}/**\n * Updates the active state of the bullets, if displayed.\n * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.\n * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.\n *\n * @function\n * @private\n * @param {Number} idx - the index of the current slide.\n */},{key:\"_updateBullets\",value:function _updateBullets(idx){var $oldBullet=this.$bullets.filter('.is-active');var $othersBullets=this.$bullets.not('.is-active');var $newBullet=this.$bullets.eq(idx);$oldBullet.removeClass('is-active').blur();$newBullet.addClass('is-active');// Find the descriptor for the current slide to move it to the new slide button\nvar activeStateDescriptor=$oldBullet.children('[data-slide-active-label]').last();// If not explicitely given, search for the last \"exceeding\" span element (compared to others bullets).\nif(!activeStateDescriptor.length){var spans=$oldBullet.children('span');var spanCountInOthersBullets=$othersBullets.toArray().map(function(b){return jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).children('span').length;});// If there is an exceeding span element, use it as current slide descriptor\nif(spanCountInOthersBullets.every(function(count){return count1?rule[0]:'small';var rulePlugin=rule.length>1?rule[1]:rule[0];if(MenuPlugins[rulePlugin]!==null){rulesTree[ruleSize]=MenuPlugins[rulePlugin];}}this.rules=rulesTree;}if(!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)){this._checkMediaQueries();}// Add data-mutate since children may need it.\nthis.$element.attr('data-mutate',this.$element.attr('data-mutate')||Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__[\"GetYoDigits\"])(6,'responsive-menu'));}/**\n * Initializes events for the Menu.\n * @function\n * @private\n */},{key:\"_events\",value:function _events(){var _this=this;jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',function(){_this._checkMediaQueries();});// $(window).on('resize.zf.ResponsiveMenu', function() {\n// _this._checkMediaQueries();\n// });\n}/**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */},{key:\"_checkMediaQueries\",value:function _checkMediaQueries(){var matchedMq,_this=this;// Iterate through each rule and find the last matching rule\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules,function(key){if(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__[\"MediaQuery\"].atLeast(key)){matchedMq=key;}});// No match? No dice\nif(!matchedMq)return;// Plugin already initialized? We good\nif(this.currentPlugin instanceof this.rules[matchedMq].plugin)return;// Remove existing plugin-specific CSS classes\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins,function(key,value){_this.$element.removeClass(value.cssClass);});// Add the CSS class for the new plugin\nthis.$element.addClass(this.rules[matchedMq].cssClass);// Create an instance of the new plugin\nif(this.currentPlugin)this.currentPlugin.destroy();this.currentPlugin=new this.rules[matchedMq].plugin(this.$element,{});}/**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */},{key:\"_destroy\",value:function _destroy(){this.currentPlugin.destroy();jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('.zf.ResponsiveMenu');}}]);return ResponsiveMenu;}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__[\"Plugin\"]);ResponsiveMenu.defaults={};/***/},/***/12:/*!***************************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.responsiveMenu.js ***!\n \\***************************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveMenu.js */\"./js/entries/plugins/foundation.responsiveMenu.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.responsiveMenu.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"./foundation.util.mediaQuery\"),require(\"./foundation.util.motion\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"./foundation.util.mediaQuery\",\"./foundation.util.motion\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.responsiveToggle\"]=factory(require(\"./foundation.core\"),require(\"./foundation.util.mediaQuery\"),require(\"./foundation.util.motion\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.responsiveToggle\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.mediaQuery\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.motion\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__,__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=13);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.util.mediaQuery\":/*!************************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.mediaQuery\"],\"amd\":\"./foundation.util.mediaQuery\",\"commonjs\":\"./foundation.util.mediaQuery\",\"commonjs2\":\"./foundation.util.mediaQuery\"} ***!\n \\************************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMediaQuery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;/***/},/***/\"./foundation.util.motion\":/*!********************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.motion\"],\"amd\":\"./foundation.util.motion\",\"commonjs\":\"./foundation.util.motion\",\"commonjs2\":\"./foundation.util.motion\"} ***!\n \\********************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMotion(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;/***/},/***/\"./js/entries/plugins/foundation.responsiveToggle.js\":/*!***********************************************************!*\\\n !*** ./js/entries/plugins/foundation.responsiveToggle.js ***!\n \\***********************************************************//*! exports provided: Foundation, ResponsiveToggle *//***/function jsEntriesPluginsFoundationResponsiveToggleJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.responsiveToggle */\"./js/foundation.responsiveToggle.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"ResponsiveToggle\",function(){return _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__[\"ResponsiveToggle\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__[\"ResponsiveToggle\"],'ResponsiveToggle');/***/},/***/\"./js/foundation.responsiveToggle.js\":/*!*******************************************!*\\\n !*** ./js/foundation.responsiveToggle.js ***!\n \\*******************************************//*! exports provided: ResponsiveToggle *//***/function jsFoundationResponsiveToggleJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"ResponsiveToggle\",function(){return ResponsiveToggle;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.util.mediaQuery */\"./foundation.util.mediaQuery\");/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.core.plugin */\"./foundation.core\");/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i').addClass('reveal-overlay'+additionalOverlayClasses).appendTo(this.options.appendTo);}/**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */},{key:\"_updatePosition\",value:function _updatePosition(){var width=this.$element.outerWidth();var outerWidth=jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).width();var height=this.$element.outerHeight();var outerHeight=jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height();var left,top=null;if(this.options.hOffset==='auto'){left=parseInt((outerWidth-width)/2,10);}else{left=parseInt(this.options.hOffset,10);}if(this.options.vOffset==='auto'){if(height>outerHeight){top=parseInt(Math.min(100,outerHeight/10),10);}else{top=parseInt((outerHeight-height)/4,10);}}else if(this.options.vOffset!==null){top=parseInt(this.options.vOffset,10);}if(top!==null){this.$element.css({top:top+'px'});}// only worry about left if we don't have an overlay or we have a horizontal offset,\n// otherwise we're perfectly in the middle\nif(!this.$overlay||this.options.hOffset!=='auto'){this.$element.css({left:left+'px'});this.$element.css({margin:'0px'});}}/**\n * Adds event handlers for the modal.\n * @private\n */},{key:\"_events\",value:function _events(){var _this3=this;var _this=this;this.$element.on({'open.zf.trigger':this.open.bind(this),'close.zf.trigger':function closeZfTrigger(event,$element){if(event.target===_this.$element[0]||jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('[data-closable]')[0]===$element){// only close reveal when it's explicitly called\nreturn _this3.close.apply(_this3);}},'toggle.zf.trigger':this.toggle.bind(this),'resizeme.zf.trigger':function resizemeZfTrigger(){_this._updatePosition();}});if(this.options.closeOnClick&&this.options.overlay){this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown',function(e){if(e.target===_this.$element[0]||jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0],e.target)||!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document,e.target)){return;}_this.close();});}if(this.options.deepLink){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on(\"hashchange.zf.reveal:\".concat(this.id),this._handleState.bind(this));}}/**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */},{key:\"_handleState\",value:function _handleState(){if(window.location.hash==='#'+this.id&&!this.isActive){this.open();}else{this.close();}}/**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */},{key:\"_disableScroll\",value:function _disableScroll(scrollTop){scrollTop=scrollTop||jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop();if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height()>jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()){jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"html\").css(\"top\",-scrollTop);}}/**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */},{key:\"_enableScroll\",value:function _enableScroll(scrollTop){scrollTop=scrollTop||parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"html\").css(\"top\"),10);if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height()>jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()){jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"html\").css(\"top\",\"\");jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop(-scrollTop);}}/**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */},{key:\"open\",value:function open(){var _this4=this;// either update or replace browser history\nvar hash=\"#\".concat(this.id);if(this.options.deepLink&&window.location.hash!==hash){if(window.history.pushState){if(this.options.updateHistory){window.history.pushState({},'',hash);}else{window.history.replaceState({},'',hash);}}else{window.location.hash=hash;}}// Remember anchor that opened it to set focus back later, have general anchors as fallback\nthis.$activeAnchor=jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement).is(this.$anchor)?jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement):this.$anchor;this.isActive=true;// Make elements invisible, but remove display: none so we can get size and positioning\nthis.$element.css({'visibility':'hidden'}).show().scrollTop(0);if(this.options.overlay){this.$overlay.css({'visibility':'hidden'}).show();}this._updatePosition();this.$element.hide().css({'visibility':''});if(this.$overlay){this.$overlay.css({'visibility':''}).hide();if(this.$element.hasClass('fast')){this.$overlay.addClass('fast');}else if(this.$element.hasClass('slow')){this.$overlay.addClass('slow');}}if(!this.options.multipleOpened){/**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */this.$element.trigger('closeme.zf.reveal',this.id);}if(jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length===0){this._disableScroll();}var _this=this;// Motion UI method of reveal\nif(this.options.animationIn){var afterAnimation=function afterAnimation(){_this.$element.attr({'aria-hidden':false,'tabindex':-1}).focus();_this._addGlobalClasses();_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].trapFocus(_this.$element);};if(this.options.overlay){_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__[\"Motion\"].animateIn(this.$overlay,'fade-in');}_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__[\"Motion\"].animateIn(this.$element,this.options.animationIn,function(){if(_this4.$element){// protect against object having been removed\n_this4.focusableElements=_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].findFocusable(_this4.$element);afterAnimation();}});}// jQuery method of reveal\nelse{if(this.options.overlay){this.$overlay.show(0);}this.$element.show(this.options.showDelay);}// handle accessibility\nthis.$element.attr({'aria-hidden':false,'tabindex':-1}).focus();_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].trapFocus(this.$element);this._addGlobalClasses();this._addGlobalListeners();/**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */this.$element.trigger('open.zf.reveal');}/**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */},{key:\"_addGlobalClasses\",value:function _addGlobalClasses(){var updateScrollbarClass=function updateScrollbarClass(){jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').toggleClass('zf-has-scroll',!!(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height()>jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()));};this.$element.on('resizeme.zf.trigger.revealScrollbarListener',function(){return updateScrollbarClass();});updateScrollbarClass();jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').addClass('is-reveal-open');}/**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */},{key:\"_removeGlobalClasses\",value:function _removeGlobalClasses(){this.$element.off('resizeme.zf.trigger.revealScrollbarListener');jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('is-reveal-open');jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('zf-has-scroll');}/**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */},{key:\"_addGlobalListeners\",value:function _addGlobalListeners(){var _this=this;if(!this.$element){return;}// If we're in the middle of cleanup, don't freak out\nthis.focusableElements=_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].findFocusable(this.$element);if(!this.options.overlay&&this.options.closeOnClick&&!this.options.fullScreen){jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click.zf.dropdown tap.zf.dropdown',function(e){if(e.target===_this.$element[0]||jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0],e.target)||!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document,e.target)){return;}_this.close();});}if(this.options.closeOnEsc){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('keydown.zf.reveal',function(e){_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].handleKey(e,'Reveal',{close:function close(){if(_this.options.closeOnEsc){_this.close();}}});});}}/**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */},{key:\"close\",value:function close(){if(!this.isActive||!this.$element.is(':visible')){return false;}var _this=this;// Motion UI method of hiding\nif(this.options.animationOut){if(this.options.overlay){_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__[\"Motion\"].animateOut(this.$overlay,'fade-out');}_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__[\"Motion\"].animateOut(this.$element,this.options.animationOut,finishUp);}// jQuery method of hiding\nelse{this.$element.hide(this.options.hideDelay);if(this.options.overlay){this.$overlay.hide(0,finishUp);}else{finishUp();}}// Conditionals to remove extra event listeners added on open\nif(this.options.closeOnEsc){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('keydown.zf.reveal');}if(!this.options.overlay&&this.options.closeOnClick){jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').off('click.zf.dropdown tap.zf.dropdown');}this.$element.off('keydown.zf.reveal');function finishUp(){// Get the current top before the modal is closed and restore the scroll after.\n// TODO: use component properties instead of HTML properties\n// See https://github.com/foundation/foundation-sites/pull/10786\nvar scrollTop=parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"html\").css(\"top\"),10);if(jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length===0){_this._removeGlobalClasses();// also remove .is-reveal-open from the html element when there is no opened reveal\n}_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].releaseFocus(_this.$element);_this.$element.attr('aria-hidden',true);if(jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length===0){_this._enableScroll(scrollTop);}/**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */_this.$element.trigger('closed.zf.reveal');}/**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */if(this.options.resetOnClose){this.$element.html(this.$element.html());}this.isActive=false;// If deepLink and we did not switched to an other modal...\nif(_this.options.deepLink&&window.location.hash===\"#\".concat(this.id)){// Remove the history hash\nif(window.history.replaceState){var urlWithoutHash=window.location.pathname+window.location.search;if(this.options.updateHistory){window.history.pushState({},'',urlWithoutHash);// remove the hash\n}else{window.history.replaceState('',document.title,urlWithoutHash);}}else{window.location.hash='';}}this.$activeAnchor.focus();}/**\n * Toggles the open/closed state of a modal.\n * @function\n */},{key:\"toggle\",value:function toggle(){if(this.isActive){this.close();}else{this.open();}}},{key:\"_destroy\",value:/**\n * Destroys an instance of a modal.\n * @function\n */function _destroy(){if(this.options.overlay){this.$element.appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo));// move $element outside of $overlay to prevent error unregisterPlugin()\nthis.$overlay.hide().off().remove();}this.$element.hide().off();this.$anchor.off('.zf');jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(\".zf.reveal:\".concat(this.id));if(this.onLoadListener)jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);if(jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length===0){this._removeGlobalClasses();// also remove .is-reveal-open from the html element when there is no opened reveal\n}}}]);return Reveal;}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__[\"Plugin\"]);Reveal.defaults={/**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */animationIn:'',/**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */animationOut:'',/**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */showDelay:0,/**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */hideDelay:0,/**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */closeOnClick:true,/**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */closeOnEsc:true,/**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */multipleOpened:false,/**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */vOffset:'auto',/**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */hOffset:'auto',/**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */fullScreen:false,/**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */overlay:true,/**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */resetOnClose:false,/**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */deepLink:false,/**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */updateHistory:false,/**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */appendTo:\"body\",/**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */additionalOverlayClasses:''};/***/},/***/\"./js/foundation.util.triggers.js\":/*!****************************************!*\\\n !*** ./js/foundation.util.triggers.js ***!\n \\****************************************//*! exports provided: Triggers *//***/function jsFoundationUtilTriggersJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Triggers\",function(){return Triggers;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}var MutationObserver=function(){var prefixes=['WebKit','Moz','O','Ms',''];for(var i=0;i1?this.inputs.eq(1):jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"#\".concat(this.$handle2.attr('aria-controls')));if(!this.inputs[1]){this.inputs=this.inputs.add(this.$input2);}// this.$handle.triggerHandler('click.zf.slider');\nthis._setInitAttr(1);}// Set handle positions\nthis.setHandles();this._events();this.initialized=true;}},{key:\"setHandles\",value:function setHandles(){var _this2=this;if(this.handles[1]){this._setHandlePos(this.$handle,this.inputs.eq(0).val(),function(){_this2._setHandlePos(_this2.$handle2,_this2.inputs.eq(1).val());});}else{this._setHandlePos(this.$handle,this.inputs.eq(0).val());}}},{key:\"_reflow\",value:function _reflow(){this.setHandles();}/**\n * @function\n * @private\n * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)\n */},{key:\"_pctOfBar\",value:function _pctOfBar(value){var pctOfBar=percent(value-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case\"pow\":pctOfBar=this._logTransform(pctOfBar);break;case\"log\":pctOfBar=this._powTransform(pctOfBar);break;}return pctOfBar.toFixed(2);}/**\n * @function\n * @private\n * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value\n */},{key:\"_value\",value:function _value(pctOfBar){switch(this.options.positionValueFunction){case\"pow\":pctOfBar=this._powTransform(pctOfBar);break;case\"log\":pctOfBar=this._logTransform(pctOfBar);break;}var value;if(this.options.vertical){// linear interpolation which is working with negative values for start\n// https://math.stackexchange.com/a/1019084\nvalue=parseFloat(this.options.end)+pctOfBar*(this.options.start-this.options.end);}else{value=(this.options.end-this.options.start)*pctOfBar+parseFloat(this.options.start);}return value;}/**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function\n */},{key:\"_logTransform\",value:function _logTransform(value){return baseLog(this.options.nonLinearBase,value*(this.options.nonLinearBase-1)+1);}/**\n * @function\n * @private\n * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function\n */},{key:\"_powTransform\",value:function _powTransform(value){return(Math.pow(this.options.nonLinearBase,value)-1)/(this.options.nonLinearBase-1);}/**\n * Sets the position of the selected handle and fill bar.\n * @function\n * @private\n * @param {jQuery} $hndl - the selected handle to move.\n * @param {Number} location - floating point between the start and end values of the slider bar.\n * @param {Function} cb - callback function to fire on completion.\n * @fires Slider#moved\n * @fires Slider#changed\n */},{key:\"_setHandlePos\",value:function _setHandlePos($hndl,location,cb){// don't move if the slider has been disabled since its initialization\nif(this.$element.hasClass(this.options.disabledClass)){return;}//might need to alter that slightly for bars that will have odd number selections.\nlocation=parseFloat(location);//on input change events, convert string to number...grumble.\n// prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max\nif(locationthis.options.end){location=this.options.end;}var isDbl=this.options.doubleSided;if(isDbl){//this block is to prevent 2 handles from crossing eachother. Could/should be improved.\nif(this.handles.index($hndl)===0){var h2Val=parseFloat(this.$handle2.attr('aria-valuenow'));location=location>=h2Val?h2Val-this.options.step:location;}else{var h1Val=parseFloat(this.$handle.attr('aria-valuenow'));location=location<=h1Val?h1Val+this.options.step:location;}}var _this=this,vert=this.options.vertical,hOrW=vert?'height':'width',lOrT=vert?'top':'left',handleDim=$hndl[0].getBoundingClientRect()[hOrW],elemDim=this.$element[0].getBoundingClientRect()[hOrW],//percentage of bar min/max value based on click or drag point\npctOfBar=this._pctOfBar(location),//number of actual pixels to shift the handle, based on the percentage obtained above\npxToMove=(elemDim-handleDim)*pctOfBar,//percentage of bar to shift the handle\nmovement=(percent(pxToMove,elemDim)*100).toFixed(this.options.decimal);//fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value\nlocation=parseFloat(location.toFixed(this.options.decimal));// declare empty object for css adjustments, only used with 2 handled-sliders\nvar css={};this._setValues($hndl,location);// TODO update to calculate based on values set to respective inputs??\nif(isDbl){var isLeftHndl=this.handles.index($hndl)===0,//empty variable, will be used for min-height/width for fill bar\ndim,//percentage w/h of the handle compared to the slider bar\nhandlePct=Math.floor(percent(handleDim,elemDim)*100);//if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar\nif(isLeftHndl){//left or top percentage value to apply to the fill bar.\ncss[lOrT]=\"\".concat(movement,\"%\");//calculate the new min-height/width for the fill bar.\ndim=parseFloat(this.$handle2[0].style[lOrT])-movement+handlePct;//this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider\n//plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.\nif(cb&&typeof cb==='function'){cb();}//this is only needed for the initialization of 2 handled sliders\n}else{//just caching the value of the left/bottom handle's left/top property\nvar handlePos=parseFloat(this.$handle[0].style[lOrT]);//calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0\n//based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself\ndim=movement-(isNaN(handlePos)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):handlePos)+handlePct;}// assign the min-height/width to our css object\ncss[\"min-\".concat(hOrW)]=\"\".concat(dim,\"%\");}//because we don't know exactly how the handle will be moved, check the amount of time it should take to move.\nvar moveTime=this.$element.data('dragging')?1000/60:this.options.moveTime;Object(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__[\"Move\"])(moveTime,$hndl,function(){// adjusting the left/top property of the handle, based on the percentage calculated above\n// if movement isNaN, that is because the slider is hidden and we cannot determine handle width,\n// fall back to next best guess.\nif(isNaN(movement)){$hndl.css(lOrT,\"\".concat(pctOfBar*100,\"%\"));}else{$hndl.css(lOrT,\"\".concat(movement,\"%\"));}if(!_this.options.doubleSided){//if single-handled, a simple method to expand the fill bar\n_this.$fill.css(hOrW,\"\".concat(pctOfBar*100,\"%\"));}else{//otherwise, use the css object we created above\n_this.$fill.css(css);}});if(this.initialized){this.$element.one('finished.zf.animate',function(){/**\n * Fires when the handle is done moving.\n * @event Slider#moved\n */_this.$element.trigger('moved.zf.slider',[$hndl]);});/**\n * Fires when the value has not been change for a given time.\n * @event Slider#changed\n */clearTimeout(_this.timeout);_this.timeout=setTimeout(function(){_this.$element.trigger('changed.zf.slider',[$hndl]);},_this.options.changedDelay);}}/**\n * Sets the initial attribute for the slider element.\n * @function\n * @private\n * @param {Number} idx - index of the current handle/input to use.\n */},{key:\"_setInitAttr\",value:function _setInitAttr(idx){var initVal=idx===0?this.options.initialStart:this.options.initialEnd;var id=this.inputs.eq(idx).attr('id')||Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"GetYoDigits\"])(6,'slider');this.inputs.eq(idx).attr({'id':id,'max':this.options.end,'min':this.options.start,'step':this.options.step});this.inputs.eq(idx).val(initVal);this.handles.eq(idx).attr({'role':'slider','aria-controls':id,'aria-valuemax':this.options.end,'aria-valuemin':this.options.start,'aria-valuenow':initVal,'aria-orientation':this.options.vertical?'vertical':'horizontal','tabindex':0});}/**\n * Sets the input and `aria-valuenow` values for the slider element.\n * @function\n * @private\n * @param {jQuery} $handle - the currently selected handle.\n * @param {Number} val - floating point of the new value.\n */},{key:\"_setValues\",value:function _setValues($handle,val){var idx=this.options.doubleSided?this.handles.index($handle):0;this.inputs.eq(idx).val(val);$handle.attr('aria-valuenow',val);}/**\n * Handles events on the slider element.\n * Calculates the new location of the current handle.\n * If there are two handles and the bar was clicked, it determines which handle to move.\n * @function\n * @private\n * @param {Object} e - the `event` object passed from the listener.\n * @param {jQuery} $handle - the current handle to calculate for, if selected.\n * @param {Number} val - floating point number for the new value of the slider.\n * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.\n */},{key:\"_handleEvent\",value:function _handleEvent(e,$handle,val){var value;if(!val){//click or drag events\ne.preventDefault();var _this=this,vertical=this.options.vertical,param=vertical?'height':'width',direction=vertical?'top':'left',eventOffset=vertical?e.pageY:e.pageX,barDim=this.$element[0].getBoundingClientRect()[param],windowScroll=vertical?jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop():jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollLeft();var elemOffset=this.$element.offset()[direction];// touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...\n// best way to guess this is simulated is if clientY == pageY\nif(e.clientY===e.pageY){eventOffset=eventOffset+windowScroll;}var eventFromBar=eventOffset-elemOffset;var barXY;if(eventFromBar<0){barXY=0;}else if(eventFromBar>barDim){barXY=barDim;}else{barXY=eventFromBar;}var offsetPct=percent(barXY,barDim);value=this._value(offsetPct);// turn everything around for RTL, yay math!\nif(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"rtl\"])()&&!this.options.vertical){value=this.options.end-value;}value=_this._adjustValue(null,value);if(!$handle){//figure out which handle it is, pass it to the next function.\nvar firstHndlPos=absPosition(this.$handle,direction,barXY,param),secndHndlPos=absPosition(this.$handle2,direction,barXY,param);$handle=firstHndlPos<=secndHndlPos?this.$handle:this.$handle2;}}else{//change event on input\nvalue=this._adjustValue(null,val);}this._setHandlePos($handle,value);}/**\n * Adjustes value for handle in regard to step value. returns adjusted value\n * @function\n * @private\n * @param {jQuery} $handle - the selected handle.\n * @param {Number} value - value to adjust. used if $handle is falsy\n */},{key:\"_adjustValue\",value:function _adjustValue($handle,value){var val,step=this.options.step,div=parseFloat(step/2),left,previousVal,nextVal;if(!!$handle){val=parseFloat($handle.attr('aria-valuenow'));}else{val=value;}if(val>=0){left=val%step;}else{left=step+val%step;}previousVal=val-left;nextVal=previousVal+step;if(left===0){return val;}val=val>=previousVal+div?nextVal:previousVal;return val;}/**\n * Adds event listeners to the slider elements.\n * @function\n * @private\n */},{key:\"_events\",value:function _events(){this._eventsForHandle(this.$handle);if(this.handles[1]){this._eventsForHandle(this.$handle2);}}/**\n * Adds event listeners a particular handle\n * @function\n * @private\n * @param {jQuery} $handle - the current handle to apply listeners to.\n */},{key:\"_eventsForHandle\",value:function _eventsForHandle($handle){var _this=this,curHandle;var handleChangeEvent=function handleChangeEvent(e){var idx=_this.inputs.index(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));_this._handleEvent(e,_this.handles.eq(idx),jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val());};// IE only triggers the change event when the input loses focus which strictly follows the HTML specification\n// listen for the enter key and trigger a change\n// @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events\nthis.inputs.off('keyup.zf.slider').on('keyup.zf.slider',function(e){if(e.keyCode===13)handleChangeEvent.call(this,e);});this.inputs.off('change.zf.slider').on('change.zf.slider',handleChangeEvent);if(this.options.clickSelect){this.$element.off('click.zf.slider').on('click.zf.slider',function(e){if(_this.$element.data('dragging')){return false;}if(!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).is('[data-slider-handle]')){if(_this.options.doubleSided){_this._handleEvent(e);}else{_this._handleEvent(e,_this.$handle);}}});}if(this.options.draggable){this.handles.addTouch();var $body=jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');$handle.off('mousedown.zf.slider').on('mousedown.zf.slider',function(e){$handle.addClass('is-dragging');_this.$fill.addClass('is-dragging');//\n_this.$element.data('dragging',true);curHandle=jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);$body.on('mousemove.zf.slider',function(ev){ev.preventDefault();_this._handleEvent(ev,curHandle);}).on('mouseup.zf.slider',function(ev){_this._handleEvent(ev,curHandle);$handle.removeClass('is-dragging');_this.$fill.removeClass('is-dragging');_this.$element.data('dragging',false);$body.off('mousemove.zf.slider mouseup.zf.slider');});})// prevent events triggered by touch\n.on('selectstart.zf.slider touchmove.zf.slider',function(e){e.preventDefault();});}$handle.off('keydown.zf.slider').on('keydown.zf.slider',function(e){var _$handle=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),idx=_this.options.doubleSided?_this.handles.index(_$handle):0,oldValue=parseFloat($handle.attr('aria-valuenow')),newValue;// handle keyboard event with keyboard util\n_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__[\"Keyboard\"].handleKey(e,'Slider',{decrease:function decrease(){newValue=oldValue-_this.options.step;},increase:function increase(){newValue=oldValue+_this.options.step;},decreaseFast:function decreaseFast(){newValue=oldValue-_this.options.step*10;},increaseFast:function increaseFast(){newValue=oldValue+_this.options.step*10;},min:function min(){newValue=_this.options.start;},max:function max(){newValue=_this.options.end;},handled:function handled(){// only set handle pos when event was handled specially\ne.preventDefault();_this._setHandlePos(_$handle,newValue);}});/*if (newValue) { // if pressed key has special function, update value\n e.preventDefault();\n _this._setHandlePos(_$handle, newValue);\n }*/});}/**\n * Destroys the slider plugin.\n */},{key:\"_destroy\",value:function _destroy(){this.handles.off('.zf.slider');this.inputs.off('.zf.slider');this.$element.off('.zf.slider');clearTimeout(this.timeout);}}]);return Slider;}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__[\"Plugin\"]);Slider.defaults={/**\n * Minimum value for the slider scale.\n * @option\n * @type {number}\n * @default 0\n */start:0,/**\n * Maximum value for the slider scale.\n * @option\n * @type {number}\n * @default 100\n */end:100,/**\n * Minimum value change per change event.\n * @option\n * @type {number}\n * @default 1\n */step:1,/**\n * Value at which the handle/input *(left handle/first input)* should be set to on initialization.\n * @option\n * @type {number}\n * @default 0\n */initialStart:0,/**\n * Value at which the right handle/second input should be set to on initialization.\n * @option\n * @type {number}\n * @default 100\n */initialEnd:100,/**\n * Allows the input to be located outside the container and visible. Set to by the JS\n * @option\n * @type {boolean}\n * @default false\n */binding:false,/**\n * Allows the user to click/tap on the slider bar to select a value.\n * @option\n * @type {boolean}\n * @default true\n */clickSelect:true,/**\n * Set to true and use the `vertical` class to change alignment to vertical.\n * @option\n * @type {boolean}\n * @default false\n */vertical:false,/**\n * Allows the user to drag the slider handle(s) to select a value.\n * @option\n * @type {boolean}\n * @default true\n */draggable:true,/**\n * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.\n * @option\n * @type {boolean}\n * @default false\n */disabled:false,/**\n * Allows the use of two handles. Double checked by the JS. Changes some logic handling.\n * @option\n * @type {boolean}\n * @default false\n */doubleSided:false,/**\n * Potential future feature.\n */// steps: 100,\n/**\n * Number of decimal places the plugin should go to for floating point precision.\n * @option\n * @type {number}\n * @default 2\n */decimal:2,/**\n * Time delay for dragged elements.\n */// dragDelay: 0,\n/**\n * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.\n * @option\n * @type {number}\n * @default 200\n */moveTime:200,//update this if changing the transition time in the sass\n/**\n * Class applied to disabled sliders.\n * @option\n * @type {string}\n * @default 'disabled'\n */disabledClass:'disabled',/**\n * Will invert the default layout for a vertical slider.\n * @option\n * @type {boolean}\n * @default false\n */invertVertical:false,/**\n * Milliseconds before the `changed.zf-slider` event is triggered after value change.\n * @option\n * @type {number}\n * @default 500\n */changedDelay:500,/**\n * Basevalue for non-linear sliders\n * @option\n * @type {number}\n * @default 5\n */nonLinearBase:5,/**\n * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.\n * @option\n * @type {string}\n * @default 'linear'\n */positionValueFunction:'linear'};function percent(frac,num){return frac/num;}function absPosition($handle,dir,clickPos,param){return Math.abs($handle.position()[dir]+$handle[param]()/2-clickPos);}function baseLog(base,value){return Math.log(value)/Math.log(base);}/***/},/***/\"./js/foundation.util.triggers.js\":/*!****************************************!*\\\n !*** ./js/foundation.util.triggers.js ***!\n \\****************************************//*! exports provided: Triggers *//***/function jsFoundationUtilTriggersJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Triggers\",function(){return Triggers;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}var MutationObserver=function(){var prefixes=['WebKit','Moz','O','Ms',''];for(var i=0;i1&&arguments[1]!==undefined?arguments[1]:SmoothScroll.defaults;var callback=arguments.length>2?arguments[2]:undefined;var $loc=jquery__WEBPACK_IMPORTED_MODULE_0___default()(loc);// Do nothing if target does not exist to prevent errors\nif(!$loc.length)return false;var scrollPos=Math.round($loc.offset().top-options.threshold/2-options.offset);jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({scrollTop:scrollPos},options.animationDuration,options.animationEasing,function(){if(typeof callback==='function'){callback();}});}}]);return SmoothScroll;}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__[\"Plugin\"]);/**\n * Default settings for plugin.\n */SmoothScroll.defaults={/**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */animationDuration:500,/**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */animationEasing:'linear',/**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */threshold:50,/**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */offset:0};/***/},/***/16:/*!*************************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.smoothScroll.js ***!\n \\*************************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.smoothScroll.js */\"./js/entries/plugins/foundation.smoothScroll.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.smoothScroll.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"./foundation.smoothScroll\"),require(\"./foundation.util.motion\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"./foundation.smoothScroll\",\"./foundation.util.motion\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.magellan\"]=factory(require(\"./foundation.core\"),require(\"./foundation.smoothScroll\"),require(\"./foundation.util.motion\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.magellan\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.smoothScroll\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.motion\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_smoothScroll__,__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=8);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.smoothScroll\":/*!************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.smoothScroll\"],\"amd\":\"./foundation.smoothScroll\",\"commonjs\":\"./foundation.smoothScroll\",\"commonjs2\":\"./foundation.smoothScroll\"} ***!\n \\************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationSmoothScroll(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_smoothScroll__;/***/},/***/\"./foundation.util.motion\":/*!********************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.motion\"],\"amd\":\"./foundation.util.motion\",\"commonjs\":\"./foundation.util.motion\",\"commonjs2\":\"./foundation.util.motion\"} ***!\n \\********************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMotion(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;/***/},/***/\"./js/entries/plugins/foundation.magellan.js\":/*!***************************************************!*\\\n !*** ./js/entries/plugins/foundation.magellan.js ***!\n \\***************************************************//*! exports provided: Foundation, Magellan *//***/function jsEntriesPluginsFoundationMagellanJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_magellan__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.magellan */\"./js/foundation.magellan.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Magellan\",function(){return _foundation_magellan__WEBPACK_IMPORTED_MODULE_1__[\"Magellan\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_magellan__WEBPACK_IMPORTED_MODULE_1__[\"Magellan\"],'Magellan');/***/},/***/\"./js/foundation.magellan.js\":/*!***********************************!*\\\n !*** ./js/foundation.magellan.js ***!\n \\***********************************//*! exports provided: Magellan *//***/function jsFoundationMagellanJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Magellan\",function(){return Magellan;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.plugin */\"./foundation.core\");/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.smoothScroll */\"./foundation.smoothScroll\");/* harmony import */var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.util.triggers */\"./js/foundation.util.triggers.js\");function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;inewScrollPos;this.scrollPos=newScrollPos;var activeIdx;// Before the first point: no link\nif(newScrollPos=_this.topPoint?false:true);}});_this._events(id.split('-').reverse().join('-'));});}/**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */},{key:\"_parsePoints\",value:function _parsePoints(){var top=this.options.topAnchor===\"\"?1:this.options.topAnchor,btm=this.options.btmAnchor===\"\"?document.documentElement.scrollHeight:this.options.btmAnchor,pts=[top,btm],breaks={};for(var i=0,len=pts.length;i=this.topPoint){if(scroll<=this.bottomPoint){if(!this.isStuck){this._setSticky();}}else{if(this.isStuck){this._removeSticky(false);}}}else{if(this.isStuck){this._removeSticky(true);}}}/**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */},{key:\"_setSticky\",value:function _setSticky(){var _this=this,stickTo=this.options.stickTo,mrgn=stickTo==='top'?'marginTop':'marginBottom',notStuckTo=stickTo==='top'?'bottom':'top',css={};css[mrgn]=\"\".concat(this.options[mrgn],\"em\");css[stickTo]=0;css[notStuckTo]='auto';this.isStuck=true;this.$element.removeClass(\"is-anchored is-at-\".concat(notStuckTo)).addClass(\"is-stuck is-at-\".concat(stickTo)).css(css)/**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */.trigger(\"sticky.zf.stuckto:\".concat(stickTo));this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\",function(){_this._setSizes();});}/**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */},{key:\"_removeSticky\",value:function _removeSticky(isTop){var stickTo=this.options.stickTo,stickToTop=stickTo==='top',css={},anchorPt=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,mrgn=stickToTop?'marginTop':'marginBottom',topOrBottom=isTop?'top':'bottom';css[mrgn]=0;css.bottom='auto';if(isTop){css.top=0;}else{css.top=anchorPt;}this.isStuck=false;this.$element.removeClass(\"is-stuck is-at-\".concat(stickTo)).addClass(\"is-anchored is-at-\".concat(topOrBottom)).css(css)/**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */.trigger(\"sticky.zf.unstuckfrom:\".concat(topOrBottom));}/**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */},{key:\"_setSizes\",value:function _setSizes(cb){this.canStick=_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__[\"MediaQuery\"].is(this.options.stickyOn);if(!this.canStick){if(cb&&typeof cb==='function'){cb();}}var newElemWidth=this.$container[0].getBoundingClientRect().width,comp=window.getComputedStyle(this.$container[0]),pdngl=parseInt(comp['padding-left'],10),pdngr=parseInt(comp['padding-right'],10);if(this.$anchor&&this.$anchor.length){this.anchorHeight=this.$anchor[0].getBoundingClientRect().height;}else{this._parsePoints();}this.$element.css({'max-width':\"\".concat(newElemWidth-pdngl-pdngr,\"px\")});// Recalculate the height only if it is \"dynamic\"\nif(this.options.dynamicHeight||!this.containerHeight){// Get the sticked element height and apply it to the container to \"hold the place\"\nvar newContainerHeight=this.$element[0].getBoundingClientRect().height||this.containerHeight;newContainerHeight=this.$element.css(\"display\")===\"none\"?0:newContainerHeight;this.$container.css('height',newContainerHeight);this.containerHeight=newContainerHeight;}this.elemHeight=this.containerHeight;if(!this.isStuck){if(this.$element.hasClass('is-at-bottom')){var anchorPt=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css('top',anchorPt);}}this._setBreakPoints(this.containerHeight,function(){if(cb&&typeof cb==='function'){cb();}});}/**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */},{key:\"_setBreakPoints\",value:function _setBreakPoints(elemHeight,cb){if(!this.canStick){if(cb&&typeof cb==='function'){cb();}else{return false;}}var mTop=emCalc(this.options.marginTop),mBtm=emCalc(this.options.marginBottom),topPoint=this.points?this.points[0]:this.$anchor.offset().top,bottomPoint=this.points?this.points[1]:topPoint+this.anchorHeight,// topPoint = this.$anchor.offset().top || this.points[0],\n// bottomPoint = topPoint + this.anchorHeight || this.points[1],\nwinHeight=window.innerHeight;if(this.options.stickTo==='top'){topPoint-=mTop;bottomPoint-=elemHeight+mTop;}else if(this.options.stickTo==='bottom'){topPoint-=winHeight-(elemHeight+mBtm);bottomPoint-=winHeight-mBtm;}else{//this would be the stickTo: both option... tricky\n}this.topPoint=topPoint;this.bottomPoint=bottomPoint;if(cb&&typeof cb==='function'){cb();}}/**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */},{key:\"_destroy\",value:function _destroy(){this._removeSticky(true);this.$element.removeClass(\"\".concat(this.options.stickyClass,\" is-anchored is-at-top\")).css({height:'',top:'',bottom:'','max-width':''}).off('resizeme.zf.trigger').off('mutateme.zf.trigger');if(this.$anchor&&this.$anchor.length){this.$anchor.off('change.zf.sticky');}if(this.scrollListener)jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.scrollListener);if(this.onLoadListener)jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);if(this.wasWrapped){this.$element.unwrap();}else{this.$container.removeClass(this.options.containerClass).css({height:''});}}}]);return Sticky;}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__[\"Plugin\"]);Sticky.defaults={/**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */container:'
    ',/**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */stickTo:'top',/**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */anchor:'',/**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */topAnchor:'',/**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */btmAnchor:'',/**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */marginTop:1,/**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */marginBottom:1,/**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */stickyOn:'medium',/**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */stickyClass:'sticky',/**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */containerClass:'sticky-container',/**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */dynamicHeight:true,/**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */checkEvery:-1};/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */function emCalc(em){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*em;}/***/},/***/\"./js/foundation.util.triggers.js\":/*!****************************************!*\\\n !*** ./js/foundation.util.triggers.js ***!\n \\****************************************//*! exports provided: Triggers *//***/function jsFoundationUtilTriggersJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Triggers\",function(){return Triggers;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}var MutationObserver=function(){var prefixes=['WebKit','Moz','O','Ms',''];for(var i=0;i=0?anchor.slice(1):anchor;var $anchor=anchorNoHash&&jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"#\".concat(anchorNoHash));var $link=anchor&&_this2.$element.find(\"[href$=\\\"\".concat(anchor,\"\\\"],[data-tabs-target=\\\"\").concat(anchorNoHash,\"\\\"]\")).first();// Whether the anchor element that has been found is part of this element\nvar isOwnAnchor=!!($anchor.length&&$link.length);if(isOwnAnchor){// If there is an anchor for the hash, select it\nif($anchor&&$anchor.length&&$link&&$link.length){_this2.selectTab($anchor,true);}// Otherwise, collapse everything\nelse{_this2._collapse();}// Roll up a little to show the titles\nif(_this2.options.deepLinkSmudge){var offset=_this2.$element.offset();jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({scrollTop:offset.top-_this2.options.deepLinkSmudgeOffset},_this2.options.deepLinkSmudgeDelay);}/**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */_this2.$element.trigger('deeplink.zf.tabs',[$link,$anchor]);}};//use browser to open a tab, if it exists in this tabset\nif(this.options.deepLink){this._checkDeepLink();}this._events();this._isInitializing=false;}/**\n * Adds event handlers for items within the tabs.\n * @private\n */},{key:\"_events\",value:function _events(){this._addKeyHandler();this._addClickHandler();this._setHeightMqHandler=null;if(this.options.matchHeight){this._setHeightMqHandler=this._setHeight.bind(this);jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',this._setHeightMqHandler);}if(this.options.deepLink){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange',this._checkDeepLink);}}/**\n * Adds click handlers for items within the tabs.\n * @private\n */},{key:\"_addClickHandler\",value:function _addClickHandler(){var _this=this;this.$element.off('click.zf.tabs').on('click.zf.tabs',\".\".concat(this.options.linkClass),function(e){e.preventDefault();_this._handleTabChange(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));});}/**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */},{key:\"_addKeyHandler\",value:function _addKeyHandler(){var _this=this;this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs',function(e){if(e.which===9)return;var $element=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),$elements=$element.parent('ul').children('li'),$prevElement,$nextElement;$elements.each(function(i){if(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)){if(_this.options.wrapOnKeys){$prevElement=i===0?$elements.last():$elements.eq(i-1);$nextElement=i===$elements.length-1?$elements.first():$elements.eq(i+1);}else{$prevElement=$elements.eq(Math.max(0,i-1));$nextElement=$elements.eq(Math.min(i+1,$elements.length-1));}return;}});// handle keyboard event with keyboard util\n_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__[\"Keyboard\"].handleKey(e,'Tabs',{open:function open(){$element.find('[role=\"tab\"]').focus();_this._handleTabChange($element);},previous:function previous(){$prevElement.find('[role=\"tab\"]').focus();_this._handleTabChange($prevElement);},next:function next(){$nextElement.find('[role=\"tab\"]').focus();_this._handleTabChange($nextElement);},handled:function handled(){e.preventDefault();}});});}/**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */},{key:\"_handleTabChange\",value:function _handleTabChange($target,historyHandled){// With `activeCollapse`, if the target is the active Tab, collapse it.\nif($target.hasClass(\"\".concat(this.options.linkActiveClass))){if(this.options.activeCollapse){this._collapse();}return;}var $oldTab=this.$element.find(\".\".concat(this.options.linkClass,\".\").concat(this.options.linkActiveClass)),$tabLink=$target.find('[role=\"tab\"]'),target=$tabLink.attr('data-tabs-target'),anchor=target&&target.length?\"#\".concat(target):$tabLink[0].hash,$targetContent=this.$tabContent.find(anchor);//close old tab\nthis._collapseTab($oldTab);//open new tab\nthis._openTab($target);//either replace or update browser history\nif(this.options.deepLink&&!historyHandled){if(this.options.updateHistory){history.pushState({},'',anchor);}else{history.replaceState({},'',anchor);}}/**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */this.$element.trigger('change.zf.tabs',[$target,$targetContent]);//fire to children a mutation event\n$targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");}/**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */},{key:\"_openTab\",value:function _openTab($target){var $tabLink=$target.find('[role=\"tab\"]'),hash=$tabLink.attr('data-tabs-target')||$tabLink[0].hash.slice(1),$targetContent=this.$tabContent.find(\"#\".concat(hash));$target.addClass(\"\".concat(this.options.linkActiveClass));$tabLink.attr({'aria-selected':'true','tabindex':'0'});$targetContent.addClass(\"\".concat(this.options.panelActiveClass)).removeAttr('aria-hidden');}/**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */},{key:\"_collapseTab\",value:function _collapseTab($target){var $targetAnchor=$target.removeClass(\"\".concat(this.options.linkActiveClass)).find('[role=\"tab\"]').attr({'aria-selected':'false','tabindex':-1});jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"#\".concat($targetAnchor.attr('aria-controls'))).removeClass(\"\".concat(this.options.panelActiveClass)).attr({'aria-hidden':'true'});}/**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */},{key:\"_collapse\",value:function _collapse(){var $activeTab=this.$element.find(\".\".concat(this.options.linkClass,\".\").concat(this.options.linkActiveClass));if($activeTab.length){this._collapseTab($activeTab);/**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */this.$element.trigger('collapse.zf.tabs',[$activeTab]);}}/**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */},{key:\"selectTab\",value:function selectTab(elem,historyHandled){var idStr,hashIdStr;if(_typeof(elem)==='object'){idStr=elem[0].id;}else{idStr=elem;}if(idStr.indexOf('#')<0){hashIdStr=\"#\".concat(idStr);}else{hashIdStr=idStr;idStr=idStr.slice(1);}var $target=this.$tabTitles.has(\"[href$=\\\"\".concat(hashIdStr,\"\\\"],[data-tabs-target=\\\"\").concat(idStr,\"\\\"]\")).first();this._handleTabChange($target,historyHandled);}},{key:\"_setHeight\",value:/**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */function _setHeight(){var max=0,_this=this;// Lock down the `this` value for the root tabs object\nif(!this.$tabContent){return;}this.$tabContent.find(\".\".concat(this.options.panelClass)).css('min-height','').each(function(){var panel=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),isActive=panel.hasClass(\"\".concat(_this.options.panelActiveClass));// get the options from the parent instead of trying to get them from the child\nif(!isActive){panel.css({'visibility':'hidden','display':'block'});}var temp=this.getBoundingClientRect().height;if(!isActive){panel.css({'visibility':'','display':''});}max=temp>max?temp:max;}).css('min-height',\"\".concat(max,\"px\"));}/**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */},{key:\"_destroy\",value:function _destroy(){this.$element.find(\".\".concat(this.options.linkClass)).off('.zf.tabs').hide().end().find(\".\".concat(this.options.panelClass)).hide();if(this.options.matchHeight){if(this._setHeightMqHandler!=null){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery',this._setHeightMqHandler);}}if(this.options.deepLink){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange',this._checkDeepLink);}if(this.onLoadListener){jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);}}}]);return Tabs;}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__[\"Plugin\"]);Tabs.defaults={/**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */deepLink:false,/**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */deepLinkSmudge:false,/**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */deepLinkSmudgeDelay:300,/**\n * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n * @option\n * @type {number}\n * @default 0\n */deepLinkSmudgeOffset:0,/**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */updateHistory:false,/**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */autoFocus:false,/**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */wrapOnKeys:true,/**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */matchHeight:false,/**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */activeCollapse:false,/**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */linkClass:'tabs-title',/**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */linkActiveClass:'is-active',/**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */panelClass:'tabs-panel',/**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */panelActiveClass:'is-active'};/***/},/***/18:/*!*****************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.tabs.js ***!\n \\*****************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.tabs.js */\"./js/entries/plugins/foundation.tabs.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.tabs.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.accordion\"),require(\"./foundation.core\"),require(\"./foundation.tabs\"),require(\"./foundation.util.mediaQuery\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.accordion\",\"./foundation.core\",\"./foundation.tabs\",\"./foundation.util.mediaQuery\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.responsiveAccordionTabs\"]=factory(require(\"./foundation.accordion\"),require(\"./foundation.core\"),require(\"./foundation.tabs\"),require(\"./foundation.util.mediaQuery\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.responsiveAccordionTabs\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.accordion\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.tabs\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.mediaQuery\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_accordion__,__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_tabs__,__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=11);/******/}(/************************************************************************//******/{/***/\"./foundation.accordion\":/*!************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.accordion\"],\"amd\":\"./foundation.accordion\",\"commonjs\":\"./foundation.accordion\",\"commonjs2\":\"./foundation.accordion\"} ***!\n \\************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationAccordion(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_accordion__;/***/},/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.tabs\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.tabs\"],\"amd\":\"./foundation.tabs\",\"commonjs\":\"./foundation.tabs\",\"commonjs2\":\"./foundation.tabs\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationTabs(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_tabs__;/***/},/***/\"./foundation.util.mediaQuery\":/*!************************************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.mediaQuery\"],\"amd\":\"./foundation.util.mediaQuery\",\"commonjs\":\"./foundation.util.mediaQuery\",\"commonjs2\":\"./foundation.util.mediaQuery\"} ***!\n \\************************************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMediaQuery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;/***/},/***/\"./js/entries/plugins/foundation.responsiveAccordionTabs.js\":/*!******************************************************************!*\\\n !*** ./js/entries/plugins/foundation.responsiveAccordionTabs.js ***!\n \\******************************************************************//*! exports provided: Foundation, ResponsiveAccordionTabs *//***/function jsEntriesPluginsFoundationResponsiveAccordionTabsJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.responsiveAccordionTabs */\"./js/foundation.responsiveAccordionTabs.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"ResponsiveAccordionTabs\",function(){return _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__[\"ResponsiveAccordionTabs\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__[\"ResponsiveAccordionTabs\"],'ResponsiveAccordionTabs');/***/},/***/\"./js/foundation.responsiveAccordionTabs.js\":/*!**************************************************!*\\\n !*** ./js/foundation.responsiveAccordionTabs.js ***!\n \\**************************************************//*! exports provided: ResponsiveAccordionTabs *//***/function jsFoundationResponsiveAccordionTabsJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"ResponsiveAccordionTabs\",function(){return ResponsiveAccordionTabs;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.util.mediaQuery */\"./foundation.util.mediaQuery\");/* harmony import */var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_accordion__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.accordion */\"./foundation.accordion\");/* harmony import */var _foundation_accordion__WEBPACK_IMPORTED_MODULE_3___default=/*#__PURE__*/__webpack_require__.n(_foundation_accordion__WEBPACK_IMPORTED_MODULE_3__);/* harmony import */var _foundation_tabs__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*! ./foundation.tabs */\"./foundation.tabs\");/* harmony import */var _foundation_tabs__WEBPACK_IMPORTED_MODULE_4___default=/*#__PURE__*/__webpack_require__.n(_foundation_tabs__WEBPACK_IMPORTED_MODULE_4__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i1?rule[0]:'small';var rulePlugin=rule.length>1?rule[1]:rule[0];if(MenuPlugins[rulePlugin]!==null){rulesTree[ruleSize]=MenuPlugins[rulePlugin];}}this.rules=rulesTree;}this._getAllOptions();if(!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)){this._checkMediaQueries();}}},{key:\"_getAllOptions\",value:function _getAllOptions(){//get all defaults and options\nvar _this=this;_this.allOptions={};for(var key in MenuPlugins){if(MenuPlugins.hasOwnProperty(key)){var obj=MenuPlugins[key];try{var dummyPlugin=jquery__WEBPACK_IMPORTED_MODULE_0___default()('
      ');var tmpPlugin=new obj.plugin(dummyPlugin,_this.options);for(var keyKey in tmpPlugin.options){if(tmpPlugin.options.hasOwnProperty(keyKey)&&keyKey!=='zfPlugin'){var objObj=tmpPlugin.options[keyKey];_this.allOptions[keyKey]=objObj;}}tmpPlugin.destroy();}catch(e){console.warn(\"Warning: Problems getting Accordion/Tab options: \".concat(e));}}}}/**\n * Initializes events for the Menu.\n * @function\n * @private\n */},{key:\"_events\",value:function _events(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this);jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',this._changedZfMediaQueryHandler);}/**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */},{key:\"_checkMediaQueries\",value:function _checkMediaQueries(){var matchedMq,_this=this;// Iterate through each rule and find the last matching rule\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules,function(key){if(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__[\"MediaQuery\"].atLeast(key)){matchedMq=key;}});// No match? No dice\nif(!matchedMq)return;// Plugin already initialized? We good\nif(this.currentPlugin instanceof this.rules[matchedMq].plugin)return;// Remove existing plugin-specific CSS classes\njquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins,function(key,value){_this.$element.removeClass(value.cssClass);});// Add the CSS class for the new plugin\nthis.$element.addClass(this.rules[matchedMq].cssClass);// Create an instance of the new plugin\nif(this.currentPlugin){//don't know why but on nested elements data zfPlugin get's lost\nif(!this.currentPlugin.$element.data('zfPlugin')&&this.storezfData)this.currentPlugin.$element.data('zfPlugin',this.storezfData);this.currentPlugin.destroy();}this._handleMarkup(this.rules[matchedMq].cssClass);this.currentRule=this.rules[matchedMq];this.currentPlugin=new this.currentRule.plugin(this.$element,this.options);this.storezfData=this.currentPlugin.$element.data('zfPlugin');}},{key:\"_handleMarkup\",value:function _handleMarkup(toSet){var _this=this,fromString='accordion';var $panels=jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content='+this.$element.attr('id')+']');if($panels.length)fromString='tabs';if(fromString===toSet){return;}var tabsTitle=_this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';var tabsPanel=_this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';this.$element.removeAttr('role');var $liHeads=this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');var $liHeadsA=$liHeads.children('a').removeClass('accordion-title');if(fromString==='tabs'){$panels=$panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');$panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');}else{$panels=$liHeads.children('[data-tab-content]').removeClass('accordion-content');}$panels.css({display:'',visibility:''});$liHeads.css({display:'',visibility:''});if(toSet==='accordion'){$panels.each(function(key,value){jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content='+_this.$element.attr('id')+']').after('
      ').detach();$liHeads.addClass('accordion-item').attr('data-accordion-item','');$liHeadsA.addClass('accordion-title');});}else if(toSet==='tabs'){var $tabsContent=jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content='+_this.$element.attr('id')+']');var $placeholder=jquery__WEBPACK_IMPORTED_MODULE_0___default()('#tabs-placeholder-'+_this.$element.attr('id'));if($placeholder.length){$tabsContent=jquery__WEBPACK_IMPORTED_MODULE_0___default()('
      ').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));$placeholder.remove();}else{$tabsContent=jquery__WEBPACK_IMPORTED_MODULE_0___default()('
      ').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));}$panels.each(function(key,value){var tempValue=jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($tabsContent).addClass(tabsPanel);var hash=$liHeadsA.get(key).hash.slice(1);var id=jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id')||Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__[\"GetYoDigits\"])(6,'accordion');if(hash!==id){if(hash!==''){jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id',hash);}else{hash=id;jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id',hash);jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href',jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);}}var isActive=jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeads.get(key)).hasClass('is-active');if(isActive){tempValue.addClass('is-active');}});$liHeads.addClass(tabsTitle);};}/**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */},{key:\"open\",value:function open(){if(this.currentRule&&typeof this.currentRule.open==='function'){var _this$currentRule;return(_this$currentRule=this.currentRule).open.apply(_this$currentRule,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)));}}/**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */},{key:\"close\",value:function close(){if(this.currentRule&&typeof this.currentRule.close==='function'){var _this$currentRule2;return(_this$currentRule2=this.currentRule).close.apply(_this$currentRule2,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)));}}/**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */},{key:\"toggle\",value:function toggle(){if(this.currentRule&&typeof this.currentRule.toggle==='function'){var _this$currentRule3;return(_this$currentRule3=this.currentRule).toggle.apply(_this$currentRule3,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)));}}/**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */},{key:\"_destroy\",value:function _destroy(){if(this.currentPlugin)this.currentPlugin.destroy();jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery',this._changedZfMediaQueryHandler);}}]);return ResponsiveAccordionTabs;}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__[\"Plugin\"]);ResponsiveAccordionTabs.defaults={};/***/},/***/11:/*!************************************************************************!*\\\n !*** multi ./js/entries/plugins/foundation.responsiveAccordionTabs.js ***!\n \\************************************************************************//*! no static exports found *//***/function _(module,exports,__webpack_require__){module.exports=__webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveAccordionTabs.js */\"./js/entries/plugins/foundation.responsiveAccordionTabs.js\");/***/},/***/\"jquery\":/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************//*! no static exports found *//***/function jquery(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;/***/}/******/}));});//# sourceMappingURL=foundation.responsiveAccordionTabs.js.map\n'use strict';var _typeof2=typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof2(module))==='object')module.exports=factory(require(\"./foundation.core\"),require(\"./foundation.util.motion\"),require(\"jquery\"));else if(typeof define==='function'&&define.amd)define([\"./foundation.core\",\"./foundation.util.motion\",\"jquery\"],factory);else if((typeof exports==='undefined'?'undefined':_typeof2(exports))==='object')exports[\"foundation.toggler\"]=factory(require(\"./foundation.core\"),require(\"./foundation.util.motion\"),require(\"jquery\"));else root[\"__FOUNDATION_EXTERNAL__\"]=root[\"__FOUNDATION_EXTERNAL__\"]||{},root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.toggler\"]=factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"],root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.motion\"],root[\"jQuery\"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(/******/function(modules){// webpackBootstrap\n/******/// The module cache\n/******/var installedModules={};/******//******/// The require function\n/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache\n/******/if(installedModules[moduleId]){/******/return installedModules[moduleId].exports;/******/}/******/// Create a new module (and put it into the cache)\n/******/var module=installedModules[moduleId]={/******/i:moduleId,/******/l:false,/******/exports:{}/******/};/******//******/// Execute the module function\n/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded\n/******/module.l=true;/******//******/// Return the exports of the module\n/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)\n/******/__webpack_require__.m=modules;/******//******/// expose the module cache\n/******/__webpack_require__.c=installedModules;/******//******/// define getter function for harmony exports\n/******/__webpack_require__.d=function(exports,name,getter){/******/if(!__webpack_require__.o(exports,name)){/******/Object.defineProperty(exports,name,{enumerable:true,get:getter});/******/}/******/};/******//******/// define __esModule on exports\n/******/__webpack_require__.r=function(exports){/******/if(typeof Symbol!=='undefined'&&Symbol.toStringTag){/******/Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});/******/}/******/Object.defineProperty(exports,'__esModule',{value:true});/******/};/******//******/// create a fake namespace object\n/******/// mode & 1: value is a module id, require it\n/******/// mode & 2: merge all properties of value into the ns\n/******/// mode & 4: return value when already ns object\n/******/// mode & 8|1: behave like require\n/******/__webpack_require__.t=function(value,mode){/******/if(mode&1)value=__webpack_require__(value);/******/if(mode&8)return value;/******/if(mode&4&&(typeof value==='undefined'?'undefined':_typeof2(value))==='object'&&value&&value.__esModule)return value;/******/var ns=Object.create(null);/******/__webpack_require__.r(ns);/******/Object.defineProperty(ns,'default',{enumerable:true,value:value});/******/if(mode&2&&typeof value!='string')for(var key in value){__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));}/******/return ns;/******/};/******//******/// getDefaultExport function for compatibility with non-harmony modules\n/******/__webpack_require__.n=function(module){/******/var getter=module&&module.__esModule?/******/function getDefault(){return module['default'];}:/******/function getModuleExports(){return module;};/******/__webpack_require__.d(getter,'a',getter);/******/return getter;/******/};/******//******/// Object.prototype.hasOwnProperty.call\n/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__\n/******/__webpack_require__.p=\"\";/******//******//******/// Load entry module and return exports\n/******/return __webpack_require__(__webpack_require__.s=19);/******/}(/************************************************************************//******/{/***/\"./foundation.core\":/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************//*! no static exports found *//***/function foundationCore(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;/***/},/***/\"./foundation.util.motion\":/*!********************************************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.motion\"],\"amd\":\"./foundation.util.motion\",\"commonjs\":\"./foundation.util.motion\",\"commonjs2\":\"./foundation.util.motion\"} ***!\n \\********************************************************************************************************************************************************************************************//*! no static exports found *//***/function foundationUtilMotion(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;/***/},/***/\"./js/entries/plugins/foundation.toggler.js\":/*!**************************************************!*\\\n !*** ./js/entries/plugins/foundation.toggler.js ***!\n \\**************************************************//*! exports provided: Foundation, Toggler *//***/function jsEntriesPluginsFoundationTogglerJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! ./foundation.core */\"./foundation.core\");/* harmony import */var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Foundation\",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"];});/* harmony import */var _foundation_toggler__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ../../foundation.toggler */\"./js/foundation.toggler.js\");/* harmony reexport (safe) */__webpack_require__.d(__webpack_exports__,\"Toggler\",function(){return _foundation_toggler__WEBPACK_IMPORTED_MODULE_1__[\"Toggler\"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__[\"Foundation\"].plugin(_foundation_toggler__WEBPACK_IMPORTED_MODULE_1__[\"Toggler\"],'Toggler');/***/},/***/\"./js/foundation.toggler.js\":/*!**********************************!*\\\n !*** ./js/foundation.toggler.js ***!\n \\**********************************//*! exports provided: Toggler *//***/function jsFoundationTogglerJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Toggler\",function(){return Toggler;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.core.plugin */\"./foundation.core\");/* harmony import */var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__);/* harmony import */var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*! ./foundation.util.triggers */\"./js/foundation.util.triggers.js\");function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i').addClass(templateClasses).attr({'role':'tooltip','aria-hidden':true,'data-is-active':false,'data-is-focus':false,'id':id});return $template;}/**\n * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.\n * if the tooltip is larger than the screen width, default to full width - any user selected margin\n * @private\n */},{key:\"_setPosition\",value:function _setPosition(){_get(_getPrototypeOf(Tooltip.prototype),\"_setPosition\",this).call(this,this.$element,this.template);}/**\n * reveals the tooltip, and fires an event to close any other open tooltips on the page\n * @fires Tooltip#closeme\n * @fires Tooltip#show\n * @function\n */},{key:\"show\",value:function show(){if(this.options.showOn!=='all'&&!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__[\"MediaQuery\"].is(this.options.showOn)){// console.error('The screen is too small to display this tooltip');\nreturn false;}var _this=this;this.template.css('visibility','hidden').show();this._setPosition();this.template.removeClass('top bottom left right').addClass(this.position);this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-'+this.alignment);/**\n * Fires to close all other open tooltips on the page\n * @event Closeme#tooltip\n */this.$element.trigger('closeme.zf.tooltip',this.template.attr('id'));this.template.attr({'data-is-active':true,'aria-hidden':false});_this.isActive=true;this.template.stop().hide().css('visibility','').fadeIn(this.options.fadeInDuration,function(){//maybe do stuff?\n});/**\n * Fires when the tooltip is shown\n * @event Tooltip#show\n */this.$element.trigger('show.zf.tooltip');}/**\n * Hides the current tooltip, and resets the positioning class if it was changed due to collision\n * @fires Tooltip#hide\n * @function\n */},{key:\"hide\",value:function hide(){var _this=this;this.template.stop().attr({'aria-hidden':true,'data-is-active':false}).fadeOut(this.options.fadeOutDuration,function(){_this.isActive=false;_this.isClick=false;});/**\n * fires when the tooltip is hidden\n * @event Tooltip#hide\n */this.$element.trigger('hide.zf.tooltip');}/**\n * adds event listeners for the tooltip and its anchor\n * TODO combine some of the listeners like focus and mouseenter, etc.\n * @private\n */},{key:\"_events\",value:function _events(){var _this=this;var hasTouch='ontouchstart'in window||typeof window.ontouchstart!=='undefined';var isFocus=false;// `disableForTouch: Fully disable the tooltip on touch devices\nif(hasTouch&&this.options.disableForTouch)return;if(!this.options.disableHover){this.$element.on('mouseenter.zf.tooltip',function(){if(!_this.isActive){_this.timeout=setTimeout(function(){_this.show();},_this.options.hoverDelay);}}).on('mouseleave.zf.tooltip',Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__[\"ignoreMousedisappear\"])(function(){clearTimeout(_this.timeout);if(!isFocus||_this.isClick&&!_this.options.clickOpen){_this.hide();}}));}if(hasTouch){this.$element.on('tap.zf.tooltip touchend.zf.tooltip',function(){_this.isActive?_this.hide():_this.show();});}if(this.options.clickOpen){this.$element.on('mousedown.zf.tooltip',function(){if(_this.isClick){//_this.hide();\n// _this.isClick = false;\n}else{_this.isClick=true;if((_this.options.disableHover||!_this.$element.attr('tabindex'))&&!_this.isActive){_this.show();}}});}else{this.$element.on('mousedown.zf.tooltip',function(){_this.isClick=true;});}this.$element.on({// 'toggle.zf.trigger': this.toggle.bind(this),\n// 'close.zf.trigger': this.hide.bind(this)\n'close.zf.trigger':this.hide.bind(this)});this.$element.on('focus.zf.tooltip',function(){isFocus=true;if(_this.isClick){// If we're not showing open on clicks, we need to pretend a click-launched focus isn't\n// a real focus, otherwise on hover and come back we get bad behavior\nif(!_this.options.clickOpen){isFocus=false;}return false;}else{_this.show();}}).on('focusout.zf.tooltip',function(){isFocus=false;_this.isClick=false;_this.hide();}).on('resizeme.zf.trigger',function(){if(_this.isActive){_this._setPosition();}});}/**\n * adds a toggle method, in addition to the static show() & hide() functions\n * @function\n */},{key:\"toggle\",value:function toggle(){if(this.isActive){this.hide();}else{this.show();}}/**\n * Destroys an instance of tooltip, removes template element from the view.\n * @function\n */},{key:\"_destroy\",value:function _destroy(){this.$element.attr('title',this.template.text()).off('.zf.trigger .zf.tooltip').removeClass(this.options.triggerClass).removeClass('top right left bottom').removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');this.template.remove();}}]);return Tooltip;}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_4__[\"Positionable\"]);Tooltip.defaults={/**\n * Time, in ms, before a tooltip should open on hover.\n * @option\n * @type {number}\n * @default 200\n */hoverDelay:200,/**\n * Time, in ms, a tooltip should take to fade into view.\n * @option\n * @type {number}\n * @default 150\n */fadeInDuration:150,/**\n * Time, in ms, a tooltip should take to fade out of view.\n * @option\n * @type {number}\n * @default 150\n */fadeOutDuration:150,/**\n * Disables hover events from opening the tooltip if set to true\n * @option\n * @type {boolean}\n * @default false\n */disableHover:false,/**\n * Disable the tooltip for touch devices.\n * This can be useful to make elements with a tooltip on it trigger their\n * action on the first tap instead of displaying the tooltip.\n * @option\n * @type {booelan}\n * @default false\n */disableForTouch:false,/**\n * Optional addtional classes to apply to the tooltip template on init.\n * @option\n * @type {string}\n * @default ''\n */templateClasses:'',/**\n * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.\n * @option\n * @type {string}\n * @default 'tooltip'\n */tooltipClass:'tooltip',/**\n * Class applied to the tooltip anchor element.\n * @option\n * @type {string}\n * @default 'has-tip'\n */triggerClass:'has-tip',/**\n * Minimum breakpoint size at which to open the tooltip.\n * @option\n * @type {string}\n * @default 'small'\n */showOn:'small',/**\n * Custom template to be used to generate markup for tooltip.\n * @option\n * @type {string}\n * @default ''\n */template:'',/**\n * Text displayed in the tooltip template on open.\n * @option\n * @type {string}\n * @default ''\n */tipText:'',touchCloseText:'Tap to close.',/**\n * Allows the tooltip to remain open if triggered with a click or touch event.\n * @option\n * @type {boolean}\n * @default true\n */clickOpen:true,/**\n * Position of tooltip. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */position:'auto',/**\n * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */alignment:'auto',/**\n * Allow overlap of container/window. If false, tooltip will first try to\n * position as defined by data-position and data-alignment, but reposition if\n * it would cause an overflow. @option\n * @type {boolean}\n * @default false\n */allowOverlap:false,/**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * Less common for tooltips.\n * @option\n * @type {boolean}\n * @default false\n */allowBottomOverlap:false,/**\n * Distance, in pixels, the template should push away from the anchor on the Y axis.\n * @option\n * @type {number}\n * @default 0\n */vOffset:0,/**\n * Distance, in pixels, the template should push away from the anchor on the X axis\n * @option\n * @type {number}\n * @default 0\n */hOffset:0,/**\n * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip\n * @option\n * @type {number}\n * @default 14\n */tooltipHeight:14,/**\n * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip\n * @option\n * @type {number}\n * @default 12\n */tooltipWidth:12,/**\n * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,\n * allowing HTML may open yourself up to XSS attacks.\n * @option\n * @type {boolean}\n * @default false\n */allowHtml:false};/**\n * TODO utilize resize event trigger\n *//***/},/***/\"./js/foundation.util.triggers.js\":/*!****************************************!*\\\n !*** ./js/foundation.util.triggers.js ***!\n \\****************************************//*! exports provided: Triggers *//***/function jsFoundationUtilTriggersJs(module,__webpack_exports__,__webpack_require__){\"use strict\";__webpack_require__.r(__webpack_exports__);/* harmony export (binding) */__webpack_require__.d(__webpack_exports__,\"Triggers\",function(){return Triggers;});/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*! jquery */\"jquery\");/* harmony import */var jquery__WEBPACK_IMPORTED_MODULE_0___default=/*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*! ./foundation.core.utils */\"./foundation.core\");/* harmony import */var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default=/*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*! ./foundation.util.motion */\"./foundation.util.motion\");/* harmony import */var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default=/*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&_typeof2(Symbol.iterator)===\"symbol\"){_typeof=function _typeof(obj){return typeof obj==='undefined'?'undefined':_typeof2(obj);};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj==='undefined'?'undefined':_typeof2(obj);};}return _typeof(obj);}var MutationObserver=function(){var prefixes=['WebKit','Moz','O','Ms',''];for(var i=0;ilegend.gfield_label.gform-field-label');var labelField1_2=$('fieldset#field_2_31>legend.gfield_label');// Variables for the second set of dropdown and labels\nvar dropdownField2=$('#input_4_23');var labelField2_1=$('fieldset#field_4_24>legend.gfield_label.gform-field-label');var labelField2_2=$('fieldset#field_4_31>legend.gfield_label');// Function to update labels for the first set\nfunction updateLabels1(){var selectedOption=dropdownField1.find('option:selected').text();// Update label 1\nlabelField1_1.text(\"How would you rate your overall satisfaction with \"+selectedOption+'?');// Update label 2\nlabelField1_2.text(\"On a scale of 0 (very unlikely) to 10 (very likely), how likely are you to recommend \"+selectedOption+\" to a friend or colleague?\");}// Function to update labels for the second set\nfunction updateLabels2(){var selectedOption=dropdownField2.find('option:selected').text();// Update label 1\nlabelField2_1.text(\"How would you rate your overall satisfaction with \"+selectedOption);// Update label 2\nlabelField2_2.text(\"On a scale of 0 (very unlikely) to 10 (very likely), how likely are you to recommend \"+selectedOption+\" to a friend or colleague?\");}// Call updateLabels for both sets on page load\nupdateLabels1();updateLabels2();// Update labels for the first set when the dropdown value changes\ndropdownField1.change(function(){updateLabels1();});// Update labels for the second set when the dropdown value changes\ndropdownField2.change(function(){updateLabels2();});// Handle the survey form logic\n$('[data-open-survey-form]').click(function(e){e.preventDefault();// Prevent default action to ensure accessibility\nvar surveyScriptID=$(this).attr('data-open-survey-form');if($('#survey-form').length){$('#survey-form > div > .wp-block-group').each(function(){$(this).addClass('hide').attr('aria-hidden','true');// Add aria-hidden\n});var $targetForm=$('#survey-form').find('#'+surveyScriptID);$targetForm.removeClass('hide').attr('aria-hidden','false');// Remove aria-hidden\n$targetForm.focus();// Move focus to the revealed section\n$('html, body').animate({scrollTop:$('#survey-form').offset().top-($('header.header').outerHeight()||0)},500);}});// Ensure that hidden elements cannot be focused\n$('.wp-block-group').each(function(){if($(this).hasClass('hide')){$(this).attr('aria-hidden','true');}else{$(this).attr('aria-hidden','false');}});});document.addEventListener('DOMContentLoaded',function(){var radioStarsGroups=document.querySelectorAll('.radio-stars');radioStarsGroups.forEach(function(group){var radioButtons=group.querySelectorAll('.gfield-choice-input');var labels=group.querySelectorAll('.gform-field-label');function updateStars(selectedIndex){labels.forEach(function(label,index){if(index<=selectedIndex){label.classList.add('star-checked');}else{label.classList.remove('star-checked');}});}radioButtons.forEach(function(radio,index){radio.addEventListener('change',function(){updateStars(index);});});});});\n'use strict';jQuery(document).ready(function($){$('.alert-banner').each(function(){// if(localStorage.getItem('charleys_visitor_alert_closed_'+$(this).attr('data-alert-banner-id'))) {\nif(Cookies.get('charleys_visitor_alert_closed_'+$(this).attr('data-alert-banner-id'))){$(this).addClass('closed');}else{$(this).removeClass('closed');}});$('[data-toggle-alert]').click(function(){var alertBannerID=$(this).parents('.alert-banner').attr('data-alert-banner-id');$('.alert-banner[data-alert-banner-id=\"'+alertBannerID+'\"]').toggleClass('closed');if($(this).hasClass('alert-banner-close')){// localStorage.setItem('charleys_visitor_alert_closed_'+alertBannerID, '1');\nCookies.set('charleys_visitor_alert_closed_'+alertBannerID,'1',{expires:1});}if($(this).hasClass('alert-banner-open')){// localStorage.removeItem('charleys_visitor_alert_closed_'+alertBannerID);\nCookies.remove('charleys_visitor_alert_closed_'+alertBannerID);}});});\n'use strict';jQuery(document).ready(function($){$('.faq-tabs').on('change.zf.tabs',function(){if($(this).next('label').find('select').val()!==$(this).find('a[aria-selected=\"true\"]').attr('href')){$(this).next('label').find('select').val($(this).find('a[aria-selected=\"true\"]').attr('href'));}});$('.faq-select').on('change',function(){$(this).parents('.cell').find('ul a[href=\"'+$(this).val()+'\"]').click();});});\n\"use strict\";jQuery(document).ready(function($){});\n'use strict';// Abide Patterns\nFoundation.Abide.defaults.patterns['phoneNumber']=/^((\\(\\d{3}\\)?)|(\\d{3}))([\\s-./]?)(\\d{3})([\\s-./]?)(\\d{4})$/;Foundation.Abide.defaults.patterns['zipCode']=/^[0-9]{5}(?:-[0-9]{4})?$/;Foundation.Abide.defaults.patterns['expDate']=/^(0[1-9]|1[0-2])\\/?([0-9]{4}|[0-9]{2})$/;Foundation.Abide.defaults.patterns['punchh_password']=/^(.){8,}$/;jQuery(document).foundation();\n\"use strict\";\n\"use strict\";// Location Map\nvar ttmap;// The home marker\nvar homeMarker;// clusterer\nvar markerClusterer;// Message for the allow location message\nvar mapLoadingScreenRequestText=\"Allow us to use your location and we'll find your nearest CHARLEYS.\";// Message for the location loading screen\nvar mapLoadingScreenText=\"Finding your location...\";// Message for not found\nvar mapLoadingScreenNotFound=\"Location not found. Try please again.\";// Container for marker popups\nvar infowindow;// Location isotope grid on locations page\nvar $locationGrid;// Map location markers\nvar markers=[];var markerIcon={};var markerIconSelected={};// determine if map is being loaded for the first time.\nvar isFirstLoad=true;/*\nconst mapStyle = [{\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#f5f5f5\"}]},{\"elementType\":\"labels.icon\",\"stylers\":[{\"visibility\":\"off\"}]},{\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#616161\"}]},{\"elementType\":\"labels.text.stroke\",\"stylers\":[{\"color\":\"#f5f5f5\"}]},{\"featureType\":\"administrative.land_parcel\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#bdbdbd\"}]},{\"featureType\":\"poi\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#eeeeee\"}]},{\"featureType\":\"poi\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#757575\"}]},{\"featureType\":\"poi.park\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#e5e5e5\"}]},{\"featureType\":\"poi.park\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#9e9e9e\"}]},{\"featureType\":\"road\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#ffffff\"}]},{\"featureType\":\"road.arterial\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#757575\"}]},{\"featureType\":\"road.highway\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#dadada\"}]},{\"featureType\":\"road.highway\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#616161\"}]},{\"featureType\":\"road.local\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#9e9e9e\"}]},{\"featureType\":\"transit.line\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#e5e5e5\"}]},{\"featureType\":\"transit.station\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#eeeeee\"}]},{\"featureType\":\"water\",\"elementType\":\"geometry\",\"stylers\":[{\"color\":\"#c9c9c9\"}]},{\"featureType\":\"water\",\"elementType\":\"labels.text.fill\",\"stylers\":[{\"color\":\"#9e9e9e\"}]}];\n*/function isMobileOrTablet(){var check=false;// eslint-disable-next-line\n(function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check=true;})(navigator.userAgent||navigator.vendor||window.opera);return check;}window.isMobileOrTablet=window.isMobileOrTablet||isMobileOrTablet;// Elements that fire once dom is ready\njQuery(document).ready(function($){//Re-route from menu \nvar storeLocationName=localStorage.getItem('charleys_customer_store_location_name');var deliveryMode=localStorage.getItem('charleys_customer_deliverymode');if(jQuery(\".menu-root-page, body:not(.term-74) .menu-category-taxonomy-page\").length){if(storeLocationName&&deliveryMode){change_view(\"menu\");}else if(storeLocationName){change_view(\"order\");}else{$('.menu-root-page').removeClass('invisible');$('.menu-category-taxonomy-page').removeClass('invisible');}}else if($('.menu-category-taxonomy-page')){$('.menu-category-taxonomy-page').removeClass('invisible');}// Initialize TomTom Map\nif(!window.location.href.includes(\"/order/\")){initMap(-98.5556199,39.8097343);}// Set Default order URL\n$(\"[data-order-link]\").each(function(){$(this).attr(\"href\",charleysDefaultOrderURL);});if($(\"#tt-map\").length){var inputD=$(\"#location-search .search-field\")[0];var inputM=$(\"#location-search-m .search-field\")[0];var options={// componentRestrictions: { country: \"us\" },\n// fields: [\"address_components\", \"geometry\", \"icon\", \"name\", \"zipcode\"],\nstrictBounds:false,types:[\"(regions)\"]};var autocompleteD=new google.maps.places.Autocomplete(inputD,options);autocompleteD.addListener(\"place_changed\",function(){var place=autocompleteD.getPlace();if(place.geometry){ttmap.systemZoomChange=true;getLocations(place.geometry.location.lat(),place.geometry.location.lng(),\"\",true);}});var autocompleteM=new google.maps.places.Autocomplete(inputM,options);autocompleteM.addListener(\"place_changed\",function(){var place=autocompleteM.getPlace();if(place.geometry){ttmap.systemZoomChange=true;getLocations(place.geometry.location.lat(),place.geometry.location.lng(),\"\",true);}});// If a user ignores suggestions, this will catch and gecode the input\n$(\"#location-search, #location-search-m\").submit(function(e){e.preventDefault();$(this).find(\".search-field\").blur();var address=$(this).find(\".search-field\").val();var geocoder=new google.maps.Geocoder();geocoder.geocode({address:address},function(results,status){if(status==google.maps.GeocoderStatus.OK){ttmap.systemZoomChange=true;getLocations(results[0].geometry.location.lat(),results[0].geometry.location.lng(),\"\",true);}else{$(this).find(\".search-field\").val(\"\");}});});$(\"#wingsLocationsCheckbox\").change(function(){// console.log(\"I submitted\");\nif($(window).width()<1025){$(\"#location-search-m\").submit();}else{$(\"#location-search\").submit();}if($(this).prop(\"checked\")){$(\".wingsContainer\").addClass(\"checked\");}else{$(\".wingsContainer\").removeClass(\"checked\");}getMarkersInView();});}if($('#tt-map').length){//\n// var options = {\n// placeholder: 'Search City, State, or ZIP Code',\n// searchOptions: {\n// key: tomtom_api_key,\n// language: 'en-US',\n// limit: 15,\n// idxSet: 'Geo',\n// maxFuzzyLevel: 1,\n// center: {longitude: -98.5556199, latitude: 39.8097343}\n// },\n// autocompleteOptions: {\n// key: tomtom_api_key,\n// language: 'en-US',\n// resultSet: 'category'\n// },\n// filterSearchResults: function(result) {\n// console.log(result);\n// if(result.type == 'Geography') {\n// return true;\n// } else {\n// return false;\n// }\n// }\n// };\n//\n// // if(true) {\n// // options.searchOptions.countrySet = 'US';\n// // }\n//\n// var ttSearchBoxM = new tt.plugins.SearchBox(tt.services, options);\n// var searchBoxHTMLM = ttSearchBoxM.getSearchBoxHTML();\n// $('.search-container.hide-for-large').append(searchBoxHTMLM);\n//\n// var ttSearchBoxD = new tt.plugins.SearchBox(tt.services, options);\n// var searchBoxHTMLD = ttSearchBoxD.getSearchBoxHTML();\n// $('.search-container.show-for-large').append(searchBoxHTMLD);\n//\n// ttSearchBoxM.on('tomtom.searchbox.resultselected', function(response) {\n// var lat = response.data.result.position.lat;\n// var lng = response.data.result.position.lng;\n// ttmap.systemZoomChange = true;\n// getLocations( lat, lng, '', true );\n// });\n//\n// ttSearchBoxD.on('tomtom.searchbox.resultselected', function(response) {\n// console.log(response);\n// var lat = response.data.result.position.lat;\n// var lng = response.data.result.position.lng;\n// ttmap.systemZoomChange = true;\n// getLocations( lat, lng, '', true );\n// });\n//\n// $('.tt-search-box-input').keyup(function(e) {\n// if(e.keyCode == 13) { // enter key\n// var $submittingform = $(this);\n// var address = $(this).val();\n//\n// console.log(tt, address, tomtom_api_key);\n//\n// tt.services.geocode({\n// key: tomtom_api_key,\n// query: address,\n// countrySet: 'US'\n// })\n// .then(function(response) {\n// console.log('success', response);\n// if (response.results.length > 0) {\n// ttmap.systemZoomChange = true;\n// var lat = response.results[0].position.lat;\n// var lng = response.results[0].position.lng;\n// getLocations( lat, lng, '', true );\n// } else {\n// $submittingform.val('');\n// }\n// })\n// .catch(function(response) {\n// console.log('error', response);\n// });\n// }\n// });\n//\nttmap.on('dragend',getMarkersInView);ttmap.on('zoomend',getMarkersInView);}$(\"[data-tap-to-explore]\").click(function(){$(this).addClass(\"hide\");hideLoading();showZoomPrompt();});// attempt to geolocate user\nif(!localStorage.getItem(\"charleys_visitor_nearest_location_id\")){geolocateUser();}else{if(ttmap){ttmap.systemZoomChange=true;}setLocation(true);}if($(\".menu-grid\").length&&!localStorage.getItem(\"charleys_visitor_nearest_location_id\")){// console.log('no location');\n$(\".menu-grid .food-item[data-is-default-cps], .menu-grid .food-item[data-is-read_only_menu]\").each(function(){$(this).removeClass(\"hide\");});$(\".menu-grid .food-item:not([data-is-default-cps], .menu-grid .food-item[data-is-read_only_menu])\").each(function(){$(this).addClass(\"hide\");});}else if($(\".menu-grid\").length&&localStorage.getItem(\"charleys_visitor_nearest_location_id\")){// console.log('location');\n$(\".menu-grid .food-item[data-is-default-cps], .menu-grid .food-item[data-is-read_only_menu]\").each(function(){$(this).removeClass(\"hide\");});}});// end jQuery ready\n// Fires to prep the TOMTOM map\nfunction initMap(longitude,latitude){// console.log(\"initMap\");\nvar $=jQuery;if($(\"#tt-map\").length){tt.setProductInfo(\"Charleys Location Map\",\"2.0.0\");ttmap=tt.map({key:tomtom_api_key,container:\"tt-map\",// style: 'tomtom://vector/1/basic-main',\n// dragPan: !isMobileOrTablet(),\n// Center on the USA\ncenter:[-98.5556199,39.8097343],zoom:15,language:\"en-US\"});ttmap.addControl(new tt.FullscreenControl());ttmap.addControl(new tt.NavigationControl());// console.log('adsgdsagasg');\n}// end if\n}// end initMap\n// Shows loading cover elements\nfunction showLoading(){// console.log(\"showLoading\");\nvar $=jQuery;$(\"[data-tap-to-explore]\").addClass(\"hide\");$(\"[data-loading-icon]\").removeClass(\"hide\");$(\"[data-map-cover]\").removeClass(\"hide\");$(\"[data-search-column-cover]\").removeClass(\"hide\");}// end showLoading\n// Hides loading cover elements\nfunction hideLoading(){// console.log(\"hideLoading\");\nvar $=jQuery;$(\"[data-map-cover]\").addClass(\"hide\");$(\"[data-search-column-cover]\").addClass(\"hide\");}// end hideLoading\n// Shows the Zoom prompt covering the map\nfunction showZoomPrompt(){// console.log(\"showZoomPrompt\");\nvar $=jQuery;$(\"[data-map-zoom-prompt]\").removeClass(\"hide\");}// end showZoomPrompt\n// Hides the zoom in prompt for map\nfunction hideZoomPrompt(){// console.log(\"hideZoomPrompt\");\nvar $=jQuery;$(\"[data-map-zoom-prompt]\").addClass(\"hide\");}// end hideZoomPrompt\n// Shows the prompt for no markers within range\nfunction showEmptyPrompt(){// console.log(\"showEmptyPrompt\");\nvar $=jQuery;$(\"[data-map-empty-prompt]\").removeClass(\"hide\");}// end showEmptyPrompt\n// Hides the prompt for no markers within range\nfunction hideEmptyPrompt(){// console.log(\"hideEmptyPrompt\");\nvar $=jQuery;$(\"[data-map-empty-prompt]\").addClass(\"hide\");}// end showEmptyPrompt\n// Gets the markers within map view - plus a bit outside view.\nfunction getMarkersInView(){// console.log(\"getMarkersInView\");\nif(!ttmap.systemZoomChange){if(ttmap.getZoom()>=7){var bounds=ttmap.getBounds();var mCenter=bounds.getCenter();var neCorner=bounds.getNorthEast();var lat1=mCenter.lat,lat2=neCorner.lat,lon1=mCenter.lng,lon2=neCorner.lng;var R=6371e3;// metres\nvar φ1=lat1*Math.PI/180;// φ, λ in radians\nvar φ2=lat2*Math.PI/180;var Δφ=(lat2-lat1)*Math.PI/180;var Δλ=(lon2-lon1)*Math.PI/180;var a=Math.sin(Δφ/2)*Math.sin(Δφ/2)+Math.cos(φ1)*Math.cos(φ2)*Math.sin(Δλ/2)*Math.sin(Δλ/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var distance=R*c*0.000621371192;// convert meters to miles\n// console.log(distance);\ngetLocations(mCenter.lat,mCenter.lng,distance);hideZoomPrompt();}else{clearAllMarkers();showZoomPrompt();hideEmptyPrompt();}}else{ttmap.systemZoomChange=false;}}// end getMarkersInView\n// Gets locations from center to distance.\nfunction getLocations(lat,lng,dist){var setBounds=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;// console.log(\"getLocations\", lat, lng, dist);\nvar $=jQuery;showLoading();$.ajax({type:\"POST\",url:ajax_url,data:{// action: \"get_nearby_locations\",\naction:\"get_blended_nearby_locations\",lat:lat,long:lng,distance:dist},success:function success(response){// console.log(response);\nvar result=JSON.parse(response);// console.log(\"a\", result);\nif(result.status==\"success\"){hideEmptyPrompt();setLocationGrid(result.data.restaurants);if(setBounds){fitToMarkerBounds(ttmap);$(\".results-container\").animate({scrollTop:0},500);}}else{showEmptyPrompt();clearAllMarkers();}hideLoading();},error:function error(){}});}// end getLocations\n// Sets the grid list of locations\nfunction setLocationGrid(data){// console.log(\"setLocationGrid\");\nvar $=jQuery;clearAllMarkers();if(data&&data.length>0){$(\"[data-search-cover]\").addClass(\"hide\");$(\"[data-nearby-heading]\").removeClass(\"hide\");hideZoomPrompt();// console.log(\"Data\", data);\nfor(var i=0;i '+data[i]['city']+', '+data[i]['state']+' '+data[i]['zip']);if(data[i]['telephone']){locationItemClone.find('.location-phone a').attr('href','tel:'+data[i]['telephone']);locationItemClone.find('.location-phone a').text(data[i]['telephone']);}else{locationItemClone.find('.location-phone a').remove();}locationItemClone.find('.learn-more').attr('href',data[i]['permalink']);// Is a non OLO Store\nif(data[i]['id'].toString().includes('wp_')){locationItemClone.find('.order-now-details').attr('href',data[i]['url']);locationItemClone.find('.order-now-details').addClass('hide');// Check if opted-in to new experience\n}else if(experienceOptInStores===null||experienceOptInStores!==null&&experienceOptInStores.includes(locationItemClone.attr('data-store-number'))){locationItemClone.find('.order-now-details').attr('href','/order/?store='+data[i]['slug']);locationItemClone.find('.order-now-details').attr('data-customer-store-location-id',data[i]['id']);locationItemClone.find('.order-now-details').removeClass('hide');// If not opted-in, set link dependent on availability of access token and URL\n}else{if(data[i]['url'].length){if(localStorage.getItem('charleys_access_token')){locationItemClone.find('.order-now-details').attr('href','https://order.charleys.com/login/punchh/'+localStorage.getItem('charleys_access_token'));locationItemClone.find('.order-now-details').removeClass('hide');}else{locationItemClone.find('.order-now-details').attr('href',data[i]['url']);locationItemClone.find('.order-now-details').removeClass('hide');}}}// military base alt. flow\nvar militaryBaseIds=[226114,226115,226116,226117,226118,226119,226120,226121,226122,226123];locationItemClone.find('.order-now-pickup-military').attr('href',data[i]['url']);var doordashLink='https://doordash.com';switch(data[i][\"id\"]){case 226114:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-meade-2466507/';break;case 251343:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-lewis-1841146/29765746/';break;case 226115:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672000/29134952/';break;case 226116:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-tacoma-1841808/29165348/';break;case 226117:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672038/29130357/';break;case 226118:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-joint-base-lewis-mcchord-1841832/29157347/';break;case 226119:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-hood-1624506/29154949/';break;case 226120:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-campbell-1897032/29139351/';break;case 226121:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672652/29129355/';break;case 226122:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-bragg-1672005/29158152/';break;case 226123:doordashLink='https://www.doordash.com/store/charleys-cheesesteaks-fort-hood-1624917/29167948/';break;}locationItemClone.find('.order-now-delivery-military').attr('href',doordashLink);if(militaryBaseIds.includes(data[i][\"id\"])){locationItemClone.find('.order-now-details').addClass('hide');locationItemClone.find('.order-now-pickup-military').removeClass('hide');locationItemClone.find('.order-now-delivery-military').removeClass('hide');}locationItemClone.find('.location-distance [data-miles-away]').text(parseFloat(data[i]['distance']).toFixed(1));locationItemClone.find('.location-distance').removeClass('invisible');locationItemClone.removeAttr('data-location-template');locationItemClone.removeClass('hide');if(data[i][\"location_groups\"].includes(\"cpsw\")){locationItemClone.find(\".location-indicators\").removeClass(\"hidden\");locationItemClone.find(\".location-indicator-wing\").removeClass(\"hide\");}if(data[i][\"location_groups\"].includes(\"frozen-treats\")){locationItemClone.find(\".location-indicators\").removeClass(\"hidden\");locationItemClone.find(\".location-indicator-ice-cream\").removeClass(\"hide\");}$('#location-grid').append(locationItemClone);var popupHTML='
      '+''+data[i]['name']+''+'
      '+'
      '+data[i]['streetaddress']+'
      '+data[i]['city']+', '+data[i]['state']+' '+data[i]['zip']+'
      '+'';// Check if the wings condition is met\nif(data[i][\"location_groups\"].includes(\"cpsw\")){popupHTML+='

      WINGS AVAILABLE

      ';}popupHTML+='';// Format is lng , lat ... WHICH IS BACKWARDS TOMTOM\nmarkers.push(createMarker([parseFloat(data[i]['longitude']),parseFloat(data[i]['latitude'])],popupHTML,ttmap));};if($('#wingsLocationsCheckbox').prop('checked')){//only wings\nif(data[i]['location_groups'].split(',').includes('cpsw')){// console.log(\"only wings\");\ngetLocationInfo();}}else{//all stores\n// console.log(\"not only wings\");\ngetLocationInfo();}}}$('#location-grid .location-item:not(.hide) a[data-customer-store-location-id]').click(function(e){e.preventDefault();localStorage.setItem('charleys_location_page_location_id',$(this).attr('data-customer-store-location-id'));window.location.href=$(this).attr('href');});$('#location-grid input[type=\"radio\"] + label').click(function(){var markerIndex=$(this).parent().index()-1;// account for template\n//\n// var marker = new google.maps.Marker({});\n// new google.maps.event.trigger(markers[markerIndex], 'click');\n// Close any open popups\nfor(var i=0;i0){// setAsStore(data.data[0]['ID'], data.data[0]['title'], data.data[0]['order_url'], data.data[0]['location_details']);\nsetAsStore(data.data.restaurants[0]['id']);// set 3 other nearby stores--per request of Drew\nvar stores=data.data.restaurants;for(var i=1;i<=3;i++){if(stores.length>i){localStorage.setItem(\"nearByStore\"+i,stores[i]['id']);}}}else{unsetFindingLocation();}},error:function error(){}});},function(error){if(!localStorage.getItem(\"charleys_visitor_nearest_location_id\")){unsetFindingLocation();// setLoadingCoverScreen(mapLoadingScreenRequestText, true);\n}// console.log('denied: ', error);\n// $('#wf-store-locator-get-location').prop('disabled', true);\n// setAlertMessage('Error: ' + error.message);\n},function(options){// console.log('options: ', options);\n});}// end geolocateUser\n// Sets selectd store\nfunction setAsStore(locationID){var title=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"\";var order_url=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"\";var permalink=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"\";var store_num=arguments.length>4&&arguments[4]!==undefined?arguments[4]:\"\";var location_groups=arguments.length>5&&arguments[5]!==undefined?arguments[5]:\"\";var set_store_location=arguments.length>6&&arguments[6]!==undefined?arguments[6]:true;// console.log(\"setAsStore\");\nvar $=jQuery;unsetLocationLS();// Unset all location buttons\n$(\".set-location-button\").each(function(){$(this).removeClass(\"current-location\");});localStorage.setItem(\"charleys_visitor_nearest_location_id\",locationID);if(!title.length||!order_url.length||!permalink.length||!store_num.length||!location_groups.length){$.ajax({type:\"POST\",url:ajax_url,data:{action:\"get_location\",location_id:locationID},success:function success(response){// console.log(response);\nvar result=JSON.parse(response);var location_groups='';if(result.data){localStorage.setItem('charleys_visitor_nearest_location',result.data['name']);localStorage.setItem('charleys_visitor_order_url',result.data['url']);localStorage.setItem('charleys_visitor_location_details',result.data['permalink']);localStorage.setItem('charleys_visitor_location_store',result.data['extref']);localStorage.setItem('charleys_visitor_location_groups',result.data['location_groups']);if(set_store_location){localStorage.setItem('charleys_customer_store_location_id',result.data['id']);}if(experienceOptInStores===null||experienceOptInStores!==null&&experienceOptInStores.includes(result.data['extref'])){localStorage.setItem('charleys_visitor_order_url','/order/?store='+result.data['slug']);hideFakeMenuIfAddedLocation();}else{if(localStorage.getItem('charleys_access_token')){localStorage.setItem('charleys_visitor_order_url','https://order.charleys.com/login/punchh/'+localStorage.getItem('charleys_access_token'));}}//set 3 other nearby stores--per request of Drew\n$.ajax({type:\"POST\",url:ajax_url,data:{// action: \"get_nearby_locations\",\naction:\"get_blended_nearby_locations\",lat:result.data['latitude'],long:result.data['longitude'],distance:\"\"},success:function success(response){var data=JSON.parse(response);// console.log(\"data\", data);\nif(data.data.restaurants.length>0){// \nvar stores=data.data.restaurants;for(var i=1;i<=3;i++){if(stores.length>i){localStorage.setItem(\"nearByStore\"+i,stores[i]['id']);}}}},error:function error(){}});//\n// let visitorOrderUrl = result.data['url'];\n// hideFakeMenuIfAddedLocation(visitorOrderUrl);\n//\nsetLocation();}},error:function error(){}});}else{localStorage.setItem(\"charleys_visitor_nearest_location\",title);localStorage.setItem(\"charleys_visitor_order_url\",order_url);localStorage.setItem(\"charleys_visitor_location_details\",permalink);localStorage.setItem(\"charleys_visitor_location_store\",store_num);localStorage.setItem(\"charleys_visitor_location_groups\",location_groups);if(set_store_location){localStorage.setItem('charleys_customer_store_location_id',locationID);}setLocation();}}// end setAsStore\n// Unsets location Local Storage\nfunction unsetLocationLS(){// console.log(\"unsetLocationLS\");\nlocalStorage.removeItem(\"charleys_visitor_nearest_location_id\");localStorage.removeItem(\"charleys_visitor_nearest_location\");localStorage.removeItem(\"charleys_visitor_order_url\");localStorage.removeItem(\"charleys_visitor_delivery_url\");localStorage.removeItem(\"charleys_visitor_delivery_off\");localStorage.removeItem(\"charleys_visitor_location_details\");localStorage.removeItem(\"charleys_visitor_location_store\");localStorage.removeItem(\"charleys_visitor_location_groups\");localStorage.removeItem('nearByStore1');localStorage.removeItem('nearByStore2');localStorage.removeItem('nearByStore3');}// Sets location\nfunction setLocation(){var reload=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;// console.log(\"setLocation\");\nvar $=jQuery;// Set Location Button to reflect current store.\n$(\"[data-find-location-button]\").each(function(){$(this).find(\"[data-find-location]\").addClass(\"hide\");$(this).find(\"[data-find-location-show]\").addClass(\"hide\");$(this).find(\"[data-find-location-finding]\").removeClass(\"hide\");$(this).find(\"[data-find-location-name] strong\").text(decodeEntities(localStorage.getItem(\"charleys_visitor_nearest_location\")));$(this).find(\"[data-find-location-finding]\").addClass(\"hide\");$(this).find(\"[data-find-location-show]\").removeClass(\"hide\");$(this).removeClass(\"hide\");});// Set location buttons\n$('.set-location-button[data-location-id=\"'+localStorage.getItem(\"charleys_visitor_nearest_location_id\")+'\"]').each(function(){$(this).addClass(\"current-location\");});// Set Order Buttons\nif(localStorage.getItem(\"charleys_visitor_order_url\")){$(\"[data-order-link]\").each(function(){$(this).attr(\"href\",localStorage.getItem(\"charleys_visitor_order_url\"));});}// Set map\nif($(\"#tt-map\").length&&reload){showLoading();$.ajax({type:\"POST\",url:ajax_url,data:{action:\"get_location\",location_id:localStorage.getItem(\"charleys_visitor_nearest_location_id\")},success:function success(response){// console.log(response);\nvar data=JSON.parse(response);if(data.data){getLocations(data.data[\"latitude\"],data.data[\"longitude\"],\"\",true);}},error:function error(){}});}showFoodMenu();}// Sets finding location message elements\nfunction setFindingLocation(){// console.log(\"setFindingLocation\");\nvar $=jQuery;// $(\"[data-please-set-location]\").addClass(\"hide\");\n// $(\"[data-finding-your-location]\").removeClass(\"hide\");\n$(\"[data-find-location-button]\").each(function(){$(this).find(\"[data-find-location]\").addClass(\"hide\");$(this).find(\"[data-find-location-show]\").addClass(\"hide\");$(this).find(\"[data-find-location-finding]\").removeClass(\"hide\");$(this).removeClass(\"hide\");});$(\"[data-show-for-no-location]\").each(function(){$(this).removeClass(\"hide\");});}// end setFindingLocation\nfunction unsetFindingLocation(){// console.log(\"unsetFindingLocation\");\n// console.log('unset finding location');\nvar $=jQuery;$(\"[data-find-location-button]\").each(function(){$(this).find(\"[data-find-location-show]\").addClass(\"hide\");$(this).find(\"[data-find-location-finding]\").addClass(\"hide\");$(this).find(\"[data-find-location]\").removeClass(\"hide\");$(this).removeClass(\"hide\");});if(!localStorage.getItem(\"charleys_visitor_location_store\")||!localStorage.getItem(\"charleys_customer_store_location_name\")){// Hide all location dependent elements\n$('[data-show-for-stores*=\"yes\"]').each(function(){$(this).removeClass('hide');});// console.log('no location');\n// $(\"[data-please-set-location]\").removeClass(\"hide\");\n// $(\"[data-finding-your-location]\").addClass(\"hide\");\n}}// end unsetFindingLocation\n// Shows food menu items depending on location .\nfunction showFoodMenu(){// console.log(\"showFoodMenu\");\nvar $=jQuery;var currentStoreNumber=localStorage.getItem(\"charleys_visitor_location_store\");var currentLocGroups=localStorage.getItem(\"charleys_visitor_location_groups\");// console.log(currentStoreNumber, currentLocGroups);\n// patch for previous bug where store # and groups were blanks\n// if (!currentStoreNumber || !currentLocGroups) {\nif(!currentStoreNumber){setAsStore(localStorage.getItem(\"charleys_visitor_nearest_location_id\"));currentStoreNumber=localStorage.getItem(\"charleys_visitor_location_store\");currentLocGroups=localStorage.getItem(\"charleys_visitor_location_groups\");}if(currentLocGroups){currentLocGroups=currentLocGroups.split(\",\");}// console.log(currentStoreNumber, currentLocGroups);\n// $(\"[data-please-set-location]\").addClass(\"hide\");\n// $(\"[data-finding-your-location]\").addClass(\"hide\");\n// // Display elements related to stores\n$('[data-show-for-stores]').each(function(){if($(this).attr('data-show-for-stores').includes('yes')){$(this).removeClass('hide');}else{$(this).addClass('hide');}});// Display elements related to store category\n$(\"[data-show-for-category]\").each(function(){if(currentLocGroups){var showcats=$(this).attr(\"data-show-for-category\").split(\",\");if(showcats.length!==0){var showElement=false;// console.log(currentLocGroups, showcats);\nif(currentLocGroups&&showcats.length){for(var s=0;s