{"version":3,"sources":["FED/app/Feature/AppointmentBooking/appointment-booking.js","FED/app/Feature/APRightRail/vanilla-calendar.js","FED/app/Feature/OpenSchedulerEpic/openschedulerdetails.js","FED/app/Feature/OpenSchedulerIFrame/openscheduler.js","FED/app/Feature/AcceptedInsurance/Scripts/accepted-insurance.js","FED/app/Feature/Accordion/Scripts/accordion.js","FED/app/Feature/Alert/Scripts/alerts.js","FED/app/Feature/AwardsCarousel/Scripts/awards-carousel.js","FED/app/Feature/Callout/Scripts/card.js","FED/app/Feature/Callout/Scripts/conditions-and-services.js","FED/app/Feature/Carousel/Scripts/carousel.js","FED/app/Feature/CTA/Scripts/feedback.js","FED/app/Feature/CTA/Scripts/news-callout.js","FED/app/Feature/DetailsAccordion/Scripts/details-accordion.js","FED/app/Feature/DocLocations/Scripts/doctors-locations.js","FED/app/Feature/Doctor-Bio/Scripts/book-appointment.js","FED/app/Feature/Doctor-Bio/Scripts/favorites.js","FED/app/Feature/Doctor-Bio/Scripts/map.js","FED/app/Feature/Doctor-Bio/Scripts/read-more.js","FED/app/Feature/Doctor-Bio/Scripts/sticky-bio-nav.js","FED/app/Feature/Feedback/Scripts/feedback.js","FED/app/Feature/Footer/Scripts/sticky-footer.js","FED/app/Feature/Header/Scripts/header.js","FED/app/Feature/Header/Scripts/locations-menu.js","FED/app/Feature/Header/Scripts/main-search-nav.js","FED/app/Feature/Header/Scripts/mobile-main-nav.js","FED/app/Feature/LocationsCarousel/Scripts/locations-carousel.js","FED/app/Feature/MainHero/Scripts/video-player.js","FED/app/Feature/Navbar/Scripts/navbar.js","FED/app/Feature/Physician Compare/Scripts/physician-compare.js","FED/app/Feature/Search-Components/Scripts/FAD.js","FED/app/Feature/ServiceDetailsHero/Scripts/anchor-nav.js","FED/app/Feature/ServiceDetailsHero/Scripts/service-details-hero.js","FED/app/Feature/ServiceLineOverview/Scripts/service-line-overview.js","FED/app/Feature/ServicesSearch/Scripts/active-facet.js","FED/app/Feature/ServicesSearch/Scripts/show-results.js","FED/app/Feature/System-Location/Scripts/favorites.js","FED/app/Feature/System-Location/Scripts/system-location.js","FED/app/Feature/Toolbar/Scripts/toolbar.js","FED/app/Feature/UrgentCare/Scripts/floating-quick-links.js","FED/app/Feature/UrgentCare/Scripts/solv-available-times-by-state.js","FED/app/Feature/UrgentCare/Scripts/urgent-care-location-detail.js","FED/app/Feature/WaitingTimes/Scripts/waiting-times-slider.js","FED/app/Project/YNHHS/Scripts/add-to-calendar.js","FED/app/Project/YNHHS/Scripts/authentication.js","FED/app/Project/YNHHS/Scripts/custom-checkbox.js","FED/app/Project/YNHHS/Scripts/custom-dropdown.js","FED/app/Project/YNHHS/Scripts/custom-select.js","FED/app/Project/YNHHS/Scripts/removing-addthis.js","FED/app/Project/YNHHS/Scripts/tabs.js","FED/app/Project/YNHHS/Scripts/gtm/tracking.js","FED/app/Foundation/Search/Scripts/search.js"],"names":["GatewayQuestionsBind","step1FormBtn","document","querySelector","gatewayQuestions","querySelectorAll","gatewayAlert","forEach","question","addEventListener","i","input","checked","x","getAttribute","push","includes","classList","add","setAttribute","remove","ClearActiveCalendarDay","activeSlot","length","CalendarOnSelect","data","elem","c","dt","$","date","NodeList","prototype","Array","visitTypeId","GetVisitTypeId","GetPatientType","hasSlot","Boolean","d","e","displayDate","first","text","show","hide","patientType","visitTypeDataAttribute","setActiveDateTime","prop","getUrlParams","slotIndex","dates","timeSlots","time","ts","preventDefault","params","window","location","href","replace","m","key","value","BindVisitTypes","selectedVisitTypeId","this","selectedDate","selectedPatientType","apiUrl","questionsOuterContainer","questionsInnerContainer","makeRequest","xhttp","isNetworkSuccess","append","responseText","BookAppointment","genderSelected","isTelehealth","departmentId","find","physicianId","comments","val","groupNumber","insuranceName","MemberNumber","payorId","SubscriberDateOfBirth","subscriberName","firstName","lastName","email","dateOfBirth","gender","street","city","state","zipcode","phoneNumber","grecaptcha","getResponse","ScheduleAppointmentOuterContainer","ScheduleAppointmentInnerContainer","appointmentBookingInit","appointmentNav","appointmentStep","step2FormBtn","step1Question1passed","step1Question2passed","step1Question3passed","gatewayPassed","timePassed","personalInformationPassed","genderPassed","addressPassed","statePassed","insurancePassed","notListedPassed","allFieldsPassed","addressPhone","addressZip","addressFields","personalInfoEmail","personalInfoDOB","personalInfoNames","insuranceDOB","insuranceAllOtherFields","AppointmentContainer","AppointmentInnerContainer","j","l","ll","selElmnt","a","b","getElementsByClassName","getElementsByTagName","createElement","id","options","selectedIndex","innerHTML","appendChild","y","k","s","h","sl","yl","parentNode","previousSibling","selectedOption","getElementById","removeClass","addClass","removeAttribute","click","get","$container","siteKey","render","sitekey","stopPropagation","closeAllSelect","nextSibling","toggle","elmnt","xl","arrNo","indexOf","openSchedulerAppointmentPhysicianInit","appointmentTextarea","appointmentInputs","appointmentSelects","closest","hasClass","timeSlot","iCompany","iName","allOtherFields","toLowerCase","nav0","nav1","nav2","appointmentDetailsSelect","appoinmentRailCalendar","appointmentRailTimes","appointmentRailInformation","navigationBack","event","reload","question1Checked","question2CheckedValue","question3Checked","error1","error2","error3","gatewayQuestionsCheck","test","fdsa","parentElement","error","timeSlotError","contains","errors","step","scroll","top","behavior","item","piTop","genderChecked","address","captchaElement","captchaError","piTopValue","re","RegExp","match","nextElementSibling","dateRe","inputValue","dd","today","Date","getDate","mm","getMonth","getFullYear","splitDate1","split","year1","month1","day1","enteredDate1","today1","setHours","dateInPast","gError","addressValue","phoneRe","zipRe","allInsFieldsShow","allInsFields","dateRe1","allFieldValue","notListed","notListedInput","errorsStep2","removeEventListener","ready","VanillaCalendar","addEvent","el","type","handler","attachEvent","removeEvent","detachEvent","opts","selector","datesFilter","pastDates","availableWeekDays","availableDates","todaysDate","button_prev","button_next","month","month_label","onSelect","months","shortWeekday","hasOwnProperty","element","createDay","newDayElem","dateElem","className","available_week_day","filter","f","day","getDay","available_date","String","padStart","style","marginLeft","getTime","JSON","stringify","toString","selectDate","activeDates","slice","call","datas","dataset","calendarDate","calendarData","parse","createMonth","clearCalendar","currentMonth","setDate","setMonth","monthPrev","monthNext","init","destroy","reset","set","_k","targetLength","padString","repeat","openSchedulerDetailsPhysicianInit","slotDate","depDropDown","viewAllLink","slotButtons","btn","bookAppointmentButton","depId","physId","OpenSchedulerContainer","OpenSchedulerPhysicianDetails","openSchedulerDetailsLocationInit","OpenSchedulerFacilityLocationDetails","openSchedulerbtnAnswerClick","nextQuestionGUID","allQuestions","display","scheudlerGUID","openSchedulers","selectDropdown","firstOption","Option","newOption","Key","Value","customDropdownInit","iFrameDiv","apikey","values","mychartWidget","renderWidget","url","apiKey","widgetType","containerId","additionalParams","vt","dept","waitForOpenSchedulerIframeLoad","each","attr","setTimeout","selectOpenScheduler","dropdown","items","setPredictiveTerm","word","dropDownTrigger","dropDownContent","closeDropDown","dictionary","map","searchInputElement","predictionsElement","searchButtonElement","MAX_PREDICTIONS_COUNT","searchTerms","terms","realWord","weight","searchTermCorrections","corrections","correction","addItemToMap","mapNode","pathArray","index","letter","shift","predictions","insertionIndex","array","middle","low","high","getInsertionIndex","splice","managePredictions","children","buildMap","searchTerm","predictionObject","findPredictions","searchTermArray","object","result","reduce","accumulator","current","unshift","predict","target","toUpperCase","results","z","keyCode","dropdownID","dropdownContent","toggleClass","faq","alerts","alert","cookieName","cookieValue","minutesToExpire","cacheTimeStr","cacheTime","parseInt","cacheKey","setTime","cookie","toGMTString","removeChild","awardsCarousel","glideArrows","mediaQueryAbove","matchMedia","awardSliders","sliderCount","_loop","awardItems","glide","Glide","animationTimingFunc","swipeThreshold","dragThreshold","breakpoints","1200","focusAt","perView","on","matches","nav","disable","mount","_glide","767","addQuerystring","newstring","has","elemID","tabPane","specialtiesSearchBtn","specialtiesDropdown","acceptingNewPatientsCheckbox","telehealthCheckbox","nameSearchBtn","nameInput","encodeURIComponent","locationSearchBtn","facilityTypesDropdown","areaInput","google","maps","Geocoder","geocode","status","GeocoderStatus","OK","coords","geometry","lat","lng","initLocationCard","_createForOfIteratorHelper","r","t","Symbol","iterator","isArray","_unsupportedIterableToArray","_n","F","n","done","TypeError","o","u","next","return","_arrayLikeToArray","constructor","name","from","conditionsAndServicesComponents","_step","_iterator","component","item10","button","onclick","focus","err","homepageGlide","homepageGlideNumberofSlides","numberofslides","autoplay","startAt","carouselContainers","carousel","pageSize","768","serviceLineContainer","serviceLineCarousel","servicePageSize","main","Splide","rewind","pagination","arrows","cover","width","fixedWidth","640","mediaquery","thumbnails","height","direction","isNavigation","fixedHeight","sync","submit","bindNewsListing","newsListingContainer","$btn","contextItemId","page","parent","bindComebackStories","comebackContainer","dnDropdown","hdnContextItem","hdnDatasource","html","container","content","maxHeight","scrollHeight","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","navLocationsBtns","cardLocationItem","cardTrack","nextButton","prevButton","allCards","cardHeight","offsetHeight","cardsHidden","cardCounter","counter","transform","navigator","geolocation","getCurrentPosition","position","latitude","longitude","uLat","uLng","distance","lat1","lon1","lat2","lon2","radlat1","Math","PI","radlat2","theta","radtheta","dist","sin","cos","acos","get2LatLongDistance","ceil","setDriveDistances","frag","createDocumentFragment","list","sort","d1","v1","d2","v2","updateOrderByDistance","apptEl","locationItem","triggerEl","IntersectionObserver","entries","isIntersecting","observe","inputEl","submitBtnEl","disabled","console","log","localStorage","getItem","undefined","ids","setItem","join","RadarGeocodeForward","endpoint","xhr","XMLHttpRequest","open","setRequestHeader","send","AddLocationToMap","googleHelpers","hasCoords","AddMarker","geocoder","markertracker","count","marker","Marker","title","icon","GenerateInfoContent","infowindow","InfoWindow","addListener","openInfoWindow","close","markers","markerClusterer","addMarker","loc","LatLng","bounds","extend","setZoom","setCenter","fitBounds","panToBounds","Location","geoElement","lati","parseFloat","longi","isNaN","titleElement","addressElement","phoneElement","phone","faxElement","fax","hoursElement","hours","directionsElement","directionslink","urlElement","GoogleHelpers","mapElement","Map","LatLngBounds","MarkerClusterer","maxZoom","styles","withDefaultStyle","textColor","textSize","directionsLink","locationMapElement","mapCenter","center","temp","geoJson","features","coordinates","properties","Radar","initialize","ui","zoom","loadImage","image","addImage","addSource","cluster","clusterMaxZoom","clusterRadius","addLayer","source","paint","circle-color","circle-radius","layout","text-field","text-font","text-size","text-allow-overlap","icon-image","icon-overlap","physicianMapElement","firstlocation","geojson","_map","geojsonData","maplibregl","LngLatBounds","feature","_ne","_sw","padding","easeTo","description","abs","lngLat","Popup","setLngLat","setHTML","addTo","queryRenderedFeatures","point","layers","clusterId","cluster_id","getSource","getClusterExpansionZoom","initLocationMap","locationObj","startingAddress","getDirections","toAddress","initLocationMapByType","locations","initPhysicianMap","overviewContainer","readMoreTrigger","hiddenContent","videoContent","topContent","mediaQuery","heightContent","pageNav","offsetBio","offsetTop","mediaQueryUnder","allJumpLinks","link","scrollBio","scrollY","feedbackyes","feedbackno","feedbacknosubmit","feedbackbuttons","thankyoumessage","feedbackfields","feedbackemail","feedbackmessage","thumbsUpContainer","feedbackContent","cookieLink","$stickyfooter","transitioning","stop","slideToggle","newscroll","mywindow","mypos","scrollTop","up","menuItems","overlay","closeSearchBtn","closeSearchPanel","closeOpenMainMenuItems","menus","setAriaFalse","firstElementChild","_headerNav","offset","alertBox","mobileMainNavigation","alertTotalHeight","total","itemHeight","onscroll","onresize","htmlEle","$myLinks","ele","$mainSearch","is","menu","columnId","fetch","method","then","response","json","Locations","Url","Name","titleText","processNavigationLocationsData","catch","requestNavigationLocations","mobileSearch","searchTriggerBtn","closeSearch","htmlEl","mainNavItems","ariaBtn","overlayContainer","mediaQueryUnderSearch","mobileTrigger","mainMobileNav","closeMobileNav","panelReturnBtns","setBtnAria","panel","locationsDropdownButton","locationsContainer","locationSliders","locationsGlide","hoverpause","animationDuration","gap","mainVideo","mainHero","videoWrapper","zIndex","animate","PhysicianCompareMain","initializePhysicianCompare","saveButtons","clearButton","saveButton","checkbox","buttonText","dataId","compareCliniciansButton","executeQuery","savedItems","sessionStorage","textContent","backgroundColor","cursor","textDecoration","updateCheckedCount","coveo","removeItem","loadSavedState","Coveo","$$","compareClinicians","isGenderSorted","isLocationSorted","istreatsAdultsChildrenSorted","isOnlineSchedulingSort","isOffersTelehealthSort","isAcceptingNewPatientsSort","activeFilters","buildDataPointList","trim","dataArray","concat","buildDataPointListTooltip","filterLabel","compareCliniciansLabel","compareSection","compareModel","checkedCount","searchBar","filterButton","marginBottom","itemIDs","queryString","ok","Error","GeneratePhysicianData","physicians","physician","genderTemplate","onlineSchedulingIcon","BookOnline","bookOnlineBtn","bookByPhoneBtn","Telephone","bookingBtn","AcceptingNewPatients","offersTelehealthIcon","OffersTelehealth","acceptingNewPatientsIcon","languageSpoken","Languages","view","ID","ImageUrl","FullName","BookingBtn","Specialties","SpecialtiesTooltip","Subspecialties","SubspecialtiesTooltip","ConditionsTreatments","ConditionsTreatmentsTooltip","InsuranceAccepted","InsuranceAcceptedTooltip","Gender","LanguagesSpoken","LanguagesSpokenTooltip","DeliveryNetworks","DeliveryNetworksTooltip","TreatsAdultsChildren","OnlineSchedulingIcon","OnlineScheduling","OffersTelehealthIcon","AcceptingNewPatientsIcon","Mustache","generatePhysicianHTML","insertAdjacentHTML","showTooltipBtns","tooltip","showTooltipCloseBtns","intervalLocation","setInterval","locationFilter","clearInterval","UpdateTableCells","intervalGender","genderFilter","intervalOnlineScheduling","onlineSchedulingFilter","intervalOffersTelehealthFilter","OffersTelehealthFilter","intervalOfAcceptingNewPatientsFilter","acceptingNewPatientsFilter","intervaltreatsAdultsChildren","treatsAdultsChildrenFilter","removePhysicianBtns","row","RemovePhysician","closeModel","condition","cell","returnToSearchbtn","physicianCompareConditions","dataPoint","column","_selector","oldestFilter","tableCells","empptyCells","maninNav","stickyLinks","expandItem","clearBtn","toggleClearButton","locationBtnNew","inputBox","locationDiv","searchSection","permissions","query","permissionStatus","onchange","closeModal","$el","$trigger","modal","$target","$close","$modal","pageAnchorNav","rect","getBoundingClientRect","contactTrigger","$contactLinks","contactTriggerLeft","servicesContainer","facetValueItems","facet","servicesTopContainer","searchTrigger","searchResultsContainer","clearSearchResults","servicesListing","servicesListingResults","servicesListPagination","servicesListPageNext","servicesListPagePrev","servicesListingTotalResults","servicesListingClearButton","bindPageSelectPagination","requestServicesListingUpdate","bindPaginationArrows","pageId","Items","Link","Summary","updateServicesListingsResults","outerHTML","EndPage","StartPage","activeClass","PaginationText","Total","updateServicesListingPagination","searchParams","URLSearchParams","search","newRelativePathQuery","pathname","history","pushState","updateServicesQueryStringParameters","updateServicesListing","fixmeTop","$toolbar","stickitLeft","left","stickitHeight","stickySidebarToTop","windowToTop","$toolbarDesktop","css","removeAttr","contrastCheckboxDesktop","body","contrastCheckboxMobile","contrastLabel","clickEvent","Event","dispatchEvent","quickLinksEl","topOffset","setProperty","satbsArray","listControls","listControl","elements","dropdownlist","isDropdownOpen","toggleDropdown","ucldArray","navBtns","cardItem","_navBtns","outlookBtn","eventid","resp","blob","URL","createObjectURL","download","revokeObjectURL","appleBtn","usernameInput","passwordInput","submitButton","redirect","validationLabel","redirectUrl","username","password","Success","openFacebookShareModal","winWidth","winHeight","winTop","screen","winLeft","openTwitterShareModal","myDiv","_typeof","ownKeys","Object","keys","getOwnPropertySymbols","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","configurable","writable","_toPrimitive","toPrimitive","Number","checkVisibility","visibilityProperty","startsWith","dataLayer","gtmpush","requestType","processingEl","fnDone","fnOnError","buildUrl","processingCssClass","isModal","onreadystatechange","isProcessing","readyState","onload","onerror","fields"],"mappings":"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","file":"script.min.js","sourcesContent":["\"use strict\";\n\nfunction GatewayQuestionsBind() {\n //Check to see if any of the gateway questions have a checked value of 'exit'\n var step1FormBtn = document.querySelector('.appointment-booking__step1-form-continue');\n var gatewayQuestions = document.querySelectorAll('.appointment-booking__current-health-info input');\n var gatewayAlert = document.querySelector('.appointment-booking__alert');\n gatewayQuestions.forEach(function (question) {\n question.addEventListener('change', function () {\n var i = [];\n gatewayQuestions.forEach(function (input) {\n if (input.checked) {\n var x = input.getAttribute('data-value');\n i.push(x);\n if (i.includes('exit')) {\n gatewayAlert.classList.add('active');\n step1FormBtn.setAttribute(\"style\", \"pointer-events:none;\");\n step1FormBtn.classList.add('appointment-booking__btn-disabled');\n } else {\n gatewayAlert.classList.remove('active');\n step1FormBtn.setAttribute(\"style\", \"pointer-events:auto;\");\n step1FormBtn.classList.remove('appointment-booking__btn-disabled');\n }\n }\n });\n });\n });\n}\nfunction ClearActiveCalendarDay() {\n //clear slected date on date change\n var activeSlot = document.querySelectorAll('.open-scheduler-epic__selected');\n if (activeSlot.length > 0) {\n activeSlot[0].classList.remove('open-scheduler-epic__selected');\n }\n}\nfunction CalendarOnSelect(data, elem) {\n //clear selected date\n var cal = document.querySelectorAll('.vanilla-calendar-date--active');\n cal.forEach(function (c) {\n c.classList.remove('vanilla-calendar-date--selected');\n });\n\n //set active date on select\n elem.classList.add('vanilla-calendar-date--selected');\n var dt = $(elem).data(\"calendar-data\").date;\n var date = document.querySelectorAll('.appointment-booking-right-rail__times-container');\n\n //ie 11 support on foreach\n if (typeof NodeList.prototype.forEach !== 'function') {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n var patientType = GetPatientType();\n var visitTypeId = GetVisitTypeId(patientType);\n var hasSlot = new Boolean(false);\n date.forEach(function (d) {\n ClearActiveCalendarDay();\n\n //set active date\n if ($(d).data('date') == dt && $(d).data('visit-type') == visitTypeId) {\n d.classList.add('active');\n hasSlot = true;\n } else {\n d.classList.remove('active');\n }\n\n //set active display date on click\n d.addEventListener('click', function (e) {\n var displayDate = $('.appointment-booking-right-rail__times-container.active').first().data('display-date');\n if (displayDate) {\n $('#appointment-selected-display-date').text(displayDate);\n }\n });\n });\n if (hasSlot == false) {\n $('.appointment-booking__noslots').show();\n } else {\n $('.appointment-booking__noslots').hide();\n }\n hasSlot = false;\n}\nfunction GetPatientType() {\n var patientType;\n var patientTypeSelected = document.querySelectorAll('.appointment-booking__question-1 input');\n patientTypeSelected.forEach(function (input) {\n if (input.checked) {\n patientType = $(input).data('patient-visit-type');\n }\n });\n return patientType;\n}\nfunction GetVisitTypeId(patientType) {\n var visitTypeId;\n var visitTypeSelected = document.querySelectorAll('.appointment-booking__question-3 input');\n visitTypeSelected.forEach(function (input) {\n if (input.checked) {\n var visitTypeDataAttribute = patientType + \"-patient-visit-type-id\";\n visitTypeId = $(input).data(visitTypeDataAttribute);\n }\n });\n return visitTypeId;\n}\nfunction setActiveDateTime() {\n //ie 11 support for forEach\n if (typeof NodeList.prototype.forEach !== 'function') {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n $('#appointment-visittype-1').prop(\"checked\", true);\n $('#appointment-new-doctor').prop(\"checked\", true);\n var date = getUrlParams()[\"dt\"];\n var slotIndex = getUrlParams()[\"si\"];\n\n //Set Active Schedule Day\n var dates = document.querySelectorAll('.appointment-booking-right-rail__times-container');\n var hasSlot = new Boolean(false);\n var patientType = GetPatientType();\n var visitTypeId = GetVisitTypeId(patientType);\n dates.forEach(function (d) {\n var timeSlots = d.querySelectorAll('.appointment-booking-right-rail__times-list ul li');\n if ($(d).data('date') == date && $(d).data('visit-type') == visitTypeId) {\n d.classList.add('active');\n hasSlot = true;\n\n //Set Active Slot\n if (timeSlots) {\n if (slotIndex) {\n timeSlots[slotIndex].classList.add('open-scheduler-epic__selected');\n\n //Set Default Value For Active Slot\n var time = $(timeSlots[slotIndex]).text();\n $('#appointment-selected-time').text(time);\n }\n }\n }\n\n //When a Slot is Selected Set the Value\n timeSlots.forEach(function (ts) {\n ts.addEventListener('click', function (e) {\n e.preventDefault();\n var time = $(ts).text();\n $('#appointment-selected-time').text(time);\n });\n });\n });\n if (hasSlot == false) {\n $('.appointment-booking__noslots').show();\n } else {\n $('.appointment-booking__noslots').hide();\n }\n hasSlot = false;\n}\nfunction getUrlParams() {\n var params = {};\n var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {\n params[key] = value;\n });\n return params;\n}\nfunction BindVisitTypes() {\n var hasSlot = new Boolean(false);\n var patientType = GetPatientType();\n var visitTypeId = GetVisitTypeId(patientType);\n var dates = document.querySelectorAll('.appointment-booking-right-rail__times-container');\n var patientTypeSelected = document.querySelectorAll('.appointment-booking__question-1 input');\n patientTypeSelected.forEach(function (input) {\n input.addEventListener('click', function (e) {\n var selectedPatientType = $(this).data('patient-visit-type');\n var selectedVisitTypeId = GetVisitTypeId(selectedPatientType);\n if (visitTypeId != selectedVisitTypeId) {\n ClearActiveCalendarDay();\n }\n dates.forEach(function (d) {\n //get the selected date from the query string the first time when calendar isnt created. Otherwise, get it fromt the calendar\n var selectedDate;\n if ($('.vanilla-calendar-date--selected').length > 0) {\n selectedDate = $('.vanilla-calendar-date--selected').data(\"calendar-data\").date;\n } else {\n selectedDate = getUrlParams()[\"dt\"];\n }\n\n //set active date\n if ($(d).data('date') == selectedDate && $(d).data('visit-type') == selectedVisitTypeId) {\n d.classList.add('active');\n hasSlot = true;\n } else {\n d.classList.remove('active');\n }\n });\n if (hasSlot == false) {\n $('.appointment-booking__noslots').show();\n } else {\n $('.appointment-booking__noslots').hide();\n }\n hasSlot = false;\n });\n });\n var visitTypeSelected = document.querySelectorAll('.appointment-booking__question-3 input');\n visitTypeSelected.forEach(function (input) {\n input.addEventListener('click', function (e) {\n ClearActiveCalendarDay();\n var selectedPatientType = GetPatientType();\n var selectedVisitTypeId = $(this).data(selectedPatientType + '-patient-visit-type-id');\n dates.forEach(function (d) {\n //get the selected date from the query string the first time when calendar isnt created. Otherwise, get it fromt the calendar\n var selectedDate;\n if ($('.vanilla-calendar-date--selected').length > 0) {\n selectedDate = $('.vanilla-calendar-date--selected').data(\"calendar-data\").date;\n } else {\n selectedDate = getUrlParams()[\"dt\"];\n }\n\n //set active date\n if ($(d).data('date') == selectedDate && $(d).data('visit-type') == selectedVisitTypeId) {\n d.classList.add('active');\n hasSlot = true;\n } else {\n d.classList.remove('active');\n }\n });\n if (hasSlot == false) {\n $('.appointment-booking__noslots').show();\n } else {\n $('.appointment-booking__noslots').hide();\n }\n hasSlot = false;\n if ($(input).data('is-telehealth') == \"True\") {\n $('.appointment-booking__map').hide();\n $('.appointment-details__information-address').hide();\n $('.appointment-details__information-telehealth').show();\n } else {\n $('.appointment-booking__map').show();\n $('.appointment-details__information-address').show();\n $('.appointment-details__information-telehealth').hide();\n }\n\n //load new questions if current visit type is not equal to the one selected\n var openSchedulerId = $('#appointment-booking-form-questions-inner-container').data(\"open-scheduler-id\");\n var apiUrl = \"/api/sitecore/Appointment/QuestionsPartial?\" + \"OpenSchedulerId=\" + openSchedulerId + \"&VisitTypeId=\" + selectedVisitTypeId + \"&PatientType=\" + patientType;\n var questionsOuterContainer = $('#appointment-booking-form-questions-outer-container');\n var questionsInnerContainer = $('#appointment-booking-form-questions-inner-container');\n var gatewayAlert = document.querySelector('.appointment-booking__alert');\n gatewayAlert.classList.remove(\"active\");\n var step1FormBtn = document.querySelector('.appointment-booking__step1-form-continue');\n step1FormBtn.classList.add('appointment-booking__btn-disabled');\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n $(questionsInnerContainer).remove();\n var $container = $(questionsOuterContainer);\n $container.append(xhttp.responseText);\n step1FormBtn.classList.remove('appointment-booking__btn-disabled');\n GatewayQuestionsBind();\n }\n });\n });\n });\n}\nfunction BookAppointment() {\n //ie 11 support for forEach\n if (typeof NodeList.prototype.forEach !== 'function') {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n var patientType = GetPatientType();\n var visitTypeId = GetVisitTypeId(patientType);\n var isTelehealth;\n var visitTypeSelected = document.querySelectorAll('.appointment-booking__question-3 input');\n visitTypeSelected.forEach(function (input) {\n if (input.checked) {\n isTelehealth = $(input).data('is-telehealth');\n }\n });\n var genderSelected;\n var genderChecked = document.querySelectorAll('.appointment-booking__gender-container input');\n genderChecked.forEach(function (input) {\n if (input.checked) {\n genderSelected = input.value;\n }\n });\n var departmentId;\n var multipleDepartments = $('#openSchedulerEpicDropdownPhysicianAppointment');\n if (multipleDepartments.length) {\n departmentId = $('#openSchedulerEpicDropdownPhysicianAppointment').find(\":selected\").data(\"provider-department-id\");\n } else {\n departmentId = $('#appointment-booking-one-department').data(\"provider-department-id\");\n }\n var contextId = getUrlParams()[\"id\"];\n var departmentId = departmentId;\n var physicianId = contextId;\n var visitTypeId = visitTypeId;\n var date = $('.open-scheduler-epic__selected').data('date');\n var time = $('.open-scheduler-epic__selected').data('time');\n var comments = $('#appointment-reason').val();\n var groupNumber = $('#appointment-booking-group-number').val();\n var insuranceName = $('#appointment-booking-insurance-name').val();\n var MemberNumber = $('#appointment-booking-memberid').val();\n var payorId = $('#appointment-booking-insurance').find(\":selected\").data(\"payorid\");\n var SubscriberDateOfBirth = $('#appointment-booking-subscriber-sub-date-birth').val();\n var subscriberName = $('#appointment-booking-subscriber-name').val();\n var firstName = $('#appointment-booking-first-name').val();\n var lastName = $('#appointment-booking-last-name').val();\n var email = $('#appointment-booking-email').val();\n var dateOfBirth = $('#appointment-booking-dob').val();\n var gender = genderSelected;\n var street = $('#appointment-booking-street').val();\n var city = $('#appointment-booking-city').val();\n var state = $('#appointment-booking-state').val();\n var zipcode = $('#appointment-booking-zip').val();\n var phoneNumber = $('#appointment-booking-phone').val();\n var isTelehealth = isTelehealth;\n var apiUrl = \"/api/sitecore/Appointment/ScheduleAppointment?\" + \"Captcha=\" + grecaptcha.getResponse() + \"&DepartmentId=\" + departmentId + \"&PhysicianId=\" + physicianId + \"&VisitTypeId=\" + visitTypeId + \"&Date=\" + date + \"&Time=\" + time + \"&Comments=\" + comments + \"&GroupNumber=\" + groupNumber + \"&InsuranceName=\" + insuranceName + \"&MemberNumber=\" + MemberNumber + \"&PayorID=\" + payorId + \"&SubscriberDateOfBirth=\" + SubscriberDateOfBirth + \"&SubscriberName=\" + subscriberName + \"&FirstName=\" + firstName + \"&LastName=\" + lastName + \"&Email=\" + email + \"&DateOfBirth=\" + dateOfBirth + \"&Gender=\" + gender + \"&Street=\" + street + \"&City=\" + city + \"&State=\" + state + \"&Zipcode=\" + zipcode + \"&PhoneNumber=\" + phoneNumber + \"&IsTelehealth=\" + isTelehealth;\n var ScheduleAppointmentOuterContainer = $('#appointment-booking-form-outer-container');\n var ScheduleAppointmentInnerContainer = $('#appointment-booking-form-inner-container');\n if (grecaptcha && grecaptcha.getResponse().length > 0) {\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n $(ScheduleAppointmentInnerContainer).remove();\n var $container = $(ScheduleAppointmentOuterContainer);\n $container.append(xhttp.responseText);\n var appointmentStep = document.querySelectorAll('.appointment-booking__step');\n appointmentStep[2].classList.add('active');\n $('.appointment-details__confirmation-text').show();\n }\n });\n }\n}\nfunction appointmentBookingInit() {\n //ie 11 support for forEach\n if (typeof NodeList.prototype.forEach !== 'function') {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n var appointmentNav = document.querySelectorAll('.appointment-booking__navigation li');\n var appointmentStep = document.querySelectorAll('.appointment-booking__step');\n var step1FormBtn = document.querySelector('.appointment-booking__step1-form-continue');\n var step2FormBtn = document.querySelector('.appointment-booking__step2-form-continue');\n var step1Question1passed = false;\n var step1Question2passed = false;\n var step1Question3passed = false;\n var gatewayPassed = false;\n var timePassed = false;\n var personalInformationPassed = false;\n var genderPassed = false;\n var addressPassed = false;\n var statePassed = false;\n var insurancePassed = false;\n var notListedPassed = true;\n var allFieldsPassed = false;\n var addressPhone = false;\n var addressZip = false;\n var addressFields = false;\n var personalInfoEmail = false;\n var personalInfoDOB = false;\n var personalInfoNames = false;\n var insuranceDOB = false;\n var insuranceAllOtherFields = false;\n openSchedulerAppointmentPhysicianInit();\n BindVisitTypes();\n var appointmentTextarea = document.querySelectorAll('.appointment-booking__step textarea');\n var appointmentInputs = document.querySelectorAll('.appointment-booking__step input');\n var appointmentSelects = document.querySelectorAll('.appointment-booking__step select');\n appointmentTextarea.forEach(function (input) {\n input.addEventListener(\"input\", function () {\n if ($(this).closest('div').find('.appointment-booking__question-error').hasClass('active')) {\n $(this).closest('div').find('.appointment-booking__question-error').removeClass('active');\n }\n if ($(this).hasClass('error')) {\n $(this).removeClass('error');\n }\n });\n });\n appointmentInputs.forEach(function (input) {\n input.addEventListener(\"input\", function () {\n if (input.getAttribute('name') == 'appointment-gender') {\n if ($(this).closest('.appointment-booking__gender-container').find('.appointment-booking__question-error').hasClass('active')) {\n $(this).closest('.appointment-booking__gender-container').find('.appointment-booking__question-error').removeClass('active');\n }\n if ($(this).hasClass('error')) {\n $(this).removeClass('error');\n }\n } else if (input.getAttribute('data-group') == 'covid-question') {\n if ($(this).closest('fieldset').find('.appointment-booking__question-error').hasClass('active')) {\n $(this).closest('fieldset').find('.appointment-booking__question-error').removeClass('active');\n }\n if ($(this).hasClass('error')) {\n $(this).removeClass('error');\n }\n } else {\n if ($(this).closest('div').find('.appointment-booking__question-error').hasClass('active')) {\n $(this).closest('div').find('.appointment-booking__question-error').removeClass('active');\n }\n if ($(this).hasClass('error')) {\n $(this).removeClass('error');\n }\n }\n });\n });\n appointmentSelects.forEach(function (input) {\n input.addEventListener(\"input\", function () {\n if ($(this).closest('div').find('.appointment-booking__question-error').hasClass('active')) {\n $(this).closest('div').find('.appointment-booking__question-error').removeClass('active');\n }\n if ($(this).hasClass('error')) {\n $(this).removeClass('error');\n }\n });\n });\n function openSchedulerAppointmentPhysicianInit() {\n if ($('.appointment-details').length > 0) {\n if ($(\"#openSchedulerEpicDropdownPhysicianAppointment\").length > 0) {\n var AppointmentContainer = document.querySelector('.appointment');\n var AppointmentInnerContainer = document.querySelector('.appointment-booking');\n if ($(\".custom-select-dropdown-open-scheduler\").length > 0) {\n var x, i, j, l, ll, selElmnt, a, b, c;\n /*look for any elements with the class \"custom-select\":*/\n x = document.getElementsByClassName(\"custom-select-dropdown-open-scheduler\");\n l = x.length;\n for (i = 0; i < l; i++) {\n selElmnt = x[i].getElementsByTagName(\"select\")[0];\n ll = selElmnt.length;\n /*for each element, create a new DIV that will act as the selected item:*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"class\", \"select-selected\");\n a.id = selElmnt.options[selElmnt.selectedIndex].id;\n a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n x[i].appendChild(a);\n /*for each element, create a new DIV that will contain the option list:*/\n b = document.createElement(\"DIV\");\n b.setAttribute(\"class\", \"select-items select-hide\");\n for (j = 1; j < ll; j++) {\n /*for each option in the original select element,\r\n create a new DIV that will act as an option item:*/\n c = document.createElement(\"DIV\");\n c.innerHTML = selElmnt.options[j].innerHTML;\n c.id = selElmnt.options[j].id;\n c.addEventListener(\"click\", function (e) {\n /*when an item is clicked, update the original select box,\r\n and the selected item:*/\n var y, i, k, s, h, sl, yl;\n s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n sl = s.length;\n h = this.parentNode.previousSibling;\n var selectedOption = document.getElementById(\"content-\" + this.id);\n $(\".dropdown-select-content > div\").removeClass(\"active\");\n $(selectedOption).addClass(\"active\");\n for (i = 0; i < sl; i++) {\n if (s.options[i].innerHTML == this.innerHTML) {\n s.selectedIndex = i;\n h.innerHTML = this.innerHTML;\n y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n yl = y.length;\n for (k = 0; k < yl; k++) {\n y[k].removeAttribute(\"class\");\n }\n this.setAttribute(\"class\", \"same-as-selected\");\n break;\n }\n }\n h.click();\n\n //Disable subsequent clicks\n x[0].setAttribute(\"style\", \"pointer-events:none;\");\n\n //Get Scehdule Data\n\n //need to force the updated select option on click\n $('#openSchedulerEpicDropdownPhysicianAppointment').get(0).selectedIndex = i;\n var departmentId = $('#openSchedulerEpicDropdownPhysicianAppointment').find(\":selected\").data(\"provider-department-id\");\n var physicianId = $('#openSchedulerEpicDropdownPhysicianAppointment').find(\":selected\").data(\"physician-id\");\n var dt = $('#openSchedulerEpicDropdownPhysicianAppointment').find(\":selected\").data(\"dt\");\n var apiUrl = \"/api/sitecore/Appointment/AppointmentPartial?PhysicianId=\" + physicianId + \"&DepartmentId=\" + departmentId + \"&Date=\" + dt;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n AppointmentInnerContainer.remove();\n var $container = $(AppointmentContainer);\n $container.append(xhttp.responseText);\n setActiveDateTime();\n appointmentBookingInit();\n\n //re-active captcha\n if ($('#physicianappointmentcaptcha').length) {\n var siteKey = $('#physicianappointmentcaptcha').data('sitekey');\n grecaptcha.render('physicianappointmentcaptcha', {\n 'sitekey': '' + siteKey + ''\n });\n }\n }\n });\n });\n b.appendChild(c);\n }\n x[i].appendChild(b);\n a.addEventListener(\"click\", function (e) {\n /*when the select box is clicked, close any other select boxes,\r\n and open/close the current select box:*/\n e.stopPropagation();\n closeAllSelect(this);\n this.nextSibling.classList.toggle(\"select-hide\");\n this.classList.toggle(\"select-arrow-active\");\n });\n }\n function closeAllSelect(elmnt) {\n /*a function that will close all select boxes in the document,\r\n except the current select box:*/\n var x,\n y,\n i,\n xl,\n yl,\n arrNo = [];\n x = document.getElementsByClassName(\"select-items\");\n y = document.getElementsByClassName(\"select-selected\");\n xl = x.length;\n yl = y.length;\n for (i = 0; i < yl; i++) {\n if (elmnt == y[i]) {\n arrNo.push(i);\n } else {\n y[i].classList.remove(\"select-arrow-active\");\n }\n }\n for (i = 0; i < xl; i++) {\n if (arrNo.indexOf(i)) {\n x[i].classList.add(\"select-hide\");\n }\n }\n }\n /*if the user clicks anywhere outside the select box,\r\n then close all select boxes:*/\n document.addEventListener(\"click\", closeAllSelect);\n }\n }\n }\n }\n function errors() {\n var question1Checked = document.querySelectorAll('.appointment-booking__question-1 input');\n var question2Checked = document.querySelector('.appointment-booking__question-2 textArea');\n var question2CheckedValue = question2Checked.value;\n var question3Checked = document.querySelectorAll('.appointment-booking__question-3 input');\n var error1 = document.querySelector('.appointment-booking__question-1 .appointment-booking__question-error');\n var error2 = document.querySelector('.appointment-booking__question-2 .appointment-booking__question-error');\n var error3 = document.querySelector('.appointment-booking__question-3 .appointment-booking__question-error');\n question1Checked.forEach(function (input) {\n if (input.checked) {\n step1Question1passed = true;\n }\n });\n if (step1Question1passed == true) {\n error1.classList.remove('active');\n } else {\n error1.classList.add('active');\n }\n\n //Questoin 2 check\n if (question2CheckedValue.length > 1) {\n error2.classList.remove('active');\n document.querySelector('.appointment-booking__question-2 textarea').classList.remove('error');\n step1Question2passed = true;\n } else {\n error2.classList.add('active');\n document.querySelector('.appointment-booking__question-2 textarea').classList.add('error');\n step1Question2passed = false;\n }\n\n //Question 3 check\n question3Checked.forEach(function (input) {\n if (input.checked) {\n step1Question3passed = true;\n }\n });\n if (step1Question3passed == true) {\n error3.classList.remove('active');\n } else {\n error3.classList.add('active');\n }\n\n //Check to make sure all the gateway questions are answered\n var gatewayQuestionsCheck = document.querySelectorAll('.appointment-booking__current-health-info fieldset');\n var a = 0;\n gatewayQuestionsCheck.forEach(function (question) {\n var test = question.querySelectorAll('input');\n test.forEach(function (fdsa) {\n if (fdsa.checked == false) {\n fdsa.parentElement.querySelector('.appointment-booking__question-error').classList.add('active');\n }\n });\n for (var l = 0, length = test.length; l < length; l++) {\n if (test[l].checked) {\n var x = test[l].getAttribute('data-value');\n if (x !== 'exit') {\n test[l].parentElement.querySelector('.appointment-booking__question-error').classList.remove('active');\n a++;\n }\n }\n }\n if (a == gatewayQuestionsCheck.length) {\n gatewayQuestionsCheck.forEach(function (error) {\n error.querySelector('.appointment-booking__question-error').classList.remove('active');\n });\n gatewayPassed = true;\n }\n });\n\n //Check to see if a time is selected in the right rail\n var timeSlot = document.querySelectorAll('.appointment-booking-right-rail__times-list ul li');\n var timeSlotError = document.querySelector('.appointment-booking-right-rail__times .appointment-booking__question-error');\n timeSlot.forEach(function (time) {\n if (time.classList.contains('open-scheduler-epic__selected')) {\n timePassed = true;\n }\n });\n if (timePassed == true) {\n timeSlotError.classList.remove('active');\n } else {\n timeSlotError.classList.add('active');\n }\n }\n var timeSlot = document.querySelectorAll('.appointment-booking-right-rail__times-list ul li');\n timeSlot.forEach(function (time) {\n time.addEventListener('click', function () {\n timeSlot.forEach(function (time) {\n time.classList.remove('open-scheduler-epic__selected');\n });\n time.classList.add('open-scheduler-epic__selected');\n });\n });\n GatewayQuestionsBind();\n function errorsStep2(e) {\n var piTop = document.querySelectorAll('.appointment-booking__pi-top input');\n var genderChecked = document.querySelectorAll('.appointment-booking__gender-container input');\n var state = document.getElementById('appointment-booking-state');\n var address = document.querySelectorAll('.appointment-booking__address-info input');\n var captchaElement = document.getElementById('physicianappointmentcaptcha');\n var captchaError = document.querySelector('.appointment-booking__captcha-error');\n\n //Personal Information top inputs error check\n piTop.forEach(function (input) {\n var piTopValue = input.value;\n if (input.getAttribute('type') == 'email') {\n var re = new RegExp(input.getAttribute('data-email-re'), 'im');\n if (input.value.match(re)) {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n personalInfoEmail = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n personalInfoEmail = false;\n }\n } else if (input.getAttribute('name') == 'appointment-booking-dob') {\n var dateRe = new RegExp(input.getAttribute('data-date-re'));\n var inputValue = input.value;\n if (inputValue.match(dateRe)) {\n var today = new Date();\n var dd = today.getDate();\n var mm = today.getMonth() + 1;\n var yyyy = today.getFullYear();\n if (dd < 10) {\n dd = '0' + dd;\n }\n if (mm < 10) {\n mm = '0' + mm;\n }\n var today = yyyy + '-' + mm + '-' + dd;\n var splitDate1 = inputValue.split('/');\n var year1 = splitDate1[2];\n var month1 = splitDate1[0];\n var day1 = splitDate1[1];\n var enteredDate = year1 + '-' + month1 + '-' + day1;\n var enteredDate1 = new Date(enteredDate);\n var today1 = new Date(today);\n var dateInPast = function dateInPast(enteredDate1, today1) {\n if (enteredDate1.setHours(0, 0, 0, 0) <= today1.setHours(0, 0, 0, 0)) {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n personalInfoDOB = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n personalInfoDOB = false;\n }\n };\n dateInPast(enteredDate1, today1);\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n personalInfoDOB = false;\n }\n } else {\n if (piTopValue.length > 1) {\n var nameRe = new RegExp(input.getAttribute('data-name-re'));\n if (!nameRe.test(piTopValue)) {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n personalInfoNames = false;\n } else {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n personalInfoNames = true;\n }\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n personalInfoNames = false;\n }\n }\n if (personalInfoEmail == true && personalInfoDOB == true && personalInfoNames == true) {\n personalInformationPassed = true;\n }\n });\n //Gender radio inputs error check\n var gError = document.querySelector('.appointment-booking__gender-container .appointment-booking__question-error');\n genderChecked.forEach(function (input) {\n if (input.checked) {\n genderPassed = true;\n }\n });\n if (genderPassed == true) {\n gError.classList.remove('active');\n } else {\n gError.classList.add('active');\n }\n\n //State drop down error check\n\n if (!state.value == \"\") {\n state.nextElementSibling.classList.remove('active');\n state.classList.remove('error');\n statePassed = true;\n } else {\n state.nextElementSibling.classList.add('active');\n state.classList.add('error');\n statePassed = false;\n }\n address.forEach(function (input) {\n var addressValue = input.value;\n if (input.getAttribute('type') == 'tel') {\n var phoneRe = new RegExp(input.getAttribute('data-phone-re'), 'im');\n if (input.value.match(phoneRe)) {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n addressPhone = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n addressPhone = false;\n }\n } else if (input.getAttribute('data-type') == 'zipcode') {\n var zipRe = new RegExp(input.getAttribute('data-zipcode-re'));\n if (input.value.match(zipRe)) {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n addressZip = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n addressZip = false;\n }\n } else {\n if (addressValue.length > 1) {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n addressFields = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n addressFields = false;\n }\n }\n });\n if (addressPhone == true && addressZip == true && addressFields == true && statePassed == true) {\n addressPassed = true;\n }\n\n //Insurance information check\n var iCompany = document.getElementById('appointment-booking-insurance');\n if (!iCompany.value == '') {\n iCompany.nextElementSibling.classList.remove('active');\n iCompany.classList.remove('error');\n } else {\n iCompany.nextElementSibling.classList.add('active');\n iCompany.classList.add('error');\n }\n var allInsFieldsShow = document.querySelector('.appointment-booking__all-other-fields');\n var allInsFields = document.querySelectorAll('.appointment-booking__all-other-fields input');\n if (allInsFieldsShow.classList.contains('show')) {\n allInsFields.forEach(function (input) {\n if (input.getAttribute('name') == 'appointment-booking-subscriber-sub-date-birth') {\n var dateRe1 = new RegExp(input.getAttribute('data-subdate-re'));\n var allFieldValue = input.value;\n if (allFieldValue.match(dateRe1)) {\n var today = new Date();\n var dd = today.getDate();\n var mm = today.getMonth() + 1;\n var yyyy = today.getFullYear();\n if (dd < 10) {\n dd = '0' + dd;\n }\n if (mm < 10) {\n mm = '0' + mm;\n }\n var today = yyyy + '-' + mm + '-' + dd;\n var splitDate1 = allFieldValue.split('/');\n var year1 = splitDate1[2];\n var month1 = splitDate1[0];\n var day1 = splitDate1[1];\n var enteredDate = year1 + '-' + month1 + '-' + day1;\n var enteredDate1 = new Date(enteredDate);\n var today1 = new Date(today);\n var dateInPast = function dateInPast(enteredDate1, today1) {\n if (enteredDate1.setHours(0, 0, 0, 0) <= today1.setHours(0, 0, 0, 0)) {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n insuranceDOB = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n insuranceDOB = false;\n }\n };\n dateInPast(enteredDate1, today1);\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n insuranceDOB = false;\n }\n } else {\n if (!input.value == '') {\n input.nextElementSibling.classList.remove('active');\n input.classList.remove('error');\n insuranceAllOtherFields = true;\n } else {\n input.nextElementSibling.classList.add('active');\n input.classList.add('error');\n insuranceAllOtherFields = false;\n }\n }\n });\n if (insuranceDOB == true && insuranceAllOtherFields == true) {\n allFieldsPassed = true;\n }\n }\n var notListed = document.querySelector('.appointment-booking__insurance-name');\n var notListedInput = document.querySelector('.appointment-booking__insurance-name input');\n if (notListed.classList.contains('show')) {\n if (notListedInput.value.length > 1) {\n notListedInput.nextElementSibling.classList.remove('active');\n notListedInput.classList.remove('error');\n notListedPassed = true;\n } else {\n notListedInput.nextElementSibling.classList.add('active');\n notListedInput.classList.add('error');\n notListedPassed = false;\n }\n }\n if (captchaElement) {\n if (!grecaptcha.getResponse().length > 0) {\n captchaError.classList.add('active');\n } else {\n captchaError.classList.remove('active');\n }\n }\n if (notListedPassed == true && allFieldsPassed == true) {\n insurancePassed = true;\n }\n }\n\n //Check to see what value the Insurance drop down has\n var iCompany = document.getElementById('appointment-booking-insurance');\n var iName = document.querySelector('.appointment-booking__insurance-name');\n var allOtherFields = document.querySelector('.appointment-booking__all-other-fields');\n if (iCompany) {\n iCompany.addEventListener('change', function (e) {\n //If dropdown has Not Insured as value hide all the inputs\n if (iCompany.value.toLowerCase() == 'not insured') {\n iName.classList.remove('show');\n allOtherFields.classList.remove('show');\n insurancePassed = true;\n //If the dropdown has Not Listed as value, show the name field and rest of fields\n } else if (iCompany.value.toLowerCase() == '') {\n iName.classList.remove('show');\n allOtherFields.classList.remove('show');\n } else if (iCompany.value.toLowerCase() == 'not listed') {\n iName.classList.add('show');\n allOtherFields.classList.add('show');\n //If dropdown has an insurance company as value, only show the rest of the fields, not the name\n } else {\n iName.classList.remove('show');\n allOtherFields.classList.add('show');\n }\n });\n }\n\n //Check for errors on click of the step navigation and change classes if passed\n var nav0 = document.querySelector('.appointment-booking__step0-continue-nav');\n var nav1 = document.querySelector('.appointment-booking__step1-continue-nav');\n var nav2 = document.querySelector('.appointment-booking__step2-continue-nav');\n var appointmentDetailsSelect = document.querySelector('.appointment-booking-right-rail .appointment-details__locations');\n var appoinmentRailCalendar = document.querySelector('.appointment-booking-right-rail__calendar');\n var appointmentRailTimes = document.querySelector('.appointment-booking-right-rail__times');\n var appointmentRailInformation = document.querySelector('.appointment-booking-right-rail .appointment-details__information');\n appointmentDetailsSelect.classList.add('active');\n appoinmentRailCalendar.classList.add('active');\n appointmentRailTimes.classList.add('active');\n\n //Selecting Back, just reload the page\n function navigationBack(event) {\n window.location.reload();\n }\n\n //Click step 1 continue button\n if (step1FormBtn) {\n step1FormBtn.addEventListener('click', function (e) {\n errors(e);\n if (step1FormBtn.classList.contains('appointment-booking__btn-disabled')) {\n e.preventDefault();\n } else {\n if (step1Question1passed == true && step1Question2passed == true && step1Question3passed == true && gatewayPassed == true && timePassed == true) {\n if (appointmentDetailsSelect) {\n appointmentDetailsSelect.classList.remove('active');\n }\n if (appoinmentRailCalendar) {\n appoinmentRailCalendar.classList.remove('active');\n }\n if (appointmentRailTimes) {\n appointmentRailTimes.classList.remove('active');\n }\n if (appointmentRailInformation) {\n appointmentRailInformation.classList.add('active');\n }\n appointmentStep.forEach(function (step) {\n step.classList.remove('active');\n });\n appointmentStep[1].classList.add('active');\n window.scroll({\n top: 0,\n behavior: 'smooth'\n });\n appointmentNav.forEach(function (item) {\n item.classList.remove('active');\n });\n nav0.classList.add('complete');\n nav1.classList.add('active');\n nav0.addEventListener('click', navigationBack, true);\n //Hide dropdown in the right rail\n step1FormBtn.classList.add('hide');\n step2FormBtn.classList.remove('hide');\n } else {\n window.scroll({\n top: 0,\n behavior: 'smooth'\n });\n }\n }\n });\n }\n if (step2FormBtn) {\n step2FormBtn.addEventListener('click', function (e) {\n errorsStep2();\n if (personalInformationPassed == true && genderPassed == true && addressPassed == true && insurancePassed == true && grecaptcha.getResponse().length > 0) {\n var rightRail = document.querySelector('.appointment-booking-right-rail');\n rightRail.classList.add('hide');\n appointmentStep.forEach(function (step) {\n step.classList.remove('active');\n });\n window.scroll({\n top: 0,\n behavior: 'smooth'\n });\n appointmentNav.forEach(function (item) {\n item.classList.remove('active');\n item.classList.remove('complete');\n });\n nav0.classList.add('complete');\n nav1.classList.add('complete');\n nav2.classList.add('active');\n nav0.removeEventListener('click', navigationBack, true);\n step2FormBtn.classList.add('hide');\n BookAppointment();\n } else {\n window.scroll({\n top: 0,\n behavior: 'smooth'\n });\n }\n });\n }\n}\n$(document).ready(function () {\n var isAppointmentPage = document.querySelector('.appointment-booking');\n if (isAppointmentPage) {\n setActiveDateTime();\n appointmentBookingInit();\n }\n});","\"use strict\";\n\n/*\r\n Vanilla AutoComplete v0.1\r\n Copyright (c) 2019 Mauro Marssola\r\n GitHub: https://github.com/marssola/vanilla-calendar\r\n License: http://www.opensource.org/licenses/mit-license.php\r\n*/\n\nvar VanillaCalendar = function () {\n function VanillaCalendar(options) {\n function addEvent(el, type, handler) {\n if (!el) return;\n if (el.attachEvent) el.attachEvent('on' + type, handler);else el.addEventListener(type, handler);\n }\n function removeEvent(el, type, handler) {\n if (!el) return;\n if (el.detachEvent) el.detachEvent('on' + type, handler);else el.removeEventListener(type, handler);\n }\n var opts = {\n selector: null,\n datesFilter: false,\n pastDates: true,\n availableWeekDays: [],\n availableDates: [],\n date: new Date(),\n todaysDate: new Date(),\n button_prev: null,\n button_next: null,\n month: null,\n month_label: null,\n onSelect: function onSelect(data, elem) {},\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortWeekday: ['SU', 'M', 'T', 'W', 'TH', 'F', 'S']\n };\n for (var k in options) if (opts.hasOwnProperty(k)) opts[k] = options[k];\n var element = document.querySelector(opts.selector);\n if (!element) return;\n var getWeekDay = function getWeekDay(day) {\n return ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'][day];\n };\n var createDay = function createDay(date) {\n var newDayElem = document.createElement('div');\n var dateElem = document.createElement('span');\n dateElem.innerHTML = date.getDate();\n newDayElem.className = 'vanilla-calendar-date';\n newDayElem.setAttribute('data-calendar-date', date);\n var available_week_day = opts.availableWeekDays.filter(function (f) {\n return f.day === date.getDay() || f.day === getWeekDay(date.getDay());\n });\n var available_date = opts.availableDates.filter(function (f) {\n return f.date === date.getFullYear() + '-' + String(date.getMonth() + 1).padStart('2', 0) + '-' + String(date.getDate()).padStart('2', 0);\n });\n if (date.getDate() === 1) {\n newDayElem.style.marginLeft = date.getDay() * 14.28 + '%';\n }\n if (opts.date.getTime() <= opts.todaysDate.getTime() - 1 && !opts.pastDates) {\n newDayElem.classList.add('vanilla-calendar-date--disabled');\n } else {\n if (opts.datesFilter) {\n if (available_week_day.length) {\n newDayElem.classList.add('vanilla-calendar-date--active');\n newDayElem.setAttribute('data-calendar-data', JSON.stringify(available_week_day[0]));\n newDayElem.setAttribute('data-calendar-status', 'active');\n } else if (available_date.length) {\n newDayElem.classList.add('vanilla-calendar-date--active');\n newDayElem.setAttribute('data-calendar-data', JSON.stringify(available_date[0]));\n newDayElem.setAttribute('data-calendar-status', 'active');\n } else {\n newDayElem.classList.add('vanilla-calendar-date--disabled');\n }\n } else {\n newDayElem.classList.add('vanilla-calendar-date--active');\n newDayElem.setAttribute('data-calendar-status', 'active');\n }\n }\n if (date.toString() === opts.todaysDate.toString()) {\n newDayElem.classList.add('vanilla-calendar-date--today');\n }\n newDayElem.appendChild(dateElem);\n opts.month.appendChild(newDayElem);\n };\n var removeActiveClass = function removeActiveClass() {\n var selected = Array.prototype.slice.call(document.querySelectorAll('.vanilla-calendar-date--selected'));\n selected.forEach(function (s) {\n s.classList.remove('vanilla-calendar-date--selected');\n });\n };\n var selectDate = function selectDate() {\n var activeDates = Array.prototype.slice.call(element.querySelectorAll('[data-calendar-status=active]'));\n if (activeDates && activeDates.length > 0) {\n activeDates.forEach(function (date) {\n date.addEventListener('click', function () {\n removeActiveClass();\n var datas = this.dataset;\n var data = {};\n if (datas.calendarDate) data.date = datas.calendarDate;\n if (datas.calendarData) data.data = JSON.parse(datas.calendarData);\n opts.onSelect(data, this);\n this.classList.add('vanilla-calendar-date--selected');\n });\n });\n }\n };\n var createMonth = function createMonth() {\n clearCalendar();\n var currentMonth = opts.date.getMonth();\n while (opts.date.getMonth() === currentMonth) {\n createDay(opts.date);\n opts.date.setDate(opts.date.getDate() + 1);\n }\n opts.date.setDate(1);\n opts.date.setMonth(opts.date.getMonth() - 1);\n opts.month_label.innerHTML = opts.months[opts.date.getMonth()] + ' ' + opts.date.getFullYear();\n selectDate();\n };\n var monthPrev = function monthPrev() {\n opts.date.setMonth(opts.date.getMonth() - 1);\n createMonth();\n };\n var monthNext = function monthNext() {\n opts.date.setMonth(opts.date.getMonth() + 1);\n createMonth();\n };\n var clearCalendar = function clearCalendar() {\n opts.month.innerHTML = '';\n };\n var createCalendar = function createCalendar() {\n document.querySelector(opts.selector).innerHTML = \"
\" + \"\" + \"
\" + \"\" + \"
\" + \"
\" + \"
\";\n };\n var setWeekDayHeader = function setWeekDayHeader() {\n document.querySelector(opts.selector + ' .vanilla-calendar-week').innerHTML = \"\" + opts.shortWeekday[0] + \"\" + \"\" + opts.shortWeekday[1] + \"\" + \"\" + opts.shortWeekday[2] + \"\" + \"\" + opts.shortWeekday[3] + \"\" + \"\" + opts.shortWeekday[4] + \"\" + \"\" + opts.shortWeekday[5] + \"\" + \"\" + opts.shortWeekday[6] + \"\";\n };\n this.init = function () {\n createCalendar();\n opts.button_prev = document.querySelector(opts.selector + ' [data-calendar-toggle=previous]');\n opts.button_next = document.querySelector(opts.selector + ' [data-calendar-toggle=next]');\n opts.month = document.querySelector(opts.selector + ' [data-calendar-area=month]');\n opts.month_label = document.querySelector(opts.selector + ' [data-calendar-label=month]');\n opts.date.setDate(1);\n createMonth();\n setWeekDayHeader();\n addEvent(opts.button_prev, 'click', monthPrev);\n addEvent(opts.button_next, 'click', monthNext);\n };\n this.destroy = function () {\n removeEvent(opts.button_prev, 'click', monthPrev);\n removeEvent(opts.button_next, 'click', monthNext);\n clearCalendar();\n document.querySelector(opts.selector).innerHTML = '';\n };\n this.reset = function () {\n this.destroy();\n this.init();\n };\n this.set = function (options) {\n for (var _k in options) if (opts.hasOwnProperty(_k)) opts[_k] = options[_k];\n createMonth();\n // this.reset()\n };\n this.init();\n }\n return VanillaCalendar;\n}();\n\n// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart\nif (!String.prototype.padStart) {\n String.prototype.padStart = function padStart(targetLength, padString) {\n targetLength = targetLength >> 0; //truncate if number or convert non-number to 0;\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return padString.slice(0, targetLength) + String(this);\n }\n };\n}\nwindow.VanillaCalendar = VanillaCalendar;","\"use strict\";\n\n$(document).ready(function () {\n openSchedulerDetailsPhysicianInit();\n openSchedulerDetailsLocationInit();\n});\nfunction openSchedulerDetailsPhysicianInit() {\n if ($('.open-scheduler-epic-physicians-detail-container').length > 0) {\n //Get Scehdule Data\n\n //First Check to see if this is a multi department provider and grab selected value. else get fallback\n var departmentId;\n if ($('.open-scheduler-epic-physicians-detail-container').length > 0) {\n var depDropDown = $('#openSchedulerEpicDropdownPhysician');\n if ($(depDropDown).length > 0) {\n departmentId = $(depDropDown).find(\":selected\").data(\"provider-department-id\");\n } else {\n departmentId = $('#view-all-appointments').data(\"provider-department-id\");\n }\n }\n var physicianId;\n var slotDate;\n if ($('#view-all-appointments').length > 0) {\n physicianId = $('#view-all-appointments').data(\"physician-id\");\n slotDate = $('#view-all-appointments').data(\"slot-date\");\n }\n var viewAllLink = document.getElementById('view-all-appointments');\n if ($(viewAllLink).length > 0) {\n viewAllLink.addEventListener('click', function (e) {\n e.preventDefault();\n window.location.href = '/physicians/appointment?id=' + physicianId + '&dep=' + departmentId + '&dt=' + slotDate;\n });\n }\n var slotButtons = document.querySelectorAll('.open-scheduler-epic__time');\n if ($(slotButtons).length > 0) {\n //ie 11 support for forEach\n if (typeof NodeList.prototype.forEach !== 'function') {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n slotButtons.forEach(function (btn) {\n btn.addEventListener('click', function () {\n var slotDate = $(this).data('slot-date');\n var slotIndex = $(this).data('slot-index');\n window.location.href = '/physicians/appointment?id=' + physicianId + '&dep=' + departmentId + '&dt=' + slotDate + '&si=' + slotIndex;\n });\n });\n }\n\n //fallback when no slots book appointment button is shown\n var bookAppointmentButton = document.getElementById('book-appointment-button');\n if ($(bookAppointmentButton).length > 0) {\n bookAppointmentButton.addEventListener('click', function (e) {\n e.preventDefault();\n var depId = $(this).data('provider-department-id');\n var physId = $(this).data('physician-id');\n window.location.href = '/physicians/appointment?id=' + physId + '&dep=' + depId;\n });\n }\n }\n if ($(\"#openSchedulerEpicDropdownPhysician\").length > 0) {\n var OpenSchedulerContainer = document.querySelector('.open-scheduler-epic-physicians-detail-container');\n var OpenSchedulerPhysicianDetails = document.querySelector('.open-scheduler-epic-physicians-detail-inner-container');\n if ($(\".custom-select-dropdown-open-scheduler\").length > 0) {\n var x, i, j, l, ll, selElmnt, a, b, c;\n /*look for any elements with the class \"custom-select\":*/\n x = document.getElementsByClassName(\"custom-select-dropdown-open-scheduler\");\n l = x.length;\n for (i = 0; i < l; i++) {\n selElmnt = x[i].getElementsByTagName(\"select\")[0];\n ll = selElmnt.length;\n /*for each element, create a new DIV that will act as the selected item:*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"class\", \"select-selected\");\n a.id = selElmnt.options[selElmnt.selectedIndex].id;\n a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n x[i].appendChild(a);\n /*for each element, create a new DIV that will contain the option list:*/\n b = document.createElement(\"DIV\");\n b.setAttribute(\"class\", \"select-items select-hide\");\n for (j = 1; j < ll; j++) {\n /*for each option in the original select element,\r\n create a new DIV that will act as an option item:*/\n c = document.createElement(\"DIV\");\n c.innerHTML = selElmnt.options[j].innerHTML;\n c.id = selElmnt.options[j].id;\n c.addEventListener(\"click\", function (e) {\n /*when an item is clicked, update the original select box,\r\n and the selected item:*/\n var y, i, k, s, h, sl, yl;\n s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n sl = s.length;\n h = this.parentNode.previousSibling;\n var selectedOption = document.getElementById(\"content-\" + this.id);\n $(\".dropdown-select-content > div\").removeClass(\"active\");\n $(selectedOption).addClass(\"active\");\n for (i = 0; i < sl; i++) {\n if (s.options[i].innerHTML == this.innerHTML) {\n s.selectedIndex = i;\n h.innerHTML = this.innerHTML;\n y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n yl = y.length;\n for (k = 0; k < yl; k++) {\n y[k].removeAttribute(\"class\");\n }\n this.setAttribute(\"class\", \"same-as-selected\");\n break;\n }\n }\n h.click();\n\n //Disable subsequent clicks\n x[0].setAttribute(\"style\", \"pointer-events:none;\");\n\n //Get Scehdule Data\n var departmentId = $('#openSchedulerEpicDropdownPhysician').find(\":selected\").data(\"provider-department-id\");\n var physicianId = $('#openSchedulerEpicDropdownPhysician').find(\":selected\").data(\"physician-id\");\n var apiUrl = \"/api/sitecore/physicians/physicianopenscheduler?DepartmentId=\" + departmentId + \"&PhysicianId=\" + physicianId;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n OpenSchedulerPhysicianDetails.remove();\n var $container = $(OpenSchedulerContainer);\n $container.append(xhttp.responseText);\n openSchedulerDetailsPhysicianInit();\n }\n });\n });\n b.appendChild(c);\n }\n x[i].appendChild(b);\n a.addEventListener(\"click\", function (e) {\n /*when the select box is clicked, close any other select boxes,\r\n and open/close the current select box:*/\n e.stopPropagation();\n closeAllSelect(this);\n this.nextSibling.classList.toggle(\"select-hide\");\n this.classList.toggle(\"select-arrow-active\");\n });\n }\n function closeAllSelect(elmnt) {\n /*a function that will close all select boxes in the document,\r\n except the current select box:*/\n var x,\n y,\n i,\n xl,\n yl,\n arrNo = [];\n x = document.getElementsByClassName(\"select-items\");\n y = document.getElementsByClassName(\"select-selected\");\n xl = x.length;\n yl = y.length;\n for (i = 0; i < yl; i++) {\n if (elmnt == y[i]) {\n arrNo.push(i);\n } else {\n y[i].classList.remove(\"select-arrow-active\");\n }\n }\n for (i = 0; i < xl; i++) {\n if (arrNo.indexOf(i)) {\n x[i].classList.add(\"select-hide\");\n }\n }\n }\n /*if the user clicks anywhere outside the select box,\r\n then close all select boxes:*/\n document.addEventListener(\"click\", closeAllSelect);\n }\n }\n}\nfunction openSchedulerDetailsLocationInit() {\n if ($('.open-scheduler-epic-facility-location-detail-container').length > 0) {\n //Get Scehdule Data\n\n //First Check to see if this is a multi department provider and grab selected value. else get fallback\n var departmentId;\n if ($('.open-scheduler-epic-facility-location-detail-container').length > 0) {\n var depDropDown = $('#openSchedulerEpicDropdownLocation');\n if ($(depDropDown).length > 0) {\n departmentId = $(depDropDown).find(\":selected\").data(\"provider-department-id\");\n } else {\n departmentId = $('#view-all-appointments').data(\"provider-department-id\");\n }\n }\n var physicianId;\n var slotDate;\n if ($('#view-all-appointments').length > 0) {\n physicianId = $('#view-all-appointments').data(\"physician-id\");\n slotDate = $('#view-all-appointments').data(\"slot-date\");\n }\n var viewAllLink = document.getElementById('view-all-appointments');\n if ($(viewAllLink).length > 0) {\n viewAllLink.addEventListener('click', function (e) {\n e.preventDefault();\n window.location.href = '/locations/appointment?id=' + physicianId + '&dep=' + departmentId + '&dt=' + slotDate;\n });\n }\n var slotButtons = document.querySelectorAll('.open-scheduler-epic__time');\n if ($(slotButtons).length > 0) {\n //ie 11 support for forEach\n if (typeof NodeList.prototype.forEach !== 'function') {\n NodeList.prototype.forEach = Array.prototype.forEach;\n }\n slotButtons.forEach(function (btn) {\n btn.addEventListener('click', function () {\n var slotDate = $(this).data('slot-date');\n var slotIndex = $(this).data('slot-index');\n window.location.href = '/locations/appointment?id=' + physicianId + '&dep=' + departmentId + '&dt=' + slotDate + '&si=' + slotIndex;\n });\n });\n }\n\n //fallback when no slots book appointment button is shown\n var bookAppointmentButton = document.getElementById('book-appointment-button');\n if ($(bookAppointmentButton).length > 0) {\n bookAppointmentButton.addEventListener('click', function (e) {\n e.preventDefault();\n var depId = $(this).data('provider-department-id');\n var physId = $(this).data('physician-id');\n window.location.href = '/locations/appointment?id=' + physId + '&dep=' + depId;\n });\n }\n }\n if ($(\"#openSchedulerEpicDropdownLocation\").length > 0) {\n var OpenSchedulerContainer = document.querySelector('.open-scheduler-epic-facility-location-detail-container');\n var OpenSchedulerFacilityLocationDetails = document.querySelector('.open-scheduler-epic-facility-location-detail-inner-container');\n if ($(\".custom-select-dropdown-open-scheduler\").length > 0) {\n var x, i, j, l, ll, selElmnt, a, b, c;\n /*look for any elements with the class \"custom-select\":*/\n x = document.getElementsByClassName(\"custom-select-dropdown-open-scheduler\");\n l = x.length;\n for (i = 0; i < l; i++) {\n selElmnt = x[i].getElementsByTagName(\"select\")[0];\n ll = selElmnt.length;\n /*for each element, create a new DIV that will act as the selected item:*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"class\", \"select-selected\");\n a.id = selElmnt.options[selElmnt.selectedIndex].id;\n a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n x[i].appendChild(a);\n /*for each element, create a new DIV that will contain the option list:*/\n b = document.createElement(\"DIV\");\n b.setAttribute(\"class\", \"select-items select-hide\");\n for (j = 1; j < ll; j++) {\n /*for each option in the original select element,\r\n create a new DIV that will act as an option item:*/\n c = document.createElement(\"DIV\");\n c.innerHTML = selElmnt.options[j].innerHTML;\n c.id = selElmnt.options[j].id;\n c.addEventListener(\"click\", function (e) {\n /*when an item is clicked, update the original select box,\r\n and the selected item:*/\n var y, i, k, s, h, sl, yl;\n s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n sl = s.length;\n h = this.parentNode.previousSibling;\n var selectedOption = document.getElementById(\"content-\" + this.id);\n $(\".dropdown-select-content > div\").removeClass(\"active\");\n $(selectedOption).addClass(\"active\");\n for (i = 0; i < sl; i++) {\n if (s.options[i].innerHTML == this.innerHTML) {\n s.selectedIndex = i;\n h.innerHTML = this.innerHTML;\n y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n yl = y.length;\n for (k = 0; k < yl; k++) {\n y[k].removeAttribute(\"class\");\n }\n this.setAttribute(\"class\", \"same-as-selected\");\n break;\n }\n }\n h.click();\n\n //Disable subsequent clicks\n x[0].setAttribute(\"style\", \"pointer-events:none;\");\n\n //Get Scehdule Data\n var departmentId = $('#openSchedulerEpicDropdownLocation').find(\":selected\").data(\"provider-department-id\");\n var physicianId = $('#openSchedulerEpicDropdownLocation').find(\":selected\").data(\"physician-id\");\n var apiUrl = \"/api/sitecore/locations/facilitylocationopenscheduler?DepartmentId=\" + departmentId + \"&PhysicianId=\" + physicianId;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n OpenSchedulerFacilityLocationDetails.remove();\n var $container = $(OpenSchedulerContainer);\n $container.append(xhttp.responseText);\n openSchedulerDetailsLocationInit();\n }\n });\n });\n b.appendChild(c);\n }\n x[i].appendChild(b);\n a.addEventListener(\"click\", function (e) {\n /*when the select box is clicked, close any other select boxes,\r\n and open/close the current select box:*/\n e.stopPropagation();\n closeAllSelect(this);\n this.nextSibling.classList.toggle(\"select-hide\");\n this.classList.toggle(\"select-arrow-active\");\n });\n }\n function closeAllSelect(elmnt) {\n /*a function that will close all select boxes in the document,\r\n except the current select box:*/\n var x,\n y,\n i,\n xl,\n yl,\n arrNo = [];\n x = document.getElementsByClassName(\"select-items\");\n y = document.getElementsByClassName(\"select-selected\");\n xl = x.length;\n yl = y.length;\n for (i = 0; i < yl; i++) {\n if (elmnt == y[i]) {\n arrNo.push(i);\n } else {\n y[i].classList.remove(\"select-arrow-active\");\n }\n }\n for (i = 0; i < xl; i++) {\n if (arrNo.indexOf(i)) {\n x[i].classList.add(\"select-hide\");\n }\n }\n }\n /*if the user clicks anywhere outside the select box,\r\n then close all select boxes:*/\n document.addEventListener(\"click\", closeAllSelect);\n }\n }\n}","\"use strict\";\n\n$(document).ready(function () {\n var items = document.getElementsByClassName('answer-btn');\n if (items.length != 0) {\n for (var i = 0; i < items.length; i++) {\n items[i].addEventListener('click', openSchedulerbtnAnswerClick);\n }\n }\n waitForOpenSchedulerIframeLoad();\n //bindOpenSchedulerCallout();\n});\nfunction openSchedulerbtnAnswerClick(e) {\n //if next question\n if ($(this).data('nextquestion')) {\n var nextQuestionGUID = $(this).data('nextquestion');\n //hide all questions\n var allQuestions = document.querySelectorAll(\".question\");\n for (var i = 0; i < allQuestions.length; i++) {\n allQuestions[i].style.display = \"none\";\n }\n //parentQuestion.style.display = \"none\";\n\n //display new question\n var nextQuestion = document.getElementById(nextQuestionGUID);\n nextQuestion.style.display = \"block\";\n return;\n }\n\n //if scheduler\n if ($(this).data('scheduler') != \"\") {\n var scheudlerGUID = $(this).data('scheduler');\n //hide all questions\n var allQuestions = document.querySelectorAll(\".question\");\n for (var i = 0; i < allQuestions.length; i++) {\n allQuestions[i].style.display = \"none\";\n }\n\n //get scheduler ajax call\n var apiUrl = \"/api/sitecore/openscheduleriframe/GetOpenSchedulers?guid=\" + scheudlerGUID;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n var data = JSON.parse(xhttp.responseText);\n if (data.openSchedulers.length > 1) {\n var selectDropdown = document.getElementById(\"openschedulers\");\n var firstOption = new Option(\"Click to Select\", \"\", true, false);\n selectDropdown.appendChild(firstOption);\n for (var x = 0; x < data.openSchedulers.length; x++) {\n var newOption = new Option(data.openSchedulers[x].Key, data.openSchedulers[x].Value, true, false);\n selectDropdown.appendChild(newOption);\n }\n\n //add options to select dropdown \n var openSchedulerDropdown = document.getElementById(\"openscheduler-selection\");\n openSchedulerDropdown.style.display = \"inline-block\";\n customDropdownInit();\n } else {\n var dropdown = document.getElementById(\"openschedulers\");\n //document.getElementById('openSchedulerIframe').src = dropdown.value;\n var iFrameDiv = document.getElementById(\"OpenSchedulerContainer\");\n\n //iFrameContainer.style.display = \"block\";\n var apikey = document.getElementById(\"OpenSchedulerApiKey\");\n var url = document.getElementById(\"OpenSchedulerApi\");\n var values = data.openSchedulers[0].Value.split(\"|\");\n iFrameDiv.innerHTML = \"\";\n iFrameDiv.style.display = \"block\";\n mychartWidget.renderWidget({\n \"url\": \"https://openscheduling.ynhhs.org/mychart-prd\",\n \"apiKey\": apikey.value,\n \"widgetType\": \"openscheduling\",\n \"containerId\": \"OpenSchedulerContainer\",\n \"additionalParams\": {\n \"vt\": values[0],\n \"dept\": values[1],\n \"id\": values[2]\n }\n });\n waitForOpenSchedulerIframeLoad();\n }\n }\n });\n return;\n }\n\n //if no next question and no scheduler then show default content\n var allQuestions = document.querySelectorAll(\".question\");\n for (var i = 0; i < allQuestions.length; i++) {\n allQuestions[i].style.display = \"none\";\n }\n var notavailableContent = document.getElementById(\"OpenSchedulerNotAvailableContent\");\n notavailableContent.style.display = \"block\";\n}\nfunction waitForOpenSchedulerIframeLoad() {\n var iframe = document.querySelectorAll('#OpenScheduler iframe');\n if (iframe.length > 0) {\n $('#OpenScheduler iframe').each(function () {\n $(this).attr('scrolling', 'yes');\n });\n } else {\n setTimeout(function () {\n //console.log('Delay for 1 second.');\n waitForOpenSchedulerIframeLoad();\n }, 5000);\n }\n}\nfunction selectOpenScheduler() {\n var dropdown = document.getElementById(\"openschedulers\");\n //document.getElementById('openSchedulerIframe').src = dropdown.value;\n var iFrameDiv = document.getElementById(\"OpenSchedulerContainer\");\n\n //iFrameContainer.style.display = \"block\";\n var apikey = document.getElementById(\"OpenSchedulerApiKey\");\n var url = document.getElementById(\"OpenSchedulerApi\");\n var values = dropdown.value.split(\"|\");\n iFrameDiv.innerHTML = \"\";\n iFrameDiv.style.display = \"block\";\n mychartWidget.renderWidget({\n \"url\": \"https://openscheduling.ynhhs.org/mychart-prd\",\n \"apiKey\": apikey.value,\n \"widgetType\": \"openscheduling\",\n \"containerId\": \"OpenSchedulerContainer\",\n \"additionalParams\": {\n \"vt\": values[0],\n \"dept\": values[1],\n \"id\": values[2]\n }\n });\n waitForOpenSchedulerIframeLoad();\n}","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var dropDownTrigger = document.querySelector('.accepted-insurance__right a');\n var dropDownContent = document.querySelector('.accepted-insurance__dropdown');\n var closeDropDown = document.querySelector('.accepted-insurance__close');\n var dictionary = [];\n var map = {};\n var searchInputElement = document.getElementById('insurance-search');\n var predictionsElement = document.getElementById('predictions');\n var searchButtonElement = document.getElementById('insurance-search-button');\n if (dropDownTrigger) {\n dropDownTrigger.addEventListener(\"click\", function (e) {\n e.preventDefault();\n dropDownContent.classList.toggle(\"active-panel\");\n });\n closeDropDown.addEventListener(\"click\", function (e) {\n if (dropDownContent.classList.contains('active-panel')) {\n dropDownContent.classList.remove('active-panel');\n }\n });\n }\n if (searchInputElement) {\n 'use strict';\n var MAX_PREDICTIONS_COUNT = 5;\n var searchTerms = searchInputElement.getAttribute(\"searchTerms\");\n if (searchTerms) {\n var terms = searchTerms.split(';');\n for (var y = 0; y < terms.length; y++) {\n dictionary.push({\n word: terms[y],\n realWord: terms[y],\n weight: 100\n });\n }\n }\n var searchTermCorrections = searchInputElement.getAttribute(\"searchTermCorrections\");\n if (searchTermCorrections) {\n var corrections = searchTermCorrections.split(';');\n for (var y = 0; y < corrections.length; y++) {\n var correction = corrections[y].split(',');\n dictionary.push({\n word: correction[0],\n realWord: correction[1],\n weight: 100\n });\n }\n }\n function attachListeners() {\n searchInputElement.addEventListener('keyup', function (event) {\n var value = event.target.value.toUpperCase(),\n predictions = predict(value) || [];\n var results = \"\";\n if (predictions.length > 0) {\n predictionsElement.style.display = 'block';\n for (var z = 0; z < predictions.length; z++) {\n results += '' + predictions[z] + '
';\n }\n predictionsElement.innerHTML = results;\n } else {\n predictionsElement.style.display = 'none';\n }\n });\n searchInputElement.addEventListener('keyup', function (event) {\n if (event.keyCode == 13) {\n searchButtonElement.click();\n }\n });\n searchButtonElement.addEventListener('click', function (event) {\n var value = searchInputElement.value.toUpperCase();\n var searchTerms = searchInputElement.getAttribute(\"searchTerms\");\n if (searchTerms) {\n var terms = searchTerms.split(';');\n var descriptions = document.querySelectorAll('.accepted-insurance__left-content p');\n descriptions.forEach(function (item) {\n item.style.display = \"none\";\n });\n if (terms.includes(value.toUpperCase())) {\n document.getElementById(\"acceptedInsuranceText\").style.display = \"inline-flex\";\n } else {\n document.getElementById(\"declinedInsuranceText\").style.display = \"inline-flex\";\n }\n }\n });\n }\n function insertPredictiveTerm(word) {\n searchInputElement.value = word;\n }\n function buildMap() {\n var item, pathArray;\n for (var i = 0; i < dictionary.length; i++) {\n item = dictionary[i];\n pathArray = item.word.split('');\n addItemToMap(map, pathArray, item.weight, i);\n }\n ;\n }\n ;\n function addItemToMap(mapNode, pathArray, weight, index) {\n var letter;\n if (pathArray && pathArray.length) {\n letter = pathArray.shift();\n if (mapNode[letter]) {\n managePredictions(mapNode[letter].predictions, index);\n } else {\n mapNode[letter] = {\n predictions: [index],\n children: {}\n };\n }\n addItemToMap(mapNode[letter].children, pathArray, weight, index);\n }\n }\n ;\n function managePredictions(predictions, index) {\n var insertionIndex = getInsertionIndex(predictions, index);\n predictions.splice(insertionIndex, 0, index);\n if (predictions.length > MAX_PREDICTIONS_COUNT) {\n predictions = predictions.splice(-1, 1);\n }\n }\n ;\n function getInsertionIndex(array, index) {\n var low = 0,\n high = array.length,\n middle;\n while (low < high) {\n middle = low + high >>> 1;\n if (dictionary[array[middle]].weight > dictionary[index].weight) {\n low = middle + 1;\n } else {\n high = middle;\n }\n }\n return low;\n }\n ;\n function predict(searchTerm) {\n var predictionObject = findPredictions(searchTerm.split(''), map),\n result = [];\n if (predictionObject) {\n for (var i = 0; i < predictionObject.predictions.length; i++) {\n result.push(dictionary[predictionObject.predictions[i]].realWord);\n }\n ;\n result = result.reduce(function (accumulator, current) {\n if (!accumulator.find(function (item) {\n return item === current;\n })) {\n accumulator.unshift(current);\n }\n return accumulator;\n }, []);\n return result;\n }\n }\n ;\n function findPredictions(searchTermArray, object) {\n var pathArray, key;\n if (searchTermArray && searchTermArray.length) {\n key = searchTermArray.shift();\n if (object[key] && object[key].children && searchTermArray && searchTermArray.length) {\n return findPredictions(searchTermArray, object[key].children);\n } else {\n return object[key];\n }\n }\n }\n ;\n buildMap();\n attachListeners();\n }\n});\nfunction setPredictiveTerm(word) {\n document.getElementById(\"insurance-search\").value = word;\n document.getElementById(\"predictions\").style.display = 'none';\n document.getElementById(\"insurance-search-button\").click();\n}","\"use strict\";\n\n$(document).ready(function () {\n $(\".accordion-toggle\").click(function (event) {\n // Get the target content\n var id = $(this).attr('id');\n var dropdownID = \"content-\" + id;\n\n // Prevent default link behavior\n event.preventDefault();\n var dropdownContent = document.getElementById(dropdownID);\n $(this).toggleClass(\"open\");\n $(dropdownContent).toggleClass(\"active\");\n });\n});\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var faqs = document.querySelectorAll(\".Collapsible\");\n faqs.forEach(function (faq) {\n var question = faq.querySelector(\".Collapsible__trigger\");\n var answers = faq.querySelector(\".Collapsible__contentOuter\");\n question.addEventListener(\"click\", function () {\n faq.classList.toggle(\"is-open\");\n });\n });\n});","\"use strict\";\n\n$(document).ready(function () {\n var alerts = Array.prototype.slice.call(document.querySelectorAll(\".alert-container\"));\n if (alerts && alerts.length > 0) {\n alerts.forEach(function (alert) {\n var btn = alert.querySelector(\".close\");\n if (btn == null) {\n return;\n }\n btn.addEventListener(\"click\", function () {\n var cacheTimeStr = alert.querySelector(\".hdn-visibility\");\n if (cacheTimeStr.value !== \"\") {\n var cacheTime = parseInt(cacheTimeStr.value, 10);\n var cacheKey = alert.querySelector(\".hdn-cachekey\");\n if (cacheKey.value === \"\") {\n // Create cookie \n if (cacheTime !== 0) {\n createCookie(cacheKey.value, true, cacheTime);\n }\n }\n }\n // Hide alert\n alert.parentNode.removeChild(alert);\n\n // Adjusts mobile nav position when alert is closed\n var mobileMainNavPanel = document.querySelector('.mobile-main-nav');\n mobileMainNavPanel.style.top = '0';\n });\n });\n }\n\n // Create and store a cookie\n function createCookie(cookieName, cookieValue, minutesToExpire) {\n var date = new Date();\n date.setTime(date.getTime() + minutesToExpire * 60 * 1000);\n document.cookie = cookieName + \"=\" + cookieValue + \"; expires=\" + date.toGMTString() + \"; path=/\";\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var awardsCarousel = document.querySelectorAll('.awards-carousel');\n if (awardsCarousel.length > 0) {\n var glideArrows = document.querySelectorAll('.glide__arrows');\n var mediaQueryAbove = window.matchMedia('(min-width: 1200px)');\n var awardSliders = document.querySelectorAll('.awards-carousel__container');\n var sliderCount = document.querySelectorAll('.awards-carousel .glide__slide:not(.awards-carousel .glide__slide--clone)');\n awardsCarousel.forEach(function (item) {\n item.classList.remove('awards-carousel--small');\n });\n var _loop = function _loop() {\n var awardItems = awardsCarousel[i].querySelectorAll('.glide__slide');\n if (awardItems.length <= 4) {\n awardsCarousel[i].classList.add('awards-carousel--small');\n var glide = new Glide(awardSliders[i], {\n type: 'slider',\n animationTimingFunc: 'ease-in-out',\n swipeThreshold: false,\n dragThreshold: false,\n breakpoints: {\n 1200: {\n type: 'carousel',\n focusAt: 'center',\n swipeThreshold: true,\n dragThreshold: true,\n perView: 1\n }\n }\n });\n glide.on('mount.after', function () {\n awardItems.forEach(function (item) {\n item.addEventListener(\"mouseenter\", function (e) {\n awardItems.forEach(function (item) {\n item.classList.remove(\"glide__slide--active\");\n });\n });\n item.addEventListener(\"mouseleave\", function (e) {\n this.classList.remove(\"glide__slide--active\");\n });\n });\n if (mediaQueryAbove.matches) {\n for (var i = 0; i < sliderCount.length; i++) {\n if (sliderCount.length <= 5) {\n glideArrows.forEach(function (nav) {\n nav.style.display = \"none\";\n });\n awardItems.forEach(function (item) {\n if (item.classList.contains(\"glide__slide--active\")) {\n item.classList.add(\"glide-center\");\n }\n });\n }\n }\n }\n for (var i = 0; i < sliderCount.length; i++) {\n if (sliderCount.length <= 1) {\n glideArrows.forEach(function (nav) {\n nav.style.display = \"none\";\n });\n }\n }\n });\n if (mediaQueryAbove.matches) {\n glide.disable();\n } else {\n glide.mount();\n }\n } else {\n var _glide = new Glide(awardSliders[i], {\n type: 'carousel',\n focusAt: 'center',\n animationTimingFunc: 'ease-in-out',\n perView: 5,\n swipeThreshold: false,\n dragThreshold: false,\n breakpoints: {\n 1200: {\n type: 'carousel',\n swipeThreshold: true,\n dragThreshold: true,\n perView: 3\n },\n 767: {\n type: 'carousel',\n swipeThreshold: true,\n dragThreshold: true,\n perView: 1\n }\n }\n });\n _glide.on('mount.after', function () {\n awardItems.forEach(function (item) {\n item.addEventListener(\"mouseenter\", function (e) {\n awardItems.forEach(function (item) {\n item.classList.remove(\"glide__slide--active\");\n });\n });\n item.addEventListener(\"mouseleave\", function (e) {\n this.classList.remove(\"glide__slide--active\");\n });\n });\n if (mediaQueryAbove.matches) {\n for (var i = 0; i < sliderCount.length; i++) {\n if (awardItems.length <= 5) {\n glideArrows.forEach(function (nav) {\n nav.style.display = \"none\";\n });\n awardItems.forEach(function (item) {\n if (item.classList.contains(\"glide__slide--active\")) {\n item.classList.add(\"glide-center\");\n }\n });\n }\n }\n }\n });\n _glide.mount();\n }\n };\n for (var i = 0; i < awardsCarousel.length; i++) {\n _loop();\n }\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n $(document).click(function (e) {\n e.stopPropagation();\n var container = $(\".dropdown\");\n\n //check if the clicked area is dropDown or not\n if (container.has(e.target).length === 0) {\n $(\".dropdown:not(.should-open\").removeClass(\"is-active\");\n $(\".fa-flip-vertical\").removeClass(\"fa-flip-vertical\");\n }\n });\n $(\".dropdown-trigger\").click(function () {\n var elem = $(this).closest(\".dropdown\");\n $(elem).toggleClass(\"is-active\");\n $(\".fa-angle-down\").toggleClass(\"fa-flip-vertical\");\n });\n $(\".tabs ul li\").click(function () {\n var elem = $(this);\n var elemID = elem.attr(\"id\");\n var tabPane = document.getElementById(elemID + \"-pane\");\n $(\".tabs ul li\").removeClass(\"is-active\");\n elem.addClass(\"is-active\");\n $(\".tab-pane\").removeClass(\"is-active\");\n $(tabPane).addClass(\"is-active\");\n });\n function addQuerystring(url, newstring) {\n url += url.indexOf('#') > -1 ? '&' : '#';\n return url + newstring;\n }\n var doctorCard = $('.search-card doctor');\n if (doctorCard) {\n var specialtiesSearchBtn = $('#specialtySearchBtn');\n var specialtiesDropdown = $('#specialtiesDropdown');\n var acceptingNewPatientsCheckbox = $('#acceptingNewPatientsCheckbox');\n var telehealthCheckbox = $('#telehealthCheckbox');\n var nameSearchBtn = $('#nameSearchBtn');\n var nameInput = $('#nameInput');\n specialtiesSearchBtn.on('click', function (e) {\n e.preventDefault();\n var url = window.location.href + '/find-a-doctor';\n if (specialtiesDropdown != null && specialtiesDropdown.val() != '0') {\n url = addQuerystring(url, 'f:specialties=[' + encodeURIComponent(specialtiesDropdown.val()) + ']');\n }\n if (acceptingNewPatientsCheckbox != null && acceptingNewPatientsCheckbox[0].checked) {\n url = addQuerystring(url, 'f:acceptingnewpatients=[1]');\n }\n if (telehealthCheckbox != null && telehealthCheckbox[0].checked) {\n url = addQuerystring(url, 'f:telehealth=[1]');\n }\n window.location.href = url;\n });\n nameSearchBtn.on('click', function (e) {\n e.preventDefault();\n var url = '/find-a-doctor';\n if (nameInput != null && nameInput[0].value != '') {\n url = addQuerystring(url, 'q=' + encodeURIComponent(nameInput[0].value));\n }\n window.location.href = url;\n });\n }\n var locationCard = $('.search-card hospital');\n if (locationCard) {\n var locationSearchBtn = $('#locationSearchBtn');\n var facilityTypesDropdown = $('#facilityTypesDropdown');\n var areaInput = $('#areaInput');\n locationSearchBtn.on('click', function (e) {\n e.preventDefault();\n var url = window.location.href + '/find-a-location';\n if (facilityTypesDropdown != null && facilityTypesDropdown.val() != '0') {\n url = addQuerystring(url, 'f:facilitytype=[' + encodeURIComponent(facilityTypesDropdown.val()) + ']');\n }\n if (areaInput != null && areaInput[0].value != '') {\n var geocoder = new google.maps.Geocoder();\n geocoder.geocode({\n 'address': areaInput[0].value\n }, function (results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n var coords = results[0].geometry.location;\n url = addQuerystring(url, 'f:location=' + encodeURIComponent(areaInput[0].value));\n url = addQuerystring(url, 'f:geolocation=[' + coords.lat() + ',' + coords.lng() + ']');\n window.location.href = url;\n }\n });\n } else {\n window.location.href = url;\n }\n });\n }\n});\nwindow.initLocationCard = function () {};","\"use strict\";\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n$(document).ready(function () {\n var conditionsAndServicesComponents = document.getElementsByClassName(\"conditions-and-services\");\n if (conditionsAndServicesComponents.length > 0) {\n var _iterator = _createForOfIteratorHelper(conditionsAndServicesComponents),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var component = _step.value;\n // console.log(component);\n var item10 = component.querySelector(\"li:nth-child(10)\");\n var button = component.querySelector(\"button\");\n\n // console.log({ button, item10 });\n if (button) {\n button.onclick = function (e) {\n e.preventDefault();\n if (e.target) {\n e.target.setAttribute(\"aria-expanded\", \"true\");\n item10.focus();\n }\n };\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n var homepageGlide = $('.carousel.home');\n var homepageGlideNumberofSlides = document.querySelector('.glide-container');\n if (homepageGlide && homepageGlideNumberofSlides) {\n if (homepageGlideNumberofSlides.dataset.numberofslides > 1) {\n new Glide('.carousel.home', {\n type: 'carousel',\n autoplay: 7000,\n startAt: 0,\n perView: 1\n }).mount();\n }\n }\n var carouselContainers = $(\".slider-container\");\n if (carouselContainers) {\n carouselContainers.each(function () {\n var $this = $(this);\n var carousel = $this.find(\".page-carousel\");\n var pageSize = carousel.data(\"pagesize\");\n new Glide(carousel[0], {\n type: 'carousel',\n startAt: 0,\n perView: pageSize,\n breakpoints: {\n 768: {\n perView: 1\n }\n }\n }).mount();\n });\n }\n var serviceLineContainer = $(\".service-line-slider-container\");\n if (serviceLineContainer) {\n var serviceLineCarousel = serviceLineContainer.find(\".service-line-page-carousel\");\n var servicePageSize = serviceLineCarousel.data(\"pagesize\");\n new Glide(serviceLineCarousel[0], {\n type: 'carousel',\n startAt: 0,\n perView: servicePageSize,\n breakpoints: {\n 768: {\n perView: 1\n }\n }\n }).mount();\n }\n var numSlides = $(\".glide-container .glide__slide\");\n if (numSlides.length === 1) {\n $(\".glide-container .nav-container\").hide();\n }\n});\ndocument.addEventListener('DOMContentLoaded', function () {\n var splideContainer = document.querySelector('.splide-container');\n if (splideContainer) {\n var main = new Splide('#main-carousel', {\n type: 'fade',\n rewind: true,\n pagination: false,\n arrows: false,\n focus: \"center\",\n cover: true,\n width: 900,\n fixedWidth: 900,\n breakpoints: {\n 640: {\n width: 360,\n fixedWidth: 360\n }\n }\n });\n var mediaquery = window.matchMedia(\"(max-width: 768px)\");\n if (!mediaquery.matches) {\n var thumbnails = new Splide(\"#vertical-slider\", {\n width: 250,\n height: 600,\n direction: \"ttb\",\n isNavigation: true,\n fixedWidth: 250,\n fixedHeight: 160,\n pagination: false,\n cover: true,\n focus: \"center\",\n breakpoints: {\n 768: {\n destroy: 'completely'\n }\n }\n });\n main.sync(thumbnails);\n main.mount();\n thumbnails.mount();\n }\n if (mediaquery.matches) {\n main.mount();\n }\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n $('button[data-feedback-answer=\"no\"]').click(function (event) {\n $('#feedback-question').addClass(\"is-hidden\");\n $('#feedback-more-info').removeClass(\"is-hidden\");\n });\n $('button[data-feedback-answer=\"yes\"]').click(function (event) {\n $('#feedback-question').addClass(\"is-hidden\");\n $('#feedback-thank-you').removeClass(\"is-hidden\");\n });\n $('#feedback-form').submit(function (event) {\n event.preventDefault();\n $('#feedback-more-info').addClass(\"is-hidden\");\n $('#feedback-thank-you').removeClass(\"is-hidden\");\n });\n});","\"use strict\";\n\n$(document).ready(function () {\n bindNewsListing();\n bindComebackStories();\n});\nfunction bindNewsListing() {\n var newsListingContainer = document.querySelector('#news-listing-container');\n if (!newsListingContainer) {\n return;\n }\n var btn = document.querySelector('#news-listing-more');\n if (!btn) {\n return;\n }\n var $btn = $(btn);\n var contextItemId = $btn.data(\"context-item-id\");\n var page = $btn.data(\"page\");\n btn.addEventListener(\"click\", function (e) {\n e.preventDefault();\n var apiUrl = \"/api/sitecore/news/getnewslisting?Page=\" + page + \"&ContextItemId=\" + contextItemId;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n $btn.parent().remove();\n var $container = $(newsListingContainer);\n $container.append(xhttp.responseText);\n bindNewsListing();\n }\n });\n });\n}\nfunction bindComebackStories() {\n var comebackContainer = document.querySelector('.comeback-container');\n if (!comebackContainer) {\n return;\n }\n var dnDropdown = document.querySelector('#dnDropdown');\n if (!dnDropdown) {\n return;\n }\n var hdnContextItem = document.querySelector('#hdn-context-id');\n if (!hdnContextItem) {\n return;\n }\n var hdnDatasource = document.querySelector('#hdn-datasource-id');\n if (!hdnDatasource) {\n return;\n }\n var contextItemId = document.querySelector('#hdn-context-id');\n dnDropdown.addEventListener(\"change\", function (e) {\n e.preventDefault();\n var apiUrl = \"/api/sitecore/news/getcomebackstories?ContextItemId=\" + hdnContextItem.value + \"&DatasourceId=\" + hdnDatasource.value;\n if (this.value != \"\") {\n apiUrl += \"&DeliveryNetwork=\" + this.value;\n }\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n var $container = $(comebackContainer);\n $container.html(xhttp.responseText);\n bindComebackStories();\n }\n });\n });\n}","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var detailsAccordion = document.querySelector(\".details-accordion\");\n if (detailsAccordion) {\n var accordionContainers = document.querySelectorAll('.details-accordion__accordion-container');\n accordionContainers.forEach(function (container) {\n // If the container has the 'active' class, set the maxHeight for the content\n if (container.classList.contains('active')) {\n var content = container.querySelector('.details-accordion__accordion-content');\n if (content) {\n content.style.maxHeight = content.scrollHeight + \"px\";\n }\n }\n });\n var accordionTrigger = document.querySelectorAll('.details-accordion__accordion-heading');\n accordionTrigger.forEach(function (item) {\n item.addEventListener('click', function () {\n var container = this.closest('.details-accordion__accordion-container');\n container.classList.toggle('active');\n var content = this.nextElementSibling;\n if (content.style.maxHeight) {\n content.style.maxHeight = null;\n } else {\n content.style.maxHeight = content.scrollHeight + \"px\";\n }\n });\n });\n }\n});","\"use strict\";\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var navLocationsBtns = document.querySelector('.doctors-locations__nav-btns');\n var cardLocationItem = document.querySelector('.locations-time-card');\n if (navLocationsBtns != null && cardLocationItem) {\n var cardTrack = document.querySelector('.doctors-locations__track');\n var nextButton = document.querySelector('.doctors-locations__button--bottom');\n var prevButton = document.querySelector('.doctors-locations__button--top');\n var allCards = document.querySelectorAll('.locations-time-card').length;\n var cardHeight = cardLocationItem.offsetHeight;\n var cardsHidden = allCards - 4;\n var cardCounter = 0;\n var counter = 0;\n prevButton.style.display = \"none\";\n if (allCards <= 4) {\n navLocationsBtns.classList.add('hide');\n }\n nextButton.addEventListener('click', function (e) {\n prevButton.style.display = \"block\";\n counter = counter - cardHeight;\n cardTrack.style.transform = \"translateY(\" + counter + \"px)\";\n cardCounter++;\n if (cardCounter == cardsHidden) {\n nextButton.style.display = \"none\";\n }\n });\n prevButton.addEventListener('click', function (e) {\n nextButton.style.display = \"block\";\n counter = counter + cardHeight;\n cardTrack.style.transform = \"translateY(\" + counter + \"px)\";\n cardCounter--;\n if (cardCounter == 0) {\n prevButton.style.display = \"none\";\n }\n });\n\n //Distance calculator for locations based on browser geolocation\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(showDocLocPosition);\n }\n function showDocLocPosition(position) {\n var lat = position.coords.latitude;\n var lng = position.coords.longitude;\n if (lat && lng) {\n setDriveDistances(lat, lng);\n updateOrderByDistance();\n }\n }\n function updateOrderByDistance() {\n var container = document.getElementById(\"DocLoc\");\n var frag = document.createDocumentFragment();\n var list = document.querySelector(\".doctors-locations__track\");\n var hospitals = document.querySelectorAll(\".locations-time-card\");\n var sortedList = _toConsumableArray(hospitals).sort(function (a, b) {\n var d1 = a.querySelector(\".distanceFromVisitor\");\n var v1 = d1.getAttribute(\"distance\");\n var d2 = b.querySelector(\".distanceFromVisitor\");\n var v2 = d2.getAttribute(\"distance\");\n return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\n });\n var _iterator = _createForOfIteratorHelper(sortedList),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n frag.appendChild(item);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n list.appendChild(frag);\n }\n function setDriveDistances(lat, lng) {\n document.querySelectorAll(\".distanceFromVisitor\").forEach(function (d) {\n var uLat = d.getAttribute(\"lat\");\n var uLng = d.getAttribute(\"lng\");\n var fallBackOveride = 9999;\n //Fallbacks for blank geo location values from blank location item for department\n if (uLat == \"\") {\n uLat = fallBackOveride;\n }\n if (uLng == \"\") {\n uLng = fallBackOveride;\n }\n if (uLat && uLng) {\n var distance = get2LatLongDistance(uLat, uLng, lat, lng);\n if (uLng != fallBackOveride | uLat != fallBackOveride) {\n d.innerHTML = Math.ceil(distance) + \" miles\";\n }\n d.setAttribute('distance', distance);\n }\n });\n }\n function get2LatLongDistance(lat1, lon1, lat2, lon2) {\n if (lat1 == lat2 && lon1 == lon2) {\n return 0;\n } else {\n var radlat1 = Math.PI * lat1 / 180;\n var radlat2 = Math.PI * lat2 / 180;\n var theta = lon1 - lon2;\n var radtheta = Math.PI * theta / 180;\n var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n if (dist > 1) {\n dist = 1;\n }\n dist = Math.acos(dist);\n dist = dist * 180 / Math.PI;\n dist = dist * 60 * 1.1515;\n return dist;\n }\n }\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var apptEl = document.querySelector('.book-appointment');\n var locationItem = document.querySelector('.doctor-bio-masthead__locations');\n if (apptEl) {\n var triggerEl = document.querySelector('.book-appt_placeholder');\n var handler = function handler(entries) {\n if (!entries[0].isIntersecting) {\n apptEl.classList.add('enabled');\n } else {\n apptEl.classList.remove('enabled');\n }\n };\n // create the observer\n var observer = new window.IntersectionObserver(handler);\n observer.observe(triggerEl);\n }\n\n // Email input validation\n var formEl = document.querySelector('.doctor-bio-masthead__appointment form');\n if (formEl) {\n var inputEl = document.querySelector('.doctor-bio-masthead__appointment input.email');\n var submitBtnEl = document.querySelector('.doctor-bio-masthead__appointment button');\n inputEl.addEventListener('input', function (event) {\n if (inputEl.value.length == 0) {\n submitBtnEl.disabled = true;\n } else {\n submitBtnEl.disabled = false;\n }\n });\n }\n if (locationItem != null) {\n //Distance calculator for locations based on browser geolocation\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(showPosition);\n }\n function showPosition(position) {\n var lat = position.coords.latitude;\n var lng = position.coords.longitude;\n if (lat && lng) {\n setDriveDistances(lat, lng);\n updateOrderByDistance();\n }\n }\n function setDriveDistances(lat, lng) {\n document.querySelectorAll(\".locations_distanceFromVisitor\").forEach(function (d) {\n var uLat = d.getAttribute(\"lat\");\n var uLng = d.getAttribute(\"lng\");\n var fallBackOveride = 9999;\n //Fallbacks for blank geo location values from blank location item for department\n if (uLat == \"\") {\n uLat = fallBackOveride;\n }\n if (uLng == \"\") {\n uLng = fallBackOveride;\n }\n if (uLat && uLng) {\n var distance = get2LatLongDistance(uLat, uLng, lat, lng);\n if (uLng != fallBackOveride | uLat != fallBackOveride) {\n d.innerHTML = Math.ceil(distance) + \" mi\";\n }\n d.setAttribute('distance', distance);\n }\n console.log(\"Distance \", d);\n });\n }\n function get2LatLongDistance(lat1, lon1, lat2, lon2) {\n if (lat1 == lat2 && lon1 == lon2) {\n return 0;\n } else {\n var radlat1 = Math.PI * lat1 / 180;\n var radlat2 = Math.PI * lat2 / 180;\n var theta = lon1 - lon2;\n var radtheta = Math.PI * theta / 180;\n var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n if (dist > 1) {\n dist = 1;\n }\n dist = Math.acos(dist);\n dist = dist * 180 / Math.PI;\n dist = dist * 60 * 1.1515;\n return dist;\n }\n }\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n $(\".doctor-bio-masthead__profile .save-physician\").each(function () {\n var id = $(this).attr('data-physician-id');\n var value = localStorage.getItem('favorite-physicians');\n if (value !== null && value.includes(id)) {\n $(this).addClass('saved');\n }\n });\n $(\".doctor-bio-masthead__profile .save-physician\").click(function () {\n var id = $(this).attr('data-physician-id');\n if (id === undefined) return;\n var value = localStorage.getItem('favorite-physicians');\n var ids = null;\n if (value == null || value == '') {\n ids = id.split(',');\n $(this).addClass('saved');\n } else {\n ids = value.split(',');\n if (ids.includes(id)) {\n ids = ids.filter(function (e) {\n return e !== id;\n });\n $(this).removeClass('saved');\n } else {\n ids.push(id);\n $(this).addClass('saved');\n }\n }\n localStorage.setItem('favorite-physicians', ids.join(','));\n });\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var locationMapElement = document.querySelector('.map-component.location');\n if (locationMapElement) {\n var mapElement = locationMapElement.querySelector(\"#map\");\n if (typeof mapElement == \"undefined\" || !mapElement) {\n return;\n }\n var location = document.querySelector('.location');\n if (!location) {\n console.log(\"no location data found\");\n return;\n }\n var latLong = mapElement.dataset.center;\n //flip them cause this API goes LONGITUDE THEN LATITUDE\n var mapCenter = latLong.split(\",\");\n var temp = mapCenter[0];\n mapCenter[0] = mapCenter[1];\n mapCenter[1] = temp;\n var geoJson = {\n type: \"FeatureCollection\",\n features: [{\n type: \"Feature\",\n geometry: {\n type: \"Point\",\n coordinates: mapCenter\n },\n properties: {\n name: \"Location\"\n }\n }]\n };\n Radar.initialize('prj_live_pk_e9bc38cc9ac871b02332c0d599d7a893c03ad94d');\n\n // create a map\n var map = Radar.ui.map({\n container: 'map',\n style: 'radar-default-v1',\n center: mapCenter,\n // CT\n zoom: 12\n });\n map.loadImage('/Dist/img/pin.png', function (error, image) {\n if (error) throw error;\n map.addImage('custom-marker', image);\n });\n map.on('load', function () {\n //use the custom pin\n\n map.addSource('locations', {\n type: 'geojson',\n data: geoJson,\n cluster: true,\n // Enable clustering\n clusterMaxZoom: 10,\n // Maximum zoom level for clustering\n clusterRadius: 50\n });\n map.addLayer({\n id: 'locationLayer-clustered',\n type: 'circle',\n source: 'locations',\n filter: ['has', 'point_count'],\n paint: {\n 'circle-color': '#00A9E0',\n 'circle-radius': 20\n }\n });\n\n //add counts \n map.addLayer({\n id: 'locationLayer-clustercount',\n type: 'symbol',\n source: 'locations',\n filter: ['has', 'point_count'],\n layout: {\n 'text-field': '{point_count_abbreviated}',\n \"text-font\": [\"Graphik Bold\"],\n 'text-size': 12,\n 'text-allow-overlap': true\n }\n });\n\n //update map with new layer \n map.addLayer({\n id: 'locations-pins',\n source: 'locations',\n type: \"symbol\",\n layout: {\n 'icon-image': 'custom-marker',\n 'icon-overlap': 'always'\n }\n });\n\n /*var bounds = new maplibregl.LngLatBounds();\r\n //geoJson.features.forEach(function (feature, index) {\r\n \tvar coordinates = feature.geometry.coordinates;\r\n \tbounds.extend(feature.geometry.coordinates);\r\n });\r\n \t\tmap.fitBounds([bounds._ne, bounds._sw], { padding: 50 });*/\n });\n }\n var physicianMapElement = document.querySelector('.map-component.physician');\n if (physicianMapElement) {\n var mapElement = physicianMapElement.querySelector(\"#map\");\n var center = physicianMapElement.dataset.firstlocation;\n center = center.replace(/\\[|\\]/g, '').split(',');\n var geoJson = JSON.parse(physicianMapElement.dataset.geojson);\n Radar.initialize('prj_live_pk_e9bc38cc9ac871b02332c0d599d7a893c03ad94d');\n\n // create a map\n var _map = Radar.ui.map({\n container: 'map',\n style: 'radar-default-v1',\n center: center,\n // CT\n zoom: 13\n });\n var geojsonData = geoJson;\n\n //use the custom pin\n _map.loadImage('/Dist/img/pin.png', function (error, image) {\n if (error) throw error;\n _map.addImage('custom-marker', image);\n });\n _map.on('load', function () {\n // Add the GeoJSON data to the map\n _map.addSource('locationJson', {\n type: 'geojson',\n data: geojsonData,\n cluster: true,\n // Enable clustering\n clusterMaxZoom: 11,\n // Maximum zoom level for clustering\n clusterRadius: 50 // Radius for clustering in pixels\n });\n _map.addLayer({\n id: 'locationLayer-clustered',\n type: 'circle',\n source: 'locationJson',\n filter: ['has', 'point_count'],\n paint: {\n 'circle-color': '#00A9E0',\n 'circle-radius': 20\n }\n });\n\n //add counts \n _map.addLayer({\n id: 'locationLayer-clustercount',\n type: 'symbol',\n source: 'locationJson',\n filter: ['has', 'point_count'],\n layout: {\n 'text-field': '{point_count_abbreviated}',\n \"text-font\": [\"Graphik Bold\"],\n 'text-size': 12,\n 'text-allow-overlap': true\n }\n });\n _map.addLayer({\n id: 'locations-pins',\n source: 'locationJson',\n type: 'symbol',\n filter: ['!', ['has', 'point_count']],\n layout: {\n 'icon-image': 'custom-marker',\n 'icon-overlap': 'always'\n }\n });\n var bounds = new maplibregl.LngLatBounds();\n if (geojsonData.features.length > 1) {\n geojsonData.features.forEach(function (feature, index) {\n var coordinates = feature.geometry.coordinates;\n bounds.extend(feature.geometry.coordinates);\n });\n _map.fitBounds([bounds._ne, bounds._sw], {\n padding: 100\n });\n } else {\n _map.easeTo({\n center: geojsonData.features[0].geometry.coordinates,\n zoom: 12\n });\n }\n _map.on('click', 'locations-pins', function (e) {\n var coordinates = e.features[0].geometry.coordinates.slice();\n var description = e.features[0].properties.description;\n\n // Ensure that if the map is zoomed out such that multiple\n // copies of the feature are visible, the popup appears\n // over the copy being pointed to.\n while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {\n coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;\n }\n new maplibregl.Popup().setLngLat(coordinates).setHTML(description).addTo(_map);\n });\n _map.on('click', 'locations-clustered', function (e) {\n var features = _map.queryRenderedFeatures(e.point, {\n layers: ['locations-clustered']\n });\n var clusterId = features[0].properties.cluster_id;\n _map.getSource('locationJson').getClusterExpansionZoom(clusterId, function (err, zoom) {\n if (err) return;\n _map.easeTo({\n center: features[0].geometry.coordinates,\n zoom: 10\n });\n });\n });\n });\n }\n});\nfunction RadarGeocodeForward(value) {\n var endpoint = 'https://api.radar.io/v1/geocode/forward?query=';\n if (value) {\n endpoint = endpoint + value;\n var xhr = new XMLHttpRequest();\n // Open the request synchronously\n xhr.open('GET', endpoint, false);\n\n // Set the \"Authorization\" header\n xhr.setRequestHeader(\"Authorization\", \"prj_live_pk_e9bc38cc9ac871b02332c0d599d7a893c03ad94d\");\n\n // Send the request\n xhr.send();\n\n // Check the response status\n if (xhr.status === 200) {\n // Parse and handle the response\n var responseData = JSON.parse(xhr.responseText);\n return responseData;\n } else {\n console.error('Network response was not ok');\n }\n } else {\n console.log(\"RadarGeocodeForward: you need to pass a value\");\n }\n}\nwindow.initLocationMap = function () {\n var mapElement = document.getElementById(\"map\");\n if (typeof mapElement == \"undefined\" || !mapElement) {\n return;\n }\n var location = document.querySelector('.location');\n if (!location) {\n return;\n }\n var locationObj = new Location(location);\n var startingAddress = document.getElementById(\"starting-address\");\n var getDirections = document.getElementById(\"get-directions\");\n if (startingAddress && getDirections) {\n getDirections.addEventListener(\"click\", function (e) {\n e.preventDefault();\n var url = \"https://www.google.com/maps/dir/\";\n var toAddress = locationObj.address;\n if (startingAddress.value != \"\") {\n url += startingAddress.value;\n }\n url += \"/\" + toAddress;\n window.open(url, '_blank');\n });\n }\n var googleHelpers = new GoogleHelpers(mapElement);\n AddLocationToMap(locationObj, googleHelpers);\n};\nwindow.initLocationMapByType = function () {\n var mapElement = document.getElementById(\"map\");\n if (typeof mapElement == \"undefined\" || !mapElement) {\n return;\n }\n var locations = document.querySelectorAll('.location');\n if (!locations) {\n return;\n }\n var googleHelpers = new GoogleHelpers(mapElement);\n locations.forEach(function (l) {\n AddLocationToMap(new Location(l), googleHelpers);\n });\n};\nwindow.initPhysicianMap = function () {\n var mapElement = document.getElementById(\"map\");\n if (typeof mapElement == \"undefined\" || !mapElement) {\n return;\n }\n var locations = document.querySelectorAll('.facility-location');\n if (!locations) {\n return;\n }\n var googleHelpers = new GoogleHelpers(mapElement);\n locations.forEach(function (l) {\n AddLocationToMap(new Location(l), googleHelpers);\n });\n};\nfunction AddLocationToMap(location, googleHelpers) {\n if (location.hasCoords) {\n AddMarker(location, googleHelpers);\n } else {\n googleHelpers.geocoder.geocode({\n 'address': location.address\n }, function (results, status) {\n if (status == google.maps.GeocoderStatus.OK) {\n location.coords = results[0].geometry.location;\n AddMarker(location, googleHelpers);\n }\n });\n }\n}\nfunction AddMarker(location, googleHelpers) {\n var rotateFactor = 36; // 360/10, 10 is max # of markers with same coords\n var radius = 0.00006;\n\n // Spread out locations with same lat/long\n for (var i = 0; i < googleHelpers.markertracker.length; i++) {\n if (googleHelpers.markertracker[i].coords.lat == location.coords.lat && googleHelpers.markertracker[i].coords.lng == location.coords.lng) {\n location.coords.lat = location.coords.lat + radius * Math.cos(googleHelpers.markertracker[i].count * rotateFactor);\n location.coords.lng = location.coords.lng + radius * Math.sin(googleHelpers.markertracker[i].count * rotateFactor);\n googleHelpers.markertracker[i].count++;\n break;\n }\n }\n googleHelpers.markertracker.push({\n coords: location.coords,\n count: 1\n });\n var marker = new google.maps.Marker({\n position: location.coords,\n map: googleHelpers.map,\n title: location.title,\n icon: \"/Dist/img/pin.svg\"\n });\n\n // Create infowindow popup\n var content = GenerateInfoContent(location);\n var infowindow = new google.maps.InfoWindow({\n content: content\n });\n marker.addListener('click', function () {\n if (googleHelpers.openInfoWindow) {\n googleHelpers.openInfoWindow.close();\n }\n googleHelpers.openInfoWindow = infowindow;\n infowindow.open(googleHelpers.map, marker);\n });\n googleHelpers.markers.push(marker);\n googleHelpers.markerClusterer.addMarker(marker);\n var loc = new google.maps.LatLng(marker.position.lat(), marker.position.lng());\n googleHelpers.bounds.extend(loc);\n\n // If only one location, center and zoom on that.\n if (googleHelpers.markers.length == 1) {\n googleHelpers.map.setZoom(15);\n googleHelpers.map.setCenter(location.coords);\n // Else, adjust center/zoom for all locations\n } else {\n googleHelpers.map.fitBounds(googleHelpers.bounds); // auto-zoom\n googleHelpers.map.panToBounds(googleHelpers.bounds); // auto-center\n }\n}\nfunction Location(location) {\n var geoElement = location.querySelector(\".location-geo\");\n if (typeof geoElement !== \"undefined\" && geoElement && geoElement.value !== \"\") {\n var geo = geoElement.value.replace(/\\s/g, '');\n var coords = geo.split(',');\n if (coords.length == 2) {\n var lati = parseFloat(coords[0]);\n var longi = parseFloat(coords[1]);\n if (!isNaN(lati) && !isNaN(longi)) {\n this.coords = {\n lat: lati,\n lng: longi\n };\n this.hasCoords = true;\n }\n }\n }\n var titleElement = location.querySelector('.location-title');\n if (typeof titleElement !== \"undefined\" && titleElement && titleElement.value !== \"\") {\n this.title = titleElement.value;\n }\n var addressElement = location.querySelector(\".location-address\");\n if (typeof addressElement !== \"undefined\" && addressElement && addressElement.value !== \"\") {\n this.address = addressElement.value;\n }\n var phoneElement = location.querySelector(\".location-phone\");\n if (typeof phoneElement !== \"undefined\" && phoneElement && phoneElement.value !== \"\") {\n this.phone = phoneElement.value;\n }\n var faxElement = location.querySelector(\".location-fax\");\n if (typeof faxElement !== \"undefined\" && faxElement && faxElement.value !== \"\") {\n this.fax = faxElement.value;\n }\n var hoursElement = location.querySelector(\".location-hours\");\n if (typeof hoursElement !== \"undefined\" && hoursElement && hoursElement.value !== \"\") {\n this.hours = hoursElement.value;\n }\n var directionsElement = location.querySelector(\".location-directionslink\");\n if (typeof directionsElement !== \"undefined\" && directionsElement && directionsElement.value !== \"\") {\n this.directionslink = directionsElement.value;\n }\n var urlElement = location.querySelector(\".location-url\");\n if (typeof urlElement !== \"undefined\" && urlElement && urlElement.value !== \"\") {\n this.url = urlElement.value;\n }\n}\nfunction GoogleHelpers(mapElement) {\n this.map = new google.maps.Map(mapElement);\n this.geocoder = new google.maps.Geocoder();\n this.bounds = new google.maps.LatLngBounds();\n this.markers = [];\n this.markertracker = [];\n this.openInfoWindow = null;\n this.markerClusterer = new MarkerClusterer(this.map, this.markers, {\n maxZoom: 20,\n styles: [MarkerClusterer.withDefaultStyle({\n width: 53,\n height: 52,\n url: \"/Dist/img/cluster1.png\",\n textColor: \"#ffffff\",\n textSize: 12\n }), MarkerClusterer.withDefaultStyle({\n width: 56,\n height: 55,\n url: \"/Dist/img/cluster2.png\",\n textColor: \"#ffffff\",\n textSize: 12\n }), MarkerClusterer.withDefaultStyle({\n width: 66,\n height: 65,\n url: \"/Dist/img/cluster3.png\",\n textColor: \"#ffffff\",\n textSize: 12\n })]\n });\n}\nfunction GenerateInfoContent(location) {\n var title = location.title;\n var address = location.address;\n var phone = location.phone;\n var fax = location.fax;\n var hours = location.hours;\n var directionsLink = location.directionslink;\n var url = location.url;\n var content = '
';\n if (title && title != '') {\n if (url && url != '') {\n content += '

' + title + '

';\n } else {\n content += '

' + title + '

';\n }\n }\n content += '
';\n if (address && address != '') {\n content += '

' + address + '

';\n }\n content += '
';\n if (phone && phone != '') {\n content += 'Main ' + phone;\n }\n if (fax && fax != '') {\n content += '
Fax ' + fax;\n }\n content += '
';\n content += '
';\n if (directionsLink && directionsLink != '') {\n content += 'Get Directions';\n }\n if (hours && hours != '') {\n content += hours;\n }\n content += '
';\n return content;\n}","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var overviewContainer = document.querySelector('.doctor-bio-overview');\n var readMoreTrigger = document.querySelector('.doctor-bio-overview__read-more');\n var hiddenContent = document.querySelector('.doctor-bio-overview__content');\n var videoContent = document.querySelector('.doctor-bio-overview__right');\n var topContent = document.querySelector('.doctor-bio-overview__inner-top');\n if (overviewContainer) {\n readMoreTrigger.addEventListener('click', function (event) {\n hiddenContent.classList.add('full-content');\n });\n if (!videoContent) {\n topContent.classList.add('full-content');\n }\n var mediaQuery = window.matchMedia('(min-width: 576px)');\n var heightContent = document.querySelector('.doctor-bio-overview__wrapper').offsetHeight;\n if (mediaQuery.matches) {\n if (heightContent < 230) {\n readMoreTrigger.classList.add('hide');\n }\n } else {\n if (heightContent < 350) {\n readMoreTrigger.classList.add('hide');\n }\n }\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var pageNav = document.querySelector('.doctor-bio-masthead__nav-wrapper');\n //Fixed in-page navigation \n if (pageNav) {\n var offsetBio = pageNav.offsetTop;\n var mediaQueryUnder = window.matchMedia('(max-width: 991px)');\n\n // Highlight active in-page links \n var allJumpLinks = document.querySelectorAll('.doctor-bio-masthead__nav-wrapper ul li');\n allJumpLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (e) {\n e.preventDefault();\n allJumpLinks.forEach(function (link) {\n link.classList.remove(\"active\");\n });\n this.classList.add(\"active\");\n });\n });\n if (mediaQueryUnder.matches) {\n // Sticky mobile in-page nav\n window.addEventListener('scroll', function (event) {\n var scrollBio = window.scrollY;\n if (scrollBio >= offsetBio) {\n pageNav.classList.add(\"secondary-nav--stick\");\n } else if (scrollBio <= offsetBio) {\n pageNav.classList.remove(\"secondary-nav--stick\");\n }\n });\n }\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n var feedbackform = document.getElementById('feedbackform');\n if (feedbackform) {\n var feedbackyes = document.getElementById('feedbackyes');\n var feedbackno = document.getElementById('feedbackno');\n var feedbacknosubmit = document.getElementById('feedbacknosubmit');\n var feedbackbuttons = document.getElementById('feedbackbuttons');\n var thankyoumessage = document.getElementById('thankyou');\n var feedbackfields = document.getElementById('feedbackfields');\n var feedbackemail = document.getElementById('feedbackemail');\n var feedbackmessage = document.getElementById('feedbackmessage');\n var thumbsUpContainer = document.querySelector('.thumbs-up');\n var feedbackContent = document.querySelector('.content');\n\n //assign logic to yes\n feedbackyes.addEventListener('click', function (e) {\n e.preventDefault();\n thumbsUpContainer.style.display = 'none';\n feedbackbuttons.style.display = 'none';\n thankyoumessage.style.display = 'block';\n feedbackContent.classList.add('center');\n\n //make ajax call to backend\n var apiUrl = \"/api/sitecore/Feedback/sendFeedback?feedback=yes&url=\" + window.location.href;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n //console.log(\"we did it positive\"); \n }\n });\n });\n\n //assign logic to no\n feedbackno.addEventListener('click', function (e) {\n e.preventDefault();\n thumbsUpContainer.style.display = 'none';\n feedbackbuttons.style.display = 'none';\n thankyoumessage.style.display = 'block';\n feedbackfields.style.display = 'block';\n feedbackContent.classList.add('center');\n });\n feedbacknosubmit.addEventListener('click', function (e) {\n e.preventDefault();\n //validate fields are filled\n if (feedbackemail.value == \"\" || feedbackmessage.value == \"\") {\n if (feedbackemail.value == \"\") {\n var feedbackemailerror = document.getElementById('feedbackemail-error');\n feedbackemailerror.style.display = \"block\";\n } else {\n var feedbackemailerror = document.getElementById('feedbackemail-error');\n feedbackemailerror.style.display = \"none\";\n }\n if (feedbackmessage.value == \"\") {\n var feedbackmessageerror = document.getElementById('feedbackmessage-error');\n feedbackmessageerror.style.display = \"block\";\n } else {\n var feedbackmessageerror = document.getElementById('feedbackmessage-error');\n feedbackmessageerror.style.display = \"none\";\n }\n } else {\n //check captcha\n if (grecaptcha && grecaptcha.getResponse().length > 0) {\n //make ajax call to backend\n var apiUrl = \"/api/sitecore/Feedback/sendFeedback?feedback=no&url=\" + window.location.href + \"&email=\" + feedbackemail.value + \"&feedbackmessage=\" + feedbackmessage.value + \"&captcha=\" + grecaptcha.getResponse();\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n thumbsUpContainer.style.display = 'none';\n feedbackfields.style.display = \"none\";\n thankyoumessage.style.display = 'block';\n }\n });\n }\n }\n });\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n //JS for Securiti Cookie in footer\n var cookieLink = document.getElementsByClassName(\"cmp-revoke-consent\");\n if (cookieLink.length > 0) {\n cookieLink[0].setAttribute(\"href\", \"#\");\n cookieLink[0].addEventListener(\"click\", function (event) {\n event.preventDefault();\n });\n }\n var $stickyfooter = $(\".sticky-footer\");\n if (!$stickyfooter.length) {\n return;\n }\n var btn = $stickyfooter.find('.btn');\n var transitioning = false;\n if (btn.length) {\n btn.on('click', function () {\n transitioning = true;\n $stickyfooter.stop().slideToggle(400, function () {\n $stickyfooter.addClass('is-hidden');\n transitioning = false;\n });\n });\n }\n var mywindow = $(window);\n var mypos = mywindow.scrollTop();\n var up = false;\n var newscroll;\n mywindow.scroll(function () {\n if (!transitioning) {\n newscroll = mywindow.scrollTop();\n if (newscroll > mypos && !up || newscroll < mypos && up) {\n $stickyfooter.stop().slideToggle();\n up = !up;\n }\n mypos = newscroll;\n }\n });\n});","\"use strict\";\n\nwindow.addEventListener(\"DOMContentLoaded\", function (event) {\n var headerNav = document.querySelector(\".header\");\n if (headerNav != null) {\n var menuItems = document.querySelectorAll(\"li.has-submenu\");\n var overlay = document.querySelector(\".dropdown-overlay\");\n var closeSearchBtn = document.querySelector(\".header__search\");\n var closeSearchPanel = document.querySelector(\".main-search-nav\");\n menuItems.forEach(function (item) {\n item.addEventListener(\"click\", function (e) {\n if (this.classList.contains(\"open\")) {\n this.classList.remove(\"open\");\n setAriaFalse();\n overlay.classList.remove(\"active-menu\");\n } else {\n closeOpenMainMenuItems();\n this.classList.add(\"open\");\n this.firstElementChild.setAttribute(\"aria-expanded\", \"true\");\n overlay.classList.add(\"active-menu\");\n }\n var htmlEl = document.getElementsByTagName(\"html\")[0];\n htmlEl.classList.remove(\"mobile-open\");\n\n // Closes search menu if open\n if (closeSearchBtn.classList.contains('active-search')) {\n closeSearchBtn.classList.remove('active-search');\n closeSearchBtn.setAttribute(\"aria-expanded\", \"false\");\n }\n if (closeSearchPanel.classList.contains('active-search')) {\n closeSearchPanel.classList.remove('active-search');\n }\n e.stopPropagation();\n });\n });\n function closeOpenMainMenuItems() {\n var openMenus = document.querySelectorAll(\"li.has-submenu\");\n openMenus.forEach(function (menus) {\n menus.classList.remove(\"open\");\n });\n setAriaFalse();\n overlay.classList.remove(\"active-menu\");\n }\n function setAriaFalse() {\n var ariaLink = document.querySelectorAll(\"li.has-submenu button.active-trigger\");\n ariaLink.forEach(function (link) {\n link.setAttribute(\"aria-expanded\", \"false\");\n });\n }\n var dropDownMenuItems = document.querySelectorAll(\".drop-down\");\n // Prevents menu from closing when clicked\n dropDownMenuItems.forEach(function (item) {\n item.addEventListener(\"click\", function (e) {\n closeOpenMainMenuItems();\n e.stopPropagation();\n });\n });\n var closeMenu = document.querySelectorAll(\".drop-down__close\");\n // Close menu\n closeMenu.forEach(function (item) {\n item.addEventListener(\"click\", function (e) {\n closeOpenMainMenuItems();\n });\n });\n var _headerNav = document.querySelector('.header__main-wrapper');\n var offset = _headerNav.offsetTop;\n var alertBox = document.querySelectorAll('.alert-container');\n var mobileMainNavigation = document.querySelector('.mobile-main-nav');\n if (alertBox.length > 0) {\n alertTotalHeight();\n }\n\n //Get the total height of each element\n function alertTotalHeight() {\n var total = 0;\n alertBox.forEach(function (item) {\n var itemHeight = item.offsetHeight;\n total = total + itemHeight;\n mobileMainNavigation.style.top = total + 'px';\n });\n }\n //Fixed Header Navigation \n window.onscroll = function () {\n var scroll = window.scrollY;\n if (scroll >= offset) {\n _headerNav.classList.add(\"fixed-header\");\n if (alertBox.length > 0) {\n mobileMainNavigation.style.top = '0';\n }\n } else if (scroll <= offset) {\n _headerNav.classList.remove(\"fixed-header\");\n if (alertBox.length > 0) {\n alertTotalHeight();\n }\n }\n };\n window.onresize = function () {\n if (alertBox.length > 0) {\n alertTotalHeight();\n }\n };\n var htmlEle = document.getElementsByTagName('html')[0];\n var mediaQueryAbove = window.matchMedia('(min-width: 1024px)');\n //Click outside of menu or search\n if (mediaQueryAbove.matches) {\n htmlEle.addEventListener(\"click\", function (e) {\n var el = $(e.target),\n $myLinks = $(\"li.has-submenu\");\n var ele = $(e.target),\n $mainSearch = $(\"div.main-search-nav\");\n if (ele.is($mainSearch) || $mainSearch.has(ele).length) {\n return true;\n } else {\n $mainSearch.removeClass(\"active-search\");\n closeSearchBtn.classList.remove(\"active-search\");\n closeSearchBtn.setAttribute(\"aria-expanded\", \"false\");\n overlay.classList.remove(\"active-menu\");\n htmlEle.classList.remove(\"mobile-open\");\n }\n if (el.is($myLinks) || $myLinks.has(el).length) {\n return true;\n } else {\n $myLinks.removeClass(\"open\");\n setAriaFalse();\n overlay.classList.remove(\"active-menu\");\n htmlEle.classList.remove(\"mobile-open\");\n }\n });\n }\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n //Distance calculator for locations based on browser geolocation\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(updateNavigationLocations);\n }\n function updateNavigationLocations(position) {\n var lat = position.coords.latitude;\n var lng = position.coords.longitude;\n if (lat && lng) {\n document.querySelectorAll(\".location-menu\").forEach(function (menu) {\n requestNavigationLocations(menu, lat, lng);\n });\n }\n }\n function requestNavigationLocations(menu, lat, lng) {\n var columnId = menu.getAttribute(\"data-column-id\");\n fetch('/api/sitecore/navigation/locations?ColumnId=' + columnId + '&lat=' + lat + '&lon=' + lng, {\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (data) {\n return processNavigationLocationsData(data, menu);\n }).catch(function (err) {\n //Maybe TODO\n });\n }\n function processNavigationLocationsData(data, menu) {\n var list = menu.querySelector(\".locations-list\");\n var html = \"\";\n data.Locations.forEach(function (loc) {\n html += '
  • ' + loc.Name + '
  • ';\n });\n list.innerHTML = html;\n var title = menu.querySelector(\".location-title\");\n var titleText = title.getAttribute(\"data-location-title\");\n title.innerHTML = titleText;\n }\n});","\"use strict\";\n\nwindow.addEventListener(\"DOMContentLoaded\", function (event) {\n var mobileSearch = document.querySelector(\".main-search-nav\");\n if (mobileSearch != null) {\n var searchTriggerBtn = document.querySelector(\".header__search\");\n var closeSearch = document.querySelector(\".main-search-nav__panel-close\");\n var htmlEl = document.getElementsByTagName(\"html\")[0];\n var mainNavItems = document.querySelectorAll(\"li.has-submenu\");\n var ariaBtn = document.querySelectorAll(\"li.has-submenu button\");\n var overlayContainer = document.querySelector(\".dropdown-overlay\");\n var mediaQueryUnderSearch = window.matchMedia('(max-width: 1023px)');\n searchTriggerBtn.addEventListener(\"click\", function (e) {\n // Opens search menu\n if (!searchTriggerBtn.classList.contains('active-search')) {\n this.classList.add('active-search');\n this.setAttribute(\"aria-expanded\", \"true\");\n addFocus();\n overlayContainer.classList.add('active-menu');\n if (mediaQueryUnderSearch.matches) {\n if (!htmlEl.classList.contains('mobile-open')) {\n htmlEl.classList.add('mobile-open');\n }\n }\n if (!mobileSearch.classList.contains('active-search')) {\n mobileSearch.classList.add('active-search');\n }\n if (!overlayContainer.classList.contains('active-menu')) {\n overlayContainer.classList.add('active-menu');\n }\n } else {\n this.classList.remove('active-search');\n this.setAttribute(\"aria-expanded\", \"false\");\n if (mediaQueryUnderSearch.matches) {\n htmlEl.classList.remove('mobile-open');\n }\n mobileSearch.classList.remove('active-search');\n overlayContainer.classList.remove('active-menu');\n }\n\n // Closes open main nav menus\n mainNavItems.forEach(function (item) {\n if (item.classList.contains(\"open\")) {\n item.classList.remove(\"open\");\n }\n });\n\n // Resets aria on main nav\n ariaBtn.forEach(function (btn) {\n btn.setAttribute(\"aria-expanded\", \"false\");\n });\n e.stopPropagation();\n });\n closeSearch.addEventListener(\"click\", function (e) {\n searchTriggerBtn.classList.remove(\"active-search\");\n mobileSearch.classList.remove(\"active-search\");\n if (mediaQueryUnderSearch.matches) {\n htmlEl.classList.remove(\"mobile-open\");\n }\n searchTriggerBtn.setAttribute(\"aria-expanded\", \"false\");\n overlayContainer.classList.remove(\"active-menu\");\n });\n function addFocus() {\n var inputContainer = document.querySelector('.magic-box-input input');\n //inputContainer.focus();\n }\n }\n});","\"use strict\";\n\nwindow.addEventListener(\"DOMContentLoaded\", function (event) {\n var headerNav = document.querySelector(\".header\");\n if (headerNav != null) {\n var mobileTrigger = document.querySelector(\".header__burger\");\n var mainMobileNav = document.querySelector(\".mobile-main-nav\");\n var closeMobileNav = document.querySelector(\".mobile-main-nav__close\");\n var htmlEl = document.getElementsByTagName(\"html\")[0];\n // Opens Mobile Nav\n mobileTrigger.addEventListener(\"click\", function (e) {\n this.classList.add(\"mobile-open\");\n htmlEl.classList.add(\"mobile-open\");\n if (this.classList.contains(\"mobile-open\")) {\n this.setAttribute(\"aria-expanded\", \"true\");\n } else {\n this.setAttribute(\"aria-expanded\", \"false\");\n }\n mainMobileNav.classList.add(\"mobile-open\");\n });\n // Closes Mobile Nav\n closeMobileNav.addEventListener(\"click\", function (e) {\n mobileTrigger.classList.remove(\"mobile-open\");\n mainMobileNav.classList.remove(\"mobile-open\");\n htmlEl.classList.remove(\"mobile-open\");\n mobileTrigger.setAttribute(\"aria-expanded\", \"false\");\n });\n var mainPanelItems = document.querySelectorAll(\".mobile-main-nav__menu-item\");\n // Open level 2 panel\n mainPanelItems.forEach(function (item) {\n item.addEventListener(\"click\", function (e) {\n this.classList.add(\"open-panel\");\n this.firstElementChild.setAttribute(\"aria-expanded\", \"true\");\n mainMobileNav.classList.add(\"in-active\");\n e.stopPropagation();\n });\n });\n var panelReturnBtns = document.querySelectorAll(\".mobile-main-nav__panel-return\");\n var setBtnAria = document.querySelectorAll(\".mobile-main-nav__menu-item button\");\n // Close level 2 panel reset aria\n panelReturnBtns.forEach(function (btn) {\n btn.addEventListener(\"click\", function (e) {\n this.parentElement.parentElement.classList.remove(\"open-panel\");\n mainMobileNav.classList.remove(\"in-active\");\n setBtnAria.forEach(function (item) {\n item.setAttribute(\"aria-expanded\", \"false\");\n });\n e.stopPropagation();\n });\n });\n var closeAllmenus = document.querySelectorAll(\".mobile-main-nav__panel-close\");\n // Closes all panels and menu\n closeAllmenus.forEach(function (btn) {\n btn.addEventListener(\"click\", function (e) {\n htmlEl.classList.remove(\"mobile-open\");\n mainMobileNav.classList.remove(\"in-active\");\n mobileTrigger.classList.remove(\"mobile-open\");\n mainMobileNav.classList.remove(\"mobile-open\");\n var allPanels = document.querySelectorAll(\".mobile-main-nav__menu-item\");\n allPanels.forEach(function (panel) {\n if (panel.classList.contains(\"open-panel\")) {\n panel.classList.remove(\"open-panel\");\n }\n });\n\n // Sets Aria to false\n setBtnAria.forEach(function (item) {\n item.setAttribute(\"aria-expanded\", \"false\");\n });\n e.stopPropagation();\n });\n });\n var locationsDropdownButton = document.querySelector(\".mobile-main-nav__locations button\");\n var locationsContainer = document.querySelector(\".mobile-main-nav__locations\");\n // Opens Health Sytem Locations menu\n locationsDropdownButton.addEventListener(\"click\", function (e) {\n if (locationsContainer.classList.contains(\"expand-menu\")) {\n locationsContainer.classList.remove(\"expand-menu\");\n } else if (!locationsContainer.classList.contains(\"expand-menu\")) {\n locationsContainer.classList.add(\"expand-menu\");\n }\n });\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var locationsCarousel = document.querySelectorAll('.locations-carousel');\n if (locationsCarousel.length > 0) {\n var locationSliders = document.querySelectorAll('.locations-carousel__container');\n for (var i = 0; i < locationSliders.length; i++) {\n var locationsGlide = new Glide(locationSliders[i], {\n type: 'carousel',\n autoplay: 5500,\n hoverpause: false,\n animationDuration: 750,\n animationTimingFunc: 'ease-in-out',\n gap: 0,\n startAt: 0,\n perView: 1\n });\n var mediaQueryBelow = window.matchMedia('(max-width: 1023px)');\n if (mediaQueryBelow.matches) {\n locationsGlide.disable();\n } else {\n locationsGlide.mount();\n }\n }\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var mainVideo = document.querySelector('.bg-video');\n var mainHero = document.querySelector('.main-hero');\n if (mainVideo) {\n var videoWrapper = document.querySelector('.main-hero__video-container');\n mainVideo.addEventListener('ended', function (event) {\n mainHero.classList.add('main-hero__fade-out');\n setTimeout(function () {\n videoWrapper.style.zIndex = 1;\n }, 2000);\n });\n }\n});","\"use strict\";\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Smooth scroll and offset fix for deeplinks\n // https://stackoverflow.com/a/51670796\n $('a[href^=\"#\"]').on('click', function (e) {\n var id = $(this).attr('href');\n if (id == \"#\") {\n return;\n }\n e.preventDefault();\n $('html,body').animate({\n scrollTop: $(id).offset().top - 150\n }, 500);\n });\n\n // // Get all \"navbar-burger\" elements\n // var $navbarBurgers = Array.prototype.slice.call(\n // document.querySelectorAll(\".navbar-burger\"),\n // 0\n // );\n\n // // Check if there are any navbar burgers\n // if ($navbarBurgers.length > 0) {\n // // Add a click event on each of them\n // $navbarBurgers.forEach(function ($el) {\n // $el.addEventListener(\"click\", function () {\n // // Get the target from the \"data-target\" attribute\n // var target = $el.dataset.target;\n // var $target = document.getElementById(target);\n\n // // Toggle the class on both the \"navbar-burger\" and the \"navbar-menu\"\n // //$el.classList.toggle(\"is-active\");\n // //$target.classList.toggle(\"is-active\");\n // $(\".navbar-mobile-content\").toggleClass(\"active\");\n // $(\".navbar-burger\").toggleClass(\"is-active\");\n // //make mobile menu fixed position if scroll is lowerthan navbar\n // var navbar = $('.navbar.desktop');\n // if (!navbar || !navbar.offset()) return;\n // var fixmeTop = navbar.offset().top; \t\t// get initial position of the element\n // var currentScroll = $(window).scrollTop();// get current position\n // if (currentScroll >= 75) { // apply position: fixed if you\n // $(\".navbar-mobile-content\").addClass(\"fixed\")\n // } else { // apply position: static\n // $(\".navbar-mobile-content\").removeClass(\"fixed\")\n // }\n\n // });\n // });\n // }\n\n // $(\".navbar-mobile-content ul li a\").click(function () {\t \n // \t var linkPage = $(this).next(\".link-page\");\n // \t if (linkPage && !linkPage.hasClass('expanded')){\n // \t\t linkPage.slideDown();\n // linkPage.addClass(\"expanded\");\n // \t } else {\n // linkPage.slideUp();\n // linkPage.removeClass(\"expanded\");\n // }\n // });\n\n // $(\"#mobileNavMockSearchIcon\").on(\"click\", function (event) {\n // $(this).hide();\n // $(\"#mobileNavSearchIcon\").show();\n // })\n\n // $(\".closed-search\").on(\"click\", function (event) { \n // if ($(this).hasClass(\"closed-search\")) {\n // $(this).removeClass(\"closed-search\");\n // $(this).toggleClass(\"active\");\n // }\n // });\n\n // $(\".close-mobile-search\").on(\"click\", function (event) {\n // event.stopPropagation();\n // var navSearch = $(this).closest(\".nav-mobile-search\");\n\n // $(navSearch).addClass(\"closed-search\");\n // $(navSearch).removeClass(\"active\");\n // });\n\n // $(\".clear-input\").on(\"click\", function (event) {\n // event.stopPropagation();\n // $(\"#mobile-nav-input\").val(\"\")\n // });\n\n // $('.nav-dropdown-trigger').on('click', function(e){\n // //close all other open dropdowns\n // $('.dropdown').removeClass('active-menu');\n // $('.nav-dropdown-trigger').not($(this)).removeClass('open-menu');\n // $('.dropdown-menu').slideUp();\n\n // if (e.target.className.indexOf('open-menu') != -1) {\n // // close\n // $(this).removeClass('open-menu');\n // $(this).parents('.dropdown').removeClass('active-menu');\n // $(this).parents('.dropdown').find('.dropdown-menu').slideUp();\n // } else {\n // // open\n // $(this).addClass('open-menu');\n // $(this).parents('.dropdown').addClass('active-menu');\n // $(this).parents('.dropdown').find('.dropdown-menu').slideDown().promise().done(function() {\n // });\n\n // //center caret\n // var textWidth = $(this).width(); \n // var marginLeftCalc = textWidth / 2;\n\n // var adjustCaretCss = '.navbar .dropdown.active-menu:after { margin-left: ' + marginLeftCalc + 'px; }';\n\n // //Create style element\n // var adjustCaretStyle = document.createElement('style');\n // adjustCaretStyle.id = 'adjustCaret';\n // adjustCaretStyle.type = 'text/css';\n // adjustCaretStyle.appendChild(document.createTextNode(adjustCaretCss));\n\n // var originalStyle = document.querySelector('style[id=\"adjustCaret\"]')\n // if (originalStyle) { \n // document.querySelector('body').replaceChild(adjustCaretStyle, originalStyle);\n // } else {\n // document.querySelector('body').appendChild(adjustCaretStyle);\n // }\n\n // } \n // });\n\n // $('.close-trigger').on('click', function(e){\n // $(this).parents('.dropdown').removeClass('active-menu');\n // $(this).parents('.dropdown').find('.nav-dropdown-trigger').removeClass('open-menu');\n // $(this).parents('.dropdown').find('.dropdown-menu').slideUp();\n // });\n\n // });\n\n // $(document).ready(function () {\n // var navbar = $('.navbar.desktop');\n // if (!navbar || !navbar.offset()) return;\n\n // var fixmeTop = navbar.offset().top; \t\t// get initial position of the element\n\n // $(window).scroll(function() { // assign scroll event listener\n // var currentScroll = $(window).scrollTop();// get current position\n // if (currentScroll >= fixmeTop) { // apply position: fixed if you\n // navbar.addClass(\"fixed-bar\")\n // } else { // apply position: static\n // navbar.removeClass(\"fixed-bar\")\n // }\n // });\n // });\n\n // $(document).ready(function () {\n // var navbar = $('.navbar.mobile');\n // if (!navbar || !navbar.offset()) return; \n\n // var fixmeTop = navbar.offset().top;\t\t\t// get initial position of the element\n\n // $(window).scroll(function() {\t\t\t\t\t// assign scroll event listener\n // var currentScroll = $(window).scrollTop();// get current position\n // if (currentScroll >= fixmeTop) { // apply position: fixed if you\n // navbar.addClass(\"fixed-bar\")\n // $(\".navbar-mobile-content\").addClass(\"fixed\")\n // } else { // apply position: static\n // navbar.removeClass(\"fixed-bar\")\n // $(\".navbar-mobile-content\").removeClass(\"fixed\")\n // }\n // });\n});","\"use strict\";\n\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction PhysicianCompareMain() {\n function initializePhysicianCompare() {\n var saveButtons = document.getElementsByClassName('doctor-card__btn--save-btn');\n var clearButton = document.querySelector('.doctor-compare__btn--borderless');\n var compareSection = document.querySelector('.doctor-compare');\n if (compareSection) {\n function saveState() {\n var savedItems = Array.from(saveButtons).filter(function (saveButton) {\n return saveButton.querySelector('.temp-checkbox').classList.contains('checked');\n }).map(function (saveButton) {\n return saveButton.getAttribute('data-expand-id');\n });\n var currentSavedItems = JSON.parse(sessionStorage.getItem('savedItems')) || [];\n var updatedSavedItems = Array.from(new Set([].concat(_toConsumableArray(currentSavedItems), _toConsumableArray(savedItems))));\n sessionStorage.setItem('savedItems', JSON.stringify(updatedSavedItems));\n }\n function handleSaveButtonClick(saveButton) {\n var checkbox = saveButton.querySelector('.temp-checkbox');\n var buttonText = saveButton.querySelector('span');\n var dataId = saveButton.getAttribute('data-expand-id');\n var compareCliniciansButton = document.querySelector('.doctor-compare__compare.doctor-compare__btn.doctor-compare__btn--full-sky');\n if (checkbox && buttonText) {\n saveButton.addEventListener('click', function (event) {\n var executeQuery = false;\n var savedItems = JSON.parse(sessionStorage.getItem('savedItems')) || [];\n if (checkbox.classList.contains('checked')) {\n checkbox.classList.remove('checked');\n buttonText.textContent = 'Compare';\n savedItems = savedItems.filter(function (item) {\n return item !== dataId;\n });\n if ($('.doctor-compare__checkbox').hasClass(\"checked\")) {\n executeQuery = true;\n }\n } else {\n checkbox.classList.add('checked');\n buttonText.textContent = 'Compare';\n if (!savedItems.includes(dataId)) {\n savedItems.push(dataId);\n }\n }\n if (savedItems.length > 6 || savedItems.length == 1) {\n compareCliniciansButton.style.backgroundColor = '#dcdcdc';\n compareCliniciansButton.disabled = true;\n compareCliniciansButton.cursor = 'unset';\n compareCliniciansButton.textDecoration = 'none';\n } else {\n compareCliniciansButton.style.backgroundColor = '#00a9e0';\n compareCliniciansButton.disabled = false;\n compareCliniciansButton.cursor = 'pointer';\n compareCliniciansButton.textDecoration = 'underline';\n }\n sessionStorage.setItem('savedItems', JSON.stringify(savedItems));\n updateCheckedCount();\n if (executeQuery) {\n $('.CoveoResultList').coveo('executeQuery');\n if (savedItems.length < 1) {\n $('.doctor-compare__checkbox').click();\n }\n }\n });\n } else {\n console.error('Checkbox or button text element not found inside the save button.');\n }\n }\n function clearAllSaves() {\n Array.from(saveButtons).forEach(function (saveButton) {\n var checkbox = saveButton.querySelector('.temp-checkbox');\n var buttonText = saveButton.querySelector('span');\n if (checkbox && buttonText) {\n checkbox.classList.remove('checked');\n buttonText.textContent = 'Compare';\n }\n });\n sessionStorage.removeItem('savedItems');\n updateCheckedCount();\n }\n Array.from(saveButtons).forEach(handleSaveButtonClick);\n if (clearButton) {\n clearButton.addEventListener('click', function () {\n var checkbox = document.querySelector('.doctor-compare__checkbox');\n if (checkbox.classList.contains('checked')) {\n checkbox.classList.remove('checked');\n }\n clearAllSaves();\n $('.CoveoResultList').coveo('executeQuery');\n });\n } else {\n console.error('Clear button element not found.');\n }\n loadSavedState();\n updateCheckedCount();\n }\n }\n initializePhysicianCompare();\n Coveo.$$(document).on('newResultsDisplayed', function () {\n initializePhysicianCompare();\n console.log(\"newResultsDisplayed\");\n });\n var compareClinicians = document.querySelector('.doctor-compare__compare.doctor-compare__btn.doctor-compare__btn--full-sky');\n var physicianModalData = null;\n var genderFilter = null;\n var isGenderSorted = false;\n var isLocationSorted = false;\n var istreatsAdultsChildrenSorted = false;\n var onlineSchedulingFilter = null;\n var isOnlineSchedulingSort = false;\n var isOffersTelehealthSort = false;\n var isAcceptingNewPatientsSort = false;\n var specialtyFilter = null;\n var isSpecialtySorted = null;\n var activeFilters = []; // move to session\n if (compareClinicians) {\n compareClinicians.addEventListener('click', function () {\n // Retrieve the item IDs from session storage\n var savedItems = sessionStorage.getItem('savedItems');\n if (!savedItems) {\n console.error('No saved items found in session storage.');\n return;\n }\n var itemIDs = JSON.parse(savedItems);\n if (itemIDs.length === 0) {\n console.error('The saved items list is empty.');\n return;\n }\n var queryString = itemIDs.map(function (id) {\n return \"itemID=\".concat(id);\n }).join('&');\n physicianModalData = null;\n // fetch('https://dev2.ynhhs.org/getphysiciansforcomparison.json');\n fetch(\"/api/sitecore/physicians/GetPhysiciansForComparison?\".concat(queryString)).then(function (response) {\n if (!response.ok) {\n throw new Error('Network response was not ok.');\n }\n return response.json();\n }).then(function (data) {\n physicianModalData = data;\n GeneratePhysicianData(data);\n }).catch(function (error) {\n console.error('There was a problem with the fetch operation:', error);\n });\n });\n }\n function buildDataPointList(data) {\n // Return \"N/A\" if the data is an empty string or does not contain any delimiters\n if (typeof data === 'string' && data.trim().length === 0) {\n return \"

    N/A

    \";\n }\n\n // Split the data string by either comma or semicolon and trim the resulting elements\n var dataArray = data.split(/[,;]/).map(function (i) {\n return i.trim();\n }).filter(function (i) {\n return i.length > 0;\n });\n\n // Return \"N/A\" if the resulting array is empty\n if (dataArray.length === 0) {\n return \"

    N/A

    \";\n }\n if (dataArray.length > 4) {\n // Returning a shortened list, and modal will include a tooltip\n return \"\");\n } else {\n // Returning an unordered list\n return \"\");\n }\n }\n function buildDataPointListTooltip(data) {\n // builds the tooltip and button for data lists with execsive length.\n\n if (typeof data === 'string' && data.length === 0 || data.split(',').length < 5) {\n return null;\n }\n var html = \"\\n
    \\n \\n \\n
    \");\n return html;\n }\n function generatePhysicianHTML(physician) {\n // debugger;\n console.log(physician);\n // const genderTemplate = document.getElementById('gender-template').innerHTML;\n var genderTemplate = document.getElementById('physician-row-template').innerHTML;\n var onlineSchedulingIcon = physician.BookOnline ? \"\\n \\n \\n \" : \"\\n \\n \\n \\n \\n \";\n var bookOnlineBtn = \"\\n \\n \\n \\n \\n \\n Book an Appointment\\n \");\n var bookByPhoneBtn = \"\\n \\n \\n \\n \\n \\n Call for an Appointment\\n \");\n var bookingBtn = physician.AcceptingNewPatients ? physician.BookOnline ? bookOnlineBtn : physician.Telephone ? bookByPhoneBtn : null : null;\n var offersTelehealthIcon = physician.OffersTelehealth.toLowerCase() == 'yes' ? \"\\n \\n \\n \" : \"\\n \\n \\n \\n \\n \";\n var acceptingNewPatientsIcon = physician.AcceptingNewPatients === true || physician.AcceptingNewPatients.toString().toLowerCase() == 'yes' ? \"\\n \\n \\n \" : \"\\n \\n \\n \\n \\n \";\n var languageSpoken = buildDataPointList(physician.Languages);\n console.log(\"Language Spoken\", languageSpoken);\n var view = {\n ID: physician.ID,\n ImageUrl: physician.ImageUrl,\n FullName: physician.FullName,\n BookingBtn: bookingBtn,\n Url: physician.Url,\n Location: physician.Location,\n Specialties: buildDataPointList(physician.Specialties),\n SpecialtiesTooltip: buildDataPointListTooltip(physician.Specialties),\n Subspecialties: buildDataPointList(physician.Subspecialties),\n SubspecialtiesTooltip: buildDataPointListTooltip(physician.Subspecialties),\n ConditionsTreatments: buildDataPointList(physician.ConditionsTreatments),\n ConditionsTreatmentsTooltip: buildDataPointListTooltip(physician.ConditionsTreatments),\n InsuranceAccepted: buildDataPointList(physician.InsuranceAccepted),\n InsuranceAcceptedTooltip: buildDataPointListTooltip(physician.InsuranceAccepted),\n Gender: physician.Gender,\n LanguagesSpoken: buildDataPointList(physician.Languages),\n LanguagesSpokenTooltip: buildDataPointListTooltip(physician.Languages),\n DeliveryNetworks: buildDataPointList(physician.DeliveryNetworks),\n DeliveryNetworksTooltip: buildDataPointListTooltip(physician.DeliveryNetworks),\n TreatsAdultsChildren: physician.TreatsAdultsChildren,\n OnlineSchedulingIcon: onlineSchedulingIcon,\n OnlineScheduling: physician.OnlineScheduling,\n OffersTelehealthIcon: offersTelehealthIcon,\n OffersTelehealth: physician.OffersTelehealth,\n AcceptingNewPatientsIcon: acceptingNewPatientsIcon,\n AcceptingNewPatients: physician.AcceptingNewPatients\n };\n console.log(view);\n return Mustache.render(genderTemplate, view);\n }\n function GeneratePhysicianData(data) {\n var genderFilterEnabled = $('.doctor-compare__condition[data-column=\"gender\"]').hasClass('active');\n var onlineSchedulingFilterEnabled = $('.doctor-compare__condition[data-column=\"online-scheduling\"]').hasClass('active');\n var specialtiesFilterEnabled = $('.doctor-compare__condition[data-column=\"specialties\"]').hasClass('active');\n var container = document.querySelector('.doctor-compare__modal-table');\n container.innerHTML = \"
    \\n
    \\n Saved Clinicians\\n
    \\n\\n
    \\n\\n
    \\n\\n
    \\n \\n
    \\n Location\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Specialties\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Subspecialties\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Conditions & Treatments\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Insurance Accepted\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Gender\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Languages Spoken\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Delivery Network\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Treats Adults/Children\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Online Scheduling\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n\\n
    \\n Offers Telehealth\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n
    \\n Accepting New Patients\\n\\n
    \\n \\n\\n \\n
    \\n
    \\n
    \";\n if (Array.isArray(data)) {\n data.forEach(function (physicians) {\n var html = generatePhysicianHTML(physicians);\n container.insertAdjacentHTML('beforeend', html);\n });\n } else {\n console.error('Unexpected response format.');\n }\n\n // Adding click event to tooltips for excessively long lists:\n var showTooltipBtns = document.querySelectorAll('.doctor-compare__modal-table-list-tooltip--btn');\n showTooltipBtns.forEach(function (btn) {\n btn.addEventListener('click', function (e) {\n var tooltip = e.target.nextElementSibling;\n tooltip.classList.toggle('doctor-compare__modal-table-list-tooltip--open');\n });\n });\n var showTooltipCloseBtns = document.querySelectorAll('.doctor-compare__modal-table-list-tooltip--close');\n showTooltipCloseBtns.forEach(function (btn) {\n btn.addEventListener('click', function (e) {\n var tooltip = e.target.closest('.doctor-compare__modal-table-list-tooltip');\n console.log(tooltip);\n tooltip.classList.toggle('doctor-compare__modal-table-list-tooltip--open');\n });\n });\n\n //Sorting for Location\n var intervalLocation = setInterval(function () {\n var locationFilter = document.querySelector('div#location');\n if (locationFilter != null) {\n clearInterval(intervalLocation);\n locationFilter.addEventListener('click', function () {\n var a = data.sort(function (a, b) {\n if (a.Location < b.Location) {\n return !isLocationSorted ? -1 : 1;\n }\n if (a.Location > b.Location) {\n return isLocationSorted ? -1 : 1;\n }\n return 0;\n });\n isLocationSorted = !isLocationSorted;\n GeneratePhysicianData(a);\n UpdateTableCells();\n });\n }\n }, 1000);\n\n //Sorting for Gender\n var intervalGender = setInterval(function () {\n var genderFilter = document.querySelector('div#gender');\n if (genderFilter != null) {\n clearInterval(intervalGender);\n genderFilter.addEventListener('click', function () {\n var a = data.sort(function (a, b) {\n if (a.Gender < b.Gender) {\n return !isGenderSorted ? -1 : 1;\n }\n if (a.Gender > b.Gender) {\n return isGenderSorted ? -1 : 1;\n }\n return 0;\n });\n isGenderSorted = !isGenderSorted;\n GeneratePhysicianData(a);\n UpdateTableCells();\n });\n }\n }, 1000);\n\n //Sorting for onlinescheduling\n var intervalOnlineScheduling = setInterval(function () {\n var onlineSchedulingFilter = document.querySelector('div#online-scheduling');\n if (onlineSchedulingFilter != null) {\n clearInterval(intervalOnlineScheduling);\n onlineSchedulingFilter.addEventListener('click', function () {\n console.log('Starting CLicks');\n var a = data.sort(function (a, b) {\n if (a.OnlineScheduling < b.OnlineScheduling) {\n return !isOnlineSchedulingSort ? -1 : 1;\n }\n if (a.OnlineScheduling > b.OnlineScheduling) {\n return isOnlineSchedulingSort ? -1 : 1;\n }\n return 0;\n });\n isOnlineSchedulingSort = !isOnlineSchedulingSort;\n GeneratePhysicianData(a);\n UpdateTableCells();\n });\n }\n }, 1000);\n\n //Sorting for Offers Telehealth\n var intervalOffersTelehealthFilter = setInterval(function () {\n var OffersTelehealthFilter = document.querySelector('div#offers-telehealth');\n if (OffersTelehealthFilter) {\n clearInterval(intervalOffersTelehealthFilter);\n OffersTelehealthFilter.addEventListener('click', function () {\n var a = data.sort(function (a, b) {\n if (a.OffersTelehealth < b.OffersTelehealth) {\n return !isOffersTelehealthSort ? -1 : 1;\n }\n if (a.OffersTelehealth > b.OffersTelehealth) {\n return isOffersTelehealthSort ? -1 : 1;\n }\n return 0;\n });\n isOffersTelehealthSort = !isOffersTelehealthSort;\n GeneratePhysicianData(a);\n UpdateTableCells();\n });\n }\n }, 1000);\n\n //Sorting for accepting new patients\n var intervalOfAcceptingNewPatientsFilter = setInterval(function () {\n var acceptingNewPatientsFilter = document.querySelector('div#accepting-new-patients');\n if (acceptingNewPatientsFilter) {\n clearInterval(intervalOfAcceptingNewPatientsFilter);\n acceptingNewPatientsFilter.addEventListener('click', function () {\n var a = data.sort(function (a, b) {\n if (a.AcceptingNewPatients < b.AcceptingNewPatients) {\n return !isAcceptingNewPatientsSort ? -1 : 1;\n }\n if (a.AcceptingNewPatients > b.AcceptingNewPatients) {\n return isAcceptingNewPatientsSort ? -1 : 1;\n }\n return 0;\n });\n isAcceptingNewPatientsSort = !isAcceptingNewPatientsSort;\n GeneratePhysicianData(a);\n UpdateTableCells();\n });\n }\n }, 1000);\n\n //Sorting for Treats Adults/Children\n var intervaltreatsAdultsChildren = setInterval(function () {\n var treatsAdultsChildrenFilter = document.querySelector('div#treats-adults-children');\n if (treatsAdultsChildrenFilter) {\n clearInterval(intervaltreatsAdultsChildren);\n treatsAdultsChildrenFilter.addEventListener('click', function () {\n var a = data.sort(function (a, b) {\n if (a.TreatsAdultsChildren < b.TreatsAdultsChildren) {\n return !istreatsAdultsChildrenSorted ? -1 : 1;\n }\n if (a.TreatsAdultsChildren > b.TreatsAdultsChildren) {\n return istreatsAdultsChildrenSorted ? -1 : 1;\n }\n return 0;\n });\n istreatsAdultsChildrenSorted = !istreatsAdultsChildrenSorted;\n GeneratePhysicianData(a);\n UpdateTableCells();\n });\n }\n }, 1000);\n\n // Adding click event to remove buttons\n var removePhysicianBtns = document.querySelectorAll('.doctor-compare__btn.doctor-compare__btn--remove');\n if (removePhysicianBtns) {\n if (removePhysicianBtns.length >= 2) {\n removePhysicianBtns.forEach(function (btn) {\n btn.addEventListener('click', function (e) {\n var physician = e.target.dataset.physician;\n if (physician) {\n // getting table row\n var row = e.target.closest('.doctor-compare__modal-table-row');\n RemovePhysician(physician, row);\n updateCheckedCount();\n }\n });\n });\n }\n }\n }\n function RemovePhysician(physician, row) {\n console.log(\"Removing physician: \".concat(physician));\n //removing table row\n row.remove();\n\n // getting session data\n var savedItems = JSON.parse(sessionStorage.getItem('savedItems')) || [];\n console.log(savedItems);\n // finding index of physician to remove\n var index = savedItems.indexOf(physician);\n console.log(\"index: \".concat(index));\n // updating array of physicians\n var removedItem = savedItems.splice(index, 1);\n console.log(savedItems);\n // updating session with new array\n sessionStorage.setItem('savedItems', JSON.stringify(savedItems));\n\n // updating coveo results\n loadSavedState();\n updateCheckedCount();\n $('.CoveoResultList').coveo('executeQuery');\n }\n function loadSavedState() {\n var savedItems = JSON.parse(sessionStorage.getItem('savedItems')) || [];\n var saveButtons = document.getElementsByClassName('doctor-card__btn--save-btn');\n Array.from(saveButtons).forEach(function (saveButton) {\n var checkbox = saveButton.querySelector('.temp-checkbox');\n var buttonText = saveButton.querySelector('span');\n var dataId = saveButton.getAttribute('data-expand-id');\n if (checkbox && buttonText && savedItems.includes(dataId)) {\n checkbox.classList.add('checked');\n buttonText.textContent = 'Compare';\n } else {\n checkbox.classList.remove('checked');\n buttonText.textContent = 'Compare';\n }\n });\n }\n function updateCheckedCount() {\n var savedItems = JSON.parse(sessionStorage.getItem('savedItems')) || [];\n var filterLabel = document.querySelector('label[for=\"filter-comparison\"] span');\n var compareCliniciansLabel = document.querySelector('.doctor-compare button.doctor-compare__compare.doctor-compare__btn.doctor-compare__btn--full-sky span.doctor-compare__compare-count');\n var compareSection = document.querySelector('.doctor-compare');\n var compareModel = document.querySelector('.doctor-compare__modal.modal');\n var checkedCount = savedItems.length;\n var searchBar = document.querySelector('.custom-search-section-new');\n var compareCliniciansButton = document.querySelector('.doctor-compare__compare.doctor-compare__btn.doctor-compare__btn--full-sky');\n var filterButton = document.querySelector('.coveo-dropdown-header-wrapper');\n if (savedItems.length > 6 || savedItems.length == 1) {\n compareCliniciansButton.style.backgroundColor = '#dcdcdc';\n compareCliniciansButton.disabled = true;\n compareCliniciansButton.style.cursor = 'unset';\n compareCliniciansButton.style.textDecoration = 'none';\n } else {\n compareCliniciansButton.style.backgroundColor = '#00a9e0';\n compareCliniciansButton.disabled = false;\n compareCliniciansButton.style.cursor = 'pointer';\n compareCliniciansButton.style.textDecoration = 'underline';\n }\n if (filterLabel && compareCliniciansLabel) {\n filterLabel.textContent = \"(\".concat(checkedCount, \")\");\n compareCliniciansLabel.textContent = \"(\".concat(checkedCount, \"/6)\");\n } else {\n console.error('Filter label element not found.');\n }\n if (compareSection) {\n compareSection.style.display = checkedCount >= 1 ? 'block' : 'none';\n searchBar.style.marginBottom = checkedCount >= 1 ? 'unset' : '3rem';\n if (checkedCount < 1) compareModel.classList.remove('is-active');\n if (checkedCount >= 1) {\n if (filterButton) {\n filterButton.classList.add('is-compare');\n }\n } else {\n if (filterButton) {\n filterButton.classList.remove('is-compare');\n }\n }\n } else {\n console.error('Compare section element not found.');\n }\n }\n if (compareClinicians) {\n compareClinicians.addEventListener('click', function (event) {\n var compareModel = document.querySelector('.doctor-compare__modal.modal');\n compareModel.classList.add('is-active');\n });\n }\n var executeQueryOnClose = false;\n var closeModel = document.querySelector('.doctor-compare__btn--close');\n if (closeModel) {\n closeModel.addEventListener('click', function (event) {\n var compareModel = document.querySelector('.doctor-compare__modal.modal');\n compareModel.classList.remove('is-active');\n\n // Clear active filters\n activeFilters = [];\n\n // Remove active class from all buttons\n document.querySelectorAll('.doctor-compare__condition').forEach(function (condition) {\n condition.classList.remove('active');\n });\n // Clear displayed data in the table\n document.querySelectorAll('.doctor-compare__modal-table *[data-column]').forEach(function (cell) {\n cell.classList.remove('doctor-compare__modal-table--col--1', 'doctor-compare__modal-table--col--2', 'doctor-compare__modal-table--col--3');\n });\n $('.CoveoResultList').coveo('executeQuery');\n });\n }\n var returnToSearchbtn = document.querySelector('.doctor-compare__btn.doctor-compare__btn--inverted-navy');\n if (returnToSearchbtn) {\n returnToSearchbtn.addEventListener('click', function (event) {\n var compareModel = document.querySelector('.doctor-compare__modal.modal');\n compareModel.classList.remove('is-active');\n // Clear active filters\n activeFilters = [];\n\n // Remove active class from all buttons\n document.querySelectorAll('.doctor-compare__condition').forEach(function (condition) {\n condition.classList.remove('active');\n });\n // Clear displayed data in the table\n document.querySelectorAll('.doctor-compare__modal-table *[data-column]').forEach(function (cell) {\n cell.classList.remove('doctor-compare__modal-table--col--1', 'doctor-compare__modal-table--col--2', 'doctor-compare__modal-table--col--3');\n });\n $('.CoveoResultList').coveo('executeQuery');\n });\n }\n var physicianCompareConditions = document.querySelector('.doctor-compare__conditions');\n if (physicianCompareConditions) {\n var physicianCompareCondition = physicianCompareConditions.querySelectorAll('.doctor-compare__condition');\n physicianCompareCondition.forEach(function (condition) {\n condition.addEventListener('click', function (event) {\n // updating state of filter button:\n var filter = event.target.parentElement;\n var dataPoint = filter.dataset.column;\n if (!filter.classList.contains('active')) {\n // filter was turned on:\n filter.classList.add('active');\n\n // TO DO: Limit active filters to max of 3.\n if (activeFilters.length >= 3) {\n // removing first/oldest filter\n var oldestFilter = activeFilters.splice(0, 1);\n\n // turning off oldest filter button\n var oldFilterBtn = document.querySelector(\".doctor-compare__condition[data-column=\\\"\".concat(oldestFilter, \"\\\"]\"));\n oldFilterBtn.classList.remove('active');\n\n // hiding old data column\n var selector = '.doctor-compare__modal-table *[data-column=\"' + oldestFilter + '\"]';\n var tableCells = document.querySelectorAll(selector);\n tableCells.forEach(function (cell) {\n cell.classList.remove(\"doctor-compare__modal-table--col--1\");\n });\n }\n\n //adding filter to array of active filters\n activeFilters.push(dataPoint);\n } else {\n // filter was turned off:\n filter.classList.remove('active');\n\n // getting index of active filter:\n var index = activeFilters.indexOf(dataPoint);\n\n // removing filter from list of active:\n activeFilters.splice(index, 1);\n\n // hiding data cell\n var _selector = '.doctor-compare__modal-table *[data-column=\"' + dataPoint + '\"]';\n var _tableCells = document.querySelectorAll(_selector);\n _tableCells.forEach(function (cell) {\n cell.classList.remove(\"doctor-compare__modal-table--col--\".concat(index + 1));\n });\n }\n UpdateTableCells();\n });\n });\n }\n function UpdateTableCells() {\n // Updates which columns are visible based on what filters are with the activeFilters array.\n\n // looping through activeFilters and applying a `doctor-compare__modal-table-col--*` based on the index of the filter:\n activeFilters.forEach(function (filter) {\n // selecting table cells with matching filter data\n var selector = '.doctor-compare__modal-table *[data-column=\"' + filter + '\"]';\n var tableCells = document.querySelectorAll(selector);\n var index = activeFilters.indexOf(filter);\n\n //hiding empty cells:\n var emptyCells = document.querySelectorAll(\".doctor-compare__modal-table--col--\".concat(index + 1, \"[data-column=\\\"empty\\\"]\"));\n emptyCells.forEach(function (cell) {\n cell.classList.remove(\"doctor-compare__modal-table--col--\".concat(index + 1));\n });\n tableCells.forEach(function (cell) {\n // first cleaning up the table cell of any existing column classes\n for (var step = 0; step < 3; step++) {\n cell.classList.remove(\"doctor-compare__modal-table--col--\".concat(step + 1));\n }\n\n // adding column class if it does not have if\n cell.classList.add(\"doctor-compare__modal-table--col--\".concat(index + 1));\n });\n });\n\n // Need to fill in with empty columns:\n if (activeFilters.length < 3) {\n var selector = '.doctor-compare__modal-table-row';\n var tableRows = document.querySelectorAll(selector);\n tableRows.forEach(function (row) {\n // looping over each row and adjusting the empty cells on that row.\n\n // Getting empty cells\n var empptyCells = row.querySelectorAll('.doctor-compare__modal-table--col[data-column=\"empty\"]');\n\n // Showing the empty cells at the end of the row:\n for (var step = activeFilters.length; step < 3; step++) {\n empptyCells[step].classList.add(\"doctor-compare__modal-table--col--\".concat(step + 1));\n }\n });\n }\n }\n}\nwindow.addEventListener('load', function (event) {\n setTimeout(function () {\n PhysicianCompareMain();\n }, 1000);\n var maninNav = document.querySelector('.main-search-nav').offsetHeight || 0;\n var stickyLinks = document.querySelector('.doctor-compare');\n if (stickyLinks) {\n window.addEventListener('scroll', function () {\n var scrollY = window.scrollY;\n if (scrollY > maninNav) {\n stickyLinks.classList.add('fixed-menu');\n } else {\n stickyLinks.classList.remove('fixed-menu');\n }\n });\n }\n});","\"use strict\";\n\ndocument.addEventListener('DOMContentLoaded', function () {\n $('.quick-view').click(function (e) {\n console.log(this);\n var id = $(this).data('expand-id');\n var expandItem = document.getElementById(id);\n $(this).toggleClass('open');\n $(expandItem).toggleClass('expanded');\n });\n setTimeout(function () {\n // GeoInput and ClearButton functionality\n var input = document.getElementById('geoInput');\n var clearBtn = document.getElementById('clearButton');\n if (input && clearBtn) {\n // Ensure the elements exist\n function toggleClearButton() {\n clearBtn.style.display = input.value.length > 0 ? 'flex' : 'none';\n }\n function clearInput() {\n input.value = '';\n input.focus();\n toggleClearButton();\n }\n input.addEventListener('input', toggleClearButton);\n clearBtn.addEventListener('click', clearInput);\n }\n }, 1000);\n});\nsetTimeout(function () {\n var locationBtnNew = document.querySelector('.custom-search-section-new__input-box .custom-search-section-new__locateme');\n var inputBox = document.getElementById('geoSearchBarInput');\n var locationDiv = document.querySelector('.custom-search-section-new__locateme');\n var searchSection = document.querySelector('.custom-search-section-new');\n if (\"geolocation\" in navigator && \"permissions\" in navigator) {\n navigator.permissions.query({\n name: 'geolocation'\n }).then(function (permissionStatus) {\n console.log(\"Geolocation permission status: \".concat(permissionStatus.state));\n if (permissionStatus.state === \"granted\") {\n inputBox.addEventListener('focus', function () {\n locationBtnNew.classList.add('visible');\n searchSection.classList.add(\"useMyLocation\");\n });\n document.addEventListener('click', function (event) {\n if (!inputBox.contains(event.target) && !locationDiv.contains(event.target)) {\n locationDiv.classList.remove('visible');\n searchSection.classList.remove(\"useMyLocation\");\n }\n });\n console.log(\"Geolocation access granted.\");\n } else if (permissionStatus.state === \"prompt\") {\n console.log(\"Geolocation access will prompt.\");\n locationBtnNew.style.display = 'none';\n } else if (permissionStatus.state === \"denied\") {\n locationBtnNew.style.display = 'none';\n console.log(\"Geolocation access denied.\");\n }\n permissionStatus.onchange = function () {\n console.log(\"Geolocation permission status changed to: \".concat(permissionStatus.state));\n };\n });\n } else {\n console.log(\"Geolocation or Permissions API is not supported by this browser.\");\n }\n}, 1000);\n\n// Modal JavaScript from Bulma.io\ndocument.addEventListener('DOMContentLoaded', function () {\n // Functions to open and close a modal\n function openModal($el) {\n $el.classList.add('is-active');\n }\n function closeModal($el) {\n $el.classList.remove('is-active');\n }\n function closeAllModals() {\n (document.querySelectorAll('.modal') || []).forEach(function ($modal) {\n closeModal($modal);\n });\n }\n\n // Add a click event on buttons to open a specific modal\n (document.querySelectorAll('.js-modal-trigger') || []).forEach(function ($trigger) {\n var modal = $trigger.dataset.target;\n var $target = document.getElementById(modal);\n $trigger.addEventListener('click', function () {\n openModal($target);\n });\n });\n\n // Add a click event on various child elements to close the parent modal\n (document.querySelectorAll('.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button') || []).forEach(function ($close) {\n var $target = $close.closest('.modal');\n $close.addEventListener('click', function () {\n closeModal($target);\n });\n });\n\n // Add a keyboard event to close all modals\n document.addEventListener('keydown', function (event) {\n if (event.key === 'Escape') {\n closeAllModals();\n }\n });\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var pageAnchorNav = document.querySelector('.anchor-nav__wrapper');\n //Fixed in-page navigation \n if (pageAnchorNav) {\n var mediaQueryUnder = window.matchMedia('(max-width: 991px)');\n // Highlight active in-page links \n var allJumpLinks = document.querySelectorAll('.anchor-nav__wrapper ul li');\n allJumpLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (e) {\n e.preventDefault();\n allJumpLinks.forEach(function (link) {\n link.classList.remove(\"active\");\n });\n this.classList.add(\"active\");\n });\n });\n if (mediaQueryUnder.matches) {\n // Sticky mobile in-page nav\n window.addEventListener('scroll', function (event) {\n var navElem = document.querySelector('.anchor-nav__wrapper');\n var rect = navElem.getBoundingClientRect().top;\n var scroll = window.scrollY;\n if (scroll >= rect) {\n pageAnchorNav.classList.add(\"anchor-nav__wrapper--stick\");\n } else if (scroll <= rect) {\n pageAnchorNav.classList.remove(\"anchor-nav__wrapper--stick\");\n }\n });\n }\n }\n});\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var pageAnchorNav = document.querySelector('.multispecialty-anchor-nav__wrapper');\n //Fixed in-page navigation \n if (pageAnchorNav) {\n var mediaQueryUnder = window.matchMedia('(max-width: 991px)');\n // Highlight active in-page links \n var allJumpLinks = document.querySelectorAll('.multispecialty-anchor-nav__wrapper ul li');\n allJumpLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (e) {\n e.preventDefault();\n allJumpLinks.forEach(function (link) {\n link.classList.remove(\"active\");\n });\n this.classList.add(\"active\");\n });\n });\n if (mediaQueryUnder.matches) {\n // Sticky mobile in-page nav\n window.addEventListener('scroll', function (event) {\n var navElem = document.querySelector('.multispecialty-anchor-nav__wrapper');\n var rect = navElem.getBoundingClientRect().top;\n var scroll = window.scrollY;\n if (scroll >= rect) {\n pageAnchorNav.classList.add(\"multispecialty-anchor-nav__wrapper--stick\");\n } else if (scroll <= rect) {\n pageAnchorNav.classList.remove(\"multispecialty-anchor-nav__wrapper--stick\");\n }\n });\n }\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var contactTrigger = document.querySelector('.service-details-hero__heading');\n if (contactTrigger != null) {\n contactTrigger.addEventListener(\"click\", function () {\n var container = this.closest('.service-details-hero__contact-us');\n container.classList.toggle('open');\n });\n var htmlEle = document.getElementsByTagName('html')[0];\n //Click outside of menu or search\n htmlEle.addEventListener(\"click\", function (e) {\n var el = $(e.target),\n $contactLinks = $(\".service-details-hero__contact-us\");\n if (el.is($contactLinks) || $contactLinks.has(el).length) {\n return true;\n } else {\n $contactLinks.removeClass(\"open\");\n }\n });\n }\n var contactTriggerLeft = document.querySelector('.service-details-hero__heading-left');\n if (contactTriggerLeft != null) {\n contactTriggerLeft.addEventListener(\"click\", function () {\n var container = this.closest('.service-details-hero__contact-us');\n container.classList.toggle('open');\n });\n var _htmlEle = document.getElementsByTagName('html')[0];\n //Click outside of menu or search\n _htmlEle.addEventListener(\"click\", function (e) {\n var el = $(e.target),\n $contactLinks = $(\".service-details-hero__contact-us\");\n if (el.is($contactLinks) || $contactLinks.has(el).length) {\n return true;\n } else {\n $contactLinks.removeClass(\"open\");\n }\n });\n }\n});","\"use strict\";\n\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var ServiceOverviewContainer = document.querySelector('.service-line-overview');\n if (ServiceOverviewContainer) {\n var readMoreTrigger = document.querySelector('.service-line-overview__read-more');\n var hiddenContent = document.querySelector('.service-line-overview__content');\n var videoContent = document.querySelector('.service-line-overview__right');\n var topContent = document.querySelector('.service-line-overview__inner-top');\n readMoreTrigger.addEventListener('click', function (event) {\n hiddenContent.classList.add('full-content');\n });\n if (!videoContent) {\n topContent.classList.add('full-content');\n }\n var mediaQuery = window.matchMedia('(min-width: 576px)');\n var heightContent = document.querySelector('.service-line-overview__wrapper').offsetHeight;\n if (mediaQuery.matches) {\n if (heightContent < 230) {\n readMoreTrigger.classList.add('hide');\n }\n } else {\n if (heightContent < 350) {\n readMoreTrigger.classList.add('hide');\n }\n }\n }\n});","\"use strict\";\n\n// This script will need to be added after Coveo loads\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var servicesContainer = document.querySelector('.services-listing');\n var facetValueItems = document.querySelectorAll('.services-listing .services-facet-values li a.letter-select');\n if (servicesContainer) {\n facetValueItems.forEach(function (item) {\n // const firstfacetValue = document.querySelector('.services-listing .services-facet-values li a.letter-select');\n // firstfacetValue.classList.add('active-facet');\n\n item.addEventListener('click', function (e) {\n if (item.classList.contains('active-facet')) {\n this.classList.remove('active-facet');\n } else {\n facetValueItems.forEach(function (facet) {\n facet.classList.remove('active-facet');\n });\n this.classList.add('active-facet');\n }\n });\n });\n }\n});","\"use strict\";\n\n// This script will need to be added after Coveo loads\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var servicesTopContainer = document.querySelector('.services-search-coveo .landing-top-coveo');\n var searchTrigger = document.querySelector('.landing-top-coveo .CoveoSearchButton');\n var searchResultsContainer = document.querySelector('.landing-top-coveo .coveo-results-column');\n var clearSearchResults = document.querySelector('.landing-top-coveo .clear-results');\n var servicesListing = document.getElementById(\"servicesListing\");\n var servicesListingResults = document.getElementById(\"servicesListingResults\");\n var servicesListPagination = document.getElementById(\"servicesListPagination\");\n var servicesListPageNext = document.getElementById(\"servicesListingPageNext\");\n var servicesListPagePrev = document.getElementById(\"servicesListingPagePrev\");\n var servicesListingTotalResults = document.getElementById(\"servicesListingTotalResults\");\n var servicesListingClearButton = document.getElementById(\"servicesListingClearButton\");\n if (servicesListing) {\n if (servicesTopContainer) {\n searchTrigger.addEventListener('click', function (e) {\n searchResultsContainer.classList.add('active');\n });\n clearSearchResults.addEventListener('click', function (e) {\n searchResultsContainer.classList.remove('active');\n });\n }\n function bindPageSelectPagination() {\n servicesListing.querySelectorAll(\".service-results-pagination a.page-select\").forEach(function (item) {\n item.addEventListener(\"click\", function () {\n var page = item.getAttribute('data-services-page-num');\n servicesListing.setAttribute(\"services-data-page\", page);\n item.classList.add(\"active\");\n requestServicesListingUpdate();\n });\n });\n }\n function bindClearButton() {\n var clearButton = document.getElementById(\"servicesListingClearButton\");\n clearButton.addEventListener(\"click\", function () {\n servicesListing.setAttribute('services-data-letter', '');\n servicesListing.setAttribute(\"services-data-page\", '1');\n requestServicesListingUpdate();\n clearButton.classList.remove('active');\n servicesListing.querySelectorAll(\".services-listing-facet a.letter-select\").forEach(function (item) {\n item.classList.remove(\"active-facet\");\n });\n });\n }\n function bindLetterSelectPagination() {\n servicesListing.querySelectorAll(\".services-listing-facet a.letter-select\").forEach(function (item) {\n item.addEventListener(\"click\", function () {\n servicesListing.querySelectorAll(\".services-listing-facet a.letter-select\").forEach(function (item) {\n item.classList.remove(\"active-facet\");\n });\n item.classList.add(\"active-facet\");\n var letter = item.getAttribute('services-link-letter');\n servicesListing.setAttribute('services-data-letter', letter);\n servicesListing.setAttribute(\"services-data-page\", '1');\n servicesListingClearButton.classList.add(\"active\");\n requestServicesListingUpdate();\n });\n });\n }\n function bindPaginationArrows() {\n servicesListing.querySelectorAll(\".page-previous\").forEach(function (item) {\n item.addEventListener(\"click\", function () {\n var page = servicesListing.getAttribute('services-data-page');\n servicesListing.setAttribute(\"services-data-page\", parseInt(page) - 1);\n requestServicesListingUpdate();\n });\n });\n servicesListing.querySelectorAll(\".page-next\").forEach(function (item) {\n item.addEventListener(\"click\", function () {\n var page = servicesListing.getAttribute('services-data-page');\n servicesListing.setAttribute(\"services-data-page\", parseInt(page) + 1);\n requestServicesListingUpdate();\n });\n });\n }\n function requestServicesListingUpdate() {\n var pageId = servicesListing.getAttribute('services-data-page-id');\n var letter = servicesListing.getAttribute('services-data-letter');\n var page = servicesListing.getAttribute('services-data-page');\n fetch('/api/sitecore/services/services?pageId=' + pageId + '&startLetter=' + letter + '¤tPage=' + page, {\n method: 'get'\n }).then(function (response) {\n return response.json();\n }).then(function (data) {\n return updateServicesListing(data);\n }).catch(function (err) {\n //Maybe TODO\n });\n }\n function updateServicesListing(data) {\n updateServicesListingsResults(data);\n updateServicesListingPagination(data);\n updateServicesQueryStringParameters();\n }\n function updateServicesQueryStringParameters() {\n if ('URLSearchParams' in window) {\n var page = servicesListing.getAttribute('services-data-page');\n var letter = servicesListing.getAttribute('services-data-letter');\n var searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"startLetter\", letter);\n searchParams.set(\"currentPage\", page);\n var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();\n history.pushState(null, '', newRelativePathQuery);\n }\n }\n function updateServicesListingsResults(data) {\n var html = \"\";\n data.Items.forEach(function (item) {\n html += '

    ' + item.Name + '

    ' + item.Summary + '

    ';\n });\n servicesListingResults.innerHTML = html;\n }\n function updateServicesListingPagination(data) {\n servicesListPagination.innerHTML = \"\";\n var page = servicesListing.getAttribute('services-data-page');\n var html = \"\";\n if (servicesListing.getAttribute(\"services-data-page\") != \"1\") {\n servicesListPagination.innerHTML = servicesListPagePrev.outerHTML;\n }\n if (data.EndPage > 1) {\n for (var x = data.StartPage; x <= data.EndPage; x++) {\n var activeClass = x == page ? \"active\" : \"\";\n html += '
  • ' + x + '
  • ';\n }\n }\n servicesListingTotalResults.innerHTML = data.PaginationText;\n servicesListPagination.innerHTML = servicesListPagination.innerHTML + html;\n if (data.Total > 10 && data.EndPage != servicesListing.getAttribute(\"services-data-page\")) {\n servicesListPagination.innerHTML = servicesListPagination.innerHTML + servicesListPageNext.outerHTML;\n }\n bindPageSelectPagination();\n bindPaginationArrows();\n }\n bindPageSelectPagination();\n bindLetterSelectPagination();\n bindPaginationArrows();\n bindClearButton();\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n $(\".system-profile .save-location, .system-location-banner .save-location\").each(function () {\n var id = $(this).attr('data-location-id');\n var value = localStorage.getItem('favorite-locations');\n if (value !== null && value.includes(id)) {\n $(this).addClass('saved');\n }\n });\n $(\".system-profile .save-location, .system-location-banner .save-location\").click(function () {\n var id = $(this).attr('data-location-id');\n if (id === undefined) return;\n var value = localStorage.getItem('favorite-locations');\n var ids = null;\n if (value == null || value == '') {\n ids = id.split(',');\n $(this).addClass('saved');\n } else {\n ids = value.split(',');\n if (ids.includes(id)) {\n ids = ids.filter(function (e) {\n return e !== id;\n });\n $(this).removeClass('saved');\n } else {\n ids.push(id);\n $(this).addClass('saved');\n }\n }\n localStorage.setItem('favorite-locations', ids.join(','));\n });\n});","\"use strict\";\n\n$(document).ready(function () {\n if ($(\".haze-container\").length > 0) {\n var fixmeTop = $(\".haze-container\").offset().top; // get initial position of the element\n\n $(window).scroll(function () {\n // assign scroll event listener\n\n var currentScroll = $(window).scrollTop(); // get current position\n\n if (currentScroll + 56 >= fixmeTop) {\n // apply position: fixed if you\n $(\".haze-container\").addClass(\"fixed-bar\");\n } else {\n // apply position: static\n $(\".haze-container\").removeClass(\"fixed-bar\");\n }\n });\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n var $toolbar = $(\".toolbar\");\n if ($toolbar.length === 0) {\n return;\n }\n var stickitLeft = $toolbar.offset.left;\n var stickitHeight = $toolbar.height() + \"px\";\n var stickySidebarToTop = $toolbar.offset().top;\n $(window).scroll(function () {\n var windowToTop = $(window).scrollTop();\n var $toolbarDesktop = $(\".toolbar-desktop\");\n if (windowToTop + 10 + 116 > stickySidebarToTop) {\n $toolbarDesktop.css({\n position: \"fixed\",\n top: \"126px\",\n left: stickitLeft,\n height: stickitHeight\n });\n } else {\n $toolbarDesktop.removeAttr(\"style\");\n }\n });\n $(\".toolbar-mobile\").click(function (e) {\n $(\".toolbar-box.help\").toggleClass(\"open\");\n });\n $(\".toolbar-box.mobile\").click(function (e) {\n e.stopPropagation();\n if (e.target.id !== \"switchRoundedDefault\" && e.target.getAttribute(\"for\") !== 'switchRoundedDefault') {\n $(this).toggleClass(\"active\");\n }\n });\n var contrastCheckboxDesktop = document.querySelector('.desktop-input');\n if (contrastCheckboxDesktop) {\n contrastCheckboxDesktop.addEventListener(\"change\", function (e) {\n document.body.classList.toggle(\"contrast\");\n });\n }\n var contrastCheckboxMobile = document.querySelector('.mobile-input');\n if (contrastCheckboxMobile) {\n contrastCheckboxMobile.addEventListener(\"change\", function (e) {\n document.body.classList.toggle(\"contrast\");\n });\n }\n var mobileToolbox = document.querySelector(\".toolbar-box.mobile\");\n var contrastLabel = mobileToolbox.querySelector(\"label[for='switchRoundedDefault']\");\n var contrastInput = document.querySelector('.contrast-checkbox');\n if (contrastLabel) {\n contrastLabel.addEventListener(\"click\", function () {\n var clickEvent = new Event(\"click\");\n contrastCheckboxMobile.dispatchEvent(clickEvent);\n });\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n var quickLinksEl = document.querySelector(\".floating-quick-links\");\n if (!quickLinksEl) {\n return;\n }\n var r = document.querySelector(\":root\");\n var topOffset = document.querySelector(\"header.header\").offsetHeight;\n if (topOffset > 0) {\n topOffset += 14; // offset requires gap due to box-shadow of quick links\n quickLinksEl.style.setProperty(\"--floating-quick-links-top\", topOffset + 'px');\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n var satbsArray = document.getElementsByClassName(\"solv-available-times-by-state\");\n if (satbsArray.length > 0) {\n Array.from(satbsArray).forEach(function (el) {\n // Available slots list controls\n var listControls = el.getElementsByClassName(\"slot-list-control\");\n if (listControls.length > 0) {\n Array.from(listControls).forEach(function (listControl) {\n listControl.addEventListener(\"click\", function (event) {\n event.preventDefault();\n var targetExpanded = event.target.getAttribute(\"aria-expanded\");\n if (targetExpanded == \"true\") {\n event.target.setAttribute(\"aria-expanded\", \"false\");\n event.target.innerHTML = \"View All\";\n } else {\n event.target.setAttribute(\"aria-expanded\", \"true\");\n event.target.innerHTML = \"View Less\";\n }\n });\n });\n }\n var elements = {\n button: el.querySelector('[role=\"combobox\"]'),\n dropdownlist: document.querySelector('[role=\"listbox\"]')\n };\n var isDropdownOpen = false;\n var toggleDropdown = function toggleDropdown() {\n elements.dropdownlist.classList.toggle(\"show\");\n isDropdownOpen = !isDropdownOpen;\n elements.button.setAttribute(\"aria-expanded\", isDropdownOpen.toString()); // update the aria-expanded state\n };\n var handleKeyPress = function handleKeyPress(event) {\n event.preventDefault();\n var key = event.key;\n var openKeys = [\"Enter\", \" \"];\n if (openKeys.includes(key)) {\n toggleDropdown();\n }\n };\n if (elements.button) {\n elements.button.addEventListener(\"keydown\", handleKeyPress);\n elements.button.addEventListener(\"click\", toggleDropdown);\n }\n });\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n var ucldArray = document.getElementsByClassName(\"urgent-care-location-detail\");\n if (ucldArray.length > 0) {\n Array.from(ucldArray).forEach(function (el) {\n var listControls = el.getElementsByClassName(\"slot-list-control\");\n if (listControls.length > 0) {\n Array.from(listControls).forEach(function (listControl) {\n listControl.addEventListener(\"click\", function (event) {\n event.preventDefault();\n var targetExpanded = event.target.getAttribute(\"aria-expanded\");\n if (targetExpanded == \"true\") {\n event.target.setAttribute(\"aria-expanded\", \"false\");\n event.target.innerHTML = \"View All\";\n } else {\n event.target.setAttribute(\"aria-expanded\", \"true\");\n event.target.innerHTML = \"View Less\";\n }\n });\n });\n }\n });\n }\n});","\"use strict\";\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nwindow.addEventListener('DOMContentLoaded', function (event) {\n var navBtns = document.querySelector('.waiting-times__nav-btns');\n var cardItem = document.querySelector('.waiting-times-card');\n if (navBtns != null && cardItem) {\n var cardTrack = document.querySelector('.waiting-times__track');\n var nextButton = document.querySelector('.waiting-times__button--bottom');\n var prevButton = document.querySelector('.waiting-times__button--top');\n var allCards = document.querySelectorAll('.waiting-times-card').length;\n var _navBtns = document.querySelector('.waiting-times__nav-btns');\n var cardHeight = cardItem.offsetHeight;\n var cardsHidden = allCards - 5;\n var cardCounter = 0;\n var counter = 0;\n prevButton.style.display = \"none\";\n if (allCards <= 5) {\n _navBtns.classList.add('hide');\n }\n nextButton.addEventListener('click', function (e) {\n prevButton.style.display = \"block\";\n counter = counter - cardHeight;\n cardTrack.style.transform = \"translateY(\" + counter + \"px)\";\n cardCounter++;\n if (cardCounter == cardsHidden) {\n nextButton.style.display = \"none\";\n }\n });\n prevButton.addEventListener('click', function (e) {\n nextButton.style.display = \"block\";\n counter = counter + cardHeight;\n cardTrack.style.transform = \"translateY(\" + counter + \"px)\";\n cardCounter--;\n if (cardCounter == 0) {\n prevButton.style.display = \"none\";\n }\n });\n\n //Distance calculator for locations based on browser geolocation\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(showPosition);\n }\n function showPosition(position) {\n var lat = position.coords.latitude;\n var lng = position.coords.longitude;\n if (lat && lng) {\n setDriveDistances(lat, lng);\n updateOrderByDistance();\n }\n }\n function updateOrderByDistance() {\n var container = document.getElementById(\"waitTimes\");\n var frag = document.createDocumentFragment();\n var list = document.querySelector(\".waitTimesList\");\n var hospitals = document.querySelectorAll(\".waiting-times-card\");\n var sortedList = _toConsumableArray(hospitals).sort(function (a, b) {\n var d1 = a.querySelector(\".distanceFromVisitor\");\n var v1 = d1.getAttribute(\"distance\");\n var d2 = b.querySelector(\".distanceFromVisitor\");\n var v2 = d2.getAttribute(\"distance\");\n return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\n });\n var _iterator = _createForOfIteratorHelper(sortedList),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n frag.appendChild(item);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n list.appendChild(frag);\n }\n function setDriveDistances(lat, lng) {\n document.querySelectorAll(\".distanceFromVisitor\").forEach(function (d) {\n var uLat = d.getAttribute(\"lat\");\n var uLng = d.getAttribute(\"lng\");\n var fallBackOveride = 9999;\n //Fallbacks for blank geo location values from blank location item for department\n if (uLat == \"\") {\n uLat = fallBackOveride;\n }\n if (uLng == \"\") {\n uLng = fallBackOveride;\n }\n if (uLat && uLng) {\n var distance = get2LatLongDistance(uLat, uLng, lat, lng);\n if (uLng != fallBackOveride | uLat != fallBackOveride) {\n d.innerHTML = Math.ceil(distance) + \" miles\";\n }\n d.setAttribute('distance', distance);\n }\n });\n }\n function get2LatLongDistance(lat1, lon1, lat2, lon2) {\n if (lat1 == lat2 && lon1 == lon2) {\n return 0;\n } else {\n var radlat1 = Math.PI * lat1 / 180;\n var radlat2 = Math.PI * lat2 / 180;\n var theta = lon1 - lon2;\n var radtheta = Math.PI * theta / 180;\n var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n if (dist > 1) {\n dist = 1;\n }\n dist = Math.acos(dist);\n dist = dist * 180 / Math.PI;\n dist = dist * 60 * 1.1515;\n return dist;\n }\n }\n }\n});","\"use strict\";\n\n$(document).ready(function () {\n $(\".calendar-dropdown\").click(function (event) {\n $(this).toggleClass(\"active\");\n });\n var outlookBtn = document.querySelector('#calendar-outlook');\n if (outlookBtn) {\n var $outlookBtn = $(outlookBtn);\n var eventid = $outlookBtn.data(\"eventid\");\n outlookBtn.addEventListener(\"click\", function (e) {\n e.preventDefault();\n fetch('/api/sitecore/events/OutlookCalendar?ContextItemId=' + eventid).then(function (resp) {\n return resp.blob();\n }).then(function (blob) {\n var url = window.URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.style.display = 'none';\n a.href = url;\n a.download = 'event.ics';\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n });\n });\n }\n ;\n var appleBtn = document.querySelector('#calendar-apple');\n if (appleBtn) {\n var $appleBtn = $(appleBtn);\n var eventid = $appleBtn.data(\"eventid\");\n appleBtn.addEventListener(\"click\", function (e) {\n e.preventDefault();\n fetch('/api/sitecore/events/AppleCalendar?ContextItemId=' + eventid).then(function (resp) {\n return resp.blob();\n }).then(function (blob) {\n var url = window.URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.style.display = 'none';\n a.href = url;\n a.download = 'event.ics';\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n });\n });\n }\n ;\n});","\"use strict\";\n\n$(document).ready(function () {\n if ($('#login-page').length < 1) {\n return;\n }\n var usernameInput = $('#username');\n var passwordInput = $('#password');\n var submitButton = $('#submit');\n var redirect = $('#returnurl');\n var validationLabel = $('#validation');\n if (usernameInput.length < 1 || passwordInput.length < 1 || submitButton.length < 1) {\n return;\n }\n submitButton.on('click', function (e) {\n e.preventDefault();\n validationLabel.hide();\n var redirectUrl = \"/\";\n if (redirect.length > 0 && redirect[0].value) {\n redirectUrl = redirect[0].value;\n }\n var username = usernameInput[0].value;\n var password = passwordInput[0].value;\n var apiUrl = \"/api/sitecore/ynhxauthentication/attemptlogin?Username=\" + username + \"&Password=\" + password;\n makeRequest(apiUrl, \"POST\", null, null, function (xhttp, isNetworkSuccess) {\n if (isNetworkSuccess) {\n var response = JSON.parse(xhttp.responseText);\n if (!response.Success) {\n validationLabel.show();\n validationLabel.text(\"Invalid username or password.\");\n } else {\n window.location.href = redirectUrl;\n }\n } else {\n validationLabel.show();\n validationLabel.text(\"Internal error, please try again later.\");\n }\n });\n });\n});","\"use strict\";\n\n$(document).ready(function () {\n $('.is-checkradio').click(function () {\n $(this).toggleClass(\"is-active\");\n });\n});","\"use strict\";\n\n$(document).ready(function () {\n customDropdownInit();\n});\nfunction customDropdownInit() {\n if ($(\".custom-select-dropdown\").length > 0) {\n var x, i, j, l, ll, selElmnt, a, b, c;\n /*look for any elements with the class \"custom-select\":*/\n x = document.getElementsByClassName(\"custom-select-dropdown\");\n l = x.length;\n for (i = 0; i < l; i++) {\n selElmnt = x[i].getElementsByTagName(\"select\")[0];\n ll = selElmnt.length;\n /*for each element, create a new DIV that will act as the selected item:*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"class\", \"select-selected\");\n a.id = selElmnt.options[selElmnt.selectedIndex].id;\n a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n x[i].appendChild(a);\n /*for each element, create a new DIV that will contain the option list:*/\n b = document.createElement(\"DIV\");\n b.setAttribute(\"class\", \"select-items select-hide\");\n for (j = 1; j < ll; j++) {\n /*for each option in the original select element,\r\n create a new DIV that will act as an option item:*/\n c = document.createElement(\"DIV\");\n c.innerHTML = selElmnt.options[j].innerHTML;\n c.id = selElmnt.options[j].id;\n c.addEventListener(\"click\", function (e) {\n /*when an item is clicked, update the original select box,\r\n and the selected item:*/\n var y, i, k, s, h, sl, yl;\n s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n sl = s.length;\n h = this.parentNode.previousSibling;\n var selectedOption = document.getElementById(\"content-\" + this.id);\n $(\".dropdown-select-content > div\").removeClass(\"active\");\n $(selectedOption).addClass(\"active\");\n for (i = 0; i < sl; i++) {\n if (s.options[i].innerHTML == this.innerHTML) {\n s.selectedIndex = i;\n h.innerHTML = this.innerHTML;\n y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n yl = y.length;\n for (k = 0; k < yl; k++) {\n y[k].removeAttribute(\"class\");\n }\n this.setAttribute(\"class\", \"same-as-selected\");\n break;\n }\n }\n h.click();\n });\n b.appendChild(c);\n }\n x[i].appendChild(b);\n a.addEventListener(\"click\", function (e) {\n /*when the select box is clicked, close any other select boxes,\r\n and open/close the current select box:*/\n e.stopPropagation();\n closeAllSelect(this);\n this.nextSibling.classList.toggle(\"select-hide\");\n this.classList.toggle(\"select-arrow-active\");\n });\n }\n function closeAllSelect(elmnt) {\n /*a function that will close all select boxes in the document,\r\n except the current select box:*/\n var x,\n y,\n i,\n xl,\n yl,\n arrNo = [];\n x = document.getElementsByClassName(\"select-items\");\n y = document.getElementsByClassName(\"select-selected\");\n xl = x.length;\n yl = y.length;\n for (i = 0; i < yl; i++) {\n if (elmnt == y[i]) {\n arrNo.push(i);\n } else {\n y[i].classList.remove(\"select-arrow-active\");\n }\n }\n for (i = 0; i < xl; i++) {\n if (arrNo.indexOf(i)) {\n x[i].classList.add(\"select-hide\");\n }\n }\n }\n /*if the user clicks anywhere outside the select box,\r\n then close all select boxes:*/\n document.addEventListener(\"click\", closeAllSelect);\n }\n}","\"use strict\";\n\n$(document).ready(function () {\n var x, i, j, l, ll, selElmnt, a, b, c;\n /*look for any elements with the class \"custom-select\":*/\n x = document.getElementsByClassName(\"custom-select\");\n l = x.length;\n for (i = 0; i < l; i++) {\n selElmnt = x[i].getElementsByTagName(\"select\")[0];\n ll = selElmnt.length;\n /*for each element, create a new DIV that will act as the selected item:*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"class\", \"select-selected\");\n a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n x[i].appendChild(a);\n /*for each element, create a new DIV that will contain the option list:*/\n b = document.createElement(\"DIV\");\n b.setAttribute(\"class\", \"select-items select-hide\");\n for (j = 1; j < ll; j++) {\n /*for each option in the original select element,\r\n create a new DIV that will act as an option item:*/\n c = document.createElement(\"DIV\");\n c.innerHTML = selElmnt.options[j].innerHTML;\n c.addEventListener(\"click\", function (e) {\n /*when an item is clicked, update the original select box,\r\n and the selected item:*/\n var y, i, k, s, h, sl, yl;\n s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n sl = s.length;\n h = this.parentNode.previousSibling;\n for (i = 0; i < sl; i++) {\n if (s.options[i].innerHTML == this.innerHTML) {\n s.selectedIndex = i;\n h.innerHTML = this.innerHTML;\n y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n yl = y.length;\n for (k = 0; k < yl; k++) {\n y[k].removeAttribute(\"class\");\n }\n this.setAttribute(\"class\", \"same-as-selected\");\n break;\n }\n }\n h.click();\n });\n b.appendChild(c);\n }\n x[i].appendChild(b);\n a.addEventListener(\"click\", function (e) {\n /*when the select box is clicked, close any other select boxes,\r\n and open/close the current select box:*/\n e.stopPropagation();\n closeAllSelect(this);\n this.nextSibling.classList.toggle(\"select-hide\");\n this.classList.toggle(\"select-arrow-active\");\n });\n }\n function closeAllSelect(elmnt) {\n /*a function that will close all select boxes in the document,\r\n except the current select box:*/\n var x,\n y,\n i,\n xl,\n yl,\n arrNo = [];\n x = document.getElementsByClassName(\"select-items\");\n y = document.getElementsByClassName(\"select-selected\");\n xl = x.length;\n yl = y.length;\n for (i = 0; i < yl; i++) {\n if (elmnt == y[i]) {\n arrNo.push(i);\n } else {\n y[i].classList.remove(\"select-arrow-active\");\n }\n }\n for (i = 0; i < xl; i++) {\n if (arrNo.indexOf(i)) {\n x[i].classList.add(\"select-hide\");\n }\n }\n }\n /*if the user clicks anywhere outside the select box,\r\n then close all select boxes:*/\n document.addEventListener(\"click\", closeAllSelect);\n});","\"use strict\";\n\nfunction openFacebookShareModal(url, winWidth, winHeight) {\n var winTop = screen.height / 2 - winHeight / 2;\n var winLeft = screen.width / 2 - winWidth / 2;\n window.open('https://www.facebook.com/dialog/share?app_id=554028980187489&display=popup&href=' + url, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight);\n}\nfunction openTwitterShareModal(url, title, winWidth, winHeight) {\n var winTop = screen.height / 2 - winHeight / 2;\n var winLeft = screen.width / 2 - winWidth / 2;\n window.open('https://twitter.com/intent/tweet?url=' + url + '&text=' + title, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight);\n}","\"use strict\";\n\n$(document).ready(function () {\n if ($(\".custom-select-tabs\").length > 0) {\n var x, i, j, l, ll, selElmnt, a, b, c;\n /*look for any elements with the class \"custom-select\":*/\n x = document.getElementsByClassName(\"custom-select-tabs\");\n l = x.length;\n for (i = 0; i < l; i++) {\n selElmnt = x[i].getElementsByTagName(\"select\")[0];\n ll = selElmnt.length;\n /*for each element, create a new DIV that will act as the selected item:*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"class\", \"select-selected\");\n a.id = selElmnt.options[selElmnt.selectedIndex].id;\n a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;\n x[i].appendChild(a);\n /*for each element, create a new DIV that will contain the option list:*/\n b = document.createElement(\"DIV\");\n b.setAttribute(\"class\", \"select-items select-hide\");\n for (j = 1; j < ll; j++) {\n /*for each option in the original select element,\r\n create a new DIV that will act as an option item:*/\n c = document.createElement(\"DIV\");\n c.innerHTML = selElmnt.options[j].innerHTML;\n c.id = selElmnt.options[j].id;\n c.addEventListener(\"click\", function (e) {\n /*when an item is clicked, update the original select box,\r\n and the selected item:*/\n var y, i, k, s, h, sl, yl;\n s = this.parentNode.parentNode.getElementsByTagName(\"select\")[0];\n sl = s.length;\n h = this.parentNode.previousSibling;\n var selectedOption = document.getElementById(\"content-\" + this.id);\n $(\".tab-select-content > div\").removeClass(\"active\");\n $(selectedOption).addClass(\"active\");\n for (i = 0; i < sl; i++) {\n if (s.options[i].innerHTML == this.innerHTML) {\n s.selectedIndex = i;\n h.innerHTML = this.innerHTML;\n y = this.parentNode.getElementsByClassName(\"same-as-selected\");\n yl = y.length;\n for (k = 0; k < yl; k++) {\n y[k].removeAttribute(\"class\");\n }\n this.setAttribute(\"class\", \"same-as-selected\");\n break;\n }\n }\n h.click();\n });\n b.appendChild(c);\n }\n x[i].appendChild(b);\n a.addEventListener(\"click\", function (e) {\n /*when the select box is clicked, close any other select boxes,\r\n and open/close the current select box:*/\n e.stopPropagation();\n closeAllSelect(this);\n this.nextSibling.classList.toggle(\"select-hide\");\n this.classList.toggle(\"select-arrow-active\");\n });\n }\n function closeAllSelect(elmnt) {\n /*a function that will close all select boxes in the document,\r\n except the current select box:*/\n var x,\n y,\n i,\n xl,\n yl,\n arrNo = [];\n x = document.getElementsByClassName(\"select-items\");\n y = document.getElementsByClassName(\"select-selected\");\n xl = x.length;\n yl = y.length;\n for (i = 0; i < yl; i++) {\n if (elmnt == y[i]) {\n arrNo.push(i);\n } else {\n y[i].classList.remove(\"select-arrow-active\");\n }\n }\n for (i = 0; i < xl; i++) {\n if (arrNo.indexOf(i)) {\n x[i].classList.add(\"select-hide\");\n }\n }\n }\n /*if the user clicks anywhere outside the select box,\r\n then close all select boxes:*/\n document.addEventListener(\"click\", closeAllSelect);\n }\n if ($(\"tabs-component\").length > 0) {\n document.getElementById(\"tab-options\").onchange = function () {\n var i = 1;\n var myDiv = document.getElementById(i);\n while (myDiv) {\n myDiv.style.display = \"none\";\n myDiv = document.getElementById(++i);\n }\n document.getElementById(this.value).style.display = \"block\";\n };\n }\n});","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n$(document).ready(function () {\n function gtmpush(dataset) {\n var data = {};\n for (var d in dataset) {\n if (d != \"trEventName\" && d.startsWith(\"tr\")) {\n var variableName = d.slice(2);\n data[variableName] = dataset[d];\n }\n }\n if (window.dataLayer) window.dataLayer.push(_objectSpread({\n event: dataset[\"trEventName\"]\n }, data));\n }\n document.addEventListener(\"click\", function (e) {\n var target = e.target.closest(\"[data-tr-event-name]\");\n if (!e.target.matches(\"[data-tr-event-name]\") && !e.target.matches(\"a\") && !e.target.matches(\"button\")) {\n return;\n }\n if (target && target.checkVisibility({\n visibilityProperty: true\n })) {\n var trAttributes = target.dataset;\n gtmpush(trAttributes);\n }\n\n // element handles toggling it's event name\n if (target && target.getAttribute(\"data-handles-toggle\") == \"true\") {\n //console.log(\"handles-toggle\", { target });\n return;\n }\n if (target && target.matches('[data-tr-event-name=\"view_all\"]')) {\n target.setAttribute(\"data-tr-event-name\", \"view_less\");\n } else if (target && target.matches('[data-tr-event-name=\"view_less\"]')) {\n target.setAttribute(\"data-tr-event-name\", \"view_all\");\n }\n });\n});","\"use strict\";\n\nfunction makeRequest(url, requestType, data, processingEl, fnDone, fnOnError) {\n if (!url) {\n return;\n } // encode optional data to url\n\n if (data && data.length) {\n url = buildUrl(url, data);\n } // set processing css class (either generic window or button)\n\n var processingCssClass = \"loading\";\n if (processingEl && processingEl.classList.contains(\"btn\")) {\n processingCssClass = \"btn__loading\";\n }\n var isModal = processingEl && processingEl.classList.contains(\"modal\");\n var xhttp = new XMLHttpRequest(); // function to be executed when the readyState changes\n\n xhttp.onreadystatechange = function () {\n var isProcessing = true;\n if (this.readyState === 4) {\n // done\n isProcessing = false;\n } // start progress animation logic if element is passed through\n\n if (processingEl) {\n if (isProcessing) {\n processingEl.classList.add(processingCssClass);\n if (isModal) {\n $(processingEl).modal('show');\n }\n } else {\n processingEl.classList.remove(processingCssClass);\n if (isModal) {\n $(processingEl).modal('hide');\n }\n }\n }\n };\n xhttp.onload = function () {\n var isNetworkSuccess = true;\n if (xhttp.status < 200 || xhttp.status >= 400) {\n isNetworkSuccess = false;\n console.log(\"Error on \" + url);\n }\n if (fnDone) {\n fnDone(xhttp, isNetworkSuccess);\n }\n };\n xhttp.onerror = function () {\n console.log(\"Connection error on \" + url);\n if (fnOnError) {\n fnOnError(xhttp);\n }\n };\n xhttp.open(requestType, url, true);\n xhttp.send();\n}\nfunction buildUrl(url, fields) {\n if (!fields || fields.length < 1) {\n return url;\n }\n for (var i = 0; i < fields.length; i++) {\n if (!fields[i] || !fields[i].key || !fields[i].value) {\n continue;\n }\n url += i === 0 ? \"?\" : \"&\";\n url += fields[i].key + \"=\" + encodeURIComponent(fields[i].value);\n }\n return url;\n}"]}