{"version":3,"file":"directory.js","names":["geocoder","map","bounds","filterCircle","infoWindow","markers","viewModel","PageNumber","ko","observable","history","state","page","PageSize","pageSize","Loading","FiltersApplied","DeepLinkUrl","window","location","href","HasPreFilteredContentChanges","hasPreFilteredContentChanges","StructureFieldName","structureFieldName","StructureFieldValue","structureFieldValue","Members","observableArray","TotalCount","FilterToggle","SearchText","searchText","MemberTypeIDs","memberTypeIDs","SpecialOffer","specialOffer","City","city","State","Zip","zip","County","county","Country","country","MapView","mapView","Latitude","latitude","Longitude","longitude","Radius","radius","Address","address","filtersApplied","$","makeArray","some","e","val","goToPage","pageNumber","reloadListing","resetSearch","memberTypeInput","length","selectize","clear","each","i","obj","id","this","change","GetDeepLinkUrl","url","baseUrl","structureFieldValueForUrl","StructureFieldValueForUrl","GetQueryForFilter","data","attr","updatePageState","replaceState","name","hasOwnProperty","indexOf","encodeURIComponent","PageCount","pureComputed","Math","ceil","subscribe","computed","extend","throttle","seoFilenameMappings","debounce","preservePageNumber","directoryID","ajax","type","memberListHtmlUrl","dataType","success","Status","srInfo","html","Html","LoadMaps","ShowCustomAlert","error","jqXHR","textStatus","status","responseJSON","apiErrorResponse","Message","ErrorDetails","responseText","IsLoading","ResetStaticContentRegions","resetContentUrl","filter","Errors","BaseRegions","forEach","region","setStaticContent","RegionName","ShowSavedPopup","reloadStaticContent","fetchContentUrl","Regions","content","regionReplacedEvent","CustomEvent","noviCmsNamespace","contentRegionReplacedEvent","detail","document","dispatchEvent","isPageEditToggled","tinyRegion","setEditorContent","SetEditorContent","removeClass","addClass","newValue","selector","staticPageID","addressPickerLoaded","initializeDirectoryMap","lat","parseFloat","lng","initializeAddressPicker","mapElementId","userPosition","members","google","maps","LatLngBounds","Geocoder","Map","getElementById","InfoWindow","createMarker","Circle","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","center","member","ShippingAddress","Lat","Long","pos","ID","fitBounds","setTimeout","getZoomLevel","zoomLevel","scale","getRadius","log","counter","setZoomLevel","maxZoomLevel","getZoom","setZoom","latlng","primary","marker","Marker","position","icon","path","addListener","openInfoWindow","x","places","Autocomplete","types","event","place","getPlace","geometry","clearAddressInput","focus","addressInput","value","getUserLocation","callback","navigator","geolocation","getCurrentPosition","coords","getUserAddress","getAddressFromPosition","geocode","formatted_address","getPositionFromAddress","close","setContent","open","tooltip","applyBindings","keydown","charCode","keyCode","click","on","hasClass","activeElement","includes","parents","select","mouseup","unbind","plugins","placeholder","onChange","join","structureFieldType","text","load","query","currentResults","items","fieldName","prev","optionSelected","find","trim","SwitchToListView","SwitchToMapView","SwitchToCategoryView","hover","stopPropagation","breakpoint","containerWidth","outerWidth","width","height"],"sources":["directory.js"],"mappings":"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","sourcesContent":["var geocoder;\r\nvar map;\r\nvar markers = [];\r\nvar bounds;\r\nvar filterCircle;\r\nvar infoWindow;\r\n\r\nvar viewModel = {\r\n\r\n    // Paging    \r\n    PageNumber: ko.observable(history.state && history.state.page ? history.state.page : 1), // When we come back from a profile page, history.state.page remembers the page number we were on\r\n    PageSize: ko.observable(pageSize),\r\n    Loading: ko.observable(false),\r\n    FiltersApplied: ko.observable(false),\r\n\r\n    // Static Content\r\n    DeepLinkUrl: ko.observable(window.location.href),\r\n    HasPreFilteredContentChanges: ko.observable(hasPreFilteredContentChanges),\r\n    StructureFieldName: ko.observable(structureFieldName),   // Either \"Member Type\" or the name of a Custom Field, or blank if no structure present\r\n    StructureFieldValue: ko.observable(structureFieldValue), // Either a Member Type's name or an option of a Custom Field\r\n\r\n    // Results\r\n    Members: ko.observableArray([]),\r\n    TotalCount: ko.observable(null),\r\n\r\n    // Filters\r\n    FilterToggle: ko.observable(false),\r\n    SearchText: ko.observable(searchText),\r\n    MemberTypeIDs: ko.observable(memberTypeIDs),\r\n    SpecialOffer: ko.observable(specialOffer),\r\n    City: ko.observable(city),\r\n    State: ko.observable(state),\r\n    Zip: ko.observable(zip),\r\n    County: ko.observable(county),\r\n    Country: ko.observable(country),\r\n\r\n    // Map View\r\n    MapView: ko.observable(mapView),\r\n    Latitude: ko.observable(latitude),\r\n    Longitude: ko.observable(longitude),\r\n    Radius: ko.observable(radius),\r\n    Address: ko.observable(address)\r\n};\r\n\r\nviewModel.PageCount = ko.pureComputed(function () { return Math.ceil(viewModel.TotalCount() / viewModel.PageSize()); });\r\n\r\nviewModel.MemberTypeIDs.subscribe(function () { reloadListing(); });\r\nviewModel.SpecialOffer.subscribe(function () { reloadListing(); });\r\nko.computed(viewModel.City).extend({ throttle: 500 }).subscribe(function () { reloadListing(); });\r\nko.computed(viewModel.State).extend({ throttle: 500 }).subscribe(function () { reloadListing(); });\r\nko.computed(viewModel.Zip).extend({ throttle: 500 }).subscribe(function () { reloadListing(); });\r\nko.computed(viewModel.County).extend({ throttle: 500 }).subscribe(function () { reloadListing(); });\r\nko.computed(viewModel.Country).extend({ throttle: 500 }).subscribe(function () { reloadListing(); });\r\n\r\nfunction filtersApplied() {\r\n    return viewModel.SearchText() > \"\"\r\n        || viewModel.MemberTypeIDs() > \"\"\r\n        || viewModel.SpecialOffer() > \"\"\r\n        || viewModel.City() > \"\"\r\n        || viewModel.State() > \"\"\r\n        || viewModel.Zip() > \"\"\r\n        || viewModel.County() > \"\"\r\n        || viewModel.Country() > \"\"\r\n        || viewModel.Latitude() != null\r\n        || viewModel.Longitude() != null\r\n        || viewModel.Address() > \"\"\r\n        || $.makeArray($(\".custom-filter\")).some(function (e) { return $(e).val() > \"\"; })\r\n        ? true : false;\r\n}\r\n\r\nfunction goToPage(pageNumber) {\r\n    viewModel.PageNumber(pageNumber);\r\n    reloadListing(true);\r\n}\r\n\r\nfunction resetSearch() {\r\n    viewModel.PageNumber(1);\r\n    viewModel.SearchText(\"\");\r\n    viewModel.MemberTypeIDs(\"\");\r\n    var memberTypeInput = $(':input[name=\"MemberType\"]');\r\n    if (memberTypeInput.length) {\r\n        memberTypeInput.selectize()[0].selectize.clear();\r\n    }\r\n    viewModel.SpecialOffer(null);\r\n    viewModel.City(\"\");\r\n    viewModel.State(\"\");\r\n    viewModel.Zip(\"\");\r\n    viewModel.County(\"\");\r\n    viewModel.Country(\"\");\r\n    viewModel.Latitude(null);\r\n    viewModel.Longitude(null);\r\n    viewModel.Radius(\"50\");\r\n    viewModel.Address(\"\");\r\n\r\n    $(\".custom-field-multi[id^='CustomField_']\").each(function (i, obj) {\r\n        $(\"#\" + obj.id).selectize()[0].selectize.clear();\r\n    });\r\n\r\n    $(\".custom-filter\").each(function () {\r\n        $(this).val(\"\").change();\r\n    });\r\n\r\n    viewModel.StructureFieldName('');\r\n    viewModel.StructureFieldValue('');\r\n\r\n    viewModel.DeepLinkUrl(GetDeepLinkUrl());\r\n\r\n    reloadListing();\r\n}\r\n\r\nviewModel.StructureFieldValueForUrl = ko.computed(function () {\r\n    return seoFilenameMappings ? seoFilenameMappings[viewModel.StructureFieldValue()] : \"\";\r\n});\r\n\r\nfunction GetDeepLinkUrl() {\r\n    var url = baseUrl;\r\n\r\n    let structureFieldValueForUrl = viewModel.StructureFieldValueForUrl();\r\n    if (structureFieldValueForUrl) {\r\n        url += `/${structureFieldValueForUrl}`;\r\n    }\r\n\r\n    // Don't append member type to the query string if the url already specifies a member type\r\n    if (viewModel.StructureFieldName() !== \"Member Type\") {\r\n        url += GetQueryForFilter(url, \"MemberTypeIDs\");\r\n    }\r\n\r\n    url += GetQueryForFilter(url, \"SearchText\");\r\n    url += GetQueryForFilter(url, \"SpecialOffer\");\r\n    url += GetQueryForFilter(url, \"City\");\r\n    url += GetQueryForFilter(url, \"State\");\r\n    url += GetQueryForFilter(url, \"Zip\");\r\n    url += GetQueryForFilter(url, \"County\");\r\n    url += GetQueryForFilter(url, \"Country\");\r\n\r\n    if (viewModel.MapView()) {\r\n        url += GetQueryForFilter(url, \"MapView\");\r\n\r\n        if (viewModel.Latitude() && viewModel.Longitude()) {\r\n            url += GetQueryForFilter(url, \"Address\");\r\n            url += GetQueryForFilter(url, \"Latitude\");\r\n            url += GetQueryForFilter(url, \"Longitude\");\r\n            url += GetQueryForFilter(url, \"Radius\");\r\n        }\r\n    }\r\n\r\n    $(\".custom-filter\").each(function () {\r\n        if (!$(this).data(\"structured\")) {\r\n            url += GetQueryForFilter(url, $(this).attr('name'));\r\n        }\r\n    });\r\n\r\n    return url;\r\n};\r\n\r\nviewModel.DeepLinkUrl.subscribe(updatePageState);\r\nviewModel.PageNumber.subscribe(updatePageState);\r\nfunction updatePageState() {\r\n    history.replaceState({ page: viewModel.PageNumber() }, null, viewModel.DeepLinkUrl()); // Update URL in address bar and \"remember\" which page we were on in case we come back\r\n}\r\n\r\nfunction GetQueryForFilter(url, name) {\r\n    var val = viewModel.hasOwnProperty(name) ? viewModel[name]() : $(\"#\" + name).val();\r\n    if (val && val !== \"null\") {\r\n        return (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + name + \"=\" + encodeURIComponent(val);\r\n    }\r\n\r\n    return \"\";\r\n}\r\n\r\nvar reloadListing = debounce(function (preservePageNumber) {\r\n    viewModel.Loading(true);\r\n    viewModel.FiltersApplied(filtersApplied());\r\n    if (!preservePageNumber) {\r\n        viewModel.PageNumber(1);\r\n    }\r\n\r\n    // maybe use ko.toJSON() ?\r\n    var data = {\r\n        \"directoryID\": directoryID,\r\n        \"pageNumber\": viewModel.PageNumber(),\r\n        \"searchText\": viewModel.SearchText(),\r\n        \"memberTypeIDs\": viewModel.MemberTypeIDs(),\r\n        \"specialOffer\": viewModel.SpecialOffer(),\r\n        \"city\": viewModel.City(),\r\n        \"state\": viewModel.State(),\r\n        \"zip\": viewModel.Zip(),\r\n        \"county\": viewModel.County(),\r\n        \"country\": viewModel.Country(),\r\n        \"mapView\": viewModel.MapView(),\r\n        \"latitude\": viewModel.Latitude(),\r\n        \"longitude\": viewModel.Longitude(),\r\n        \"radius\": viewModel.Radius(),\r\n    };\r\n\r\n    $(\".custom-filter\").each(function () {\r\n        if ($(this).val()) {\r\n            data[$(this).attr('id')] = $(this).val();\r\n        }\r\n    });\r\n\r\n    $.ajax({\r\n        type: \"POST\",\r\n        url: memberListHtmlUrl,\r\n        data: data,\r\n        dataType: \"json\",\r\n        success: function (data) {\r\n            if (data.Status === \"OK\") {\r\n                var srInfo = '<span class=\"sr-only\" role=\"status\" aria-live=\"polite\">' + data.Members.length + ' found from search</span>';\r\n                $(\"#members-container\").html(srInfo + data.Html);\r\n                viewModel.Members(data.Members);\r\n                viewModel.TotalCount(data.TotalCount);\r\n                viewModel.DeepLinkUrl(GetDeepLinkUrl());\r\n                viewModel.Loading(false);\r\n\r\n                if (viewModel.MapView()) {\r\n                    LoadMaps();\r\n                }\r\n            }\r\n            else {\r\n                ShowCustomAlert('There was an error loading the directory: ' + data.Status);\r\n                viewModel.Loading(false);\r\n            }\r\n        },\r\n        error: function (jqXHR, textStatus) {\r\n            if (textStatus === 'abort' || jqXHR.status === 0)\r\n                return;\r\n\r\n            if (jqXHR && jqXHR.responseJSON) {\r\n                var apiErrorResponse = jqXHR.responseJSON;\r\n                ShowCustomAlert(apiErrorResponse.Message + (apiErrorResponse.ErrorDetails ? \"<br/><br/> Error Details: <br/>\" + apiErrorResponse.ErrorDetails : \"\"));\r\n            }\r\n            else {\r\n                ShowCustomAlert('There was an error loading the directory: ' + jqXHR.responseText);\r\n            }\r\n            viewModel.IsLoading(false);\r\n        }\r\n    });\r\n}, 300);\r\n\r\n// When the page structure changes, we need to update the static regions and then fetch the new content\r\nviewModel.StructureFieldValue.subscribe(function (newValue) {\r\n    // Look for <a> or <button> elements with the 'editor-save' class and a 'data-component-id' attribute matching the staticPageID\r\n    let selector = `.editor-save[data-component-id='${staticPageID}']`;\r\n    let saveButtons = $(`a${selector},button${selector}`);\r\n\r\n    // Add the current filter value, if any, to the elements as a 'data-filter' attribute\r\n    saveButtons.attr(\"data-filter\", newValue);\r\n    reloadStaticContent();\r\n});\r\n\r\nfunction ResetStaticContentRegions() {\r\n    viewModel.Loading(true);\r\n\r\n    $.ajax({\r\n        type: \"POST\",\r\n        url: resetContentUrl,\r\n        data: {\r\n            \"directoryID\": directoryID,\r\n            \"filter\": viewModel.StructureFieldValue()\r\n        },\r\n        dataType: \"json\",\r\n        success: function (data) {\r\n            if (data.Status === \"Invalid\") {\r\n                ShowCustomAlert('There was an error resetting the content: ' + data.Errors);\r\n            }\r\n            else {\r\n                if (data.BaseRegions) {\r\n                    data.BaseRegions.forEach(function (region) {\r\n                        setStaticContent(region.RegionName, region.Html);\r\n                    });\r\n                }\r\n\r\n                viewModel.HasPreFilteredContentChanges(false);\r\n                viewModel.Loading(false);\r\n                ShowSavedPopup('The content regions were reset successfully.', '');\r\n            }\r\n        },\r\n        error: function (jqXHR, textStatus) {\r\n            if (textStatus === 'abort' || jqXHR.status === 0)\r\n                return;\r\n\r\n            if (jqXHR && jqXHR.responseJSON) {\r\n                var apiErrorResponse = jqXHR.responseJSON;\r\n                ShowCustomAlert(apiErrorResponse.Message + (apiErrorResponse.ErrorDetails ? \"<br/><br/> Error Details: <br/>\" + apiErrorResponse.ErrorDetails : \"\"));\r\n            }\r\n            else {\r\n                ShowCustomAlert('There was an error resetting the content: ' + jqXHR.responseText);\r\n            }\r\n            viewModel.Loading(false);\r\n        }\r\n    });\r\n}\r\n\r\nfunction reloadStaticContent() {\r\n    $.ajax({\r\n        type: \"POST\",\r\n        url: fetchContentUrl,\r\n        data: {\r\n            \"directoryID\": directoryID,\r\n            \"filter\": viewModel.StructureFieldValue()\r\n        },\r\n        dataType: \"json\",\r\n        success: function (data) {\r\n            if (data && data.Regions) {\r\n                data.Regions.forEach(function (region) {\r\n                    setStaticContent(region.RegionName, region.Html);\r\n                });\r\n\r\n                viewModel.HasPreFilteredContentChanges(data.HasPreFilteredContentChanges);\r\n            }\r\n        }\r\n    });\r\n}\r\n\r\nfunction setStaticContent(region, content) {\r\n\r\n    const regionReplacedEvent = new CustomEvent(window.noviCmsNamespace.contentRegionReplacedEvent, { detail: { region: region, content: content } });\r\n    document.dispatchEvent(regionReplacedEvent);\r\n\r\n    // We need to set the visible content for standard users\r\n    if (window.noviCmsNamespace.isPageEditToggled) {\r\n        return;\r\n    }\r\n\r\n    // Otherwise we're using the old editor so we update the editable regions and viewable regions\r\n\r\n    // Fetch the static region - its structure is different depending on whether the region is editable\r\n    let tinyRegion = $(`#editable_${region}`); // For admins\r\n    if (!tinyRegion.length) {\r\n        tinyRegion = $(`[data-region=\"${region}\"]`); // For standard users\r\n    }\r\n\r\n    if (tinyRegion && tinyRegion.length) {\r\n        // New method for setting editor content\r\n        if (typeof setEditorContent !== \"undefined\") {\r\n            setEditorContent(region, content);\r\n        }\r\n        // Legacy method for setting editor content\r\n        else if (typeof SetEditorContent !== \"undefined\") {\r\n            SetEditorContent(region, content);\r\n        }\r\n        else {\r\n            tinyRegion.html(content);\r\n        }\r\n\r\n        if (content) {\r\n            tinyRegion.removeClass(\"empty\");\r\n        }\r\n        else {\r\n            tinyRegion.addClass(\"empty\");\r\n        }\r\n    }\r\n}\r\n\r\nvar addressPickerLoaded = false;\r\n\r\nfunction LoadMaps() {\r\n    var userPosition = {\r\n        lat: parseFloat(viewModel.Latitude()),\r\n        lng: parseFloat(viewModel.Longitude())\r\n    };\r\n\r\n    initializeDirectoryMap(\"map-background\", userPosition, viewModel.Members());\r\n\r\n    if (!addressPickerLoaded) {\r\n        initializeAddressPicker();\r\n    }\r\n}\r\n\r\nfunction initializeDirectoryMap(mapElementId, userPosition, members) {\r\n    bounds = new google.maps.LatLngBounds();\r\n    geocoder = new google.maps.Geocoder();\r\n    map = new google.maps.Map(document.getElementById(mapElementId));\r\n    infoWindow = new google.maps.InfoWindow();\r\n\r\n    // Draw star at the focal point\r\n    if (userPosition && userPosition.lat && userPosition.lng) {\r\n        createMarker(userPosition, true);\r\n        bounds.extend(userPosition);\r\n        filterCircle = new google.maps.Circle({\r\n            strokeColor: \"#FF0000\",\r\n            strokeOpacity: 0.5,\r\n            strokeWeight: 2,\r\n            fillColor: \"#FF0000\",\r\n            fillOpacity: 0.15,\r\n            map,\r\n            center: userPosition,\r\n            radius: viewModel.Radius() * 1609.34\r\n        });\r\n    }\r\n\r\n    // Draw pin for each company\r\n    members.forEach(function (member) {\r\n        if (member.ShippingAddress.Lat && member.ShippingAddress.Long) {\r\n            var pos = { lat: member.ShippingAddress.Lat, lng: member.ShippingAddress.Long };\r\n            var content = $(\"#member_\" + member.ID).html();\r\n            markers[member.ID] = createMarker(pos, false, content);\r\n            bounds.extend(pos);\r\n        }\r\n    });\r\n\r\n    map.fitBounds(bounds);\r\n    setTimeout(\"setZoomLevel(\" + getZoomLevel() + \");\", 100);\r\n}\r\n\r\nfunction getZoomLevel() {\r\n    var zoomLevel = 17;\r\n    if (filterCircle) {\r\n        var radius = filterCircle.getRadius() + filterCircle.getRadius() / 2;\r\n        var scale = radius / 500;\r\n        zoomLevel = (16 - Math.log(scale) / Math.log(2));\r\n    }\r\n    return zoomLevel;\r\n}\r\n\r\nvar counter = 0;\r\nfunction setZoomLevel(maxZoomLevel) {\r\n    if (map.getZoom() > maxZoomLevel)\r\n        map.setZoom(maxZoomLevel);\r\n    while (counter < 4 && map.getZoom() != maxZoomLevel) {\r\n        counter++;\r\n        setTimeout(\"setZoomLevel(\" + maxZoomLevel + \");\", 1000);\r\n    }\r\n}\r\n\r\nfunction createMarker(latlng, primary, content) {\r\n    var star = {\r\n        path: 'M 125,5 155,90 245,90 175,145 200,230 125,180 50,230 75,145 5,90 95,90 z',\r\n        fillColor: 'blue',\r\n        fillOpacity: 1,\r\n        scale: .075,\r\n        strokeColor: 'blue',\r\n        strokeWeight: 1\r\n    };\r\n    var marker = new google.maps.Marker({ position: latlng, map: map, icon: primary ? star : null });\r\n\r\n    if (content) {\r\n        marker.addListener('click', function () {\r\n            openInfoWindow(content, marker);\r\n        });\r\n    }\r\n\r\n    return marker;\r\n}\r\n\r\nfunction initializeAddressPicker() {\r\n    var x = new google.maps.places.Autocomplete($(\"#AddressPicker\")[0], { types: ['geocode'] });\r\n    google.maps.event.addListener(x, 'place_changed', function () {\r\n        var place = x.getPlace();\r\n        if (place && place.geometry) {\r\n            var pos = {\r\n                lat: place.geometry.location.lat(),\r\n                lng: place.geometry.location.lng()\r\n            };\r\n\r\n            viewModel.Latitude(pos.lat);\r\n            viewModel.Longitude(pos.lng);\r\n\r\n            reloadListing();\r\n        }\r\n        else {\r\n            clearAddressInput();\r\n        }\r\n    });\r\n\r\n    $(\"#AddressPicker\").focus(function () {\r\n        $(this).attr(\"autocomplete\", \"nope\");\r\n    });\r\n\r\n    $(\"#AddressPicker\").change(function () {\r\n        viewModel.Latitude(null);\r\n        viewModel.Longitude(null);\r\n    });\r\n}\r\n\r\nfunction clearAddressInput() {\r\n    var addressInput = $(\"#AddressPicker\")[0];\r\n    $(\"#Latitude\").val(\"\");\r\n    $(\"#Longitude\").val(\"\");\r\n    setTimeout(function () { addressInput.value = \"\"; addressInput.focus(); }, 10);\r\n}\r\n\r\nfunction getUserLocation(callback) {\r\n    // Try HTML5 geolocation.\r\n    if (navigator.geolocation) {\r\n        navigator.geolocation.getCurrentPosition(function (position) {\r\n            var pos = {\r\n                lat: position.coords.latitude,\r\n                lng: position.coords.longitude\r\n            };\r\n\r\n            if (typeof callback === \"function\") {\r\n                callback(pos);\r\n            }\r\n        }, function () {\r\n            ShowCustomAlert('Sorry, we were unable to determine your position. Please allow location access if you would like to use this feature.');\r\n        });\r\n    } else {\r\n        // Browser doesn't support Geolocation\r\n        ShowCustomAlert('Sorry, it appears your browser doesn\\'t support the locate feature.');\r\n    }\r\n}\r\n\r\nfunction getUserAddress(callback) {\r\n    getUserLocation(function (position) {\r\n        getAddressFromPosition(position, callback);\r\n    });\r\n}\r\n\r\nfunction getAddressFromPosition(position, callback) {\r\n    geocoder.geocode({ location: position }, function (data) {\r\n        var address = data[0].formatted_address;\r\n        callback(address, position);\r\n    });\r\n}\r\n\r\nfunction getPositionFromAddress(address, callback) {\r\n    geocoder.geocode({ address: address }, function (data, status) {\r\n        var position = status == \"OK\" ? data[0].geometry.location : null;\r\n        callback(position, status);\r\n    });\r\n}\r\n\r\nfunction openInfoWindow(content, marker) {\r\n    infoWindow.close();\r\n    infoWindow.setContent(content);\r\n    infoWindow.open(map, marker);\r\n    setTimeout(function () {\r\n        $('[data-toggle=\"tooltip\"]').tooltip();\r\n    }, 500);\r\n}\r\n\r\n$(function () {\r\n    ko.applyBindings(viewModel);\r\n\r\n    $(\"#search-box\").keydown(function (e) {\r\n        var key = e.charCode || e.keyCode || 0;\r\n        if (key == 13) {\r\n            $(\"#search-go\").click();\r\n        }\r\n    });\r\n\r\n    $(\"#filter-menu\").keydown(function (e) {\r\n        var key = e.charCode || e.keyCode || 0;\r\n        if (key == 13) {\r\n            $(\"#filter-menu-wrapper\").addClass(\"open\");\r\n        }\r\n    });\r\n\r\n    $(document).on('focusin', () => {\r\n        if (!$(\"#filter-menu-wrapper\").hasClass(\"open\")) {\r\n            return;\r\n        }\r\n\r\n        let activeElement = document.activeElement;\r\n\r\n        const elements = [\r\n            \"filter-menu\",\r\n            \"df-member-types\",\r\n            \"member-type-filter\",\r\n            \"special-offers-ddl\",\r\n            \"df-group-filter\",\r\n            \"df-committee-filter\",\r\n            \"df-multi-select-filter\",\r\n            \"CityFilter\",\r\n            \"StateFilter\",\r\n            \"ZipCodeFilter\",\r\n            \"CountyFilter\",\r\n            \"CountryFilter\"\r\n        ];\r\n\r\n        if (!elements.includes(activeElement.id) && !activeElement.id.includes(\"GroupFilter_\") && !activeElement.id.includes(\"CommitteeFilter_\") && !activeElement.id.includes(\"CustomField_\") && !activeElement.id.includes(\"MultiSelectFilter_\") && $(activeElement).parents('.selectize-input').length === 0) {\r\n            $(\"#filter-menu-wrapper\").removeClass(\"open\");\r\n        }\r\n    });\r\n\r\n    $(\"#filter-menu\").on(\"keypress click\", function () {\r\n        $(this).attr(\"aria-expanded\", !viewModel.FilterToggle());\r\n        viewModel.FilterToggle(!viewModel.FilterToggle());\r\n    })\r\n\r\n    $(\"#deep-link\").click(function () {\r\n        $(this).select();\r\n\r\n        $(this).mouseup(function () {\r\n            $(this).unbind(\"mouseup\");\r\n            return false;\r\n        });\r\n    });\r\n\r\n    $(\"#member-type-filter\").selectize({\r\n        plugins: ['remove_button'],\r\n        placeholder: \"All\",\r\n        onChange: function (value) {\r\n            viewModel.MemberTypeIDs(value ? value.join() : \"\"); // Produces comma separated list of Member Type IDs\r\n\r\n            if (structureFieldType === \"MemberType\") {\r\n                if (!value || value.length !== 1) {\r\n                    viewModel.StructureFieldName(\"\");\r\n                    viewModel.StructureFieldValue(\"\");\r\n                }\r\n                else if (value.length === 1) {\r\n                    viewModel.StructureFieldName(\"Member Type\");\r\n                    viewModel.StructureFieldValue($(\"#member-type-filter\").text());\r\n                }\r\n            }\r\n        },\r\n        load: function (query, callback) {\r\n            if (this.currentResults.items.length) {\r\n                $(\"#member-type-filter-alert\").text(this.currentResults.items.length + \" suggestions found\");\r\n            } else {\r\n                $(\"#member-type-filter-alert\").text(\"No suggestions found\");\r\n            }\r\n\r\n            callback();\r\n        }\r\n    });\r\n\r\n    $(\".custom-field-multi\").selectize({\r\n        plugins: ['remove_button'],\r\n        placeholder: \"All\"\r\n    });\r\n\r\n    $(\".custom-filter\").change(function () {\r\n        if (structureFieldType === \"CustomField\") {\r\n            var fieldName = $(this).prev(\"label\").text();\r\n\r\n            // This needs to be the text of the selected option when it has a value, not the value itself\r\n            var optionSelected = $(this).find('option[value!=\"\"]:selected').text().trim();\r\n\r\n            if ($(this).data(\"structured\")) {\r\n                if (!optionSelected) {\r\n                    viewModel.StructureFieldName(\"\");\r\n                    viewModel.StructureFieldValue(\"\");\r\n                }\r\n                else {\r\n                    viewModel.StructureFieldName(fieldName);\r\n                    viewModel.StructureFieldValue(optionSelected);\r\n                }\r\n            }\r\n        }\r\n\r\n        reloadListing();\r\n    });\r\n\r\n    $(\"#Radius\").change(function () {\r\n        if (viewModel.Latitude() && viewModel.Longitude()) {\r\n            reloadListing();\r\n        }\r\n    });\r\n\r\n    $(\"#locate-user-button\").click(function () {\r\n        getUserAddress(function (address, position) {\r\n            viewModel.Latitude(position.lat);\r\n            viewModel.Longitude(position.lng);\r\n            viewModel.Address(address);\r\n            reloadListing();\r\n        });\r\n    });\r\n\r\n    window.SwitchToListView = function SwitchToListView() {\r\n        viewModel.MapView(false);\r\n        window.location.href = GetDeepLinkUrl();\r\n    };\r\n\r\n    window.SwitchToMapView = function SwitchToMapView() {\r\n        viewModel.MapView(true);\r\n        window.location.href = GetDeepLinkUrl();\r\n    };\r\n\r\n    window.SwitchToCategoryView = function SwitchToCategoryView() {\r\n        window.location.href = baseUrl + \"?CategoryView=true\";\r\n    };\r\n\r\n    $(\".c-directory-map-view-member-list > div > [id^=member_]\").hover(\r\n        function () {\r\n            openInfoWindow($(this).html(), markers[$(this).data(\"member-id\")]);\r\n        },\r\n        function () {\r\n            infoWindow.close();\r\n        });\r\n\r\n    $(document).on('click', '.o-filter-bar .dropdown-menu', function (e) {\r\n        e.stopPropagation();\r\n    });\r\n\r\n    if (breakpoint().indexOf(\"mobile\") != -1) {\r\n        var containerWidth = $(\".directory\").outerWidth();\r\n        $(\"#map-background\").width(containerWidth).height(containerWidth);\r\n    }\r\n\r\n    $('[data-toggle=\"tooltip\"]').tooltip();\r\n\r\n    reloadListing(true);\r\n});"]}