{"version":3,"sources":["pages/PageScripts.js"],"names":["Page","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","SearchData","String","prototype","endsWith","searchString","undefined","substring","firstSearch","searchResults","pageUCLs","isMobile","iOS","navigator","userAgent","match","currentRequest","clearDirections","$","hide","show","window","DirectionsDisplay","setMap","InfoWindow","close","hasClass","click","setupSettings","def","getDefaultAddress","prop","val","geolocation","Search","SettingsDone","showCircle","radius","posLatLng","Circle","google","maps","center","clickable","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","map","MapView","fitBounds","getBounds","showInfoWindow","description","latlng","allowedToRelocate","outletID","TravelMode","DRIVING","TRANSIT","WALKING","BICYCLING","setContent","setPosition","open","showOpenDataSets","regions","i","region","GeographyID","RegionID","DefaultLatLng","LatLng","CentreLat","CentreLng","key","localStorage","getItem","cookie","getStoredValue","getCurrentPosition","position","coords","latitude","longitude","vals","split","getCenter","parseFloat","displayAndSetMyLocation","refreshMarkers","displayMyLocation","addr","modal","latLng","infoWindowContent","setCenter","Location","LocationMarker","myLocationMarker","Marker","visible","addListener","event","jQuery","attr","refresh","locationLatLng","location","Geocoder","geocode","results","status","GeocoderStatus","OK","formatted_address","getRegions","lat","lng","focus","hideCategoryGroupOnMap","group","markers","each","AmcMarkers","Locations","index","Group","setVisible","getVisible","contains","getPosition","allVisible","Clusterer","removeMarkers","setGroupDisplay","turnOn","grpSel","data","IsLoggedIn","aria","Utils","AriaAlert","html","setAllCategoriesChecked","loadCategoryGroup","showAll","found","hideMarkers","showMarkers","CategoryGroupID","addMarkers","showGroupCount","$checkedCheckboxes","selectedValues","parseInt","Radius","getJSON","RegionType","list","marker","bounds","LatLngBounds","Lat","Lng","title","Name","Html","animation","Animation","DROP","outlet","OutletID","icon","extend","Spiderfier","addMarker","point","fadeOut","fail","jqXHR","textStatus","errorThrown","getOutlets","numberShown","text","catCountLabel","toString","clearMarkers","groups","inArray","hideOpenDataOnMap","OpenData","showOpenDataOnMap","unspiderfy","checkIfAllMarkersVisible","vis","checked","set","type","element","Type","iconUrl","MarkerIcon","ItemURL","addOpenDataMarkersToArray","always","debounce","func","wait","timeout","_this","args","_i","arguments","clearTimeout","setTimeout","SetupLocateMeBtn","$btnLocator","$btnClearInput","$addressInput","$btnGo","css","off","on","preventDefault","geocoder","address","siblings","console","error","message","FetchInfoHubAbout","geographId","councilId","_a","ajax","url","beforeSend","append","success","find","removeClass","complete","remove","FetchLocalServices","regionId","locationId","JSON","stringify","LocationID","CouncilRegionID","CategoryList","contentType","dataType","empty","renderedHtml","templates","render","filter","obj","Services","FetchWeatherData","HandleErrors","current","date","Date","localtime","hour","getHours","minutes","getMinutes","ampm","strMinutes","temp_c","humidity","wind_kph","uv","condition","DisplayDirectoryServiceMarkers","services","directoryMarkers","RefreshMarkers","nickname","Outlet","Nickname","Description","slice","webUrl","AppSettings","DirectoryUrl","Url","content","Category","Phone","MapLocation","ShowMarker","AddMarker","InitAmcPage","mapName","ServicesShown","kml","createMapPanel","KmlLayer","suppressInfoWindows","OverlappingMarkerSpiderfier","markersWontMove","markersWontHide","MarkerClusterer","gridSize","maxZoom","ignoreHidden","input","document","getElementById","Autocomplete","places","componentRestrictions","country","bindTo","place","getPlace","geometry","viewport","defAddress","defComplete","desc","types","initAmcMap","src","children","replace","bootstrapSlider","min","max","tooltip","slideDown","slideUp","bind","keyCode","totalObj","toggleAllServicesOnMap","categoryGroupId","valLabel","totalLabel","total","toggleSingleServiceOnMap","is","alert","setting","setItem","setStoredValue","DirectionsRenderer","draggable","setPanel","DirectionsService","request","origin","destination","travelMode","route","DirectionsStatus","triggerAlert","target","setDirections","which","getDirections","initAmcActions","McdMaps","setDefaultLocation","getResults","initAddress","InitCommunityHub","displayAddress","geographyId","handleAnchorChange","queryString","search","currentHash","URLSearchParams","get","wrapper","parent","destCoord","destObj","long","toggleClass","GetDefaultUCLsMarkers","matchMedia","matches","addClass","panTo","setZoom","getUCLDescriptions","RedirectToAnotherInfoHub","$btnGoto","$locationSelectorModal","fadeIn","DisplayName","LocationType","CouncilID","responseText","r","res","URL","href","hideAddressSuggestions_mobile","$addressSuggestions_mobile","$navBackdrop_mobile","$addressInput_mobile","$btnGoToAddress_mobile","FetchLocation_mobile","$btnGoToAddress","$btnLocateMe","$btnClearAddress","$addressSuggestions","$backdrop","ApiUrl","response","_loop_1","item","li","createElement","div","inputValue","escapedInput","pattern","RegExp","name","classList","add","appendChild","innerHTML","insertBefore","style","backgroundImage","toUpperCase","addEventListener","maxItems","Math","ResetLocationToDefault","defaultLocation","$mobileNav","$burgerMenu","$btnToggleBurgerMenu","addressLocationSelected","$btnLocateMe_mobile","$btnClearAddress_mobile","$getHelp_1","$getInvolved_1","keepSpiderfied","removeListener","originCoord","originObj","getPointToPointDirection","history","replaceState","pathname","id","queryParams","scrollTo","_loop_2","padding","DiaryRequest","FetchDirectory","getHelp","getInvolved","selectpicker","clickedIndex","isSelected","previousValue","clickedValue","eq","race","FetchCategoryGroups","FetchDiary","FetchGiveLocal","catch","err","events","filteredEvents","localservices","diaryMarkers","displayAdddress","categoryGroups","currentPageNo","PAGE_CHUNK_SIZE","PAGE_CONTENT_SIZE","MAX_PAGE_SIZE","SORT_FIELD","SORT_DIRECTION","DirectoryRequest","categoryGroupIds","geoId","pageNo","SearchType","What","Where","CategoryGroups","SortField","SortDirection","PageNo","PageSize","SearchAroundCouncilRegion","IsAdvanced","ShowResourceList","Ext","totalItemsCount","ITEMS_TOTAL","totalPages","startPage","Results","log","groupedByLocation","reduce","accumulator","service","existingEntry","entry","OrganisationID","OrganisationName","forEach","servicesGroupedByLocation","Total","ceil","floor","endPage","htmlOutput","paginationHtml","clickedPageNumber","scrollIntoView","behavior","selectedCategoryGroupId","Array","isArray","renderedOptions","diaryTypeIDs","callback","_b","_c","currentDate","_d","PAGE_NO","_e","_f","_g","getFullYear","getMonth","getDate","WhenIndex","SearchFrom","UniqueEvents","IncludeDeletedAndUnpublished","DiaryTypeIDs","renderData","Data","template","TotalCount","TextOnlyDescription","DiaryUrl","InstanceUrl","EventName","LocationAddress","Phone1","GeocodeLat","GeocodeLong","EventInstanceID","DisplayDiaryEventMarkers","handleButtonClick","buttonId","typeIds","indexOf","ids","currentYear","currentMonth","currentDay","DiaryTypeIds","searchRequest","OrderByDate","OrderByVolunteerTitle","Length","Start","IncludeCounts","geoID","councilRegionID","abort","ucls","latlngList","markerLatlng","GeographyMap","CentralLatitude","CentralLongitude","Title","scaledSize","Size","Point","anchor","latChange","sqrt","northEast","southWest","latlngbounds","mcdIcon","setOptions","pixelOffset","currentLocationInfoWindowContent","getGroupValue","multiple","values","join","setGroupValue","getSearchValues","lastQuery","sessionStorage","savedSearch","query","pairs","pair","toLowerCase","decodeURIComponent","Object","keys","parse","queryStringToJSON","ABN","abn","Accreditations","accreditations","AccreditationsAny","accreditationsany","AccreditationsRequired","accreditationsrequired","category","Council","DgrStatus","dgrstatus","Email","email","EntityType","entitytype","FeeToAccess","feetoaccess","State","state","phone","ReferralRequired","referralrequired","CategoryID","servicecategories","CategoryGroupsRequired","servicecategoriesrequired","Tags","tags","TagsAny","tagsany","TagsRequired","tagsrequired","Website","website","what","WhatAny","whatany","WhatRequired","whatrequired","WheelchairAccess","wheelchairaccess","Age","age","Gender","gender","IsGov","isgov","where","UseElasticOptimisation","useelasticoptimisation","selectLocation","closest","selectOption","selectSetOption","innerText","clearMap","showGeocodeResults","geolocationCallback","address_components","short_name","su","a1a","a1b","a1","st","pc","sp","blg","long_name","saveLatLng","trim","test","setMapAddressReadonly","loadMapPlace","markMap","readonly","drawMap","showMap","showMarker","showAddress","isStatic","zoom","centerLat","centerLng","mapOptions","mapContainer","MY_MAPTYPE_ID","mapTypeControlOptions","ZoomControlStyle","SMALL","mapTypeIds","MapTypeId","ROADMAP","mapTypeId","disableDefaultUI","disableDoubleClickZoom","scrollwheel","Map","styledMapOptions","customMapType","StyledMapType","featureType","elementType","stylers","color","visibility","weight","mapTypes","Common","GetStandardMapStyle","loadMap","showResourceList","searchCenter","Bounds","Markers","CouncilLayer","markerHandler","listing","pstripped","substr","DisplayAddress","inner","encodeURIComponent","Suburb","Distance","CurrentCouncil","KmlLocation","FitMapBounds","displayExtraInformation","outletId","listingId","healthEngineId","healthEngineStatus","bookingType","appointmentUrl","backgroundColor","includes","display","$template","removeAttr","loadNearby","orgId","pageNumber","replaceWith","drawOrgChart","visualization","NumberFormat","format","PieChart","draw","height","chartArea","left","top","width","drawOrgMap","GeoMap","dataMode","drawServiceChart","showRemaining","control","maxlength","limitcontrol","setLimit","l","SetUpUclDescription","u","Locality","loadingInterval","_pendingAbn","getAbnDetails","onSuccess","Abn","tradingNames","ABNFound","LegalName","AvailableTradingNames","TradingName","GSTRegistered","DGRStatus","RegisteredCharity","newAbn","newName","msgGrowl","orgs","orgNum","org","orgName","numOutlets","Outlets","a","toggle","showFoundOrgs","getMatchedOrgs","valid","initPasswordStrength","popoverOptions","placement","trigger","popover","options","common","usernameField","zxcvbn","ui","viewports","progress","verdict","pwInitialised","pwstrength","setupCommentNotificationsDefaults","notifyDefaults","delay","timer","allow_dismiss","newest_on_top","mouse_over","showLoadingComments","setInterval","tooltips","qtip","finishLoadingComments","clearInterval","hideEditComment","commentId","updateComment","orgCommentsUrl","selectedFlags","makeArray","model","Id","UpdatedComment","CommentFlags","original","flags","hasError","Success","notify","Message","reloadComments","focusedSelector","cache","SetupTooltipsStyling","CanShowMoreResults","OrganisationComments","setupSearchResultsAria","isDragging","wasDragging","editVisible","container","has","showComments","organisationId","outletServiceId","selector","deleteComment","$element","confirm","d","editComment","elem","bootstrapToggle","$parent","ev","$element_1","addNewComment","Comment","OrganisationId","OutletId","OutletServiceId","Grid","SetupOutletTeamMemberContacts","method","contact","emailStart","emailAt","emailParts","Role","FullName","EmailStart","EmailAt","ContactID","ProfileID","Mobile","listHtml","closeAddUserMenu","backdrop","dropdownHtml","ProfileId","ContactId","ContactName","ContactEmail","PersonalList","ProjectLists","NetworkLists","action","profileId","formData","ActivityId","from","align","SetupAddUserToLists","LoadSearchResults","crit","favouriteModalUrl","loggedIn","onFailed","loadResults","summary","performKeyWordSearch","SetupConverters","resultsWithAds","AdResults","splice","combinedResults","KeywordSearchResults","concat","criteria","Criteria","$results","ForceExpandSearch","LoadMapMarkers","prepend","displayResults","IsExpandedSearch","DisplayNameCouncil","AffiliateSite","Loaded","tempUrl","AddCommas","CategoryGroup","ID","LocalityID","OrigParams","pageResults","pageSize","showExpandSearch","pageLinks","numberOfPages","pages","animate","scrollTop","pushState","OrigUrl","newParams","str","p","hasOwnProperty","newUrl","OrigTitle","displayResultsPagination","AllowExpandSearch","opera","sidebar","Favourites","ShowAddFavourite","ShowAddFavouriteList","SetupSaveSearchClick","buttonWrapper","rankButton","alphaButton","distanceButton","allResultsButton","localResultsButton","mapButton","triggerRank","triggerAlpha","DisableFilter","direction","ReenableFilter","triggerDistance","triggerResults","localOnly","LocalOnly","SetSortButtonDirection","setupResultsButtonActions","SetupShareModal","parts","originalEvent","ShiftCategory","ShowThinking","responseJSON","PageSetup","InitSearchResultsBehavior","regionToShow","InitLoginPage","alreadyLoggedIn","buttonClicked","link","InitVerifyEmailPage","initial","validate","rules","Token","required","messages","InitEventRegisterPage","typingTimer","registerForm","checkIfExist","async","resp","FirstName","LastName","mobileAvailable","ausMobile","emailAvailable","validator","addMethod","trimmedValue","re","optional","keyup","first","InitRegisterPage","Username","mcdUsername","usernameAvailable","Password","minlength","regex","ConfirmPassword","equalTo","InitAboutUsPage","Users","toLocaleString","Organisations","ServiceRegions","toFixed","orgData","DataTable","addColumn","OrganisationTypes","addRow","orgMap","ServiceCouncilMap","Latitude","Longitude","Count","serviceData","ServiceTypes","resizeTimer","resize","InitRegionListingPage","council","isLocality","InitCategoryLinks","SetCurrentLocality","SetCurrentCouncil","InitListingPage","categoryId","localityId","localityName","shouldShowComments","showContactForm","InitEmail","OutletServiceID","FromName","FromEmail","selectize","plugins","remove_button_accessible","accessibility","Label","valueField","labelField","searchField","preload","selectOnTab","closeAfterSelect","hideSelected","load","Text","TagName","option","escape","clear","addItems","$form","Messages","offset","InitOutletPage","relatedTarget","contentName","serviceName","InitMobileSearch","InitOrganisationPage","councilRegionId","favouritesUrl","doSearch","lastLocation","currentLocation","performSearch","filterResults","finishedCallback","filterText","filteredResults","grep","resultsLoadedCallback","ConstrainedToOrgId","InitRegisterOrganisationPage","form","orgSelect","orgType","orgTypeDropDown","orgDisplay","validatedAbn","UseExistingOrganisation","OrganisationType","ausPhone","require_from_group","ManagerPhone","ManagerEmail","ManagerMobile","simpleUrl","OrganisationNoAbnTradingName","OrganisationEnteredAbn","AlreadyListed","SelectedOrganisationId","PrimaryService","BriefDescription","AgreeConditions","errorPlacement","appendTo","parents","insertAfter","showHideOrgDetails","existingOrg","isOrg","noAbn","showHideOrgType","isListed","noabn","orgListVisible","alreadyListed","referralRequired","refRequired","populateAbnCharity","fld","hadData","isNumeric","OrganisationTypeGuess","setValue","CharityAddress","CharityWebsite","CharityEmail","PrimaryServiceGuess","CharityDescription","onChange","change","tradingName","suburb","CKEDITOR","removeButtons","removePlugins","enterMode","ENTER_P","htmlEncodeOutput","instances","getData","agreeConditions","setData","suppliedABN","enteredABN","InitHelpLinks","$elem","InitSearchToggleButtons","mapElem","calendarSelector","firstDate","listButton","eventsButton","sectionDiv","haveEventsStartedLoading","haveEventsFinishedLoading","triggerEventsRerender","triggerMap","triggerList","triggerEvents","Calendars","InitListingCalendar","fullCalendar","InitAmcToggleButtons","LoadPartners","LoadRemoteResults","searchTerm","page","resultsTargetName","resultsTemplateName","s","apiSearchUrl","template2","$template2","LoadCategorySuggestions","InitAdvancedSearch","useElasticOptimisationDefault","stateCode","keyVal","parentKey","thisSearch","saveAdvancedSearch","isNaN","councilData","locData","Postcode","posError","mask","Service","delimiter","sortField","create","placeholder","items","onInitialize","previousSelections","$input","self","clearOptions","addOption","addItem","settings","orderByLength","per","optgroupField","Categories","special","CategoryName","class","CategoryKeywords","groupID","addOptionGroup","AfterSimilarResultsRequest","currentListingID","categoryGroup","sortDirection","moreResults","radiusList","currentRadiusIndex","LoadNHSDResults","htmlResult","SiteSearchResponse","SiteSearchResult","ResultList","SiteData","NHSDUrl","results_1","nhsdUrl","nhsdId","NHSDID","views","converters","InitSliders","not","slick","slide","slidesToShow","responsive","breakpoint","InitConnectPage","passwordForm","PasswordConfirmation","tokenForm","InitResetPasswordPage","InitChangePasswordPage","CurrentPassword","InitHHSPage","InitAffiliateGroupMapPage","InitCommunityActivityPage","toggleSendEmailButton","anyChecked","submit","serialize","urlToCopy","$temp","select","execCommand","messageType","messageText","InitActivityCotactListPage","IsOrgFound","Org","PreferredName","isExistingEmail","showError","elementId","clearError","isValid","MobileNumber","reload","selectedUserIds","userId","userIds","xhr","InitEmailFoundOrg","InitUserInfoCollectionPage"],"mappings":"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","file":"PageScripts.min.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar SearchData = /** @class */ (function () {\r\n function SearchData() {\r\n }\r\n return SearchData;\r\n}());\r\n//var PageSetup = PageSetup || {};\r\n// Polyfill\r\nif (!String.prototype.endsWith) {\r\n String.prototype.endsWith = function (searchString, length) {\r\n if (length === undefined || length > this.length) {\r\n length = this.length;\r\n }\r\n return this.substring(length - searchString.length, length) === searchString;\r\n };\r\n}\r\n;\r\nvar Page;\r\n(function (Page) {\r\n var firstSearch = true;\r\n var searchResults = [];\r\n var pageUCLs = [];\r\n var isMobile = {\r\n iOS: function () { return navigator.userAgent.match(/iPhone|iPad|iPod/i); },\r\n };\r\n var currentRequest = null;\r\n /*\r\n Access My Community functions\r\n */\r\n function InitAmcPage() {\r\n var mapName = arguments[0];\r\n var region = arguments[1];\r\n window.Search = {\r\n Location: null,\r\n LocationMarker: null,\r\n DefaultLatLng: null,\r\n Radius: 5,\r\n RegionID: region.RegionID,\r\n RegionType: region.RegionType,\r\n CentreLat: region.CentreLat,\r\n CentreLng: region.CentreLng,\r\n IsLoggedIn: arguments[2],\r\n ServicesShown: false,\r\n SettingsDone: false\r\n };\r\n window.AmcMarkers = {\r\n Locations: [],\r\n OpenData: []\r\n };\r\n if (region.CentreLat !== 0 && region.CentreLng !== 0) {\r\n window.Search.DefaultLatLng = new google.maps.LatLng(region.CentreLat, region.CentreLng);\r\n }\r\n initAmcMap(mapName);\r\n initAmcActions();\r\n //\r\n if (document.getElementById('autocomplete-location-new')) {\r\n McdMaps.setDefaultLocation(false, true);\r\n McdMaps.getResults('#autocomplete-location-new', false);\r\n }\r\n // \r\n window.Search.RegionID = 0; // We use google maps\r\n if (window.Search.RegionID === 0) {\r\n var initAddress = $(\"#txtLocation\").val();\r\n if (initAddress) {\r\n var geocoder = new google.maps.Geocoder();\r\n geocoder.geocode({\r\n 'address': initAddress\r\n }, function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n var place = results[0];\r\n if (place.geometry.location) {\r\n displayMyLocation(place.geometry.location, true);\r\n }\r\n else {\r\n $('#cantFindYou').show();\r\n if (place.geometry.viewport) {\r\n window.MapView.fitBounds(place.geometry.viewport);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n if (mapName !== \"#council-ucl-map\") {\r\n displayAndSetMyLocation(true);\r\n }\r\n }\r\n }\r\n else {\r\n getRegions(0, 0);\r\n $('#cantFindYou').hide();\r\n $(\".txt-address-wrapper\").hide();\r\n $(\".txt-distance-wrapper\").hide();\r\n $(\".txt-buttons-wrapper\").hide();\r\n }\r\n aria.Utils.AriaAlert(\"Unfortunately the map based search used in access my community is not properly supported by screen readers. We invite you to use the accessible features found in our standard search\", 15);\r\n }\r\n Page.InitAmcPage = InitAmcPage;\r\n function initAmcMap(mapName) {\r\n var lat = $(mapName).data(\"lat\");\r\n var lng = $(mapName).data(\"lng\");\r\n var kml = $(mapName).data(\"kml\") || '';\r\n window.MapView = createMapPanel(mapName, lat, lng, 12, false);\r\n if (window.Search.RegionID > 0 && kml) {\r\n window.KmlLayer = new google.maps.KmlLayer({\r\n url: kml,\r\n suppressInfoWindows: true,\r\n clickable: false,\r\n map: window.MapView\r\n });\r\n }\r\n window.InfoWindow = new google.maps.InfoWindow({});\r\n window.Geocoder = new google.maps.Geocoder();\r\n window.Search.Location = window.MapView.getCenter();\r\n window.Spiderfier = new OverlappingMarkerSpiderfier(window.MapView, {\r\n markersWontMove: true,\r\n markersWontHide: true\r\n });\r\n window.Clusterer = new MarkerClusterer(window.MapView, [], {\r\n gridSize: 50,\r\n maxZoom: 15,\r\n ignoreHidden: true\r\n });\r\n window.Spiderfier.addListener('click', function (marker) {\r\n showInfoWindow(marker.html, marker.getPosition(), true, marker.outlet);\r\n });\r\n var input = document.getElementById('txtLocation');\r\n if (input) {\r\n window.Autocomplete = new google.maps.places.Autocomplete(input, {\r\n componentRestrictions: {\r\n country: 'au'\r\n }\r\n });\r\n window.Autocomplete.bindTo(\"bounds\", window.MapView);\r\n google.maps.event.addListener(window.Autocomplete, 'place_changed', function () {\r\n var place = window.Autocomplete.getPlace();\r\n if (!place.geometry) {\r\n return;\r\n }\r\n if (place.geometry.location) {\r\n displayMyLocation(place.geometry.location, true);\r\n }\r\n else {\r\n $('#cantFindYou').show();\r\n if (place.geometry.viewport) {\r\n window.MapView.fitBounds(place.geometry.viewport);\r\n }\r\n }\r\n });\r\n }\r\n var defAddress = document.getElementById('defAddress');\r\n if (defAddress) {\r\n var defComplete = new google.maps.places.Autocomplete(defAddress, {\r\n componentRestrictions: {\r\n country: 'au'\r\n }\r\n });\r\n google.maps.event.addListener(defComplete, 'place_changed', function () {\r\n var place = defComplete.getPlace();\r\n //alert(place.formatted_address + \", \" + place.geometry.location.lat() + \", \" + place.geometry.location.lng());\r\n window.Search.DefaultLatLng = place.geometry.location;\r\n });\r\n }\r\n google.maps.event.addListener(window.MapView, 'click', function (event) {\r\n showInfo(event.latLng);\r\n });\r\n // Fired when the map stops moving, including the 'slide' effect after dragging.\r\n google.maps.event.addListener(window.MapView, 'idle', function () {\r\n checkIfAllMarkersVisible();\r\n });\r\n // Fired when the map is zoomed in or out\r\n google.maps.event.addListener(window.MapView, 'zoom_changed', function () {\r\n checkIfAllMarkersVisible();\r\n });\r\n }\r\n function initAmcActions() {\r\n resetAmcDisplay();\r\n setupSettings();\r\n if ($(\"#distanceSlider\").length > 0) {\r\n $(\"#distanceSlider\")\r\n .bootstrapSlider({\r\n value: 5,\r\n min: 1,\r\n max: 20,\r\n step: 1,\r\n tooltip: \"hide\"\r\n })\r\n .on('slide', function (e) {\r\n window.Search.Radius = e.value;\r\n $(\"#txtDistance\").text(window.Search.Radius + 'km');\r\n showCircle(window.Search.Radius, window.Search.Location);\r\n })\r\n .on('click', function (e) {\r\n window.Search.Radius = e.value;\r\n $(\"#txtDistance\").text(window.Search.Radius + 'km');\r\n showCircle(window.Search.Radius, window.Search.Location);\r\n refresh();\r\n })\r\n .on('slideStop', function (e) {\r\n refresh();\r\n });\r\n }\r\n $('.slider').on('click', function (e) {\r\n window.Search.Radius = $(\"#distanceSlider\").val();\r\n $(\"#txtDistance\").text(window.Search.Radius + 'km');\r\n showCircle(window.Search.Radius, window.Search.Location);\r\n refresh();\r\n });\r\n $('#btnRefine').on('click', function (e) {\r\n e.preventDefault();\r\n if (window.Search.IsLoggedIn) {\r\n if (!window.Search.ServicesShown) {\r\n // Show sub categories\r\n $('#categoryGroups').slideUp(\"slow\");\r\n $('#services').show(\"slow\");\r\n $(this).text('Hide Categories');\r\n window.Search.ServicesShown = true;\r\n }\r\n else {\r\n // Show main categories\r\n $('#services').hide(\"slow\");\r\n $('#categoryGroups').slideDown(\"slow\");\r\n $(this).text('Refine Categories');\r\n window.Search.ServicesShown = false;\r\n }\r\n }\r\n });\r\n $('form').bind(\"keypress\", function (e) {\r\n if (e.keyCode === 13)\r\n return false;\r\n return true;\r\n });\r\n $('#allCategories').on('click', function (e) {\r\n var checked = $(this).prop(\"checked\");\r\n toggleAllServicesOnMap(checked);\r\n $(\"input:checkbox[name='service']:visible\").prop(\"checked\", checked);\r\n aria.Utils.AriaAlert((checked ? \"All\" : \"No\") + \" categories selected\");\r\n });\r\n $(\"input:checkbox[name='service']\").on('click', function (e) {\r\n toggleSingleServiceOnMap($(this).prop(\"checked\"), $(this).val());\r\n setAllCategoriesChecked();\r\n });\r\n $('div.categoryButtons a').on('click', function (e) {\r\n e.preventDefault();\r\n var group = $(this).data('group');\r\n var src = $(this).children('img').attr('src');\r\n if (src.endsWith(\"_off.jpg\")) {\r\n aria.Utils.AriaAlert(\"Loading categories...\");\r\n src = src.replace(\"_off.jpg\", \".jpg\");\r\n // Ensure marker array is populated.\r\n loadCategoryGroup(group, true);\r\n setGroupDisplay(group, true);\r\n }\r\n else {\r\n src = src.replace(\".jpg\", \"_off.jpg\");\r\n hideCategoryGroupOnMap(group);\r\n setGroupDisplay(group, false);\r\n }\r\n $(this).children('img').attr('src', src);\r\n });\r\n $('#btnCurrentLocation').on('click', function (e) {\r\n e.preventDefault();\r\n displayAndSetMyLocation(false);\r\n });\r\n $(\"#geoDefault\").on(\"click\", function (e) {\r\n $(\"#defAddress\").val('');\r\n });\r\n $(\"#defAddress\").on(\"blur\", function (e) {\r\n $(\"#geoDefault\").prop(\"checked\", false);\r\n $(\"#manDefault\").prop(\"checked\", true);\r\n });\r\n $(\"#btnSaveSettings\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n if ($('#manDefault').is(':checked') && $(\"#defAddress\").val() === '') {\r\n aria.Utils.AriaAlert(\"You must either use the geolocation service or enter an address to use! Press enter to close dialog.\");\r\n setTimeout(function () { return alert('You must either use the geolocation service or enter an address to use!'); }, 500);\r\n return;\r\n }\r\n var address = $(\"#defAddress\").val();\r\n setStoredValue(address);\r\n $(\"#settingsModal\").modal('hide');\r\n displayAndSetMyLocation(false);\r\n });\r\n $(\"#btnCancelSettings\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n setupSettings();\r\n $(\"#settingsModal\").modal('hide');\r\n });\r\n $(document).on(\"click\", \"a.getDirections\", function (e) {\r\n e.preventDefault();\r\n getDirections($(this).data(\"mode\"), $(this).data(\"outletid\"));\r\n });\r\n $(document).on(\"click\", \"a.setMyLocation\", function (e) {\r\n e.preventDefault();\r\n setMyLocation();\r\n });\r\n $(\".close-directions\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n clearDirections();\r\n aria.Utils.AriaAlert(\"Map directions cleared\");\r\n });\r\n $('div.openData a').click(function (e) {\r\n e.preventDefault();\r\n var type = $(this).data('type');\r\n var status = $(this).data('status');\r\n //var imgs = $('div.openData a img');\r\n if (!window.Search.IsLoggedIn) {\r\n // Only one open data item at a time for Public access.\r\n $('div.openData a').data('status', 'off');\r\n $(this).data('status', status === 'off' ? 'on' : 'off');\r\n // Hide the data on the map\r\n hideOpenDataOnMap('', this);\r\n // Set the image display\r\n $('div.openData a img').attr('src', function (index, e) {\r\n return e.endsWith(\"_off.png\") ? e : e.replace(\".png\", \"_off.png\");\r\n });\r\n if (status === 'off') {\r\n $(this).children('img').attr('src', function (index, e) {\r\n return e.replace(\"_off.png\", \".png\");\r\n });\r\n showOpenDataOnMap(type, this);\r\n }\r\n }\r\n else {\r\n // Set the Status property. \r\n $(this).data('status', status === 'off' ? 'on' : 'off');\r\n var src = $(this).children('img').attr('src');\r\n if (status === 'off') {\r\n src = src.replace(\"_off.png\", \".png\");\r\n showOpenDataOnMap(type, this);\r\n }\r\n else {\r\n src = src.replace(\".png\", \"_off.png\");\r\n hideOpenDataOnMap(type, this);\r\n }\r\n $(this).children('img').attr('src', src);\r\n }\r\n });\r\n }\r\n function clearDirections() {\r\n $(\"#panelDirectionsFull\").hide();\r\n $(\"#panelDirectionsEmpty\").show();\r\n $(\".opendata-loading\").hide();\r\n if (window.DirectionsDisplay)\r\n window.DirectionsDisplay.setMap(null);\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n if (!$(\"#panelServices\").hasClass(\"in\"))\r\n $(\"a[href='#panelServices']\").click();\r\n }\r\n function resetAmcDisplay() {\r\n $(\"#panelDirectionsFull\").hide();\r\n $(\"#panelDirectionsEmpty\").show();\r\n showOpenDataSets([]);\r\n $('#services').hide();\r\n $('#btnRefine').hide();\r\n hideOpenDataOnMap('', null);\r\n window.AmcMarkers.Locations.length = 0;\r\n window.AmcMarkers.OpenData.length = 0;\r\n $('div.categoryButtons a').each(function () {\r\n var group = $(this).data('group');\r\n var src = $(this).children('img').attr('src');\r\n setGroupDisplay(group, false);\r\n if (!src.endsWith(\"_off.jpg\")) {\r\n src = src.replace(\".jpg\", \"_off.jpg\");\r\n hideCategoryGroupOnMap(group);\r\n $(this).children('img').attr('src', src);\r\n }\r\n });\r\n }\r\n function setupSettings() {\r\n var def = getDefaultAddress();\r\n if (def === \"geo\") {\r\n $(\"#manDefault\").prop(\"checked\", false);\r\n $(\"#geoDefault\").prop(\"checked\", true);\r\n $(\"#defAddress\").val(\"\");\r\n }\r\n else if (def !== \"\") {\r\n $(\"#geoDefault\").prop(\"checked\", false);\r\n $(\"#manDefault\").prop(\"checked\", true);\r\n $(\"#defAddress\").val(def);\r\n }\r\n else {\r\n $(\"#manDefault\").prop(\"checked\", false);\r\n $(\"#geoDefault\").prop(\"checked\", false);\r\n $(\"#defAddress\").val(\"\");\r\n }\r\n if (!navigator.geolocation) {\r\n $(\"#geoDefault\").prop(\"checked\", false);\r\n $(\"#geoDefault\").prop('disabled', true);\r\n }\r\n window.Search.SettingsDone = true;\r\n }\r\n function showCircle(radius, posLatLng) {\r\n if (window.Circle)\r\n window.Circle.setMap(null);\r\n window.Circle = new google.maps.Circle({\r\n center: posLatLng,\r\n clickable: false,\r\n radius: radius * 1000,\r\n strokeColor: \"#C0C0C0\",\r\n strokeOpacity: 1,\r\n strokeWeight: 1,\r\n fillColor: \"#C0C0C0\",\r\n fillOpacity: 0.35,\r\n map: window.MapView\r\n });\r\n window.MapView.fitBounds(window.Circle.getBounds());\r\n }\r\n function showInfo(latLng) {\r\n var desc = '<div><strong>Your Destination</strong></div><div>';\r\n window.Geocoder.geocode({\r\n location: latLng\r\n }, function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n for (var i = 0; i < results.length; i++) {\r\n if (results[i].types[0] === \"street_address\") {\r\n showInfoWindow(desc + results[i].formatted_address + '</div>', latLng, true, 0);\r\n }\r\n }\r\n }\r\n });\r\n showInfoWindow(desc + 'We were unable to correctly determine the address at the spot you chose.</div>', latLng, false, 0);\r\n }\r\n function showInfoWindow(description, latlng, allowedToRelocate, outletID) {\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n window.InfoWindow = new google.maps.InfoWindow();\r\n description = '<div tabindex=\"0\" role=\"region\">' + description;\r\n if (allowedToRelocate)\r\n description += '<div style=\"margin-top: 15px;\">' +\r\n '<a class=\"setMyLocation\" tabindex=\"0\">Set As My Location</a> ' +\r\n '</div><div style=\"margin-top: 5px;\">';\r\n else\r\n description += '<div style=\"margin-top: 15px;\">';\r\n description += '<a class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.DRIVING + '\" data-outletid=\"' + outletID + '\" title=\"Driving Directions\" aria-label=\"Get driving directions from your location to this location\" tabindex=\"0\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirDriving.png\" alt=\"\" /></a> ' +\r\n '<a class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.TRANSIT + '\" data-outletid=\"' + outletID + '\" title=\"Public Transport Directions\" aria-label=\"Get public transport directions from your location to this location\" tabindex=\"0\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirPublic.png\" alt=\"\" /></a> ' +\r\n '<a class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.WALKING + '\" data-outletid=\"' + outletID + '\" title=\"Walking Directions\" aria-label=\"Get walking directions from your location to this location\" tabindex=\"0\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirWalking.png\" alt=\"\" /></a> ' +\r\n '<a class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.BICYCLING + '\" data-outletid=\"' + outletID + '\" title=\"Bicycling Directions\" aria-label=\"Get cycling directions from your location to this location\" tabindex=\"0\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirCycling.png\" alt=\"\" /></a> ' +\r\n '</div>';\r\n description += '</div>';\r\n window.InfoWindow.setContent(description);\r\n window.InfoWindow.setPosition(latlng);\r\n window.InfoWindow.open(window.MapView);\r\n }\r\n function getDirections(type, outletID) {\r\n if (!window.DirectionsDisplay) {\r\n window.DirectionsDisplay = new google.maps.DirectionsRenderer({\r\n draggable: true\r\n });\r\n window.DirectionsDisplay.setMap(window.MapView);\r\n window.DirectionsDisplay.setPanel(document.getElementById(\"directionsPanel\"));\r\n window.DirectionsService = new google.maps.DirectionsService();\r\n }\r\n if (!window.Search.Location)\r\n window.Search.Location = window.MapView.getCenter();\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n var request = {\r\n origin: window.Search.Location,\r\n destination: window.InfoWindow.getPosition(),\r\n travelMode: type\r\n };\r\n window.DirectionsDisplay.setMap(window.MapView);\r\n window.DirectionsService.route(request, function (result, status) {\r\n if (status === google.maps.DirectionsStatus.OK) {\r\n $(\"a[href='#panelDirections']\").click();\r\n $(\"#panelDirectionsFull\").show();\r\n $(\"#panelDirectionsEmpty\").hide();\r\n window.DirectionsDisplay.setDirections(result);\r\n function triggerAlert(e) {\r\n e.preventDefault();\r\n aria.Utils.AriaAlert(\"A new page will open for printing. For best result please ensure you enable Background images and colours if available. Once you have printed you may close the new page. Press enter to close the dialog\");\r\n setTimeout(function () {\r\n alert('A new page will open for printing. For best result please ensure you enable Background images and colours if available. Once you have printed you may close the new page.');\r\n window.open($(e.target).attr(\"href\"));\r\n }, 500);\r\n }\r\n $(\".print-directions\").off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerAlert(e);\r\n });\r\n $(\".print-directions\").off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerAlert(e);\r\n }\r\n });\r\n $(\".print-directions\").attr(\"href\", \"/Directory/PrintDirections.aspx?lat1=\" + request.origin.lat() + \"&lng1=\" + request.origin.lng() + \"&lat2=\" + request.destination.lat() + \"&lng2=\" + request.destination.lng() + \"&mode=\" + type + \"&outlet=\" + outletID);\r\n }\r\n });\r\n }\r\n function setMyLocation() {\r\n displayMyLocation(window.InfoWindow.getPosition(), false);\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n }\r\n function showOpenDataSets(regions) {\r\n //Hide all the openData datasets and then show only nationwide\r\n $('div.openData a').hide();\r\n $('div.openData h6').hide();\r\n // Nationwide datasets\r\n $('div.openData a.region0, div.openData h6.region0').show();\r\n //var ids = councilId.toString().split(',');\r\n for (var i = 0; i < regions.length; i++) {\r\n // Region datasets\r\n var region = regions[i];\r\n $('div.openData a.region' + region.GeographyID).show();\r\n $('div.openData h6.region' + region.GeographyID).show();\r\n }\r\n }\r\n function getDefaultAddress() {\r\n if (window.Search.RegionID > 0) {\r\n window.Search.DefaultLatLng = new google.maps.LatLng(window.Search.CentreLat, window.Search.CentreLng);\r\n return \"region\";\r\n }\r\n var value = getStoredValue();\r\n if (value === \"geo\") {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n window.Search.DefaultLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\r\n });\r\n }\r\n return value;\r\n }\r\n else {\r\n var vals = value.split(\"|\");\r\n window.Search.DefaultLatLng = window.MapView.getCenter();\r\n if (vals.length === 3) {\r\n window.Search.DefaultLatLng = new google.maps.LatLng(parseFloat(vals[1]), parseFloat(vals[2]));\r\n }\r\n return vals[0];\r\n }\r\n }\r\n function displayAndSetMyLocation(refreshMarkers) {\r\n if (window.Search.DefaultLatLng) {\r\n displayMyLocation(window.Search.DefaultLatLng, refreshMarkers);\r\n }\r\n else {\r\n var addr = getDefaultAddress();\r\n if (addr === \"geo\") {\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n displayMyLocation(new google.maps.LatLng(position.coords.latitude, position.coords.longitude), refreshMarkers);\r\n }, function () {\r\n if (!window.Search.SettingsDone)\r\n setupSettings();\r\n $(\"#settingsModal\").modal('show');\r\n });\r\n }\r\n else if (addr === \"\") {\r\n if (!window.Search.SettingsDone)\r\n setupSettings();\r\n $(\"#settingsModal\").modal('show');\r\n }\r\n else {\r\n displayMyLocation(window.Search.DefaultLatLng, refreshMarkers);\r\n }\r\n }\r\n }\r\n function displayMyLocation(latLng, refreshMarkers, infoWindowContent) {\r\n window.MapView.setCenter(latLng);\r\n window.Search.Location = latLng;\r\n $(\".region-limitation-text\").hide();\r\n window.Search.RegionID = 0;\r\n if (window.Search.LocationMarker) {\r\n window.Search.LocationMarker.setMap(null);\r\n window.Search.LocationMarker = null;\r\n }\r\n var myLocationMarker = new google.maps.Marker({\r\n position: latLng,\r\n map: window.MapView,\r\n clickable: false,\r\n //icon: \"/_static/images/map_marker.png\",\r\n visible: true,\r\n });\r\n if (infoWindowContent) {\r\n myLocationMarker.addListener('click', function () {\r\n window.InfoWindow.setContent(infoWindowContent);\r\n window.InfoWindow.open(window.MapView, myLocationMarker);\r\n // Remove \"Close\" button of the info window on hover\r\n // https://stackoverflow.com/questions/55432957/remove-the-close-title-attribute-from-google-maps-custom-markers-infowindow\r\n google.maps.event.addListener(window.InfoWindow, 'domready', function () {\r\n jQuery(\".gm-ui-hover-effect\").attr('title', '');\r\n });\r\n });\r\n }\r\n window.Search.LocationMarker = myLocationMarker;\r\n if (refreshMarkers)\r\n refresh();\r\n //showCircle(window.Search.Radius, window.Search.Location);\r\n var locationLatLng = {\r\n location: latLng\r\n };\r\n window.Geocoder.geocode(locationLatLng, function (results, status) {\r\n $('#cantFindYou').hide();\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n $('#txtLocation').val(results[0].formatted_address);\r\n getRegions(latLng.lat(), latLng.lng());\r\n }\r\n else {\r\n $('#cantFindYou').show();\r\n $('#txtLocation').focus();\r\n }\r\n });\r\n }\r\n function hideCategoryGroupOnMap(group) {\r\n var markers = [];\r\n var allVisible = true;\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if (group === '' || value.Group === group) {\r\n markers.push(value.Marker);\r\n value.Marker.setVisible(false);\r\n }\r\n else {\r\n if (value.Marker.getVisible()) {\r\n var currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(value.Marker.getPosition())) {\r\n allVisible = false;\r\n }\r\n }\r\n }\r\n });\r\n if (!allVisible)\r\n alertNotAllMarkersVisible();\r\n else\r\n hideAlertMarkersVisible();\r\n window.Clusterer.removeMarkers(markers);\r\n }\r\n function setGroupDisplay(group, turnOn) {\r\n var grpSel = \"[data-group='\" + group + \"']\";\r\n if (turnOn) {\r\n $(\"div\" + grpSel).show();\r\n $(\"input\" + grpSel).prop(\"checked\", true);\r\n $(\"input\" + grpSel).data(\"status\", \"on\");\r\n $(\".categoryButtons \" + grpSel + \" span.badge\").show();\r\n if (window.Search.IsLoggedIn) {\r\n $('#btnRefine').show();\r\n aria.Utils.AriaAlert(\"You can further refine your selection by navigating to the end of this panel\");\r\n }\r\n }\r\n else {\r\n $(\"input\" + grpSel).prop(\"checked\", false);\r\n $(\"input\" + grpSel).data(\"status\", \"off\");\r\n $(\"div\" + grpSel).hide();\r\n $(\".categoryButtons \" + grpSel + \" span.badge\").hide();\r\n $(\".categoryButtons \" + grpSel + \" span.status\").html(\"0 shown.\");\r\n if (window.Search.IsLoggedIn) {\r\n var n = $(\"input[name='service']:checkbox:checked\").length;\r\n if (n === 0) {\r\n $('#btnRefine').hide();\r\n }\r\n else {\r\n $('#btnRefine').show();\r\n aria.Utils.AriaAlert(\"You can further refine your selection by navigating to the end of this panel\", null, null, \"status\");\r\n }\r\n }\r\n }\r\n setAllCategoriesChecked();\r\n }\r\n function loadCategoryGroup(group, showAll) {\r\n // Check to see if the group's categories are loaded in the array\r\n var found = false;\r\n var hideMarkers = [];\r\n var showMarkers = [];\r\n var allVisible = true;\r\n var currentBounds;\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if (value.Group === group) {\r\n if (showAll) {\r\n showMarkers.push(value.Marker);\r\n value.Marker.setVisible(true);\r\n currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(value.Marker.getPosition())) {\r\n allVisible = false;\r\n }\r\n }\r\n else {\r\n if ($(\"#services input[class~='category\" + value.CategoryGroupID + \"']:checked\").length === 1) {\r\n showMarkers.push(value.Marker);\r\n value.Marker.setVisible(true);\r\n currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(value.Marker.getPosition())) {\r\n allVisible = false;\r\n }\r\n }\r\n else {\r\n hideMarkers.push(value.Marker);\r\n value.Marker.setVisible(false);\r\n }\r\n }\r\n found = true;\r\n }\r\n });\r\n if (!allVisible && showMarkers.length > 0)\r\n alertNotAllMarkersVisible();\r\n else\r\n hideAlertMarkersVisible();\r\n window.Clusterer.removeMarkers(hideMarkers);\r\n window.Clusterer.addMarkers(showMarkers);\r\n showGroupCount(group);\r\n if (found)\r\n return;\r\n // Not loaded so go and get them\r\n var selectedValues = loadCategoriesList(group);\r\n getOutlets(group, selectedValues, showAll);\r\n }\r\n function showGroupCount(group) {\r\n var numberShown = 0;\r\n $(\"input[data-group='\" + group + \"'] ~ span.label\").text(\"0\");\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if (value.Group === group) {\r\n numberShown++;\r\n var catCountLabel = $(\"input[data-catgrp='\" + value.CategoryGroupID + \"'] ~ span.label\");\r\n catCountLabel.text(parseInt(catCountLabel.text()) + 1);\r\n $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html(numberShown.toString());\r\n $(\".categoryButtons [data-group='\" + group + \"'] span.status\").html(numberShown + \" found.\");\r\n }\r\n });\r\n $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html(numberShown.toString());\r\n $(\".categoryButtons [data-group='\" + group + \"'] span.status\").html(numberShown + \" found.\");\r\n }\r\n function loadCategoriesList(group) {\r\n var $checkedCheckboxes = $(\"input[data-group='\" + group + \"']\");\r\n var selectedValues = \"\";\r\n $checkedCheckboxes.each(function () {\r\n selectedValues += $(this).data(\"catgrp\") + \",\";\r\n });\r\n return selectedValues;\r\n }\r\n function addMarkers(group, list, showAll) {\r\n var marker, i, latlng;\r\n var bounds = new google.maps.LatLngBounds();\r\n $(\"#dvLoading\").show();\r\n var allVisible = true;\r\n for (i = 0; i < list.length; i++) {\r\n latlng = new google.maps.LatLng(list[i].Lat, list[i].Lng);\r\n marker = new google.maps.Marker({\r\n position: latlng,\r\n map: ($(\"input[data-catgrp='\" + list[i].CategoryGroupID + \"']:checked\").length === 1) ? window.MapView : null,\r\n title: list[i].Name,\r\n html: list[i].Html,\r\n animation: google.maps.Animation.DROP,\r\n outlet: list[i].OutletID,\r\n icon: 'https://mcdcdn.blob.core.windows.net/map-icons/service' + list[i].CategoryGroupID + '.png'\r\n });\r\n bounds.extend(latlng);\r\n window.AmcMarkers.Locations.push({\r\n Group: group,\r\n CategoryGroupID: list[i].CategoryGroupID,\r\n Marker: marker\r\n });\r\n if (window.Spiderfier)\r\n window.Spiderfier.addMarker(marker);\r\n if (window.Clusterer)\r\n window.Clusterer.addMarker(marker, false);\r\n var point = new google.maps.LatLng(parseFloat(list[i].Lat), parseFloat(list[i].Lng));\r\n var currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(point)) {\r\n allVisible = false;\r\n }\r\n }\r\n if (!allVisible)\r\n alertNotAllMarkersVisible();\r\n else\r\n hideAlertMarkersVisible();\r\n showGroupCount(group);\r\n $(\"#dvLoading\").fadeOut(300);\r\n }\r\n function refresh() {\r\n //window.Clusterer.clearMap();\r\n window.Clusterer.clearMarkers();\r\n // First we get the groups currently displayed\r\n var groups = [];\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if ($.inArray(value.Group, groups) === -1) {\r\n if (value.Marker.getVisible()) {\r\n hideCategoryGroupOnMap(value.Group);\r\n groups.push(value.Group);\r\n }\r\n }\r\n });\r\n // Remove outlets from the display and the array and reget them\r\n window.AmcMarkers.Locations.length = 0;\r\n $.each(groups, function (index, value) {\r\n loadCategoryGroup(value, false);\r\n });\r\n // Remove openData from the display and the array and reget them\r\n hideOpenDataOnMap('', null);\r\n window.AmcMarkers.OpenData.length = 0;\r\n $('div.openData a').each(function () {\r\n if ($(this).data(\"status\") === \"on\")\r\n showOpenDataOnMap($(this).data('type'), this);\r\n });\r\n if (window.Spiderfier)\r\n window.Spiderfier.unspiderfy();\r\n clearDirections();\r\n getRegions(window.Search.Location.lat(), window.Search.Location.lng());\r\n }\r\n function refreshMarkers() {\r\n //window.Clusterer.clearMap();\r\n window.Clusterer.clearMarkers();\r\n // First we get the groups currently displayed\r\n var groups = [];\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if ($.inArray(value.Group, groups) === -1) {\r\n if (value.Marker.getVisible()) {\r\n hideCategoryGroupOnMap(value.Group);\r\n groups.push(value.Group);\r\n }\r\n }\r\n });\r\n // Remove outlets from the display and the array and reget them\r\n window.AmcMarkers.Locations.length = 0;\r\n $.each(groups, function (index, value) {\r\n loadCategoryGroup(value, false);\r\n });\r\n // Remove openData from the display and the array and reget them\r\n hideOpenDataOnMap('', null);\r\n window.AmcMarkers.OpenData.length = 0;\r\n $('div.openData a').each(function () {\r\n if ($(this).data(\"status\") === \"on\")\r\n showOpenDataOnMap($(this).data('type'), this);\r\n });\r\n if (window.Spiderfier)\r\n window.Spiderfier.unspiderfy();\r\n clearDirections();\r\n getRegions(window.Search.Location.lat(), window.Search.Location.lng());\r\n }\r\n Page.refreshMarkers = refreshMarkers;\r\n function toggleSingleServiceOnMap(turnOn, categoryGroupId) {\r\n var hideMarkers = [];\r\n var showMarkers = [];\r\n var allVisible = true;\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if (value.CategoryGroupID.toString() === categoryGroupId) {\r\n if (turnOn) {\r\n value.Marker.setVisible(true);\r\n showMarkers.push(value.Marker);\r\n var currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(value.Marker.getPosition())) {\r\n allVisible = false;\r\n }\r\n }\r\n else {\r\n value.Marker.setVisible(false);\r\n hideMarkers.push(value.Marker);\r\n }\r\n }\r\n });\r\n window.Clusterer.removeMarkers(hideMarkers);\r\n window.Clusterer.addMarkers(showMarkers);\r\n if (!allVisible && showMarkers.length > 0)\r\n alertNotAllMarkersVisible();\r\n else\r\n hideAlertMarkersVisible();\r\n var valLabel = $(\"input[data-catgrp='\" + categoryGroupId + \"'] ~ span.label\");\r\n var val = parseInt(valLabel.text());\r\n var totalLabel = $(\".categoryButtons [data-group='\" + $(\"input[data-catgrp='\" + categoryGroupId + \"']\").data(\"group\") + \"'] span.badge\");\r\n var total = parseInt(totalLabel.text());\r\n if (turnOn) {\r\n totalLabel.text(total + val);\r\n }\r\n else {\r\n totalLabel.text(total - val);\r\n }\r\n }\r\n function toggleAllServicesOnMap(turnOn) {\r\n $(\"#services input:checkbox:visible\").each(function (i, obj) {\r\n $(\".categoryButtons [data-group='\" + $(obj).data(\"group\") + \"'] span.badge\").text(\"0\");\r\n });\r\n var hideMarkers = [];\r\n var showMarkers = [];\r\n var allVisible = true;\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if (turnOn) {\r\n // if markers are already visible do not add again\r\n if (!value.Marker.setVisible) {\r\n value.Marker.setVisible(true);\r\n showMarkers.push(value.Marker);\r\n }\r\n var totalObj = $(\".categoryButtons [data-group='\" + value.Group + \"'] span.badge\");\r\n totalObj.text(parseInt(totalObj.text()) + 1);\r\n var currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(value.Marker.getPosition())) {\r\n allVisible = false;\r\n }\r\n }\r\n else {\r\n value.Marker.setVisible(false);\r\n hideMarkers.push(value.Marker);\r\n }\r\n });\r\n window.Clusterer.removeMarkers(hideMarkers);\r\n window.Clusterer.addMarkers(showMarkers);\r\n if (!allVisible && showMarkers.length > 0)\r\n alertNotAllMarkersVisible();\r\n else\r\n hideAlertMarkersVisible();\r\n }\r\n function checkIfAllMarkersVisible() {\r\n var allVisible = true;\r\n $.each(window.AmcMarkers.Locations, function (index, value) {\r\n if (value.Marker.getVisible()) {\r\n var currentBounds = window.MapView.getBounds();\r\n if (!currentBounds.contains(value.Marker.getPosition())) {\r\n allVisible = false;\r\n }\r\n }\r\n });\r\n if (!allVisible)\r\n alertNotAllMarkersVisible();\r\n else\r\n hideAlertMarkersVisible();\r\n }\r\n function alertNotAllMarkersVisible() {\r\n // Show alert that there are markers outside the visible area on the map\r\n //$(\"#divAlertNotVisible\").show();\r\n }\r\n function hideAlertMarkersVisible() {\r\n // Hide alert that there are markers outside the visible area on the map\r\n //$(\"#divAlertNotVisible\").hide();\r\n }\r\n function setAllCategoriesChecked() {\r\n var vis = 0;\r\n $(\"input[data-status]\").each(function () {\r\n if ($(this).data(\"status\") === \"on\")\r\n vis++;\r\n });\r\n var checked = $(\"input[name='service']:checked\").length;\r\n var set = (vis === checked);\r\n $(\"#allCategories\").prop(\"checked\", set);\r\n }\r\n function hideOpenDataOnMap(type, element) {\r\n if (element) {\r\n $(element).attr(\"aria-pressed\", \"false\");\r\n }\r\n else {\r\n $(\"div.openData a\").attr(\"aria-pressed\", \"false\");\r\n }\r\n $.each(window.AmcMarkers.OpenData, function (index, value) {\r\n if (type === '' || value.Type === type)\r\n value.Marker.setMap(null);\r\n });\r\n }\r\n function showOpenDataOnMap(type, element) {\r\n $(element).attr(\"aria-pressed\", \"true\");\r\n var found = false;\r\n $.each(window.AmcMarkers.OpenData, function (index, value) {\r\n if (value.Type === type) {\r\n value.Marker.setMap(window.MapView);\r\n found = true;\r\n }\r\n });\r\n if (!found)\r\n getOpenData(type);\r\n }\r\n function getRegions(lat, lng) {\r\n if (window.Search.RegionID === 0) {\r\n $.getJSON(\"/api/amc/getregionsbypoint/\" + lat + \"/\" + lng + \"/\" + window.Search.Radius, function (data) {\r\n showOpenDataSets(data);\r\n });\r\n }\r\n else {\r\n $.getJSON(\"/api/amc/getregionsbyregion/\" + window.Search.RegionID, function (data) {\r\n showOpenDataSets(data);\r\n });\r\n }\r\n }\r\n function getOutlets(group, selectedValues, showAll) {\r\n if (!window.Search.Location)\r\n window.Search.Location = window.MapView.getCenter();\r\n if (parseInt(window.Search.Radius) === 0)\r\n window.Search.Radius = 1;\r\n $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html('<img src=\"/_static/images/processing.gif\" />');\r\n $.getJSON(\"/api/amc/getoutlets/\" + window.Search.Location.lat() + \"/\" + window.Search.Location.lng() + \"/\" + window.Search.Radius + \"/\" + window.Search.RegionID + \"/\" + window.Search.RegionType + \"/\" + selectedValues, function (data) {\r\n addMarkers(group, data, showAll);\r\n }).fail(function (jqXHR, textStatus, errorThrown) {\r\n $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html('');\r\n });\r\n }\r\n function getOpenData(type) {\r\n $(\".opendata-loading\").show();\r\n $.getJSON(\"/api/amc/getopendata/\" + window.Search.Location.lat() +\r\n \"/\" + window.Search.Location.lng() +\r\n \"/\" + window.Search.Radius +\r\n \"/\" + type +\r\n \"/\" + window.Search.RegionType +\r\n \"/\" + window.Search.RegionID, function (data) {\r\n addOpenDataMarkersToArray(type, data);\r\n })\r\n .always(function () {\r\n $(\".opendata-loading\").hide();\r\n });\r\n }\r\n function addOpenDataMarkersToArray(type, list) {\r\n var marker, i, latlng;\r\n var bounds = new google.maps.LatLngBounds();\r\n $(\"#dvLoading\").show();\r\n for (i = 0; i < list.length; i++) {\r\n latlng = new google.maps.LatLng(list[i].Lat, list[i].Lng);\r\n var iconUrl = list[i].MarkerIcon;\r\n if (!iconUrl || iconUrl === '')\r\n iconUrl = 'https://mcdcdn.blob.core.windows.net/map-icons/' + type + '.png';\r\n var html = list[i].Html;\r\n if (list[i].ItemURL && list[i].ItemURL !== '')\r\n html += \"<div><a href='\" + list[i].ItemURL + \"' target='_blank' title='Find Out More About This Location'>More Info</a></div>\";\r\n marker = new google.maps.Marker({\r\n position: latlng,\r\n map: window.MapView,\r\n title: list[i].Name,\r\n html: html,\r\n animation: google.maps.Animation.DROP,\r\n icon: iconUrl\r\n });\r\n bounds.extend(latlng);\r\n google.maps.event.addListener(marker, \"click\", function (event) {\r\n showInfoWindow(this.html, this.getPosition(), true, 0);\r\n });\r\n window.AmcMarkers.OpenData.push({\r\n Type: type,\r\n Marker: marker\r\n });\r\n }\r\n $(\"#dvLoading\").fadeOut(500);\r\n }\r\n function getStoredValue() {\r\n var def = \"geo\";\r\n var key = 'AMCHomeAddress';\r\n if (typeof (Storage) !== \"undefined\") {\r\n def = localStorage.getItem(key);\r\n }\r\n else {\r\n def = $.cookie(key);\r\n }\r\n if (!def) {\r\n def = \"geo\";\r\n }\r\n if (def === \"geo\") {\r\n return navigator.geolocation ? def : \"\";\r\n }\r\n return def;\r\n }\r\n function setStoredValue(setting) {\r\n var key = 'AMCHomeAddress';\r\n var value = setting;\r\n if (value !== \"geo\" && value !== \"\" && window.Search.DefaultLatLng)\r\n value += \"|\" + window.Search.DefaultLatLng.lat() + \"|\" + window.Search.DefaultLatLng.lng();\r\n if (typeof (Storage) !== \"undefined\")\r\n localStorage.setItem(key, value);\r\n else\r\n $.cookie(key, value);\r\n }\r\n /**************************************/\r\n /* My Community Info Hub */\r\n /**************************************/\r\n function debounce(func, wait) {\r\n var timeout;\r\n return function () {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function () { return func.apply(_this, args); }, wait);\r\n };\r\n }\r\n function SetupLocateMeBtn($btnLocator, $btnClearInput, $addressInput, $btnGo) {\r\n if (isMobile.iOS()) {\r\n $btnLocator.css(\"content\", \"url(/_static/static-page-assets/images/icons/search-ios.svg)\");\r\n }\r\n else {\r\n $btnLocator.css(\"content\", \"url(/_static/static-page-assets/images/icons/search.svg)\");\r\n }\r\n $btnLocator.off('click touchend').on('click touchend', function (e) {\r\n e.preventDefault();\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n var latitude = position.coords.latitude;\r\n var longitude = position.coords.longitude;\r\n // Use Google Maps API to reverse geocode the coordinates\r\n var geocoder = new google.maps.Geocoder();\r\n var latLng = { lat: latitude, lng: longitude };\r\n geocoder.geocode({ 'location': latLng }, function (results, status) {\r\n if (status === 'OK' && results[0]) {\r\n var address = results[0].formatted_address;\r\n $addressInput.val(address);\r\n $btnGo.siblings('input[name=\"displayName\"]').val(address);\r\n $btnGo.siblings('input[name=\"lat\"]').val(latitude);\r\n $btnGo.siblings('input[name=\"lng\"]').val(longitude);\r\n $btnGo.siblings('input[name=\"locationType\"]').val('point');\r\n $btnLocator.hide();\r\n $btnClearInput.show();\r\n }\r\n else {\r\n console.error('Geocoder failed due to: ' + status);\r\n }\r\n });\r\n }, function (error) {\r\n console.error('Error occurred: ' + error.message);\r\n });\r\n });\r\n }\r\n function InitSelectPicker() {\r\n $('#categorySelect').selectpicker();\r\n $('#categorySelect').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {\r\n // Get the value of the option that was clicked\r\n var clickedValue = $(this).find('option').eq(clickedIndex).val();\r\n // If the empty value option was selected, deselect all others\r\n if (clickedValue === '' && isSelected) {\r\n $(this).find('option').each(function () {\r\n if ($(this).val() !== '') {\r\n $(this).prop('selected', false);\r\n }\r\n });\r\n }\r\n // If any other option was selected, deselect the empty value option\r\n else if (clickedValue !== '' && isSelected) {\r\n $(this).find('option[value=\"\"]').prop('selected', false);\r\n }\r\n // Refresh the selectpicker to reflect changes\r\n $(this).selectpicker('refresh');\r\n });\r\n }\r\n function InitCommunityHub(displayAddress, geographyId, lat, lng, regionId, locationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n function handleAnchorChange() {\r\n var queryString = window.location.search;\r\n var urlParams = new URLSearchParams(queryString);\r\n var currentHash = \"#\" + urlParams.get('ucl');\r\n if ($(currentHash)[0] != null) {\r\n var wrapper = $(currentHash).parent();\r\n var destCoord = wrapper.find(\"input[name='DestinationCoordinate']\").val().split(',');\r\n var destObj = {\r\n lat: parseFloat(destCoord[0]),\r\n long: parseFloat(destCoord[1])\r\n };\r\n $(\".list-item\").removeClass('selected');\r\n if ($(currentHash).hasClass('selected')) {\r\n DisplayDirectoryServiceMarkers(results.services);\r\n $(currentHash).removeClass('selected');\r\n $(\".info-council-wrapper>.ucl-info-card\").toggleClass(\"display-none col-md-5\");\r\n $(\".info-council-wrapper>#council-ucl-map\").toggleClass(\"col-md-12 col-md-7\");\r\n if ($('#info-card-coord')) {\r\n if (pageUCLs.length > 0) {\r\n GetDefaultUCLsMarkers(pageUCLs);\r\n }\r\n }\r\n if (window.matchMedia(\"(max-width: 768px)\").matches) {\r\n $('.mobile-ucl-info').hide();\r\n }\r\n }\r\n else {\r\n $(currentHash).addClass('selected');\r\n $('.ucl-info-card-title').html(wrapper.find(\"input[name='DisplayTitle']\").val());\r\n $('#info-card-url').val(wrapper.find(\"input[name='URL']\").val());\r\n $('#info-card-coord').val(wrapper.find(\"input[name='DestinationCoordinate']\").val());\r\n $('#info-card-displayName').val(wrapper.find(\"input[name='DisplayTitle']\").val());\r\n if (window.matchMedia(\"(max-width: 768px)\").matches) {\r\n $('.mobile-ucl-info').show();\r\n }\r\n if ($('#info-card-coord')[0]) {\r\n $(\".ucl-info-card-description\").text(\"\");\r\n window.MapView.panTo(new google.maps.LatLng(destObj.lat, destObj.long));\r\n window.MapView.setZoom(13);\r\n getUCLDescriptions(wrapper.find(\"input[name='GeographyMapId']\").val(), wrapper.find(\"input[name='CouncilRegionID']\").val());\r\n }\r\n if ($(\".info-council-wrapper>.ucl-info-card\").hasClass(\"display-none\") || $(\".info-council-wrapper>#council-ucl-map\").hasClass(\"col-md-12\")) {\r\n $(\".info-council-wrapper>.ucl-info-card\").removeClass(\"display-none\");\r\n $(\".info-council-wrapper>.ucl-info-card\").addClass(\"col-md-5\");\r\n $(\".info-council-wrapper>#council-ucl-map\").removeClass(\"col-md-12\");\r\n $(\".info-council-wrapper>#council-ucl-map\").addClass(\"col-md-7\");\r\n }\r\n /* $(\".info-council-wrapper>.ucl-info-card\").toggleClass(\"\");*/\r\n //$(\".info-council-wrapper>#council-ucl-map\").toggleClass(\"col-md-12 col-md-7\");\r\n }\r\n }\r\n }\r\n function RedirectToAnotherInfoHub($btnGoto) {\r\n $locationSelectorModal.modal('hide');\r\n $('#page-backdrop').fadeIn(150);\r\n $btnGoto.html('<div class=\"loader-small\"></div>');\r\n $btnGoto.prop(\"disabled\", true);\r\n var lat = $btnGoto.siblings('input[name=\"lat\"]').val();\r\n var lng = $btnGoto.siblings('input[name=\"lng\"]').val();\r\n // Need $btnGoto so we can get data about the location from its siblings\r\n // assuming we are dealing with the same structure\r\n var data = JSON.stringify({\r\n \"Url\": $btnGoto.siblings('input[name=\"url\"]').val(),\r\n \"DisplayName\": $btnGoto.siblings('input[name=\"displayName\"]').val(),\r\n \"LocationType\": $btnGoto.siblings('input[name=\"locationType\"]').val(),\r\n \"Lat\": lat,\r\n \"Lng\": lng,\r\n \"CouncilID\": $btnGoto.siblings('input[name=\"councilId\"]').val(),\r\n \"LocationID\": $btnGoto.siblings('input[name=\"locationId\"]').val()\r\n });\r\n $.ajax({\r\n url: \"/StoreSearchedModelInSession\",\r\n type: \"POST\",\r\n contentType: \"application/json\",\r\n dataType: \"json\",\r\n data: data,\r\n error: function (result) {\r\n // Display a general error message to the user\r\n alert(\"Sorry, there was a problem processing your request. Please try again later.\");\r\n console.error(\"AJAX error in request: \" + result.responseText);\r\n },\r\n success: function (r) {\r\n },\r\n complete: function () {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/Redirect/ToCommunityInfoHub\",\r\n contentType: \"application/json\",\r\n dataType: \"json\",\r\n data: JSON.stringify({ lat: lat, lng: lng }),\r\n success: function (res) {\r\n if (res && res.URL && res.URL.length > 0) {\r\n window.location.href = res.URL;\r\n }\r\n },\r\n error: function () {\r\n console.error(\"Error getting redirect url.\");\r\n },\r\n complete: function () { }\r\n });\r\n }\r\n });\r\n }\r\n function hideAddressSuggestions_mobile() {\r\n $addressSuggestions_mobile.addClass('hidden');\r\n $navBackdrop_mobile.hide();\r\n $addressInput_mobile.val($btnGoToAddress_mobile.siblings('input[name=\"displayName\"]').val());\r\n }\r\n /**\r\n * Fetch function used for mobile view.\r\n *\r\n * @param $addressInput\r\n * @param $btnGoToAddress\r\n * @param $btnLocateMe\r\n * @param $btnClearAddress\r\n * @param $addressSuggestions\r\n * @param $backdrop\r\n */\r\n function FetchLocation_mobile($addressInput, $btnGoToAddress, $btnLocateMe, $btnClearAddress, $addressSuggestions, $backdrop) {\r\n $addressInput.on('input', debounce(function () {\r\n var value = $addressInput.val();\r\n if (value.length == 0) {\r\n $addressInput.val($btnGoToAddress.siblings('input[name=\"displayName\"]').val());\r\n return;\r\n }\r\n if (value.length > 0) {\r\n $btnLocateMe.hide();\r\n $btnClearAddress.show();\r\n }\r\n else {\r\n $btnLocateMe.show();\r\n $btnClearAddress.hide();\r\n $addressSuggestions.empty();\r\n if (!$addressSuggestions.hasClass('hidden')) {\r\n $addressSuggestions.addClass('hidden');\r\n $backdrop.hide(); // Disable backdrop\r\n }\r\n return;\r\n }\r\n if (value.length >= 3) {\r\n // Send the AJAX request\r\n $.ajax({\r\n url: window.AppSettings.ApiUrl + \"/api/v1/system/councils/searchall/\" + value,\r\n type: 'GET',\r\n beforeSend: function () {\r\n $addressSuggestions.empty();\r\n if ($addressSuggestions.hasClass('hidden')) {\r\n $addressSuggestions.removeClass('hidden');\r\n $backdrop.show(); // Enable backdrop\r\n }\r\n },\r\n success: function (response) {\r\n if (response && response.length > 0) {\r\n var maxItems = Math.min(10, response.length); // Maximum of 10 suggestions will be displayed\r\n var _loop_1 = function (i) {\r\n var item = response[i];\r\n li = document.createElement(\"li\");\r\n div = document.createElement(\"div\");\r\n inputValue = $addressInput.val();\r\n escapedInput = inputValue.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n pattern = new RegExp(escapedInput, 'ig');\r\n name = item.DisplayName.replace(pattern, function (match) {\r\n return '<strong>' + match + '</strong>';\r\n });\r\n icon = document.createElement(\"div\");\r\n li.classList.add(\"suggestions-item\");\r\n li.appendChild(div);\r\n div.classList.add(\"suggestion-title\");\r\n div.innerHTML = name;\r\n li.insertBefore(icon, div);\r\n icon.classList.add(\"suggestion-icon\");\r\n icon.style.backgroundImage = item.LocationType.toUpperCase() == \"LGA\" ? \"url('/_static/static-page-assets/images/icons/lga_icons.png')\" : \"url('/_static/static-page-assets/images/icons/pin_icons.png')\";\r\n li.addEventListener('click', function () {\r\n $addressSuggestions.empty();\r\n $addressSuggestions.addClass('hidden');\r\n $backdrop.hide(); // Disable backdrop\r\n $addressInput.val(item.DisplayName);\r\n $btnGoToAddress.siblings('input[name=\"url\"]').val(item.Url);\r\n $btnGoToAddress.siblings('input[name=\"displayName\"]').val(item.DisplayName);\r\n $btnGoToAddress.siblings('input[name=\"lat\"]').val(item.Lat);\r\n $btnGoToAddress.siblings('input[name=\"lng\"]').val(item.Lng);\r\n $btnGoToAddress.siblings('input[name=\"locationType\"]').val(item.LocationType);\r\n $btnGoToAddress.siblings('input[name=\"councilId\"]').val(item.CouncilID);\r\n $btnGoToAddress.siblings('input[name=\"locationId\"]').val(item.LocationID);\r\n });\r\n $addressSuggestions.append(li);\r\n };\r\n var li, div, inputValue, escapedInput, pattern, name, icon;\r\n for (var i = 0; i < maxItems; i++) {\r\n _loop_1(i);\r\n }\r\n ;\r\n }\r\n },\r\n error: function (error) {\r\n console.error(error);\r\n }\r\n });\r\n }\r\n }, 250));\r\n }\r\n // Utility functions\r\n function ResetLocationToDefault($btnGoto) {\r\n $btnGoto.siblings('input[name=\"displayName\"]').val(defaultLocation.DisplayName);\r\n $btnGoto.siblings('input[name=\"lat\"]').val(defaultLocation.Lat);\r\n $btnGoto.siblings('input[name=\"lng\"]').val(defaultLocation.Lng);\r\n $btnGoto.siblings('input[name=\"locationType\"]').val(defaultLocation.LocationType);\r\n $btnGoto.siblings('input[name=\"url\"]').val(defaultLocation.Url);\r\n $btnGoto.siblings('input[name=\"locationId\"]').val(defaultLocation.LocationID);\r\n $btnGoto.siblings('input[name=\"councilId\"]').val(defaultLocation.CouncilID);\r\n }\r\n var $mobileNav, $burgerMenu, $btnToggleBurgerMenu, $btnGoToAddress_mobile, $addressSuggestions, $btnLocateMe, $btnClearAddress, $btnGoToAddress, $addressInput, $locationSelectorModal, defaultLocation, addressLocationSelected, $addressInput_mobile, $addressSuggestions_mobile, $btnLocateMe_mobile, $btnClearAddress_mobile, $navBackdrop_mobile, $getHelp_1, $getInvolved_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n window.addEventListener(\"load\", handleAnchorChange);\r\n window.addEventListener(\"hashchange\", handleAnchorChange);\r\n $mobileNav = $('#mobile-nav');\r\n $burgerMenu = $mobileNav.find('.burger-menu');\r\n $btnToggleBurgerMenu = $mobileNav.find('#btn-burger-menu');\r\n $btnGoToAddress_mobile = $mobileNav.find('#goto-mobile');\r\n $addressSuggestions = $('#address-suggestion-list');\r\n $btnLocateMe = $('#locator-button');\r\n $btnClearAddress = $('#clear-address-button');\r\n $btnGoToAddress = $('#go-button');\r\n $addressInput = $('#address-input');\r\n $locationSelectorModal = $('#councilModal');\r\n defaultLocation = {\r\n Url: $btnGoToAddress.siblings('input[name=\"url\"]').val(),\r\n DisplayName: $btnGoToAddress.siblings('input[name=\"displayName\"]').val(),\r\n Lat: $btnGoToAddress.siblings('input[name=\"lat\"]').val(),\r\n Lng: $btnGoToAddress.siblings('input[name=\"lng\"]').val(),\r\n LocationType: $btnGoToAddress.siblings('input[name=\"locationType\"]').val(),\r\n CouncilID: $btnGoToAddress.siblings('input[name=\"councilId\"]').val(),\r\n LocationID: $btnGoToAddress.siblings('input[name=\"locationId\"]').val(),\r\n };\r\n if (defaultLocation.CouncilID > 0) {\r\n window.Spiderfier = new OverlappingMarkerSpiderfier(window.MapView, {\r\n markersWontMove: true,\r\n markersWontHide: true,\r\n keepSpiderfied: true\r\n });\r\n window.Spiderfier.removeListener('click');\r\n }\r\n $('.visit-btn').on('click', function () {\r\n if ($(\"#nearby-communities li[id^='community-'] .nearby-community-item\").hasClass(\"selected\")) {\r\n var destCoord = $(\"#info-card-coord\").val().split(',');\r\n var destObj = {\r\n lat: parseFloat(destCoord[0]),\r\n long: parseFloat(destCoord[1])\r\n };\r\n var title = $(\"#info-card-displayName\").val();\r\n var url = $(\"#info-card-url\").val();\r\n var data = JSON.stringify({\r\n \"DisplayName\": title,\r\n \"Lat\": destObj.lat,\r\n \"Lng\": destObj.long,\r\n \"LocationType\": 'point',\r\n \"Url\": url,\r\n \"CouncilID\": 0,\r\n \"LocationID\": 0\r\n });\r\n $.ajax({\r\n url: \"/StoreSearchedModelInSession\",\r\n type: \"POST\",\r\n contentType: \"application/json\",\r\n dataType: \"json\",\r\n data: data,\r\n error: function (result) {\r\n // Display a general error message to the user\r\n alert(\"Sorry, there was a problem processing your request. Please try again later.\");\r\n console.error(\"AJAX error in request: \" + result.responseText);\r\n },\r\n success: function (result) {\r\n window.location.href = result;\r\n },\r\n });\r\n }\r\n });\r\n $(\"#nearby-communities li[id^='community-'] .nearby-community-item\").off('click').on('click', function (e) {\r\n e.preventDefault();\r\n var wrapper = $(this).parent();\r\n // Extract coordinates from hidden inputs\r\n var originCoord = wrapper.find(\"input[name='OriginCoordinate']\").val().split(',');\r\n var destCoord = wrapper.find(\"input[name='DestinationCoordinate']\").val().split(',');\r\n // Construct the objects\r\n var originObj = {\r\n lat: parseFloat(originCoord[0]),\r\n long: parseFloat(originCoord[1])\r\n };\r\n var destObj = {\r\n lat: parseFloat(destCoord[0]),\r\n long: parseFloat(destCoord[1])\r\n };\r\n if (!$('#info-card-coord')[0]) {\r\n getPointToPointDirection(originObj, destObj, google.maps.TravelMode.DRIVING, displayAddress);\r\n }\r\n $(this).siblings().removeClass('selected');\r\n if ($(this).hasClass('selected')) {\r\n if (!$('#info-card-coord')[0]) {\r\n getPointToPointDirection(originObj, originObj, google.maps.TravelMode.DRIVING, displayAddress);\r\n }\r\n else {\r\n history.replaceState(null, null, window.location.pathname);\r\n }\r\n DisplayDirectoryServiceMarkers(results.services);\r\n $(this).removeClass('selected');\r\n wrapper.find('#goto').css('display', 'none');\r\n wrapper.find('.list-item.ucl-list-item').css('width', '100%');\r\n $(\".info-council-wrapper>.ucl-info-card\").toggleClass(\"display-none col-md-5\");\r\n $(\".info-council-wrapper>#council-ucl-map\").toggleClass(\"col-md-12 col-md-7\");\r\n if ($('#info-card-coord')) {\r\n if (pageUCLs.length > 0) {\r\n GetDefaultUCLsMarkers(pageUCLs);\r\n }\r\n }\r\n if (window.matchMedia(\"(max-width: 768px)\").matches) {\r\n $('.mobile-ucl-info').hide();\r\n }\r\n }\r\n else {\r\n if ($('#info-card-coord')[0]) {\r\n var id = $(this).attr(\"id\");\r\n var queryParams = new URLSearchParams(window.location.search);\r\n queryParams.set(\"ucl\", id);\r\n history.replaceState(null, null, \"?\" + queryParams.toString());\r\n window.scrollTo(0, 0);\r\n }\r\n $(this).addClass('selected');\r\n wrapper.find('#goto').css('display', 'flex');\r\n wrapper.find('#goto').css('width', '25%');\r\n wrapper.find('.list-item.ucl-list-item').css('width', '75%');\r\n $('.ucl-info-card-title').html(wrapper.find(\"input[name='DisplayTitle']\").val());\r\n $('#info-card-url').val(wrapper.find(\"input[name='URL']\").val());\r\n $('#info-card-coord').val(wrapper.find(\"input[name='DestinationCoordinate']\").val());\r\n $('#info-card-displayName').val(wrapper.find(\"input[name='DisplayTitle']\").val());\r\n if (window.matchMedia(\"(max-width: 768px)\").matches) {\r\n $('.mobile-ucl-info').show();\r\n }\r\n if ($('#info-card-coord').length > 0) {\r\n $(\".ucl-info-card-description\").text(\"\");\r\n window.MapView.panTo(new google.maps.LatLng(destObj.lat, destObj.long));\r\n window.MapView.setZoom(13);\r\n getUCLDescriptions(wrapper.find(\"input[name='GeographyMapId']\").val(), wrapper.find(\"input[name='CouncilRegionID']\").val());\r\n }\r\n $(\".info-council-wrapper>.ucl-info-card\").toggleClass(\"display-none col-md-5\");\r\n $(\".info-council-wrapper>#council-ucl-map\").toggleClass(\"col-md-12 col-md-7\");\r\n }\r\n wrapper.find('#goto').off('click').on('click', function (e) {\r\n $('#page-backdrop').fadeIn(150);\r\n var url = wrapper.find(\"input[name='URL']\").val();\r\n var data = JSON.stringify({\r\n \"DisplayName\": null,\r\n \"Lat\": destObj.lat,\r\n \"Lng\": destObj.long,\r\n \"LocationType\": 'point',\r\n \"Url\": url,\r\n \"CouncilID\": 0,\r\n \"LocationID\": 0\r\n });\r\n $.ajax({\r\n url: \"/StoreSearchedModelInSession\",\r\n type: \"POST\",\r\n contentType: \"application/json\",\r\n dataType: \"json\",\r\n data: data,\r\n error: function (result) {\r\n // Display a general error message to the user\r\n alert(\"Sorry, there was a problem processing your request. Please try again later.\");\r\n console.error(\"AJAX error in request: \" + result.responseText);\r\n },\r\n success: function (result) {\r\n window.location.href = result;\r\n },\r\n });\r\n });\r\n wrapper.siblings().each(function (i, e) {\r\n if ($(e).find('.list-item.nearby-community-item').hasClass('selected')) {\r\n $(\".info-council-wrapper>.ucl-info-card\").toggleClass(\"display-none col-md-5\");\r\n $(\".info-council-wrapper>#council-ucl-map\").toggleClass(\"col-md-12 col-md-7\");\r\n }\r\n $(e).find('.list-item.nearby-community-item').removeClass('selected');\r\n $(e).find('.list-item.nearby-community-item').css('width', '100%');\r\n $(e).find('#goto').css('display', 'none');\r\n });\r\n });\r\n $btnGoToAddress.on('click', function () {\r\n RedirectToAnotherInfoHub($(this));\r\n });\r\n $btnGoToAddress_mobile.on('click', function () {\r\n RedirectToAnotherInfoHub($(this));\r\n });\r\n $locationSelectorModal.on('click', function (event) {\r\n // If the clicked element is the modal's direct child (the backdrop)\r\n if ($(event.target).hasClass('modal')) {\r\n $(this).modal('hide'); // Close the modal\r\n }\r\n });\r\n $locationSelectorModal.on('show.bs.modal', function () {\r\n $addressSuggestions.empty();\r\n $addressSuggestions.hide();\r\n $btnLocateMe.hide();\r\n $btnClearAddress.show();\r\n $addressInput.val(defaultLocation.DisplayName);\r\n $btnGoToAddress.siblings('input[name=\"url\"]').val(defaultLocation.Url);\r\n $btnGoToAddress.siblings('input[name=\"displayName\"]').val(defaultLocation.DisplayName);\r\n $btnGoToAddress.siblings('input[name=\"lat\"]').val(defaultLocation.Lat);\r\n $btnGoToAddress.siblings('input[name=\"lng\"]').val(defaultLocation.Lng);\r\n $btnGoToAddress.siblings('input[name=\"locationType\"]').val(defaultLocation.LocationType);\r\n $btnGoToAddress.siblings('input[name=\"councilId\"]').val(defaultLocation.CouncilID);\r\n $btnGoToAddress.siblings('input[name=\"locationId\"]').val(defaultLocation.LocationID);\r\n });\r\n SetupLocateMeBtn($btnLocateMe, $btnClearAddress, $addressInput, $btnGoToAddress); // desktop\r\n $btnClearAddress.on('click', function (e) {\r\n e.preventDefault();\r\n $addressInput.val('');\r\n $btnLocateMe.show();\r\n $(this).hide();\r\n $addressSuggestions.empty();\r\n $addressSuggestions.hide();\r\n ResetLocationToDefault($btnGoToAddress);\r\n $addressInput.focus();\r\n });\r\n addressLocationSelected = false;\r\n $addressInput.on('blur', function (e) {\r\n if ($addressInput.is(e.target) || $addressSuggestions[0].contains(e.target)) {\r\n return; // Do nothing if the click is on the input or suggestions list\r\n }\r\n if (addressLocationSelected) {\r\n $addressInput.val($btnGoToAddress.siblings('input[name=\"displayName\"]').val());\r\n addressLocationSelected = false; // Reset the flag\r\n }\r\n else {\r\n // Optional: handle other behavior if no location was selected\r\n $addressSuggestions.empty();\r\n $addressSuggestions.hide();\r\n }\r\n });\r\n $addressInput.on('input', debounce(function () {\r\n var value = $addressInput.val();\r\n if (value.length > 0) {\r\n $btnLocateMe.hide();\r\n $btnClearAddress.show();\r\n }\r\n else {\r\n $btnLocateMe.show();\r\n $btnClearAddress.hide();\r\n $addressSuggestions.empty();\r\n $addressSuggestions.hide();\r\n return;\r\n }\r\n if (value.length >= 3) {\r\n // Send the AJAX request\r\n $.ajax({\r\n url: window.AppSettings.ApiUrl + \"/api/v1/system/councils/searchall/\" + $(this).val(),\r\n type: 'GET',\r\n beforeSend: function () {\r\n $addressSuggestions.empty();\r\n $addressSuggestions.show();\r\n },\r\n success: function (response) {\r\n if ((response === null || response === void 0 ? void 0 : response.length) > 0) {\r\n var maxItems = Math.min(10, response.length); // Maximum of 10 suggestions will be displayed\r\n var _loop_2 = function (i) {\r\n var item = response[i];\r\n li = document.createElement(\"li\");\r\n div = document.createElement(\"div\");\r\n /* make the matching letters bold */\r\n inputValue = $addressInput.val();\r\n // Escape any special regex characters in inputValue\r\n escapedInput = inputValue.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n // Create a regex pattern for a case-insensitive search\r\n pattern = new RegExp(escapedInput, 'ig');\r\n // Replace matched substring with itself wrapped in <strong> tags\r\n name = item.DisplayName.replace(pattern, function (match) {\r\n return '<strong>' + match + '</strong>';\r\n });\r\n icon = document.createElement(\"div\");\r\n li.classList.add(\"suggestions-item\");\r\n li.style.padding = \"0 4px\";\r\n li.appendChild(div);\r\n div.classList.add(\"suggestion-title\");\r\n div.innerHTML = name;\r\n li.insertBefore(icon, div);\r\n icon.classList.add(\"suggestion-icon\");\r\n if (item.LocationType.toUpperCase() == \"LGA\") {\r\n icon.style.backgroundImage = \"url('/_static/static-page-assets/images/icons/lga_icons.png')\";\r\n }\r\n else {\r\n icon.style.backgroundImage = \"url('/_static/static-page-assets/images/icons/pin_icons.png')\";\r\n }\r\n // add event\r\n li.addEventListener('click', function () {\r\n addressLocationSelected = true;\r\n $addressSuggestions.empty();\r\n $addressSuggestions.hide();\r\n $addressInput.val(item.DisplayName);\r\n $btnGoToAddress.siblings('input[name=\"url\"]').val(item.Url);\r\n $btnGoToAddress.siblings('input[name=\"displayName\"]').val(item.DisplayName);\r\n $btnGoToAddress.siblings('input[name=\"lat\"]').val(item.Lat);\r\n $btnGoToAddress.siblings('input[name=\"lng\"]').val(item.Lng);\r\n $btnGoToAddress.siblings('input[name=\"locationType\"]').val(item.LocationType);\r\n $btnGoToAddress.siblings('input[name=\"councilId\"]').val(item.CouncilID);\r\n $btnGoToAddress.siblings('input[name=\"locationId\"]').val(item.LocationID);\r\n });\r\n // Add suggestion item to the list\r\n $addressSuggestions.append(li);\r\n };\r\n var li, div, inputValue, escapedInput, pattern, name, icon;\r\n for (var i = 0; i < maxItems; i++) {\r\n _loop_2(i);\r\n }\r\n }\r\n },\r\n error: function (error) {\r\n console.error(error);\r\n }\r\n });\r\n }\r\n }, 250));\r\n $addressInput_mobile = $('#mobile-address-input');\r\n $addressSuggestions_mobile = $('#mobile-address-suggestion-list');\r\n $btnLocateMe_mobile = $('#mobile-locator-button');\r\n $btnClearAddress_mobile = $('#mobile-clear-address-button');\r\n $navBackdrop_mobile = $mobileNav.find(\"#backdrop\");\r\n $btnToggleBurgerMenu.on('click', function (e) {\r\n e.preventDefault();\r\n if ($burgerMenu.hasClass('hidden')) {\r\n $burgerMenu.removeClass('hidden');\r\n }\r\n else {\r\n $burgerMenu.addClass('hidden');\r\n }\r\n });\r\n SetupLocateMeBtn($btnLocateMe_mobile, $btnClearAddress_mobile, $addressInput_mobile, $btnGoToAddress_mobile); // mobile\r\n if ($addressInput_mobile.val()) {\r\n $btnClearAddress_mobile.show();\r\n $btnLocateMe_mobile.hide();\r\n }\r\n $btnClearAddress_mobile.on('click', function (e) {\r\n e.preventDefault();\r\n $addressInput_mobile.val('');\r\n $btnLocateMe_mobile.show();\r\n $(this).hide();\r\n $addressSuggestions_mobile.empty();\r\n if (!$addressSuggestions_mobile.hasClass('hidden')) {\r\n hideAddressSuggestions_mobile();\r\n }\r\n // Reset to default\r\n ResetLocationToDefault($btnGoToAddress_mobile);\r\n $addressInput_mobile.focus();\r\n });\r\n $addressSuggestions_mobile.on(\"show\", function () {\r\n $navBackdrop_mobile.show();\r\n });\r\n $navBackdrop_mobile.click(hideAddressSuggestions_mobile);\r\n FetchLocation_mobile($addressInput_mobile, $btnGoToAddress_mobile, $btnLocateMe_mobile, $btnClearAddress_mobile, $addressSuggestions_mobile, $navBackdrop_mobile);\r\n if (!!$('#info-card-coord')[0]) return [3 /*break*/, 2];\r\n // check if this is a communityinfohub page\r\n if ($('#selectGetHelp').length == 0) {\r\n return [2 /*return*/];\r\n }\r\n $getHelp_1 = $('#selectGetHelp');\r\n $getInvolved_1 = $('#selectGetInvolved');\r\n $getHelp_1.on('click', function () {\r\n if ($(this).hasClass('selected')) {\r\n DiaryRequest([5], { geographyId: geographyId });\r\n $('#btn-community-diary, #btn-clubs-groups').removeClass('selected').addClass('unselected');\r\n $('#btn-outreach-services').removeClass('unselected').addClass('selected');\r\n if ($getInvolved_1.hasClass('selected')) {\r\n $getInvolved_1.removeClass('selected');\r\n }\r\n FetchDirectory(geographyId, displayAddress, lat, lng, getHelp);\r\n $('button#show-services').parent().show();\r\n $('#categorySelect').hide();\r\n $('#directory-services').show();\r\n $('#directory .service-name').text('Get Help');\r\n }\r\n else {\r\n DiaryRequest([], { geographyId: geographyId });\r\n $('#btn-outreach-services').removeClass('selected').addClass('unselected');\r\n if (!$getInvolved_1.hasClass('selected')) {\r\n }\r\n else {\r\n }\r\n $('button#show-services').parent().hide();\r\n $('#categorySelect').show();\r\n $('#directory-services').hide();\r\n $('#directory .service-name').text('Services');\r\n }\r\n });\r\n $getInvolved_1.on('click', function () {\r\n if ($(this).hasClass('selected')) {\r\n DiaryRequest([1, 4], { geographyId: geographyId });\r\n $('#btn-community-diary, #btn-clubs-groups').removeClass('unselected').addClass('selected');\r\n $('#btn-outreach-services').removeClass('selected').addClass('unselected');\r\n if ($getHelp_1.hasClass('selected')) {\r\n $getHelp_1.removeClass('selected');\r\n }\r\n FetchDirectory(geographyId, displayAddress, lat, lng, getInvolved);\r\n $('button#show-services').parent().show();\r\n $('#categorySelect').hide();\r\n $('#directory-services').show();\r\n $('#directory .service-name').text('Get Involved');\r\n }\r\n else {\r\n DiaryRequest([], { geographyId: geographyId });\r\n $('#btn-community-diary, #btn-clubs-groups').removeClass('selected').addClass('unselected');\r\n if (!$getHelp_1.hasClass('selected')) {\r\n }\r\n else {\r\n }\r\n $('button#show-services').parent().hide();\r\n $('#categorySelect').show();\r\n $('#directory-services').hide();\r\n $('#directory .service-name').text('Services');\r\n }\r\n });\r\n InitSelectPicker();\r\n return [4 /*yield*/, Promise.race([\r\n FetchInfoHubAbout(geographyId, regionId),\r\n FetchCategoryGroups(geographyId, displayAddress, lat, lng),\r\n FetchWeatherData(lat, lng),\r\n FetchDiary(geographyId, regionId, lat, lng),\r\n FetchGiveLocal(geographyId, regionId),\r\n FetchLocalServices(regionId, locationId)\r\n ])\r\n .then(function () {\r\n $('#page-backdrop').fadeOut(200);\r\n })\r\n .catch(function (err) {\r\n console.error(err);\r\n })];\r\n case 1:\r\n _a.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n $('#page-backdrop').fadeOut(200);\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n Page.InitCommunityHub = InitCommunityHub;\r\n function FetchInfoHubAbout(geographId, councilId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!geographId || !councilId)\r\n return resolve();\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/api/GetGeoMapDescription?GeoMapId=\" + geographId + \"&CouncilRegionId=\" + councilId,\r\n beforeSend: function () {\r\n $(\"#infohub-desc\").append('<li class=\"spinner\"></li>');\r\n },\r\n success: function (data) {\r\n if (data) {\r\n if (data.length > 250) {\r\n $('#infohub-desc').find('label').removeClass('hide');\r\n }\r\n $('#infohub-desc').find('.read-more__text').each(function (i, e) {\r\n $(e).text(data);\r\n });\r\n }\r\n },\r\n complete: function () {\r\n $(\"#infohub-desc\").find('.spinner').remove();\r\n resolve();\r\n },\r\n });\r\n })];\r\n });\r\n });\r\n }\r\n Page.FetchInfoHubAbout = FetchInfoHubAbout;\r\n function FetchLocalServices(regionId, locationId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!locationId)\r\n return resolve();\r\n $.ajax({\r\n type: \"POST\",\r\n url: '/api/GetLocalInfoCards',\r\n data: JSON.stringify({ LocationID: locationId, CouncilRegionID: regionId, CategoryList: [141, 140, 153, 146] }),\r\n contentType: \"application/json\",\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n $(\"#local-services\").empty();\r\n $(\"#local-services\").append('<li class=\"spinner\"></li>');\r\n $(\"#local-services\").find('.notfound').remove();\r\n },\r\n success: function (data) {\r\n if (!data)\r\n return;\r\n var renderedHtml = $.templates(\"#localServicesTemplate\").render(data.filter(function (obj) { return obj.Services !== null; }));\r\n $(\"#local-services\").html(renderedHtml);\r\n },\r\n complete: function () {\r\n $(\"#local-services\").find('.spinner').hide();\r\n //if (results.localservices.length <= 0) {\r\n // $(\"#local-services\").append('<li class=\"notfound\" style=\"display:flex;justify-content:center;\"><i>Unfortunately, there are no matching services found at this time for this location!</i></li>');\r\n //}\r\n resolve();\r\n },\r\n });\r\n })];\r\n });\r\n });\r\n }\r\n Page.FetchLocalServices = FetchLocalServices;\r\n function FetchWeatherData(lat, lng) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n /////////////////////////////////////////////////////////////////////\r\n // Weather\r\n function HandleErrors() {\r\n $('span[id=\"localTime\"]').text(\"-:-\");\r\n $('span[id=\"localTemperature\"]').text('-°C');\r\n $('span[id=\"localHumidity\"]').text('-%');\r\n $('span[id=\"localWindSpeed\"]').text('- kmph');\r\n $('span[id=\"localUV\"]').text('UV - of 11');\r\n }\r\n if (!lat || !lng) {\r\n HandleErrors();\r\n return resolve();\r\n }\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/api/GetWeatherInfo?lat=\" + lat + \"&lng=\" + lng,\r\n success: function (data) {\r\n if (data.error) {\r\n HandleErrors();\r\n return;\r\n }\r\n var location = data.location;\r\n var current = data.current;\r\n if (location && current) {\r\n var date = new Date(location.localtime);\r\n var hour = date.getHours();\r\n var minutes = date.getMinutes();\r\n var ampm = hour >= 12 ? 'PM' : 'AM';\r\n // Convert hour to 12-hour format\r\n hour = hour % 12;\r\n // the hour '0' should be '12'\r\n hour = hour ? hour : 12;\r\n // Add a leading zero to minutes if less than 10\r\n var strMinutes = minutes < 10 ? '0' + minutes : minutes;\r\n $('span[id=\"localTime\"]').text(hour + \":\" + strMinutes + \" \" + ampm);\r\n $('span[id=\"localTemperature\"]').text(current.temp_c + '°C');\r\n $('span[id=\"localHumidity\"]').text(current.humidity + '%');\r\n $('span[id=\"localWindSpeed\"]').text(current.wind_kph + ' kmph');\r\n $('span[id=\"localUV\"]').text('UV ' + current.uv + ' of 11');\r\n //$('span[id=\"localVisibility\"]').text(current.vis_km + 'km');\r\n $('#localWeatherIcon').html('<img src=\"' + current.condition.icon + '\" alt=\"Weather Icon\" />');\r\n }\r\n else {\r\n HandleErrors();\r\n }\r\n },\r\n complete: function () {\r\n resolve();\r\n },\r\n error: function () {\r\n HandleErrors();\r\n }\r\n });\r\n })];\r\n });\r\n });\r\n }\r\n Page.FetchWeatherData = FetchWeatherData;\r\n function DisplayDirectoryServiceMarkers(data) {\r\n results.services = data;\r\n results.directoryMarkers = [];\r\n RefreshMarkers();\r\n if (!data)\r\n return;\r\n for (var i = 0; i < results.services.length; i++) {\r\n // Check if Outlet and Outlet.Nickname exist before trying to access its value\r\n var nickname = results.services[i].Outlet && results.services[i].Outlet.Nickname ? results.services[i].Outlet.Nickname : null;\r\n var description = results.services[i].Description;\r\n if ((description === null || description === void 0 ? void 0 : description.length) > 150)\r\n description = description.slice(0, 150) + '...';\r\n var webUrl = window.AppSettings.DirectoryUrl + results.services[i].Url;\r\n var content = \"<div>\\n <span><a class=\\\"text-decoration-none\\\" href=\\\"\" + webUrl + \"\\\" target=\\\"_blank\\\" tabindex=\\\"-1\\\"><span style=\\\"font-size: 18px;font-weight: 500;\\\">\" + nickname + \"</span></a></span>\\n <br />\\n <span style=\\\"font-size: 12px;\\\"><i>\" + results.services[i].Category.Name + \"</i></span>\\n <br />\\n <span style=\\\"font-size: 12px;\\\">\" + description + \"</span>\\n <br />\\n <span style=\\\"display:flex;flex-direction:row;justify-content:space-between;\\\">\\n <span class=\\\"text-decoration-none\\\"><a class=\\\"text-decoration-none\\\" href=\\\"\" + webUrl + \"\\\" target=\\\"_blank\\\" tabindex=\\\"-1\\\"><i class=\\\"fa fa-globe\\\" aria-hidden=\\\"true\\\"></i> Link to Directory</a></span>\\n \" + (results.services[i].Outlet.Phone ? \"<span><i class=\\\"fa fa-phone\\\" aria-hidden=\\\"true\\\"></i> Phone: <a class=\\\"text-decoration-none\\\" href=\\\"tel:\" + results.services[i].Outlet.Phone + \"\\\" target=\\\"_blank\\\" tabindex=\\\"-1\\\">\" + results.services[i].Outlet.Phone + \"</a></span>\" : '') + \"\\n </span>\\n </div>\";\r\n // Check for the existence of Outlet.MapLocation before accessing Lat and Lng\r\n if (results.services[i].Outlet && results.services[i].Outlet.MapLocation.ShowMarker) {\r\n results.directoryMarkers.push(AddMarker(results.services[i].Outlet.MapLocation.Lat, results.services[i].Outlet.MapLocation.Lng, nickname, // title on hover,\r\n content, '/_static/images/MCD_logo.png'));\r\n }\r\n }\r\n }\r\n var results = {\r\n services: [],\r\n events: [],\r\n filteredEvents: [],\r\n localservices: [],\r\n directoryMarkers: [],\r\n diaryMarkers: [],\r\n };\r\n var getHelp = [1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 15, 16, 17, 18, 21, 23, 25, 26];\r\n var getInvolved = [6, 7, 8, 14, 19, 20, 22, 24, 27, 28];\r\n function FetchDirectory(geographyId, displayAdddress, latitude, longitude, categoryGroups) {\r\n if (categoryGroups === void 0) { categoryGroups = [0]; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n /////////////////////////////////////////////////////////////////////\r\n // NEARBY GEOGRAPHIES\r\n var currentPageNo = 1; // default to first page if you don't know the current page yet\r\n var PAGE_CHUNK_SIZE = 5;\r\n var PAGE_CONTENT_SIZE = 20;\r\n var MAX_PAGE_SIZE = 20;\r\n var SORT_FIELD = 'OrganisationID';\r\n var SORT_DIRECTION = 'ASC';\r\n //const RADIUS = 100;\r\n /////////////////////////////////////////////////////////////////////\r\n // DIRECTORY\r\n function DirectoryRequest(categoryGroupIds, geoId, pageNo) {\r\n if (categoryGroupIds === void 0) { categoryGroupIds = []; }\r\n if (geoId === void 0) { geoId = 0; }\r\n if (pageNo === void 0) { pageNo = 1; }\r\n $.ajax({\r\n type: \"GET\",\r\n url: '/api/Search/LocalGeoCategory',\r\n data: {\r\n SearchType: 'Category',\r\n What: '',\r\n Where: displayAdddress,\r\n //Category: 0,\r\n //CategoryGroup: categoryGroupId,\r\n CategoryGroups: categoryGroupIds === null || categoryGroupIds === void 0 ? void 0 : categoryGroupIds.toString(),\r\n //Location: 0,\r\n //Council: 0,\r\n SortField: SORT_FIELD,\r\n SortDirection: SORT_DIRECTION,\r\n PageNo: pageNo,\r\n PageSize: MAX_PAGE_SIZE,\r\n SearchAroundCouncilRegion: false,\r\n IsAdvanced: false,\r\n ShowResourceList: 0,\r\n Ext: false,\r\n RegionID: geoId,\r\n },\r\n beforeSend: function () {\r\n $(\"#directory-services\").append('<li class=\"spinner\"></li>');\r\n $(\"#directory-services\").find('.pagination').remove();\r\n $(\"#directory-services\").find('.notfound').remove();\r\n },\r\n success: function (res) {\r\n var _a;\r\n if (((_a = res === null || res === void 0 ? void 0 : res.Results) === null || _a === void 0 ? void 0 : _a.length) <= 0) {\r\n console.log('No services');\r\n }\r\n else {\r\n var groupedByLocation = res.Results.reduce(function (accumulator, service) {\r\n var _a;\r\n // Find if there is already an entry for the locationId\r\n var existingEntry = accumulator.find(function (entry) { var _a; return entry.OrganisationID === ((_a = service.Outlet) === null || _a === void 0 ? void 0 : _a.OrganisationID); });\r\n if (existingEntry) {\r\n existingEntry.services.push(service);\r\n }\r\n else {\r\n accumulator.push({ OrganisationID: (_a = service.Outlet) === null || _a === void 0 ? void 0 : _a.OrganisationID, Outlet: service.Outlet, OrganisationName: service.OrganisationName, services: [service] });\r\n }\r\n return accumulator;\r\n }, []);\r\n groupedByLocation.forEach(function (location) {\r\n if (location.services && location.services.length > 0) {\r\n var servicesGroupedByLocation = location.services.reduce(function (accumulator, service) {\r\n var _a;\r\n // Find if there is already an entry for the OutletID\r\n var existingEntry = accumulator.find(function (entry) { var _a; return entry.OutletID === ((_a = service.Outlet) === null || _a === void 0 ? void 0 : _a.OutletID); });\r\n if (existingEntry) {\r\n existingEntry.services.push(service);\r\n }\r\n else {\r\n accumulator.push({ OutletID: (_a = service.Outlet) === null || _a === void 0 ? void 0 : _a.OutletID, Outlet: service.Outlet, services: [service] });\r\n }\r\n return accumulator;\r\n }, []);\r\n if (servicesGroupedByLocation && servicesGroupedByLocation.length > 0) {\r\n location.services = servicesGroupedByLocation;\r\n }\r\n }\r\n });\r\n ProcessPagination(res.Results, res.Total, currentPageNo);\r\n var totalPages = Math.ceil(res.Total / PAGE_CONTENT_SIZE); // Assuming each page has 10 results\r\n var startPage = Math.floor((currentPageNo - 1) / PAGE_CHUNK_SIZE) * PAGE_CHUNK_SIZE + 1;\r\n var endPage = Math.min(startPage + (PAGE_CHUNK_SIZE - 1), totalPages); // ensure we don't go past totalPages\r\n var template = $.templates(\"#serviceTemplate\");\r\n var htmlOutput = template.render(groupedByLocation.slice(0, PAGE_CONTENT_SIZE));\r\n $(\"#directory-services\").html(htmlOutput);\r\n // Generate pagination HTML\r\n var paginationHtml = '<li><span class=\"pagination margin-0 margin-top-10\" style=\"font-size: 18px; float: right;\">Page ';\r\n // If on a page greater than 5, add a \"previous\" link\r\n if (currentPageNo > PAGE_CHUNK_SIZE) {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\" data-page=\\\"\" + (startPage - 5) + \"\\\" data-cg=\\\"\" + categoryGroupIds + \"\\\">Previous</a> \";\r\n }\r\n for (var i = startPage; i <= endPage; i++) {\r\n if (i == currentPageNo) {\r\n paginationHtml += \"<span>\" + i + \"</span> \"; // Highlight current page\r\n }\r\n else {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\" data-page=\\\"\" + i + \"\\\" data-cg=\\\"\" + categoryGroupIds + \"\\\">\" + i + \"</a> \";\r\n }\r\n }\r\n // If there are more pages ahead, add a \"next\" link\r\n if (totalPages > endPage) {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\" data-page=\\\"\" + (endPage + 1) + \"\\\" data-cg=\\\"\" + categoryGroupIds + \"\\\">Next</a> \";\r\n }\r\n paginationHtml += \" - Showing \" + res.Results.slice(0, PAGE_CONTENT_SIZE).length + \" of \" + res.Total;\r\n paginationHtml += '</span></li>';\r\n $(\"#directory-services\").append(paginationHtml);\r\n // Attach click event to pagination links\r\n $(\"#directory-services\").find('.pagination').off('click').on('click', 'a[data-page]', function (event) {\r\n event.preventDefault();\r\n var clickedPageNumber = $(this).data('page');\r\n currentPageNo = clickedPageNumber;\r\n DirectoryRequest($(this).data('cg'), geographyId, clickedPageNumber);\r\n document.getElementById('directory').scrollIntoView({ behavior: 'smooth' });\r\n });\r\n results.services = res.Results;\r\n DisplayDirectoryServiceMarkers(results.services);\r\n }\r\n },\r\n complete: function () {\r\n $(\"#directory-services\").find('.spinner').hide();\r\n if (results.services.length <= 0) {\r\n $(\"#directory-services\").append('<li class=\"notfound\" style=\"display:flex;justify-content:center;\"><i>Unfortunately, there are no matching services found at this time for this location!</i></li>');\r\n }\r\n resolve();\r\n }\r\n });\r\n }\r\n DirectoryRequest(categoryGroups, geographyId, currentPageNo);\r\n $('#categorySelect').on('change', function () {\r\n // Attaching this event after initializing with .selectpicker()\r\n var selectedCategoryGroupId = $(this).val();\r\n if (Array.isArray(selectedCategoryGroupId)) {\r\n if (selectedCategoryGroupId.length === 0 || (selectedCategoryGroupId.length === 1 && (selectedCategoryGroupId[0] === '0' || selectedCategoryGroupId[0] === ''))) {\r\n selectedCategoryGroupId = 0;\r\n }\r\n }\r\n $(\"#directory-services\").empty();\r\n $(\"#directory-services\").find('.pagination').remove();\r\n currentPageNo = 1;\r\n DirectoryRequest(selectedCategoryGroupId, geographyId, currentPageNo);\r\n });\r\n })];\r\n });\r\n });\r\n }\r\n function ProcessPagination(items, totalItemsCount, currentPageNo, $pagination) {\r\n //@ts-ignore\r\n var ITEMS = items;\r\n //@ts-ignore\r\n var ITEMS_TOTAL = totalItemsCount;\r\n //@ts-ignore\r\n var PAGE_CHUNK_SIZE = 5;\r\n //@ts-ignore\r\n var PAGE_CONTENT_SIZE = 20;\r\n var totalPages = Math.ceil(ITEMS_TOTAL / PAGE_CONTENT_SIZE); // Assuming each page has 10 results\r\n var startPage = Math.floor((currentPageNo - 1) / PAGE_CHUNK_SIZE) * PAGE_CHUNK_SIZE + 1;\r\n //@ts-ignore\r\n var endPage = Math.min(startPage + (PAGE_CHUNK_SIZE - 1), totalPages); // ensure we don't go past totalPages\r\n //console.log(currentPageNo, totalPages, startPage, endPage);\r\n return;\r\n }\r\n function DisplayDiaryEventMarkers(data) {\r\n results.filteredEvents = data;\r\n results.diaryMarkers = [];\r\n RefreshMarkers();\r\n if (!data)\r\n return;\r\n for (var i = 0; i < data.length; i++) {\r\n var description = results.filteredEvents[i].TextOnlyDescription;\r\n if ((description === null || description === void 0 ? void 0 : description.length) > 150)\r\n description = description.slice(0, 150) + '...';\r\n var webUrl = window.AppSettings.DiaryUrl + results.filteredEvents[i].InstanceUrl;\r\n var content = \"<div>\\n <span><a class=\\\"text-decoration-none\\\" href=\\\"\" + webUrl + \"\\\" target=\\\"_blank\\\" tabindex=\\\"-1\\\"><span style=\\\"text-decoration: none; font-size: 18px;font-weight: 500;\\\">\" + results.filteredEvents[i].EventName + \"</span></a></span>\\n <br />\\n <span style=\\\"font-size: 12px;\\\">\" + description + \"</span>\\n <br />\\n <span style=\\\"font-size: 12px;\\\"><i>\" + results.filteredEvents[i].LocationAddress + \"</i></span>\\n <br />\\n <span style=\\\"display:flex;flex-direction:row;justify-content:space-between;\\\">\\n <span><a class=\\\"text-decoration-none\\\" href=\\\"\" + webUrl + \"\\\" target=\\\"_blank\\\" tabindex=\\\"-1\\\"><i class=\\\"fa fa-globe\\\" aria-hidden=\\\"true\\\"></i> Link to Diary</a></span>\\n \" + (results.filteredEvents[i].Phone1 ? \"<span><i class=\\\"fa fa-phone\\\" aria-hidden=\\\"true\\\"></i> Phone: <a class=\\\"text-decoration-none\\\" href=\\\"tel:\" + results.filteredEvents[i].Phone1 + \"\\\" target=\\\"_blank\\\" tabindex=\\\"-1\\\">\" + results.filteredEvents[i].Phone1 + \"</a></span>\" : '') + \"\\n </span>\\n </div>\";\r\n results.diaryMarkers.push(AddMarker(results.filteredEvents[i].GeocodeLat, results.filteredEvents[i].GeocodeLong, results.filteredEvents[i].EventName + ' ' + results.filteredEvents[i].EventInstanceID, // title on hover\r\n content, '/_static/images/Diary_logo.png'));\r\n }\r\n }\r\n function FetchCategoryGroups(geographyId, displayAddress, lat, lng) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!geographyId)\r\n return resolve();\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/api/GetLocalCategoryGroups/\" + geographyId,\r\n beforeSend: function () {\r\n $(\"#categorySelect\").append('<li class=\"spinner\"></li>');\r\n $('button#show-services').on('click', function () {\r\n $(this).parent().hide();\r\n $('#categorySelect').show();\r\n $('#directory-services').hide();\r\n $('#directory .service-name').text('Services');\r\n });\r\n },\r\n success: function (data) {\r\n if (data && data.length > 0) {\r\n var renderedOptions = $.templates(\"#categoryGroupsTemplate\").render(data);\r\n $(\"#categorySelect\").append(renderedOptions);\r\n $(\"#categorySelect\").children().each(function (i, e) {\r\n $(this).on('click', function () {\r\n $('button#show-services').parent().show();\r\n $('#categorySelect').hide();\r\n $('#directory-services').show();\r\n $('#directory .service-name').text($(this).data('category-name'));\r\n FetchDirectory(geographyId, displayAddress, lat, lng, [$(this).data('category-group-id')]);\r\n });\r\n });\r\n }\r\n },\r\n complete: function () {\r\n $(\"#categorySelect\").find('.spinner').remove();\r\n $('#categorySelect').selectpicker('refresh'); // to be removed\r\n $('button#show-services').parent().hide();\r\n resolve();\r\n }\r\n });\r\n })];\r\n });\r\n });\r\n }\r\n Page.FetchCategoryGroups = FetchCategoryGroups;\r\n //function GetDateNextMonthsAsString(numMonth = 3) {\r\n // const date = new Date();\r\n // date.setMonth(date.getMonth() + numMonth);\r\n // const year = date.getFullYear();\r\n // const month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n // const nextDate = ('0' + date.getDate()).slice(-2);\r\n // return `${year}-${month}-${nextDate}`;\r\n //}\r\n //var ignoreEventIds = [0];\r\n //var ignoreEventKeys = [''];\r\n function DiaryRequest(diaryTypeIDs, _a, callback) {\r\n if (diaryTypeIDs === void 0) { diaryTypeIDs = []; }\r\n var _b = _a === void 0 ? {} : _a, _c = _b.currentDate, currentDate = _c === void 0 ? null : _c, _d = _b.PAGE_NO, PAGE_NO = _d === void 0 ? 1 : _d, _e = _b.MAX_PAGE_SIZE, MAX_PAGE_SIZE = _e === void 0 ? 20 : _e, _f = _b.PAGE_CONTENT_SIZE, PAGE_CONTENT_SIZE = _f === void 0 ? 20 : _f, _g = _b.geographyId, geographyId = _g === void 0 ? null : _g;\r\n if (diaryTypeIDs.length <= 0) {\r\n diaryTypeIDs.push(1);\r\n diaryTypeIDs.push(4);\r\n diaryTypeIDs.push(5);\r\n }\r\n if (!currentDate) {\r\n var date = new Date();\r\n var year = date.getFullYear();\r\n var month = ('0' + (date.getMonth() + 1)).slice(-2);\r\n var day = ('0' + date.getDate()).slice(-2);\r\n currentDate = year + \"-\" + month + \"-\" + day;\r\n }\r\n //const nextThreeMonths = GetDateNextMonthsAsString(3);\r\n if (diaryTypeIDs.length > 0 && geographyId > 0) {\r\n $.ajax({\r\n type: \"GET\",\r\n url: window.AppSettings.ApiUrl + '/api/v1/search/diary/GetResponse',\r\n data: {\r\n WhenIndex: 'All',\r\n SearchFrom: currentDate,\r\n //SearchTo: nextThreeMonths,\r\n PageNo: PAGE_NO,\r\n PageSize: MAX_PAGE_SIZE,\r\n UniqueEvents: true,\r\n IncludeDeletedAndUnpublished: false,\r\n //CouncilID: councilId,\r\n //IsCommunityOrganisation: false,\r\n //IsATDW: false,\r\n //IsEventFinda: false,\r\n //IsCheckup: false,\r\n //IsCATS: false,\r\n //IsPrivate: false,\r\n //Latitude: latitude,\r\n //Longitude: longitude,\r\n //RadiusKM: searchRadius,\r\n GeographyID: geographyId,\r\n //DiaryFormatID: ,\r\n DiaryTypeIDs: diaryTypeIDs,\r\n },\r\n beforeSend: function () {\r\n $(\"#diary-events\").append('<li class=\"spinner\"></li>');\r\n $(\"#diary-events\").find('.notfound').remove();\r\n $(\"#diary-events\").find('.findmore').remove();\r\n $(\"#diary-events\").find('.pagination').remove();\r\n $(\"#diary-events\").find('.list-item').remove();\r\n },\r\n success: function (res) {\r\n var _a;\r\n results.events = [];\r\n var renderData;\r\n if (((_a = res === null || res === void 0 ? void 0 : res.Data) === null || _a === void 0 ? void 0 : _a.length) <= 0) {\r\n console.log('No events');\r\n renderData = null;\r\n }\r\n else {\r\n res.Data.forEach(function (event) {\r\n results.events.push(event);\r\n });\r\n var template = $.templates(\"#eventTemplate\");\r\n renderData = results.events.slice(0, PAGE_CONTENT_SIZE);\r\n var htmlOutput = template.render(renderData); // Display first n items (or fewer if fewer than n are present)\r\n $(\"#diary-events\").html(htmlOutput);\r\n var totalPages = Math.ceil(res.TotalCount / PAGE_CONTENT_SIZE); // Assuming each page has n results\r\n var pagesRange = 3;\r\n var startPage = Math.max(1, PAGE_NO - pagesRange);\r\n var endPage = Math.min(totalPages, PAGE_NO + pagesRange);\r\n // Generate pagination HTML\r\n var paginationHtml = '<li class=\"row margin-0 margin-top-10 pagination\" style=\"float: right;\"><span style=\"font-size: 18px;\">';\r\n if (PAGE_NO > 1) {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\" data-page=\\\"\" + (PAGE_NO - 1) + \"\\\" >Prev</a> \";\r\n }\r\n else {\r\n paginationHtml += 'Page '; // Show \"Page\" only if there is no \"Prev\" link\r\n }\r\n for (var i = startPage; i <= endPage; i++) {\r\n if (i === PAGE_NO) {\r\n paginationHtml += \"<strong>\" + i + \"</strong> \";\r\n }\r\n else {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\" data-page=\\\"\" + i + \"\\\" >\" + i + \"</a> \";\r\n }\r\n }\r\n if (PAGE_NO < totalPages) {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\" data-page=\\\"\" + (PAGE_NO + 1) + \"\\\" >Next</a> \";\r\n }\r\n paginationHtml += \" - Showing \" + renderData.length + \" of \" + res.TotalCount;\r\n paginationHtml += '</span></li>';\r\n $(\"#diary-events\").append(paginationHtml);\r\n // Attach click event to pagination links\r\n $(\"#diary-events\").find('.pagination').off('click').on('click', 'a[data-page]', function (event) {\r\n event.preventDefault();\r\n DiaryRequest(diaryTypeIDs, { geographyId: geographyId, PAGE_NO: $(this).data('page') });\r\n document.getElementById('diary').scrollIntoView({ behavior: 'smooth' });\r\n });\r\n //var paginationHtml = '<li class=\"row margin-0 margin-top-10 pagination\" style=\"float: right;\"><span style=\"font-size: 18px;\">';\r\n //if (res?.length >= MAX_PAGE_SIZE) {\r\n // paginationHtml += ` - <a id=\"next-events\" href=\"javascript:void(0);\">Next</a>`\r\n //}\r\n //$(\"#diary-events\").find('#next-events').off('click').on('click', function (e) {\r\n // e.preventDefault();\r\n // results.events.forEach(function (e) {\r\n // if (e.DataProviderKey && e.DataProviderKey.length > 0) {\r\n // ignoreEventKeys.push(e.DataProviderKey.split('/')[0]);\r\n // } else {\r\n // ignoreEventIds.push(e.EventID);\r\n // }\r\n // });\r\n // document.getElementById('diary').scrollIntoView({ behavior: 'smooth' })\r\n // DiaryRequest(diaryTypeIDs, { geographyId: geographyId });\r\n //});\r\n }\r\n DisplayDiaryEventMarkers(renderData);\r\n },\r\n complete: function () {\r\n $(\"#diary-events\").find('.spinner').remove();\r\n if (results.events.length <= 0) {\r\n $(\"#diary-events\").append('<li class=\"row margin-0 margin-top-10 notfound\" style=\"display:flex;justify-content:center;\"><i>Unfortunately, there are no matching events found at this time for this location!</i></li>');\r\n }\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n });\r\n }\r\n }\r\n ;\r\n function FetchDiary(geographyId, councilId, latitude, longitude, diaryTypeIDs) {\r\n if (diaryTypeIDs === void 0) { diaryTypeIDs = []; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n //const nextThreeMonths = GetDateNextMonthsAsString(3);\r\n // Helper function to handle click events on the buttons to change diary type\r\n function handleButtonClick(buttonId, typeIds) {\r\n if (typeIds === void 0) { typeIds = []; }\r\n $(buttonId).on('click', function (e) {\r\n e.preventDefault();\r\n //// Important!\r\n //ignoreEventIds = [];\r\n //ignoreEventKeys = [];\r\n // Determine which buttons to select based on typeIds using indexOf for broader compatibility\r\n if (typeIds.length == 2 && typeIds.indexOf(1) !== -1 && typeIds.indexOf(4) !== -1) {\r\n // Select #btn-community-diary and #btn-clubs-groups, unselect #btn-outreach-services\r\n $('#btn-community-diary, #btn-clubs-groups').removeClass('unselected').addClass('selected');\r\n $('#btn-outreach-services').removeClass('selected').addClass('unselected');\r\n }\r\n else {\r\n if ($(this).hasClass('selected')) {\r\n $(this).removeClass('selected').addClass('unselected');\r\n // check if others are selected\r\n var ids = [];\r\n if ($('#btn-community-diary').hasClass('selected')) {\r\n ids.push(1);\r\n }\r\n if ($('#btn-clubs-groups').hasClass('selected')) {\r\n ids.push(4);\r\n }\r\n if ($('#btn-outreach-services').hasClass('selected')) {\r\n ids.push(5);\r\n }\r\n DiaryRequest(ids, { geographyId: geographyId });\r\n }\r\n else {\r\n // Sends a request if individual btn is clicked\r\n DiaryRequest(typeIds, { geographyId: geographyId });\r\n // General case for toggling based on the clicked button\r\n $(this).removeClass('unselected').addClass('selected');\r\n $(this).siblings().removeClass('selected').addClass('unselected');\r\n }\r\n }\r\n });\r\n }\r\n var date, currentYear, currentMonth, currentDay, currentDate;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n date = new Date();\r\n currentYear = date.getFullYear();\r\n currentMonth = ('0' + (date.getMonth() + 1)).slice(-2);\r\n currentDay = ('0' + date.getDate()).slice(-2);\r\n currentDate = currentYear + \"-\" + currentMonth + \"-\" + currentDay;\r\n //// Important!\r\n //ignoreEventIds = [];\r\n //ignoreEventKeys = [];\r\n // Attach event handlers to the buttons\r\n handleButtonClick('#btn-community-diary', [1]);\r\n handleButtonClick('#btn-clubs-groups', [4]);\r\n handleButtonClick('#btn-outreach-services', [5]);\r\n if (!(diaryTypeIDs.length == 0)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, $.ajax({\r\n type: \"GET\",\r\n url: window.AppSettings.ApiUrl + '/api/v1/search/diary/GetEventTypesWithCount',\r\n data: {\r\n WhenIndex: 'All',\r\n SearchFrom: currentDate,\r\n //SearchTo: nextThreeMonths,\r\n UniqueEvents: true,\r\n IncludeDeletedAndUnpublished: false,\r\n GeographyID: geographyId,\r\n DiaryTypeIds: [1, 4, 5]\r\n },\r\n beforeSend: function () {\r\n $(\"#diary-events\").append('<li class=\"spinner\"></li>');\r\n },\r\n success: function (res) {\r\n if (res != null && res.length > 0) {\r\n diaryTypeIDs = res;\r\n }\r\n else {\r\n diaryTypeIDs = [];\r\n $(\"#diary-events\").append('<li class=\"row margin-0 margin-top-10 notfound\" style=\"display:flex;justify-content:center;\"><i>Unfortunately, there are no events found at this time for this location!</i></li>');\r\n }\r\n },\r\n error: function (err) {\r\n console.log(err);\r\n },\r\n complete: function () {\r\n $(\"#diary-events\").find('.spinner').remove();\r\n },\r\n })];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (diaryTypeIDs.indexOf(1) !== -1) {\r\n if (!$('#btn-community-diary').hasClass('selected')) {\r\n $('#btn-community-diary').removeClass('unselected').addClass('selected');\r\n }\r\n }\r\n if (diaryTypeIDs.indexOf(4) !== -1) {\r\n if (!$('#btn-clubs-groups').hasClass('selected')) {\r\n $('#btn-clubs-groups').removeClass('unselected').addClass('selected');\r\n }\r\n }\r\n if (diaryTypeIDs.indexOf(5) !== -1) {\r\n if (!$('#btn-outreach-services').hasClass('selected')) {\r\n $('#btn-outreach-services').removeClass('unselected').addClass('selected');\r\n }\r\n }\r\n if (diaryTypeIDs.length == 0) {\r\n console.log('No events');\r\n return [2 /*return*/];\r\n }\r\n else {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n DiaryRequest(diaryTypeIDs, { currentDate: currentDate, geographyId: geographyId }, resolve);\r\n })];\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n Page.FetchDiary = FetchDiary;\r\n function FetchGiveLocal(geographyId, councilId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n /////////////////////////////////////////////////////////////////////\r\n // GIVE LOCAL\r\n var searchRequest = { \"OrderByDate\": true, \"OrderByVolunteerTitle\": false, \"CouncilID\": councilId, \"Length\": 10, \"Start\": 0, \"IncludeCounts\": true, \"GeographyID\": \"\" };\r\n $.ajax({\r\n type: \"POST\",\r\n url: window.AppSettings.ApiUrl + \"/api/v1/volunteer/search\",\r\n data: JSON.stringify(searchRequest),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n $(\"#givelocal-services\").append('<li class=\"spinner\"></li>');\r\n $(\"#givelocal-services\").find('.notfound').remove();\r\n },\r\n success: function (res) {\r\n var data = res.Results;\r\n if (data.length > 0) {\r\n var template = $.templates(\"#givelocalTemplate\");\r\n var htmlOutput = template.render(data);\r\n $(\"#givelocal-services\").html(htmlOutput);\r\n var totalPages = Math.ceil(data.length / data.length); // Assuming each page has 10 results\r\n // Generate pagination HTML\r\n var paginationHtml = '<span class=\"pagination margin-0 margin-top-10\" style=\"font-size: 18px; float: right;\">Page ';\r\n for (var i = 1; i <= totalPages; i++) {\r\n paginationHtml += \"<a href=\\\"javascript:void(0);\\\">\" + i + \"</a> \";\r\n }\r\n paginationHtml += \" - Showing \" + data.length + \" of \" + data.length;\r\n paginationHtml += '</span>';\r\n $(\"#givelocal-services\").append(paginationHtml);\r\n $(\"#givelocal-services\").find('.givelocal-item').off('click').on('click', function (e) {\r\n e.preventDefault();\r\n window.open($(this).find('[name=\"LocationUrl\"]').val());\r\n });\r\n results.localservices = data;\r\n }\r\n else {\r\n console.log('No vonlunteer ads');\r\n }\r\n },\r\n complete: function () {\r\n $(\"#givelocal-services\").find('.spinner').hide();\r\n if (results.localservices.length <= 0) {\r\n $(\"#givelocal-services\").append('<li class=\"notfound\" style=\"display:flex;justify-content:center;\"><i>Unfortunately, there are no services found at this time for this location!</i></li>');\r\n }\r\n resolve();\r\n }\r\n });\r\n })];\r\n });\r\n });\r\n }\r\n Page.FetchGiveLocal = FetchGiveLocal;\r\n function getUCLDescriptions(geoID, councilRegionID) {\r\n $(\".info-loading-wraper\").show();\r\n currentRequest = $.ajax({\r\n url: \"/api/GetGeoMapDescription?GeoMapId=\" + geoID + \"&CouncilRegionId=\" + councilRegionID,\r\n dataType: \"json\",\r\n type: \"Get\",\r\n beforeSend: function () {\r\n if (currentRequest != null) {\r\n currentRequest.abort();\r\n }\r\n },\r\n success: function (data) {\r\n $(\".info-loading-wraper\").hide();\r\n data.replace(\"/n\", \"<br><br>\");\r\n document.getElementById(\"ucl-description\").innerHTML = data.replace(\"/n\", \"<br><br>\");\r\n document.getElementById(\"ucl-description-mobile\").innerHTML = data.replace(\"/n\", \"<br><br>\");\r\n }\r\n });\r\n }\r\n function SetUpUclDescription(ucls) {\r\n ucls.forEach(function (u) {\r\n $.ajax({\r\n url: \"/api/GetGeoMapDescription?GeoMapId=\" + u.GeographyMap.GeographyID + \"&CouncilRegionId=\" + u.Locality.CouncilRegionID,\r\n dataType: \"json\",\r\n type: \"Get\",\r\n success: function (data) {\r\n console.log(data);\r\n }\r\n });\r\n });\r\n }\r\n Page.SetUpUclDescription = SetUpUclDescription;\r\n ;\r\n function GetDefaultUCLsMarkers(ucls) {\r\n pageUCLs = ucls;\r\n var latlngList = [];\r\n ucls.forEach(function (marker) {\r\n var markerLatlng = new google.maps.LatLng(marker.GeographyMap.CentralLatitude, marker.GeographyMap.CentralLongitude);\r\n latlngList.push(markerLatlng);\r\n new google.maps.Marker({\r\n position: markerLatlng,\r\n map: window.MapView,\r\n title: marker.Title,\r\n icon: {\r\n url: '/_static/images/CommunityInfo/CommunityInfoIcon.svg',\r\n scaledSize: new google.maps.Size(24, 32),\r\n origin: new google.maps.Point(0, 0),\r\n anchor: new google.maps.Point(0, 16),\r\n }\r\n });\r\n });\r\n if (latlngList.length === 0) {\r\n // No UCLs, fit bounds around default location\r\n var center = window.Search.DefaultLatLng;\r\n var distanceInKm = Math.sqrt(20000);\r\n var latChange = distanceInKm / 111;\r\n var northEast = new google.maps.LatLng(center.lat() + latChange, center.lng() + latChange);\r\n var southWest = new google.maps.LatLng(center.lat() - latChange, center.lng() - latChange);\r\n var bounds = new google.maps.LatLngBounds(southWest, northEast);\r\n window.MapView.fitBounds(bounds);\r\n }\r\n else {\r\n // Fit bounds to UCLs\r\n var latlngbounds = new google.maps.LatLngBounds();\r\n latlngList.forEach(function (latlng) {\r\n latlngbounds.extend(latlng);\r\n });\r\n window.MapView.fitBounds(latlngbounds);\r\n }\r\n }\r\n Page.GetDefaultUCLsMarkers = GetDefaultUCLsMarkers;\r\n function RefreshMarkers() {\r\n window.Clusterer.clearMarkers();\r\n for (var i = 0; i < results.directoryMarkers.length; i++) {\r\n window.Clusterer.addMarker(results.directoryMarkers[i]);\r\n }\r\n for (var i = 0; i < results.diaryMarkers.length; i++) {\r\n window.Clusterer.addMarker(results.diaryMarkers[i]);\r\n }\r\n }\r\n function AddMarker(lat, lng, title, infoWindowContent, url) {\r\n //@ts-ignore\r\n var mcdIcon = {\r\n url: url,\r\n // This marker is 20 pixels wide by 32 pixels high.\r\n scaledSize: new google.maps.Size(24, 32),\r\n // The origin for this image is (0, 0).\r\n origin: new google.maps.Point(0, 0),\r\n // The anchor for this image is the base of the flagpole at (0, 32).\r\n anchor: new google.maps.Point(12, 32),\r\n };\r\n var latlng = new google.maps.LatLng(lat, lng);\r\n var marker = new google.maps.Marker({\r\n position: latlng,\r\n map: window.MapView,\r\n title: title,\r\n icon: mcdIcon\r\n });\r\n marker.addListener('click', function () {\r\n window.InfoWindow.setContent(infoWindowContent);\r\n window.InfoWindow.setOptions({ pixelOffset: new google.maps.Size(0, 0) });\r\n window.InfoWindow.open(window.MapView, marker);\r\n // Remove \"Close\" button of the info window on hover\r\n // https://stackoverflow.com/questions/55432957/remove-the-close-title-attribute-from-google-maps-custom-markers-infowindow\r\n google.maps.event.addListener(window.InfoWindow, 'domready', function () {\r\n jQuery(\".gm-ui-hover-effect\").attr('title', '');\r\n });\r\n });\r\n if (window.Spiderfier)\r\n window.Spiderfier.addMarker(marker);\r\n if (window.Clusterer)\r\n window.Clusterer.addMarker(marker);\r\n return marker;\r\n }\r\n function getPointToPointDirection(origin, destination, type, currentLocationInfoWindowContent) {\r\n if (origin.lat === destination.lat && origin.long === destination.long) {\r\n displayMyLocation(new google.maps.LatLng(origin.lat, origin.long), true, currentLocationInfoWindowContent);\r\n return;\r\n }\r\n if (!window.DirectionsDisplay) {\r\n window.DirectionsDisplay = new google.maps.DirectionsRenderer({\r\n draggable: true\r\n });\r\n window.DirectionsDisplay.setMap(window.MapView);\r\n window.DirectionsDisplay.setPanel(document.getElementById(\"directionsPanel\"));\r\n window.DirectionsService = new google.maps.DirectionsService();\r\n }\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n var request = {\r\n origin: new google.maps.LatLng(origin.lat, origin.long),\r\n destination: new google.maps.LatLng(destination.lat, destination.long),\r\n travelMode: type\r\n };\r\n refresh(); // should remove existing markers in the cluster so we can display A and B\r\n window.DirectionsDisplay.setMap(window.MapView);\r\n window.DirectionsService.route(request, function (result, status) {\r\n if (status === google.maps.DirectionsStatus.OK) {\r\n $(\"a[href='#panelDirections']\").click();\r\n $(\"#panelDirectionsFull\").show();\r\n $(\"#panelDirectionsEmpty\").hide();\r\n window.DirectionsDisplay.setDirections(result);\r\n function triggerAlert(e) {\r\n e.preventDefault();\r\n aria.Utils.AriaAlert(\"A new page will open for printing. For best result please ensure you enable Background images and colours if available. Once you have printed you may close the new page. Press enter to close the dialog\");\r\n setTimeout(function () {\r\n alert('A new page will open for printing. For best result please ensure you enable Background images and colours if available. Once you have printed you may close the new page.');\r\n window.open($(e.target).attr(\"href\"));\r\n }, 500);\r\n }\r\n $(\".print-directions\").off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerAlert(e);\r\n });\r\n $(\".print-directions\").off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerAlert(e);\r\n }\r\n });\r\n $(\".print-directions\").attr(\"href\", \"/Directory/PrintDirections.aspx?lat1=\" + request.origin.lat() + \"&lng1=\" + request.origin.lng() + \"&lat2=\" + request.destination.lat() + \"&lng2=\" + request.destination.lng() + \"&mode=\" + type);\r\n }\r\n });\r\n }\r\n /**************************************/\r\n /* Advanced Search functions */\r\n /**************************************/\r\n function queryStringToJSON() {\r\n if (location.search === \"\")\r\n return null;\r\n var pairs = location.search.slice(1).split('&');\r\n if (pairs.length === 0)\r\n return null;\r\n var result = {};\r\n pairs.forEach(function (item) {\r\n var pair = item.split('=');\r\n if (pair.length > 0) {\r\n result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');\r\n }\r\n });\r\n if (Object.keys(result).length === 0 && JSON.stringify(result) === JSON.stringify({})) {\r\n return null;\r\n }\r\n return JSON.parse(JSON.stringify(result));\r\n }\r\n function jsonToQueryString(obj) {\r\n var keyVal;\r\n var parentKey;\r\n var items = Object.keys(obj).map(function (key) {\r\n switch (key) {\r\n case \"CategoryGroupID\":\r\n case \"CategoryID\":\r\n case \"Council\":\r\n case \"LocationID\":\r\n keyVal = obj[key];\r\n if (!isNaN(keyVal) && parseInt(keyVal) > 0) {\r\n return key.replace(/ID$/i, \"\") + '=' + keyVal;\r\n }\r\n break;\r\n case \"AccreditationsAny\":\r\n case \"AccreditationsRequired\":\r\n case \"TagsAny\":\r\n case \"TagsRequired\":\r\n case \"WhatAny\":\r\n case \"WhatRequired\":\r\n case \"CategoryGroupsRequired\":\r\n parentKey = key.replace(/(Required|Any)$/i, \"\");\r\n keyVal = obj[parentKey] || \"\";\r\n if (keyVal !== \"\") {\r\n return key + '=' + obj[key];\r\n }\r\n break;\r\n case \"WheelchairAccess\":\r\n case \"IsGov\":\r\n case \"DgrStatus\":\r\n case \"Gender\":\r\n case \"ReferralRequired\":\r\n case \"FeeToAccess\":\r\n keyVal = obj[key] || \"\";\r\n if (keyVal !== \"\" && keyVal !== \"Any\") {\r\n return key + '=' + keyVal;\r\n }\r\n break;\r\n default:\r\n keyVal = obj[key] || \"\";\r\n if (keyVal !== \"\") {\r\n return key + '=' + encodeURIComponent(keyVal);\r\n }\r\n break;\r\n }\r\n return null;\r\n });\r\n items = items.filter(function (e) {\r\n return !!e;\r\n });\r\n return items.join('&');\r\n }\r\n function getGroupValue(parent, multiple) {\r\n if (!multiple) {\r\n return $(parent + \" button.active\").data(\"value\") || \"\";\r\n }\r\n else {\r\n var values = [];\r\n $(parent + \" button.active\").each(function (i, v) {\r\n values.push($(this).data(\"value\") || \"\");\r\n });\r\n return values.join(\",\");\r\n }\r\n }\r\n function setGroupValue(parent, value) {\r\n var values = value.split(',');\r\n for (var i = 0; i < values.length; i++) {\r\n $(parent + \" button[data-value='\" + values[i] + \"']\").addClass(\"btn-blue active\");\r\n }\r\n }\r\n function saveAdvancedSearch() {\r\n var thisSearch = new SearchData();\r\n thisSearch.ABN = $(\"#abn\").val() || \"\";\r\n thisSearch.Accreditations = $(\"#accreditations\").val() || \"\";\r\n $(\"#accreditations\").val(\"\");\r\n thisSearch.AccreditationsAny = getGroupValue(\"#accreditationAll\", false) === \"Any\" ? \"true\" : \"false\";\r\n thisSearch.AccreditationsRequired = getGroupValue(\"#accreditationRequired\", false) === \"Required\" ? \"true\" : \"false\";\r\n thisSearch.CategoryGroupID = $(\"#hfCategoryGroupId\").val() || 0;\r\n thisSearch.Council = $(\"#hfCouncilId\").val() || 0;\r\n thisSearch.DgrStatus = getGroupValue(\"#dgr\", false);\r\n thisSearch.Email = $(\"#email\").val() || \"\";\r\n thisSearch.EntityType = $(\"#entityType\").val() || \"\";\r\n thisSearch.FeeToAccess = getGroupValue(\"#fees\", true);\r\n thisSearch.LocationID = $(\"#hfLocationId\").val() || 0;\r\n thisSearch.State = $(\"#hfStateCode\").val() || \"\";\r\n thisSearch.Phone = $(\"#phone\").val() || \"\";\r\n thisSearch.Radius = $(\"#radius\").val() || 50;\r\n thisSearch.ReferralRequired = getGroupValue(\"#referral\", false);\r\n thisSearch.CategoryID = $(\"#hfCategoryId\").val() || 0;\r\n thisSearch.Gender = getGroupValue(\"#gender\", false);\r\n thisSearch.Age = ($(\"#age\").val() || \"\").replace(/\\s+/g, \"\");\r\n thisSearch.IsGov = getGroupValue(\"#gov\", false);\r\n thisSearch.Tags = $(\"#tags\").val() || \"\";\r\n $(\"#tags\").val('');\r\n thisSearch.TagsAny = getGroupValue(\"#tagsAny\", false) === \"Any\" ? \"true\" : \"false\";\r\n thisSearch.TagsRequired = getGroupValue(\"#tagsRequired\", false) === \"Required\" ? \"true\" : \"false\";\r\n thisSearch.Website = $(\"#website\").val() || \"\";\r\n thisSearch.Where = $('#autocomplete-location').val() || \"\";\r\n thisSearch.What = $('#autocomplete-category').val() || \"\";\r\n thisSearch.WhatAny = getGroupValue(\"#whatAny\", false) === \"Any\" ? \"true\" : \"false\";\r\n thisSearch.WhatRequired = getGroupValue(\"#whatRequired\", false) === \"Required\" ? \"true\" : \"false\";\r\n thisSearch.WheelchairAccess = getGroupValue(\"#wheelchair\", false);\r\n thisSearch.UseElasticOptimisation = getGroupValue(\"#elasticOptimisation\", false) === \"Enable\" ? \"true\" : \"false\";\r\n thisSearch.CategoryGroups = $(\"#advancedCategory\").val() || \"\";\r\n $(\"#advancedCategory\").val(\"\");\r\n thisSearch.CategoryGroupsRequired = getGroupValue(\"#categoryRequired\", false) === \"Required\" ? \"true\" : \"false\";\r\n var searchType = getGroupValue(\"#whereBtns\", false);\r\n switch (searchType) {\r\n case \"All\":\r\n thisSearch.Council = 0;\r\n thisSearch.State = \"\";\r\n thisSearch.Where = \"\";\r\n thisSearch.LocationID = 0;\r\n break;\r\n case \"Directory\":\r\n thisSearch.Where = \"\";\r\n thisSearch.LocationID = 0;\r\n break;\r\n case \"Specified\":\r\n thisSearch.Council = 0;\r\n thisSearch.State = \"\";\r\n break;\r\n }\r\n sessionStorage.setItem(\"SavedSearch\", JSON.stringify(thisSearch));\r\n sessionStorage.setItem(\"SearchQuery\", location.search);\r\n return thisSearch;\r\n }\r\n function getSearchValues(councilId) {\r\n var lastQuery = sessionStorage.getItem(\"SearchQuery\");\r\n var savedSearch = new SearchData();\r\n var query = queryStringToJSON();\r\n if ((query === null) || (lastQuery === location.search)) {\r\n savedSearch = JSON.parse(sessionStorage.getItem(\"SavedSearch\")) || new SearchData();\r\n query = {};\r\n }\r\n else {\r\n sessionStorage.setItem(\"SavedSearch\", JSON.stringify({}));\r\n }\r\n var search = new SearchData();\r\n search.ABN = query.abn || savedSearch.ABN || \"\";\r\n search.Accreditations = query.accreditations || savedSearch.Accreditations || \"\";\r\n search.AccreditationsAny = query.accreditationsany || savedSearch.AccreditationsAny || \"true\";\r\n search.AccreditationsRequired = query.accreditationsrequired || savedSearch.AccreditationsRequired || \"true\";\r\n search.CategoryGroupID = query.category || savedSearch.CategoryGroupID || 0;\r\n search.Council = councilId; // We don't get this from the saved search or query string because it is calculated in the controller\r\n search.DgrStatus = query.dgrstatus || savedSearch.DgrStatus || \"Any\";\r\n search.Email = query.email || savedSearch.Email || \"\";\r\n search.EntityType = query.entitytype || savedSearch.EntityType || \"\";\r\n search.FeeToAccess = query.feetoaccess || savedSearch.FeeToAccess || \"Any\";\r\n search.LocationID = query.location || savedSearch.LocationID || 0;\r\n search.State = query.state || savedSearch.State || \"\";\r\n search.Phone = query.phone || savedSearch.Phone || \"\";\r\n search.Radius = query.radius || savedSearch.Radius || 50;\r\n search.ReferralRequired = query.referralrequired || savedSearch.ReferralRequired || \"Any\";\r\n search.CategoryID = query.service || savedSearch.CategoryID || 0;\r\n search.CategoryGroups = query.servicecategories || savedSearch.CategoryGroups || '';\r\n search.CategoryGroupsRequired = query.servicecategoriesrequired || savedSearch.CategoryGroupsRequired || \"true\";\r\n search.Tags = query.tags || savedSearch.Tags || \"\";\r\n search.TagsAny = query.tagsany || savedSearch.TagsAny || \"true\";\r\n search.TagsRequired = query.tagsrequired || savedSearch.TagsRequired || \"true\";\r\n search.Website = query.website || savedSearch.Website || \"\";\r\n search.What = query.what || savedSearch.What || \"\";\r\n search.WhatAny = query.whatany || savedSearch.WhatAny || \"true\";\r\n search.WhatRequired = query.whatrequired || savedSearch.WhatRequired || \"true\";\r\n search.WheelchairAccess = query.wheelchairaccess || savedSearch.WheelchairAccess || \"Any\";\r\n search.Age = query.age || savedSearch.Age || \"\";\r\n search.Gender = query.gender || savedSearch.Gender || \"Any\";\r\n search.IsGov = query.isgov || savedSearch.IsGov || \"Any\";\r\n search.Where = query.where || savedSearch.Where || \"\";\r\n search.UseElasticOptimisation = savedSearch.UseElasticOptimisation || query.useelasticoptimisation || \"\";\r\n return search;\r\n }\r\n function restoreAdvancedSearch(search, useElasticOptimisationDefault) {\r\n $(\"#abn\").val(search.ABN);\r\n $(\"#accreditations\").data(\"selectize-value\", search.Accreditations);\r\n setGroupValue(\"#accreditationAll\", search.AccreditationsAny === \"true\" ? \"Any\" : \"All\");\r\n setGroupValue(\"#accreditationRequired\", search.AccreditationsRequired === \"true\" ? \"Required\" : \"Prefer\");\r\n $(\"#hfCategoryGroupId\").val(search.CategoryGroupID);\r\n //$(\"#hfCouncilId\").val(search.Council);\r\n $(\"#hfStateCode\").val(search.State);\r\n setGroupValue(\"#dgr\", search.DgrStatus); //, \"Any\");\r\n $(\"#email\").val(search.Email);\r\n $(\"#entityType\").val(search.EntityType);\r\n setGroupValue(\"#fees\", search.FeeToAccess);\r\n $(\"#hfLocationId\").val(search.LocationID);\r\n $(\"#phone\").val(search.Phone);\r\n $(\"#radius\").val(search.Radius);\r\n setGroupValue(\"#referral\", search.ReferralRequired);\r\n $(\"#hfCategoryId\").val(search.Service);\r\n $(\"#advancedCategory\").data(\"selectize-value\", search.CategoryGroups);\r\n setGroupValue(\"#categoryRequired\", search.CategoryGroupsRequired === \"true\" ? \"Required\" : \"Prefer\");\r\n $(\"#tags\").data(\"selectize-value\", search.Tags);\r\n setGroupValue(\"#tagsAny\", search.TagsAny === \"true\" ? \"Any\" : \"All\");\r\n setGroupValue(\"#tagsRequired\", search.TagsRequired === \"true\" ? \"Required\" : \"Prefer\");\r\n $(\"#website\").val(search.Website);\r\n $('#autocomplete-category').val(search.What);\r\n setGroupValue(\"#whatAny\", search.WhatAny === \"true\" ? \"Any\" : \"All\");\r\n setGroupValue(\"#whatRequired\", search.WhatRequired === \"true\" ? \"Required\" : \"Prefer\");\r\n setGroupValue(\"#wheelchair\", search.WheelchairAccess);\r\n setGroupValue(\"#gender\", search.Gender);\r\n setGroupValue(\"#gov\", search.IsGov);\r\n if (search.UseElasticOptimisation === \"true\" || search.UseElasticOptimisation === \"false\") {\r\n setGroupValue(\"#elasticOptimisation\", search.UseElasticOptimisation === \"true\" ? \"Enable\" : \"Disable\");\r\n }\r\n else {\r\n setGroupValue(\"#elasticOptimisation\", useElasticOptimisationDefault === \"True\" ? \"Enable\" : \"Disable\");\r\n }\r\n $('#age').val(search.Age);\r\n $('#autocomplete-location').val(search.Where);\r\n if ($(\"#autocomplete-location\").val() === \"\" && parseInt($(\"#hfCouncilId\").val()) > 0) {\r\n $(\"#btnDirectory\").click();\r\n }\r\n $(\"#hintSelfAssessments\").hide();\r\n $(\"#hintTags\").hide();\r\n }\r\n function selectLocation() {\r\n $(this).addClass(\"btn-blue active\");\r\n $(this).parent().siblings().children().removeClass(\"btn-blue active\");\r\n if ($(this).hasClass(\"btn-location\")) {\r\n $(this).closest(\".row\").next().slideDown();\r\n }\r\n else {\r\n $(this).closest(\".row\").next().slideUp();\r\n }\r\n }\r\n function selectOption() {\r\n $(this).addClass('btn-blue active');\r\n $(this).siblings(\".btn\").removeClass(\"btn-blue active\");\r\n $(this).siblings(\"input\").val($(this).text());\r\n }\r\n function selectSetOption() {\r\n var value = \"\";\r\n if ($(this).hasClass('active')) {\r\n $(this).removeClass('btn-blue active');\r\n if ($(this).siblings(\".active\").length === 0) {\r\n $(this).siblings(\".answer-btn\").addClass(\"btn-blue active\");\r\n }\r\n }\r\n else {\r\n $(this).addClass('btn-blue active');\r\n value = $(this).text() + \";\";\r\n $(this).siblings(\".answer-btn\").removeClass(\"btn-blue active\");\r\n }\r\n for (var i = 0; i < $(this).siblings(\".active\").length; i++) {\r\n value += $(this).siblings(\".active\")[i].innerText + \";\";\r\n }\r\n value = value.slice(0, -1);\r\n $(this).siblings(\"input\").val(value);\r\n }\r\n /**************************************/\r\n function clearMap() {\r\n $(\".map-lat\").val(0);\r\n $(\".map-lng\").val(0);\r\n $(\".map-latlng\").empty();\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n }\r\n function showGeocodeResults(place, status, address, geolocationCallback) {\r\n var addr = address;\r\n if (place.address_components) {\r\n if ((place.formatted_address || \"\").length > 0) {\r\n addr = place.formatted_address;\r\n }\r\n else {\r\n addr = [(place.address_components[0] && place.address_components[0].short_name || ''),\r\n (place.address_components[1] && place.address_components[1].short_name || ''),\r\n (place.address_components[2] && place.address_components[2].short_name || '')\r\n ].join(', ');\r\n }\r\n loadMapPlace(place, geolocationCallback);\r\n $('.map-edit-address').show();\r\n }\r\n else {\r\n $('.map-edit-address').hide();\r\n }\r\n markMap(place.geometry.location, '<div><strong>Your Location</strong></div>' + addr);\r\n }\r\n function markMap(latlng, content) {\r\n if (window.InfoWindow)\r\n window.InfoWindow.close();\r\n window.Marker.setVisible(false);\r\n saveLatLng(latlng);\r\n window.MapView.setCenter(latlng);\r\n window.MapView.setZoom(12);\r\n window.Marker.setPosition(latlng);\r\n window.Marker.setVisible(true);\r\n if (window.InfoWindow) {\r\n window.InfoWindow.setContent(content);\r\n window.InfoWindow.setPosition(latlng);\r\n window.InfoWindow.open(window.MapView, window.Marker);\r\n }\r\n }\r\n function setMapAddressReadonly(readonly) {\r\n $(\".map-address1\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n $(\".map-address2\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n $(\".map-suburb\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n $(\".map-state\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n $(\".map-postcode\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n if (readonly) {\r\n // Disable fields - reset button to Edit\r\n $(\".map-edit-address\").addClass(\"btn-success\").text(\"Edit\");\r\n }\r\n else {\r\n // Enable fields - set button to Undo\r\n $(\".map-edit-address\").removeClass(\"btn-success\").text(\"Undo\");\r\n }\r\n }\r\n //function clearMapAddress() {\r\n //\t$(\".map-search\").val(\"\");\r\n //\t$(\".map-address1\").val(\"\");\r\n //\t$(\".map-address2\").val(\"\");\r\n //\t$(\".map-suburb\").val(\"\");\r\n //\t$(\".map-state\").val(\"\");\r\n //\t$(\".map-postcode\").val(\"\");\r\n //}\r\n function loadMapPlace(place, geolocationCallback) {\r\n var su = '';\r\n var a1a = '';\r\n var a1b = '';\r\n var a1 = '';\r\n var a2 = '';\r\n var st = '';\r\n var pc = '';\r\n var sp = '';\r\n var blg = '';\r\n for (var i = 0; i < place.address_components.length; i++) {\r\n switch (place.address_components[i].types[0]) {\r\n case \"floor\":\r\n blg = place.address_components[i].long_name;\r\n break;\r\n case \"establishment\":\r\n blg = place.address_components[i].long_name;\r\n break;\r\n case \"premise\":\r\n blg = place.address_components[i].long_name;\r\n break;\r\n case \"subpremise\":\r\n sp = place.address_components[i].long_name;\r\n break;\r\n case \"street_address\":\r\n a1 = place.address_components[i].long_name;\r\n break;\r\n case \"street_number\":\r\n a1a = place.address_components[i].long_name;\r\n break;\r\n case \"route\":\r\n a1b = place.address_components[i].long_name;\r\n break;\r\n case \"locality\":\r\n su = place.address_components[i].long_name;\r\n break;\r\n case \"administrative_area_level_1\":\r\n st = place.address_components[i].short_name;\r\n break;\r\n case \"postal_code\":\r\n pc = place.address_components[i].short_name;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n saveLatLng(place.geometry.location);\r\n if (a1.length === 0)\r\n a1 = $.trim(a1a + ' ' + a1b);\r\n if (a1.length > 0 || su.length > 0) {\r\n if (sp.length > 0) {\r\n if (/^\\d+[a-zA-Z]?$/.test(sp)) {\r\n a1 = sp + \"/\" + a1;\r\n sp = '';\r\n }\r\n else if (blg.length === 0) {\r\n blg = sp;\r\n }\r\n }\r\n if (blg.length === 0 && place.name && place.types &&\r\n place.types[0] !== \"street_address\" && $.inArray(\"street_address\", place.types) >= 0) {\r\n blg = place.name;\r\n }\r\n $(\".map-search\").val(place.formatted_address);\r\n $(\".map-building\").val($.trim(blg) || \"\");\r\n $(\".map-address1\").val($.trim(a1) || \" \");\r\n $(\".map-address2\").val($.trim(a2) || \" \");\r\n $(\".map-suburb\").val($.trim(su) || \" \");\r\n $(\".map-state\").val($.trim(st) || \" \");\r\n $(\".map-postcode\").val($.trim(pc) || \" \");\r\n setMapAddressReadonly(true);\r\n if (geolocationCallback) {\r\n geolocationCallback();\r\n }\r\n }\r\n }\r\n function saveLatLng(latlng) {\r\n $(\".map-lat\").val(latlng.lat());\r\n $(\".map-lng\").val(latlng.lng());\r\n $(\".map-latlng\").html(\"Lat / Lng : \" + latlng.lat() + \" / \" + latlng.lng());\r\n }\r\n function geocodeLatLng(latlng) {\r\n window.Geocoder.geocode({\r\n location: latlng\r\n }, function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n showGeocodeResults(results[0], status, '');\r\n }\r\n else {\r\n alert('Geocode was not successful for the following reason: ' + status);\r\n }\r\n });\r\n }\r\n function drawMap(mapName, geolocationCallback) {\r\n if (!$(mapName).length) {\r\n return;\r\n }\r\n var lat = $(mapName).data(\"lat\");\r\n var lng = $(mapName).data(\"lng\");\r\n var showMap = $(mapName).data(\"showmap\") || true;\r\n var showMarker = $(mapName).data(\"showmarker\");\r\n var showAddress = $(mapName).data(\"showaddress\");\r\n var html = $(mapName).data(\"html\");\r\n var isStatic = $(mapName).data(\"static\") || false;\r\n var zoom = $(mapName).data(\"zoom\") || 14;\r\n var kml = $(mapName).data(\"kml\") || '';\r\n if (!showMap)\r\n return;\r\n window.MapView = createMapPanel(mapName, lat, lng, zoom, isStatic);\r\n if (kml) {\r\n window.KmlLayer = new google.maps.KmlLayer({\r\n url: kml,\r\n suppressInfoWindows: true,\r\n clickable: false,\r\n map: window.MapView\r\n });\r\n }\r\n else {\r\n if (showMarker) {\r\n window.Marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(lat, lng),\r\n map: window.MapView,\r\n icon: \"/_static/images/map_marker.png\",\r\n html: html\r\n });\r\n window.InfoWindow = new google.maps.InfoWindow();\r\n if (html !== '') {\r\n google.maps.event.addListener(window.Marker, 'click', function () {\r\n window.InfoWindow.setContent(this.html);\r\n window.InfoWindow.open(window.MapView, this);\r\n });\r\n }\r\n }\r\n if (showAddress) {\r\n window.Geocoder = new google.maps.Geocoder();\r\n window.Marker = new google.maps.Marker({\r\n map: window.MapView,\r\n position: null\r\n });\r\n var input = $(\".map-address\").get(0);\r\n window.Autocomplete = new google.maps.places.Autocomplete(input, {\r\n componentRestrictions: {\r\n country: 'au'\r\n }\r\n });\r\n window.Autocomplete.bindTo(\"bounds\", window.MapView);\r\n google.maps.event.addListener(window.MapView, 'click', function (event) {\r\n geocodeLatLng(event.latLng);\r\n });\r\n google.maps.event.addListener(window.Autocomplete, 'place_changed', function () {\r\n clearMap();\r\n var place = window.Autocomplete.getPlace();\r\n if (!place || !place.geometry)\r\n return;\r\n if (place.geometry.viewport) {\r\n window.MapView.fitBounds(place.geometry.viewport);\r\n }\r\n else {\r\n window.MapView.setCenter(place.geometry.location);\r\n }\r\n showGeocodeResults(place, google.maps.GeocoderStatus.OK, '', geolocationCallback);\r\n });\r\n }\r\n }\r\n }\r\n function createMapPanel(mapName, centerLat, centerLng, zoom, isStatic) {\r\n if (!(centerLat || centerLng)) {\r\n centerLat = -27.4984;\r\n centerLng = 152.9712;\r\n }\r\n var mapContainer = $(mapName);\r\n var MY_MAPTYPE_ID = 'custom_style';\r\n var location = new google.maps.LatLng(centerLat, centerLng);\r\n var mapOptions;\r\n mapOptions = {\r\n zoom: zoom || 14,\r\n //center: location,\r\n mapTypeControlOptions: {\r\n style: google.maps.ZoomControlStyle.SMALL,\r\n mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID]\r\n },\r\n mapTypeId: MY_MAPTYPE_ID\r\n };\r\n if (isStatic) {\r\n mapOptions = {\r\n zoom: zoom || 14,\r\n center: location,\r\n mapTypeControlOptions: {\r\n style: google.maps.ZoomControlStyle.SMALL,\r\n mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID]\r\n },\r\n mapTypeId: MY_MAPTYPE_ID,\r\n disableDefaultUI: true,\r\n disableDoubleClickZoom: true,\r\n scrollwheel: false,\r\n draggable: false\r\n };\r\n }\r\n var map = new google.maps.Map(mapContainer[0], mapOptions);\r\n var styledMapOptions = {\r\n name: 'Style'\r\n };\r\n if (mapName === \"#council-ucl-map\" || mapName === \"#amc-map-ucl\") {\r\n var customMapType = new google.maps.StyledMapType([\r\n {\r\n featureType: 'water',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n color: '#d3d3d3',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'transit',\r\n stylers: [\r\n {\r\n color: '#808080',\r\n },\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.highway',\r\n elementType: 'geometry.stroke',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#b3b3b3',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.highway',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n color: '#ffffff',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.local',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#ffffff',\r\n },\r\n {\r\n weight: 1.8,\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.local',\r\n elementType: 'geometry.stroke',\r\n stylers: [\r\n {\r\n color: '#d7d7d7',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n visibility: 'off',\r\n },\r\n {\r\n color: '#ebebeb',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: \"poi\",\r\n elementType: \"labels\",\r\n stylers: [\r\n { visibility: \"off\" }\r\n ]\r\n },\r\n {\r\n featureType: 'administrative',\r\n elementType: 'geometry',\r\n stylers: [\r\n {\r\n color: '#a7a7a7',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.arterial',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n color: '#ffffff',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.arterial',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n color: '#ffffff',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#efefef',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'labels.text.fill',\r\n stylers: [\r\n {\r\n color: '#696969',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'administrative',\r\n elementType: 'labels.text.fill',\r\n stylers: [\r\n {\r\n visibility: 'on',\r\n },\r\n {\r\n color: '#737373',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'labels.icon',\r\n stylers: [\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'labels',\r\n stylers: [\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.arterial',\r\n elementType: 'geometry.stroke',\r\n stylers: [\r\n {\r\n color: '#d6d6d6',\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'labels.icon',\r\n stylers: [\r\n {\r\n visibility: 'off',\r\n },\r\n ],\r\n },\r\n {},\r\n {\r\n featureType: 'poi',\r\n elementType: 'geometry.fill',\r\n stylers: [\r\n {\r\n color: '#dadada',\r\n },\r\n ],\r\n },\r\n ], styledMapOptions);\r\n map.mapTypes.set(MY_MAPTYPE_ID, customMapType);\r\n return map;\r\n }\r\n var customMapType = new google.maps.StyledMapType(Common.Map.GetStandardMapStyle(), styledMapOptions);\r\n map.mapTypes.set(MY_MAPTYPE_ID, customMapType);\r\n return map;\r\n }\r\n // Map for the Item Listing page\r\n function loadMap(mapName, results, showResourceList, searchCenter) {\r\n window.MapView = createMapPanel(mapName);\r\n window.Bounds = new google.maps.LatLngBounds();\r\n var i;\r\n // Clear out any existing map markers\r\n if (typeof window.Markers !== 'undefined') {\r\n for (i = 0; i < window.Markers.length; i++) {\r\n window.Markers[i].setMap(null);\r\n }\r\n }\r\n window.Markers = [];\r\n window.InfoWindow = new google.maps.InfoWindow({});\r\n // Clear out the council map if used.\r\n if (typeof window.CouncilLayer !== 'undefined') {\r\n window.CouncilLayer.setMap(window.MapView);\r\n }\r\n var markerHandler = function () {\r\n window.InfoWindow.setContent(this.html);\r\n window.InfoWindow.open(window.MapView, this);\r\n };\r\n for (i = 0; i < results.length; i++) {\r\n // An example marker\r\n var listing = results[i];\r\n var html = \"<div class='google-result'><div class='contact-details'>\";\r\n if (showResourceList) {\r\n var phone = listing.Outlet.Phone || \"\";\r\n var pstripped = phone.replace(/[^0-9]+/g, \"\");\r\n if (pstripped.length > 0) {\r\n html += \"<p class='icon icon-phone60'><a href='tel:\" + pstripped + \"'>\" + phone + \"</a></p>\";\r\n }\r\n else if (phone.substr(0, 2) === \"--\") {\r\n html += \"<p class='icon icon-phone60'>\" + value + \"</p>\";\r\n }\r\n var value = listing.Outlet.DisplayAddress || \"\";\r\n var inner = \"--not supplied--\";\r\n if (value.length > 0) {\r\n if (value.substr(0, 2) === \"--\") {\r\n inner = value;\r\n }\r\n else {\r\n inner = \"<a href='https://maps.google.com/?q=\" + encodeURIComponent(value) + \"' target='_blank'>\" + value + \"</a>\";\r\n }\r\n }\r\n html += \"<p class='icon icon-map15'>\" + inner + \"</p>\";\r\n }\r\n else {\r\n html += \"<p class='icon icon-phone60'><a href='\" + listing.Url + \"' class='btn btn-small btn-blue'>Contact Us</a></p>\";\r\n html += \"<p class='icon icon-map15'>\" + listing.Outlet.Suburb + \"</p>\";\r\n }\r\n if (searchCenter !== 'undefined' && searchCenter !== '') {\r\n html += \"<p class='icon icon-podcast distance'>\" + listing.Distance + \" from the centre of \" + searchCenter + \"</p>\";\r\n }\r\n html += \"</div></div>\";\r\n if (listing.Outlet.MapLocation.ShowMarker) {\r\n var marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(listing.Outlet.MapLocation.Lat, listing.Outlet.MapLocation.Lng),\r\n map: window.MapView,\r\n icon: \"/_static/images/map_marker.png\",\r\n html: \"<h3 class=\\\"h5 orange\\\"><a href=\\\"\" + listing.Url + \"\\\">\" + listing.Outlet.Nickname + \"</a></h3>\" + html\r\n });\r\n window.Bounds.extend(marker.getPosition());\r\n google.maps.event.addListener(marker, 'click', markerHandler);\r\n window.Markers[window.Markers.length] = marker;\r\n }\r\n }\r\n if (window.Markers.length === 0) {\r\n if (window.CurrentCouncil) {\r\n window.CouncilLayer = new google.maps.KmlLayer({\r\n url: window.CurrentCouncil.KmlLocation\r\n });\r\n window.CouncilLayer.setMap(window.MapView);\r\n }\r\n }\r\n else {\r\n Common.Map.FitMapBounds(window.MapView, window.Bounds);\r\n }\r\n }\r\n function displayResults(data, performKeyWordSearch, showResourceList) {\r\n aria.Utils.AriaAlert(\"Showing search results\", 2);\r\n Common.SetupConverters();\r\n var resultsWithAds = data.Results;\r\n // Don't modify incoming array\r\n if (data.AdResults.length > 0 && data.Results.length >= 1) {\r\n // Merge ad into list of results\r\n resultsWithAds = data.Results.slice(0, data.Results.length);\r\n for (var i = 0; i < data.AdResults.length; i++) {\r\n resultsWithAds.splice(i + 1, 0, data.AdResults[i]);\r\n }\r\n $(\"#categoryAds\").html($(\"#categoryAdTemplate\").render(data.AdResults));\r\n }\r\n var combinedResults = performKeyWordSearch ? data.KeywordSearchResults.concat(resultsWithAds) : resultsWithAds;\r\n var results = $(\"#resultsTemplate\").render(combinedResults, {\r\n criteria: data.Criteria || {}\r\n });\r\n var $results = $(\"<div/>\").html(results);\r\n $(\".nofollow\", $results).removeAttr(\"rel\");\r\n results = $results.html();\r\n $(\"#results\").html(results);\r\n if ($('#similar-listings').length <= 0) { // ignore hack\r\n $(\"#results\").attr(\"aria-rowcount\", $(\"#results .search-result\").length);\r\n }\r\n if (data.Criteria.ForceExpandSearch && data.Results.length > 0) {\r\n $(\".section-search-listing:not(.organisation) .expanded-listings\").show();\r\n }\r\n else if (data.Results.length < 10) {\r\n $(\".section-search-listing:not(.organisation) .low-listings\").show();\r\n }\r\n if ($('#search-map').length > 0) {\r\n Common.Map.LoadMapMarkers(\"#search-map\", data.Results, showResourceList, data.Criteria.Where);\r\n }\r\n if (data.Results.length === 0) {\r\n //$(\".view-toggles\").hide();\r\n if (data.KeywordSearchResults.length !== 0) {\r\n // Add a little space between keyword search results and expand your search area\r\n $(\".extend-your-search\").prepend(\"<div style='margin-top:30px;'/>\");\r\n }\r\n }\r\n }\r\n function displayResultsPagination(crit, loggedIn, pageResults, totalPages, pageSize, favouriteModalUrl, showExpandSearch) {\r\n var pageLinks = '';\r\n var pageNo = crit.PageNo;\r\n var numberOfPages = Math.floor(totalPages / pageSize);\r\n if (totalPages % pageSize > 0)\r\n numberOfPages++;\r\n if (numberOfPages <= 1 || typeof pageNo === \"undefined\") {\r\n $(\".mcd-pagination\").hide();\r\n $(\".search-expand\").toggleClass(\"margin-top-30\", pageResults > 0);\r\n return;\r\n }\r\n var startPage = 1;\r\n var endPage = numberOfPages;\r\n var maxDisplayPages = 11;\r\n if (numberOfPages > maxDisplayPages) {\r\n startPage = pageNo - Math.floor((maxDisplayPages - 1) / 2);\r\n if (startPage <= 0)\r\n startPage = 1;\r\n endPage = startPage + maxDisplayPages;\r\n if (endPage > numberOfPages) {\r\n endPage = numberOfPages;\r\n startPage = endPage - maxDisplayPages;\r\n }\r\n }\r\n if (pageNo > 1) {\r\n if (pageNo > numberOfPages) {\r\n pageLinks += '<a data-page=\"' + numberOfPages + '\" class=\"pickPage previous\" tabindex=\"0\" aria-label=\"See previous page of results\">Previous</a>';\r\n }\r\n else {\r\n pageLinks += '<a data-page=\"' + (pageNo - 1) + '\" class=\"pickPage previous\" tabindex=\"0\" aria-label=\"See previous page of results\">Previous</a>';\r\n }\r\n }\r\n if (startPage > 1) {\r\n pageLinks += '<a data-page=\"1\" class=\"number pickPage\" tabindex=\"0\" aria-label=\"Show results (page 1 of ' + numberOfPages + '\">1</a> ... ';\r\n }\r\n for (var i = startPage; i <= endPage; i++) {\r\n pageLinks += '<a data-page=\"' + i + '\" class=\"number ' + (i === pageNo ? 'current' : 'pickPage') + '\" tabindex=\"0\" aria-label=\"' + (i === pageNo ? 'Page ' + i + ' of ' + numberOfPages : ' Show results (page ' + i + ' of ' + numberOfPages + ')') + '\">' + i + '</a>';\r\n }\r\n if (endPage < numberOfPages) {\r\n pageLinks += ' ... <a data-page=\"' + numberOfPages + '\" class=\"number pickPage\" tabindex=\"0\" aria-label=\"Show results (page ' + numberOfPages + ' of ' + numberOfPages + ')\">' + numberOfPages + '</a>';\r\n }\r\n if (numberOfPages > pageNo) {\r\n pageLinks += '<a data-page=\"' + (pageNo + 1) + '\" class=\"pickPage next\" tabindex=\"0\" aria-label=\"See next page of results\">Next</a>';\r\n }\r\n var pages;\r\n if (pageNo > numberOfPages) {\r\n pages = '<p tabindex=\"0\">Beyond the ' + numberOfPages + ' pages of results</p>';\r\n }\r\n else {\r\n pages = '<p tabindex=\"0\">Page ' + pageNo + ' of ' + numberOfPages + '</p>';\r\n }\r\n pages += '<div class=\"pagination-links\">' + pageLinks + '</div>';\r\n if (showExpandSearch) {\r\n if (/(bot|crawler|crawling|spider|robot|slurp)\\b/i.test(navigator.userAgent)) {\r\n // Always disable for bots\r\n $(\".btn-expand-search\").hide();\r\n }\r\n else {\r\n $(\".btn-expand-search\").show();\r\n }\r\n }\r\n else {\r\n $(\".btn-expand-search\").hide();\r\n }\r\n $(\".search-expand\").removeClass(\"margin-top-30\").show();\r\n $('.mcd-pagination').html(pages).show();\r\n $(\".mcd-pagination .pickPage\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n $(\"html, body\").animate({\r\n scrollTop: 0\r\n }, \"slow\");\r\n crit.PageNo = $(this).data(\"page\");\r\n //if (ga) {\r\n //ga('send', 'event', 'button', 'click', 'page', crit.PageNo);\r\n //}\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn);\r\n });\r\n if (window.history && window.history.pushState && crit.OrigUrl && crit.OrigParams) {\r\n var newParams = jQuery.extend({}, crit.OrigParams);\r\n newParams.PageNo = crit.PageNo;\r\n var str = [];\r\n for (var p in newParams) {\r\n if (newParams.hasOwnProperty(p)) {\r\n str.push(p + \"=\" + newParams[p]);\r\n }\r\n }\r\n var newUrl = crit.OrigUrl + \"?\" + str.join(\"&\");\r\n window.history.pushState(jQuery.extend({}, crit), (crit.OrigTitle || \"\") + \" (page \" + crit.PageNo + \")\", newUrl);\r\n }\r\n }\r\n function displayOtherResultsSummary(data) {\r\n var summary = \"<strong>No Result</strong>\";\r\n if (data.Criteria.Council.CouncilRegionID > 0) {\r\n summary += \" in the \" + data.Criteria.Council.DisplayNameCouncil + \" region\";\r\n }\r\n else {\r\n if (data.Criteria.AffiliateSite.Loaded) {\r\n summary += \" in the \" + data.Criteria.AffiliateSite.Name + \" region\";\r\n }\r\n }\r\n summary += \"</br>However, we found a few results which might be close to the region \";\r\n $(\".search-summary\").html(summary);\r\n $(\".advanced-search-btn\").on('click touchend', function (e) {\r\n e.preventDefault();\r\n var tempUrl = \"/Search/Advanced\" + location.search;\r\n window.location.href = tempUrl;\r\n });\r\n }\r\n function displayResultsSummary(data) {\r\n var summary = \"<strong>\" + Common.AddCommas(data.Total) + \" Result\" + (data.Total === 1 ? \"\" : \"s\") + \"</strong> for \";\r\n if (data.Criteria.CategoryGroup.ID === 0 && data.Criteria.Category.ID === 0) {\r\n if (data.Criteria.What === '' || data.Criteria.Locality.LocalityID === 0) {\r\n summary += \"everything \";\r\n }\r\n else {\r\n summary += \"'\" + data.Criteria.What + \"' \";\r\n }\r\n }\r\n else {\r\n if (data.Criteria.Category.ID === 0) {\r\n summary += \"All \" + data.Criteria.CategoryGroup.Name + \" \";\r\n }\r\n else {\r\n summary += data.Criteria.Category.Name + \" \";\r\n }\r\n }\r\n if (data.Criteria.Locality.LocalityID === 0) {\r\n // If has council ID, not showing where text in summary\r\n if (data.Criteria.Where !== '' && data.Criteria.Council.CouncilRegionID === 0) {\r\n summary += data.Criteria.Radius + \"km from \" + data.Criteria.Where;\r\n }\r\n }\r\n else {\r\n summary += data.Criteria.Radius + \"km from \" + data.Criteria.Locality.Name;\r\n }\r\n if (data.Criteria.Council.CouncilRegionID > 0) {\r\n summary += \" in the \" + data.Criteria.Council.DisplayNameCouncil + \" region\";\r\n }\r\n else {\r\n if (data.Criteria.AffiliateSite.Loaded) {\r\n summary += \" in the \" + data.Criteria.AffiliateSite.Name + \" region\";\r\n }\r\n }\r\n if (data.Criteria.IsAdvanced) {\r\n summary += \" <i>with <a href='#' class='advanced-search-btn'>advanced criteria</a><i>\";\r\n }\r\n $(\".search-summary\").html(summary);\r\n $(\".advanced-search-btn\").on('click touchend', function (e) {\r\n e.preventDefault();\r\n var tempUrl = \"/Search/Advanced\" + location.search;\r\n window.location.href = tempUrl;\r\n });\r\n }\r\n function displayExtraInformation() {\r\n $(\".next-appt\").each(function (i, element) {\r\n var outletId = $(this).data(\"outlet-id\");\r\n var listingId = $(this).data(\"listing-id\");\r\n var healthEngineId = $(this).data(\"healthengine-id\");\r\n var healthEngineStatus = $(this).data(\"healthengine-status\") || \"-\";\r\n if (outletId && healthEngineId) {\r\n $.getJSON(\"/api/Outlets/GetNextBooking/\" + outletId + \"/\" + listingId + \"/\" + healthEngineId + \"/\" + healthEngineStatus, function (data) {\r\n if (data && data.OutletID) {\r\n $(element).html($(\"#nextAppointmentTemplate\").render(data));\r\n }\r\n else {\r\n $(element).hide();\r\n }\r\n });\r\n }\r\n //if (bookingType && appointmentUrl) {\r\n // console.log(appointmentUrl)\r\n // $(element).html($(\"#bookingTemplate\").render(appointmentUrl));\r\n //}\r\n });\r\n $(\".book-appt\").each(function (i, element) {\r\n var bookingType = $(this).data(\"booking-type\");\r\n var appointmentUrl = $(this).data(\"booking-url\");\r\n var backgroundColor = (appointmentUrl.includes('healthengine')) ? \"#0176be\" : \"#d14905\";\r\n var display = (appointmentUrl.includes('healthengine')) ? \"block\" : \"none\";\r\n if (appointmentUrl) {\r\n $(element).html($(\"#bookingTemplate\").render({\r\n appointmentUrl: appointmentUrl,\r\n bookingType: bookingType,\r\n backgroundColor: backgroundColor,\r\n display: display\r\n }));\r\n }\r\n else {\r\n $(element).hide();\r\n }\r\n });\r\n var ids = [];\r\n $(\".badges-search\").each(function () {\r\n var id = $(this).data(\"id\");\r\n if (id) {\r\n ids.push(id);\r\n }\r\n });\r\n if (ids.length > 0) {\r\n $.ajax({\r\n url: \"/api/Search/GetServiceBadges\",\r\n data: {\r\n ids: ids\r\n },\r\n dataType: \"json\",\r\n type: \"POST\",\r\n success: function (data) {\r\n $(\".badges-search\").each(function () {\r\n var id = $(this).data(\"id\");\r\n if (id && data[id]) {\r\n var template = $(\"#badgesTemplate\").render(data[id]);\r\n var $template = $(\"<div/>\").html(template);\r\n $(\".nofollow\", $template).removeAttr(\"rel\");\r\n template = $template.html();\r\n $(this).html(template);\r\n }\r\n else {\r\n $(this).hide();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n function loadNearby(outletId, orgId, pageNumber) {\r\n $(\".nearby-locations .loadMore\").remove();\r\n $(\".nearby-locations .processing\").show();\r\n $.getJSON(\"/api/Outlets/Nearby/\" + outletId + \"/\" + pageNumber, function (data) {\r\n $(\".nearby-locations .processing\").remove();\r\n if (data.Results.length !== 0) {\r\n $(\".nearby-locations-content .placeholder\").replaceWith(\"\" + $(\"#nearbyTemplate\").render(data));\r\n }\r\n });\r\n }\r\n function drawOrgChart(data) {\r\n var formatter = new google.visualization.NumberFormat({\r\n pattern: '###,###'\r\n });\r\n formatter.format(data, 1);\r\n var options = {\r\n height: 300,\r\n //width: '100%',\r\n chartArea: {\r\n left: 0,\r\n top: 0,\r\n width: \"100%\",\r\n height: \"100%\"\r\n }\r\n };\r\n var chart = new google.visualization.PieChart(document.getElementById('orgtypes'));\r\n chart.draw(data, options);\r\n }\r\n function drawOrgMap(data) {\r\n var formatter = new google.visualization.NumberFormat({\r\n pattern: '###,###'\r\n });\r\n formatter.format(data, 2);\r\n var options = {\r\n region: \"AU\",\r\n dataMode: \"markers\"\r\n };\r\n var chart = new google.visualization.GeoMap(document.getElementById('orgmap'));\r\n chart.draw(data, options);\r\n }\r\n function drawServiceChart(data) {\r\n var formatter = new google.visualization.NumberFormat({\r\n pattern: '###,###'\r\n });\r\n formatter.format(data, 1);\r\n var options = {\r\n height: 300,\r\n //width: '100%',\r\n chartArea: {\r\n left: 0,\r\n top: 0,\r\n width: \"100%\",\r\n height: \"100%\"\r\n }\r\n };\r\n var chart = new google.visualization.PieChart(document.getElementById('servicetypes'));\r\n chart.draw(data, options);\r\n }\r\n function showRemaining(control, maxlength, limitcontrol) {\r\n var setLimit = function () {\r\n var l = ($(control).val() || \"\").length;\r\n var left = (maxlength - l);\r\n if (left < 0)\r\n left = 0;\r\n $(limitcontrol).text(left + ' characters left');\r\n };\r\n $(control).on('keyup', setLimit);\r\n setLimit();\r\n }\r\n var _pendingAbn = false;\r\n function getAbnDetails(abn, onSuccess) {\r\n if ((abn || \"\").length === 0 || abn === \"N/A\")\r\n return;\r\n _pendingAbn = true;\r\n clearMatchedOrgs();\r\n $('.org-unregisteredname').hide();\r\n $('.org-registerednames').show().data(\"shown\", true);\r\n $('.org-spinner').show();\r\n $.ajax({\r\n url: '/api/Outlets/AbnValidation',\r\n data: JSON.stringify({\r\n Abn: abn\r\n }),\r\n dataType: \"json\",\r\n type: \"POST\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (data) {\r\n var tradingNames = $('.org-validated-tradingnames');\r\n tradingNames.empty();\r\n if (data.ABNFound) {\r\n $('.org-entered-abn').val(data.ABN);\r\n $('.org-validated-abn').val(data.ABN);\r\n $('.org-validated-legalname').val(data.LegalName);\r\n if (data.AvailableTradingNames.length === 0) {\r\n tradingNames.append($(\"<option />\", {\r\n value: '',\r\n text: \" -- none listed -- \"\r\n }));\r\n tradingNames.val('');\r\n tradingNames.attr(\"readonly\", \"readonly\");\r\n }\r\n else {\r\n //don't forget error handling!\r\n for (var i = 0; i < data.AvailableTradingNames.length; i++) {\r\n var name = data.AvailableTradingNames[i];\r\n tradingNames.append($(\"<option />\", {\r\n value: name,\r\n text: name\r\n }));\r\n }\r\n tradingNames.val(data.TradingName);\r\n tradingNames.removeAttr(\"readonly\");\r\n }\r\n $('.org-validated-entitytype').val(data.EntityType);\r\n $('.org-validated-gstreg').prop(\"checked\", data.GSTRegistered);\r\n $('.org-validated-dgrstatus').prop(\"checked\", data.DGRStatus);\r\n $('.org-validated-charity').prop(\"checked\", data.RegisteredCharity);\r\n $('.org-preferredname').val(data.TradingName === '' ? data.LegalName : data.TradingName);\r\n $('.org-preferredname').removeAttr(\"readonly\");\r\n if (onSuccess)\r\n onSuccess(data);\r\n }\r\n else {\r\n $('.org-validated-abn').val(\"\");\r\n $('.org-validated-legalname').val('');\r\n tradingNames.append($(\"<option />\", {\r\n value: '',\r\n text: \" -- none listed --\"\r\n }));\r\n tradingNames.val('');\r\n tradingNames.attr(\"readonly\", \"readonly\");\r\n $('.org-validated-entitytype').val('');\r\n $('.org-validated-gstreg').prop(\"checked\", false);\r\n $('.org-validated-dgrstatus').prop(\"checked\", false);\r\n $('.org-validated-charity').prop(\"checked\", false);\r\n $('.org-preferredname').val('');\r\n $('.org-preferredname').attr(\"readonly\", \"readonly\");\r\n }\r\n getMatchedOrgs();\r\n },\r\n complete: function () {\r\n _pendingAbn = false;\r\n $('.org-spinner').hide();\r\n $('.org-entered-abn').valid();\r\n }\r\n });\r\n }\r\n function showFoundOrgs(orgs) {\r\n var found = false;\r\n if (orgs.length && orgs.length > 0) {\r\n var html = \"\";\r\n for (var orgNum = 0; orgNum < orgs.length; orgNum++) {\r\n var org = orgs[orgNum];\r\n var orgName = org.DisplayName;\r\n var orgId = org.OrganisationID;\r\n var numOutlets = org.Outlets.length;\r\n $(\".org-matched-select\").append($(\"<option />\").val(orgId).text(orgName));\r\n html += \"<div style=\\\"padding-left: 10px;\\\">\";\r\n html += \"<p class=\\\"small\\\" style=\\\"margin-bottom:0;\\\"><strong>\" + orgName + \"</strong></p>\";\r\n if (numOutlets > 0) {\r\n html += \"<p class=\\\"small\\\" style=\\\"margin-bottom:0;\\\">With the following outlet\" + (numOutlets > 1 ? \"s\" : \"\") + \":</p><ul>\";\r\n for (var a = 0; a < numOutlets; a++) {\r\n html += \"<li class=\\\"small\\\" >\" + org.Outlets[a].Nickname + \", \" + org.Outlets[a].Suburb + \"</li>\";\r\n }\r\n html += \"</ul>\";\r\n }\r\n html += \"</div>\";\r\n if (orgs.length === 1) {\r\n $(\".org-matched-select\").val(orgId);\r\n }\r\n }\r\n $('.org-existing-selection').hide();\r\n $(\".org-matched-info\").html(html);\r\n $(\".org-matched-is-listed\").prop('checked', false);\r\n found = true;\r\n }\r\n $(\".org-matched\").toggle(found);\r\n }\r\n function clearMatchedOrgs() {\r\n $(\"org-matched-list\").empty();\r\n $(\".org-matched-select\").html(\"<option value=''>Choose an organisation ...</option>\").val(\"\");\r\n $('.org-matched').hide();\r\n }\r\n function getMatchedOrgs() {\r\n var newAbn = $('.org-validated-abn').val();\r\n var newName = $('.org-tradingnames-unverified').val();\r\n $('.org-matched-select').val(\"\");\r\n if ($('.org-noabn').is(':checked')) {\r\n newAbn = \"\";\r\n if (newName.length < 3) {\r\n $.msgGrowl({\r\n type: 'error',\r\n title: 'Name Invalid',\r\n position: 'bottom-right',\r\n text: 'You must enter in a name with 3 or more characters.'\r\n });\r\n return;\r\n }\r\n }\r\n else\r\n newName = \"\";\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/api/Outlets/FindOrganisations\",\r\n data: JSON.stringify({\r\n Abn: newAbn,\r\n TradingName: newName\r\n }),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (data) {\r\n showFoundOrgs(data);\r\n }\r\n });\r\n }\r\n function addAbnValidation() {\r\n $.validator.addMethod(\"abn\", function (value, element) {\r\n if ($(\".org-noabn\").is(\"checked\")) {\r\n return true;\r\n }\r\n if (_pendingAbn)\r\n return \"pending\";\r\n var validatedAbn = $(\".org-validated-abn\").val();\r\n return this.optional(element) || value === \"N/A\" || ((validatedAbn || \"\").length > 0 && value === validatedAbn);\r\n }, \"Please enter a valid ABN.\");\r\n }\r\n function initHtmlEditor(control) {\r\n CKEDITOR.replace(control, {\r\n removeButtons: \"Source,About\",\r\n removePlugins: \"elementspath\",\r\n height: \"300px\",\r\n enterMode: CKEDITOR.ENTER_P,\r\n htmlEncodeOutput: true\r\n });\r\n }\r\n function initPasswordStrength() {\r\n var popoverOptions = {\r\n html: true,\r\n content: \"<div class='popover-verdict'>\" +\r\n \" <div><strong>Password strength:</strong> <span id='password-verdict'>Invalid</span>\" +\r\n \"</div>\" +\r\n \"<div id='password-strength'>\" +\r\n \" <div class='progress'></div>\" +\r\n \"</div>\" +\r\n \"<p>Use at least 6 characters without spaces. To protect your data we recommend choosing a strong password.</p>\",\r\n template: \"<div class='popover password-tip' role='tooltip'>\" +\r\n \" <div class='arrow'></div>\" +\r\n \" <div class='popover-content'></div>\" +\r\n \"</div>\",\r\n placement: function () {\r\n return $(window).width() < 900 ? \"top\" : \"right\";\r\n },\r\n trigger: \"click hover focus\"\r\n };\r\n $(\"#Password\").popover(popoverOptions);\r\n var options = {};\r\n options[\"common\"] = {\r\n usernameField: \"#password-ignore\",\r\n zxcvbn: true // https://blogs.dropbox.com/tech/2012/04/zxcvbn-realistic-password-strength-estimation/\r\n };\r\n options[\"ui\"] = {\r\n viewports: {\r\n progress: \"#password-strength\",\r\n verdict: \"#password-verdict\" // override where password verdict is shown\r\n }\r\n };\r\n var pwInitialised = false;\r\n $(\"#Password\").off(\"shown.bs.popover\").on(\"shown.bs.popover\", function () {\r\n $(\"#Password\").off(\"keyup click\").on(\"keyup click\", function () {\r\n if (pwInitialised && !$(\"#Password\").valid()) {\r\n pwInitialised = false;\r\n $(\"#Password\").pwstrength(\"destroy\");\r\n $(\"#password-strength\").append($(\"<div>\").addClass(\"progress\"));\r\n $(\"#password-verdict\").html(\"Not valid\");\r\n }\r\n else if (!pwInitialised) {\r\n pwInitialised = true;\r\n $(\"#password-strength .progress\").remove();\r\n $(\"#password-verdict\").html(\"\");\r\n $(\"#Password\").pwstrength(options);\r\n }\r\n });\r\n });\r\n $(\"#Password\").off(\"hide.bs.popover\").on(\"hide.bs.popover\", function () {\r\n if (pwInitialised) {\r\n pwInitialised = false;\r\n $(\"#Password\").pwstrength(\"destroy\");\r\n $(\"#password-strength\").append($(\"<div>\").addClass(\"progress\"));\r\n $(\"#password-verdict\").html(\"Not valid\");\r\n }\r\n });\r\n }\r\n function setupCommentNotificationsDefaults() {\r\n $.notifyDefaults({\r\n delay: 5000,\r\n timer: 500,\r\n allow_dismiss: true,\r\n newest_on_top: true,\r\n mouse_over: 'pause',\r\n template: '<div data-notify=\"container\" class=\"col-xs-11 col-sm-3 alert alert-{0}\" role=\"alert\">' +\r\n '<button type=\"button\" aria-hidden=\"true\" class=\"close\" data-notify=\"dismiss\">×</button>' +\r\n '<span data-notify=\"icon\"></span>' +\r\n '<div class=\"content\"><span data-notify=\"title\">{1}</span>' +\r\n '<span data-notify=\"message\">{2}</span></div>' +\r\n '<div class=\"progress\" data-notify=\"progressbar\">' +\r\n '<div class=\"progress-bar progress-bar-{0}\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 0%;\"></div></div>' +\r\n '</div>'\r\n });\r\n }\r\n var loadingInterval;\r\n function showLoadingComments() {\r\n $(\"#comments-processing\").show();\r\n $(\"#comments-error\").hide();\r\n $(\"#more-comments\").attr(\"disabled\", \"disabled\");\r\n $(\"#comments\").addClass(\"opaque\");\r\n var i = 0;\r\n var text = \"loading comments\";\r\n loadingInterval = setInterval(function () {\r\n $(\"#loading\").html(text + Array((++i % 4) + 1).join(\".\"));\r\n }, 500);\r\n // hide all existing tooltips\r\n var tooltips = $(\".qtip\");\r\n if (tooltips.length > 0) {\r\n tooltips.each(function () {\r\n $(this).qtip(\"api\").toggle(false);\r\n });\r\n }\r\n }\r\n function finishLoadingComments() {\r\n $(\"#comments-processing\").hide();\r\n $(\"#comments\").removeClass(\"opaque\");\r\n clearInterval(loadingInterval);\r\n }\r\n function showEditComment(commentId) {\r\n $(\"#comment-\" + commentId + \" .comment-text\").hide();\r\n $(\"#comment-\" + commentId + \" .comment-flags\").hide();\r\n $(\"#comment-\" + commentId + \" .edit-comment\").show();\r\n $(\"#comment-\" + commentId + \" textarea\").focus();\r\n $(\"#comment-\" + commentId + \" .edit-comment-flags input\").bootstrapToggle();\r\n }\r\n function hideEditComment(commentId) {\r\n $(\"#comment-\" + commentId + \" .edit-comment\").hide();\r\n $(\"#comment-\" + commentId + \" .comment-flags\").show();\r\n $(\"#comment-\" + commentId + \" .comment-text\").show();\r\n }\r\n function updateComment(target, orgCommentsUrl) {\r\n var commentId = target.data(\"comment\");\r\n target.attr(\"disabled\", \"disabled\");\r\n showLoadingComments();\r\n hideEditComment(commentId);\r\n setupCommentNotificationsDefaults();\r\n var selectedFlags = $.makeArray($(\"input:checked\", target.closest(\".panel\")).map(function () {\r\n return $(this).data(\"value\");\r\n }));\r\n var model = {\r\n Id: commentId,\r\n UpdatedComment: $(\"#comment-\" + commentId + \" textarea\").val(),\r\n CommentFlags: selectedFlags.join(\",\")\r\n };\r\n // only send back if data changed\r\n var original = $(\"#comment-\" + commentId + \" textarea\").data(\"original\");\r\n var flags = $(\"#comment-\" + commentId + \" textarea\").data(\"flags\");\r\n if (model.UpdatedComment !== original || model.CommentFlags !== flags) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: window.AppSettings.ApiUrl + \"/api/v1/organisationcomments/save\",\r\n data: JSON.stringify(model),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (data) {\r\n var hasError = false;\r\n for (var i = 0; i < data.length; i++) {\r\n var result = data[i];\r\n if (!result.Success) {\r\n $.notify({\r\n title: \"Ooops\",\r\n message: result.Message,\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"warning\"\r\n });\r\n hasError = true;\r\n }\r\n else {\r\n $.notify({\r\n title: \"Success\",\r\n message: \"Successfully saved comment \",\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n }\r\n }\r\n if (!hasError) {\r\n reloadComments(1, orgCommentsUrl, \"#comment-text\");\r\n target.data(\"original\", model.UpdatedComment);\r\n target.data(\"flags\", model.CommentFlags);\r\n }\r\n },\r\n error: function () {\r\n $.notify({\r\n title: \"Dang It\",\r\n message: \"There was an error trying to update this comment.\",\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"danger\"\r\n });\r\n },\r\n complete: function () {\r\n target.removeAttr(\"disabled\");\r\n finishLoadingComments();\r\n }\r\n });\r\n }\r\n else {\r\n target.removeAttr(\"disabled\");\r\n finishLoadingComments();\r\n }\r\n }\r\n function reloadComments(pageNumber, orgCommentsUrl, focusedSelector) {\r\n showLoadingComments();\r\n $.ajax({\r\n type: \"GET\",\r\n cache: false,\r\n url: orgCommentsUrl.replace(\"{pageNumber}\", pageNumber.toString()),\r\n success: function (data) {\r\n if (!data)\r\n return;\r\n if ($(\"#organisationCommentsTemplate\").length <= 0)\r\n return;\r\n var template = $(\"#organisationCommentsTemplate\").render(data);\r\n var $template = $(\"<div/>\").html(template);\r\n $(\".nofollow\", $template).removeAttr(\"rel\");\r\n template = $template.html();\r\n $(\"#comments\").html(pageNumber > 1 ? $(\"#comments\").html() + template : template);\r\n // reset existing tooltips\r\n $(\"#comments [data-hasqtip]\").each(function () {\r\n $(this).attr(\"title\", $(this).attr(\"oldtitle\"));\r\n });\r\n Common.SetupTooltipsStyling();\r\n $(\"#more-comments\").removeAttr(\"disabled\");\r\n $(\"#more-comments\").data(\"page-number\", pageNumber);\r\n $(\"#more-comments\").toggle(data.CanShowMoreResults);\r\n $(\"#comments\").attr(\"aria-rowcount\", $(\"#comments .panel\").length);\r\n if (data.OrganisationComments.length > 0) {\r\n setupSearchResultsAria(document.getElementById(\"comments\"), focusedSelector);\r\n }\r\n var isDragging = false;\r\n // detect clicks outside of edit comment box -- resize needs to be detected here\r\n $(document).on(\"mouseup\", function (e) {\r\n var wasDragging = isDragging;\r\n isDragging = false;\r\n var editVisible = $(\".edit-comment:visible\");\r\n if (editVisible.length === 0 || wasDragging) {\r\n return;\r\n }\r\n var commentId = editVisible.data(\"comment\");\r\n var container = $(\"#comment-\" + commentId);\r\n if (!container.is(e.target) && container.has(e.target).length === 0) {\r\n hideEditComment(commentId);\r\n $(\"#comment-\" + commentId + \" textarea\").val($(\"#comment-\" + commentId + \" textarea\").data(\"original\"));\r\n }\r\n });\r\n // specifically handle click and drag behaviour to avoid triggering clicking outside of edit box in this case\r\n $(\".edit-comment textarea\").on(\"mousedown\", function () {\r\n isDragging = true;\r\n });\r\n $(\".edit-comment-controls .no\").on(\"click\", function () {\r\n var commentId = $(this).data(\"comment\");\r\n hideEditComment(commentId);\r\n $(\"#comment-\" + commentId + \" textarea\").val($(\"#comment-\" + commentId + \" textarea\").data(\"original\"));\r\n });\r\n $(\".edit-comment-controls .yes\").on(\"click\", function () {\r\n updateComment($(this), orgCommentsUrl);\r\n });\r\n $(\".edit-comment textarea\").on(\"keyup\", function (e) {\r\n var target = $(e.target);\r\n if (e.which === 13 && target.val().length) { // user hit ENTER\r\n updateComment(target, orgCommentsUrl);\r\n }\r\n else if (e.which === 27) { // user hit escape\r\n $(\".edit-comment-controls .no\").trigger(\"click\");\r\n }\r\n });\r\n },\r\n error: function () {\r\n $(\"#comments-error\").show();\r\n },\r\n complete: function () {\r\n finishLoadingComments();\r\n }\r\n });\r\n }\r\n function showComments(orgCommentsUrl, organisationId, outletId, outletServiceId) {\r\n reloadComments(1, orgCommentsUrl, null);\r\n var selector = \"div[data-toggle^=toggle]\";\r\n $(document).on(\"keydown\", \".accessible-toggle\", function (e) {\r\n if (e.which === 13) {\r\n $(selector, e.target).trigger(\"click.bs.toggle\");\r\n }\r\n });\r\n $(document).on(\"click\", \".accessible-toggle\", function (e) {\r\n $(selector, e.target).trigger(\"click.bs.toggle\");\r\n });\r\n $(document).on(\"click.bs.toggle\", selector, function (e) {\r\n var $parent = $(e.target).closest(\".accessible-toggle\");\r\n $parent.closest(\".accessible-toggle\").attr(\"aria-checked\", $(\"input[type=checkbox]\", $parent).is(\":checked\") ? \"true\" : \"false\");\r\n });\r\n function deleteComment($element) {\r\n if (confirm(\"Are you sure you want to delete this comment?\")) {\r\n showLoadingComments();\r\n setupCommentNotificationsDefaults();\r\n $.ajax({\r\n type: \"POST\",\r\n url: window.AppSettings.ApiUrl + \"/api/v1/organisationcomments/remove/\" + $element.data(\"comment\"),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (d) {\r\n var hasError = false;\r\n for (var i = 0; i < d.length; i++) {\r\n var result = d[i];\r\n if (!result.Success) {\r\n $.notify({\r\n title: \"Ooops\",\r\n message: result.Message,\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"warning\"\r\n });\r\n hasError = true;\r\n }\r\n else {\r\n $.notify({\r\n title: \"Success\",\r\n message: result.Message,\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n }\r\n }\r\n if (!hasError) {\r\n reloadComments(1, orgCommentsUrl, \"#comments\");\r\n }\r\n },\r\n error: function () {\r\n $.notify({\r\n title: \"Dang It\",\r\n message: \"There was an error trying to delete this comment.\",\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"danger\"\r\n });\r\n },\r\n complete: function () {\r\n finishLoadingComments();\r\n }\r\n });\r\n }\r\n }\r\n // setup per-comment behaviours\r\n $(document).on(\"click\", \".btn-delete-comment\", function (ev) {\r\n ev.preventDefault();\r\n aria.Utils.AriaAlert(\"Are you sure you want to delete this comment? Showing alert dialog. Enter to accept, escape to cancel.\", 3);\r\n var $element = $(this);\r\n setTimeout(function () {\r\n deleteComment($element);\r\n }, 500);\r\n });\r\n $(document).on(\"keyup\", \".btn-delete-comment\", function (ev) {\r\n ev.preventDefault();\r\n if (ev.which === 13) {\r\n aria.Utils.AriaAlert(\"Are you sure you want to delete this comment? Showing alert dialog. Enter to accept, escape to cancel.\", 3);\r\n var $element_1 = $(this);\r\n setTimeout(function () {\r\n deleteComment($element_1);\r\n }, 500);\r\n }\r\n });\r\n function editComment(elem) {\r\n var commentId = $(elem).data(\"comment\");\r\n // only retrigger if not already visible\r\n if ($(\"#comment-\" + commentId + \" .edit-comment:visible\").length === 0) {\r\n showEditComment($(elem).data(\"comment\"));\r\n }\r\n }\r\n $(document).on(\"click\", \".btn-edit-comment\", function (ev) {\r\n ev.preventDefault();\r\n editComment(this);\r\n });\r\n $(document).on(\"keyup\", \".btn-edit-comment\", function (ev) {\r\n if (ev.which === 13) {\r\n ev.preventDefault();\r\n editComment(this);\r\n }\r\n });\r\n // setup other comment-related behaviours\r\n $(\"#more-comments\").on(\"click\", function (ev) {\r\n ev.preventDefault();\r\n $(\"#more-comments\").attr(\"disabled\", \"disabled\");\r\n $(this).data(\"page-number\", $(this).data(\"page-number\") + 1);\r\n reloadComments($(this).data(\"page-number\"), orgCommentsUrl, \"#comments\");\r\n });\r\n if (!outletServiceId || !$(\"#comment-text\").length) {\r\n return;\r\n }\r\n // add new comment behaviour\r\n $(\"#comment-text\").data(\"organisation\", organisationId);\r\n $(\"#comment-text\").data(\"outlet\", outletId);\r\n $(\"#comment-text\").data(\"outletservice\", outletServiceId);\r\n $(\"#comment-text\").on(\"keyup\", function (e) {\r\n var target = $(e.target);\r\n if (e.which === 13 && target.val().length) { // user hit ENTER\r\n showLoadingComments();\r\n target.attr(\"disabled\", \"disabled\");\r\n var selectedFlags = $.makeArray($(\"input:checked\", target.parent()).map(function () {\r\n return $(this).data(\"value\");\r\n }));\r\n var addNewComment = {\r\n Comment: target.val(),\r\n OrganisationId: target.data(\"organisation\"),\r\n OutletId: target.data(\"outlet\"),\r\n OutletServiceId: target.data(\"outletservice\"),\r\n CommentFlags: selectedFlags.join(\",\")\r\n };\r\n target.val(\"\");\r\n setupCommentNotificationsDefaults();\r\n $.ajax({\r\n type: \"POST\",\r\n url: window.AppSettings.ApiUrl + \"/api/v1/organisationcomments/add\",\r\n data: JSON.stringify(addNewComment),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (data) {\r\n var hasError = false;\r\n for (var i = 0; i < data.length; i++) {\r\n var result = data[i];\r\n if (!result.Success) {\r\n $.notify({\r\n title: \"Ooops\",\r\n message: result.Message,\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"warning\"\r\n });\r\n hasError = true;\r\n }\r\n else {\r\n $.notify({\r\n title: \"Success\",\r\n message: result.Message,\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n }\r\n }\r\n if (!hasError) {\r\n reloadComments(1, orgCommentsUrl, null);\r\n }\r\n },\r\n error: function () {\r\n $.notify({\r\n title: \"Dang It\",\r\n message: \"There was an error trying to post a new comment.\",\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"danger\"\r\n });\r\n },\r\n complete: function () {\r\n finishLoadingComments();\r\n $(\"#comment-text\").removeAttr(\"disabled\");\r\n $(\"#comment-text\").focus();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n function setupResultsButtonActions(crit, favouriteModalUrl, loggedIn, onSuccess) {\r\n if (window.opera || window.sidebar) {\r\n $(\".btn-add-to-favourites\").each(function () {\r\n $(this).attr(\"href\", window.location.href);\r\n $(this).attr(\"title\", document.title);\r\n $(this).attr(\"rel\", \"sidebar\");\r\n });\r\n }\r\n $(\".btn-add-to-favourites\").off(\"click touchend\").on(\"click touchend\", function (e) {\r\n e.preventDefault();\r\n Common.Favourites.ShowAddFavourite(e, parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"category\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouriteModalUrl, loggedIn);\r\n });\r\n $(\".btn-add-to-favourites\").off(\"keyup\").on(\"keyup\", function (e) {\r\n e.preventDefault();\r\n if (e.which === 13) {\r\n Common.Favourites.ShowAddFavourite(e, parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"category\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouriteModalUrl, loggedIn);\r\n }\r\n });\r\n $(\".btn-save-search\").off(\"click touchend\").on(\"click touchend\", function (e) {\r\n e.preventDefault();\r\n Common.Favourites.ShowAddFavouriteList(loggedIn);\r\n });\r\n $(\".btn-save-search\").off(\"keyup\").on(\"keyup\", function (e) {\r\n e.preventDefault();\r\n if (e.which === 13) {\r\n Common.Favourites.ShowAddFavouriteList(loggedIn);\r\n }\r\n });\r\n $(\".btn-share-nonlisted\").off(\"click touchend\").on(\"click touchend\", function (e) {\r\n e.preventDefault();\r\n $('#ShareModal-ShareNonlisted').modal('show');\r\n });\r\n Common.Favourites.SetupSaveSearchClick(crit);\r\n var buttonWrapper = $(\"#view-toggles\");\r\n var rankButton = buttonWrapper.find(\".btn-rank\");\r\n var alphaButton = buttonWrapper.find(\".btn-alpha\");\r\n var distanceButton = buttonWrapper.find(\".btn-distance\");\r\n var allResultsButton = buttonWrapper.find(\".btn-all-results\");\r\n var localResultsButton = buttonWrapper.find(\".btn-local-results\");\r\n var mapButton = buttonWrapper.find(\".btn-map\");\r\n if (crit.LocalOnly) {\r\n allResultsButton.removeClass(\"active\");\r\n localResultsButton.addClass(\"active\");\r\n }\r\n else {\r\n allResultsButton.addClass(\"active\");\r\n localResultsButton.removeClass(\"active\");\r\n }\r\n if (crit.SortField === 'Relevance') {\r\n // Reset the other buttons\r\n alphaButton.removeClass(\"active\").removeClass(\"icon-sort-alpha-desc\").addClass(\"icon-sort-alpha-asc\").data(\"sort-direction\", \"ASC\");\r\n distanceButton.removeClass(\"active\").removeClass(\"icon-sort-distance-desc\").addClass(\"icon-sort-distance-asc\").data(\"sort-direction\", \"ASC\");\r\n rankButton.addClass(\"active\");\r\n }\r\n else if (crit.SortField === 'Distance') {\r\n // Reset the other buttons\r\n rankButton.removeClass(\"active\");\r\n alphaButton.removeClass(\"active\").removeClass(\"icon-sort-alpha-desc\").addClass(\"icon-sort-alpha-asc\").data(\"sort-direction\", \"ASC\");\r\n // Set distance button display\r\n Common.Favourites.SetSortButtonDirection(distanceButton, crit.SortDirection, \"distance\");\r\n }\r\n else {\r\n // Reset the other buttons\r\n rankButton.removeClass(\"active\");\r\n distanceButton.removeClass(\"active\").removeClass(\"icon-sort-distance-desc\").addClass(\"icon-sort-distance-asc\").data(\"sort-direction\", \"ASC\");\r\n // Set alpha button display\r\n Common.Favourites.SetSortButtonDirection(alphaButton, crit.SortDirection, \"alpha\");\r\n }\r\n function triggerRank(e) {\r\n e.preventDefault();\r\n crit.SortField = \"Relevance\";\r\n crit.SortDirection = \"DESC\";\r\n crit.PageNo = 1;\r\n crit.State = $(\"#State_Code\").val();\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn, onSuccess);\r\n }\r\n rankButton.off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerRank(e);\r\n });\r\n rankButton.off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerRank(e);\r\n }\r\n });\r\n function triggerAlpha(e) {\r\n e.preventDefault();\r\n Common.DisableFilter();\r\n crit.SortField = \"Nickname\";\r\n crit.SortDirection = \"ASC\";\r\n crit.PageNo = 1;\r\n crit.State = $(\"#State_Code\").val();\r\n if ($(e.target).hasClass(\"active\")) {\r\n var direction = $(e.target).data(\"sort-direction\");\r\n crit.SortDirection = direction === \"DESC\" ? \"ASC\" : \"DESC\";\r\n aria.Utils.AriaAlert(\"Sorting alphabetically: \" + (direction === \"DESC\" ? \"A to Z\" : \"Z to A\"), 3);\r\n }\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn, onSuccess, Common.ReenableFilter);\r\n }\r\n alphaButton.off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerAlpha(e);\r\n });\r\n alphaButton.off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerAlpha(e);\r\n }\r\n });\r\n function triggerDistance(e) {\r\n e.preventDefault();\r\n Common.DisableFilter();\r\n var value = $(e.target).closest(\".organisation\").length ? $(\".organisation .location-filter.tt-input\").val() : $(\"#autocomplete-location\").val();\r\n if (value === \"\") {\r\n $(\"#searchTextModal\").on(\"shown.bs.modal\", function () {\r\n $(\"#searchTextModal [role=document]:first\").focus();\r\n });\r\n $(\".modal-title\").text(\"Location needed\");\r\n $(\"#searchTextModal [role=document]:first\").attr(\"aria-label\", \"Location needed\");\r\n $(\".search-text\").text(\"Before you can sort the results by distance you need to tell us where you are located. \" + $(e.target).data(\"warning\"));\r\n $(\"#searchTextModal\").modal(\"show\");\r\n Common.ReenableFilter();\r\n return;\r\n }\r\n crit.SortField = \"Distance\";\r\n crit.SortDirection = \"ASC\";\r\n crit.PageNo = 1;\r\n crit.State = $(\"#State_Code\").val();\r\n if ($(e.target).hasClass(\"active\")) {\r\n var direction = $(e.target).data(\"sort-direction\");\r\n crit.SortDirection = direction === \"DESC\" ? \"ASC\" : \"DESC\";\r\n aria.Utils.AriaAlert(\"Sorting by distance: \" + (direction === \"DESC\" ? \"ascending\" : \"descending\"), 3);\r\n }\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn, onSuccess, Common.ReenableFilter);\r\n if (mapButton.hasClass(\"active\")) {\r\n if (window.Markers.length > 0) {\r\n Common.Map.FitMapBounds(window.MapView, window.Bounds);\r\n }\r\n else {\r\n if (typeof window.CouncilLayer !== 'undefined') {\r\n window.CouncilLayer.setMap(window.MapView);\r\n }\r\n }\r\n }\r\n }\r\n distanceButton.off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerDistance(e);\r\n });\r\n distanceButton.off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerDistance(e);\r\n }\r\n });\r\n function triggerResults(e, localOnly) {\r\n e.preventDefault();\r\n if (!$(e.target).hasClass(\"active\")) {\r\n Common.DisableFilter();\r\n crit.LocalOnly = localOnly;\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn, onSuccess, Common.ReenableFilter);\r\n }\r\n }\r\n localResultsButton.off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerResults(e, true);\r\n });\r\n localResultsButton.off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerResults(e, true);\r\n }\r\n });\r\n allResultsButton.off(\"click touchend\").on(\"click touchend\", function (e) {\r\n triggerResults(e, false);\r\n });\r\n allResultsButton.off(\"keyup\").on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerResults(e, false);\r\n }\r\n });\r\n }\r\n function setupSearchResultsAria(elem, focusedSelector) {\r\n new aria.Grid(elem);\r\n if (focusedSelector) {\r\n $(focusedSelector).focus();\r\n }\r\n }\r\n function ShowThinking(regionToShow) {\r\n $(regionToShow).html('<div class=\"processing\"><img src=\"/_static/images/processing.gif\" alt=\"Loading Results...\"/></div>');\r\n $(\".search-expand\").hide();\r\n }\r\n Page.ShowThinking = ShowThinking;\r\n function InitLoginPage() {\r\n var alreadyLoggedIn = arguments[0] || false;\r\n // Behaviour to toggle the showing & hiding of the login panels\r\n $(\".login-wrapper\").find(\"[data-toggle-button]\").on(\"click touchend\", function (e) {\r\n var buttonClicked = $(this);\r\n e.preventDefault();\r\n $(buttonClicked.data(\"toggle-parent\")).fadeOut(300, function () {\r\n $(buttonClicked.data(\"toggle-target\")).fadeIn();\r\n //$('html, body').animate({\r\n // scrollTop: $(buttonClicked.data(\"toggle-target\")).offset().top - 50\r\n //}, 200);\r\n });\r\n });\r\n $(\".register-wrapper button\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n var link = $(this).data(\"link\");\r\n window.location.href = link;\r\n });\r\n if (alreadyLoggedIn) {\r\n $('.login-wrapper').hide(300, function () { return $('#loggedin-wrapper').fadeIn(); });\r\n }\r\n }\r\n Page.InitLoginPage = InitLoginPage;\r\n function InitVerifyEmailPage() {\r\n var initial = arguments[0] || \"token-wrapper\";\r\n $('.login-wrapper').hide();\r\n $(initial).show();\r\n var tokenForm = $('#tokenForm');\r\n tokenForm.validate({\r\n rules: {\r\n Token: {\r\n required: true\r\n }\r\n },\r\n messages: {\r\n Token: {\r\n required: \"Please enter a token to validate\"\r\n }\r\n }\r\n });\r\n }\r\n Page.InitVerifyEmailPage = InitVerifyEmailPage;\r\n function InitEventRegisterPage() {\r\n var alreadyLoggedIn = arguments[0] || false;\r\n var registerForm = $('#registerForm');\r\n registerForm.validate({\r\n rules: {\r\n FirstName: {\r\n required: true\r\n },\r\n LastName: {\r\n required: true\r\n },\r\n Email: {\r\n required: false,\r\n email: true\r\n },\r\n Mobile: {\r\n mobileAvailable: true,\r\n ausMobile: true\r\n },\r\n },\r\n messages: {\r\n FirstName: {\r\n required: \"We need your first name\"\r\n },\r\n LastName: {\r\n required: \"We need your last name\"\r\n },\r\n Mobile: {\r\n mobileAvailable: \"That mobile number is already used\",\r\n ausMobile: \"This is not a valid Australian mobile number\"\r\n },\r\n Email: {\r\n required: \"We need your email address\",\r\n email: \"This is not a valid email address\",\r\n emailAvailable: \"That email has already been used\"\r\n },\r\n }\r\n });\r\n $.validator.addMethod(\"ausMobile\", function (value, element) {\r\n var trimmedValue = value.replace(/[^\\d\\+]/gi, '');\r\n var re = new RegExp(/^\\({0,1}((0|\\+61)(4)){1}\\){0,1}(\\ |-){0,1}[0-9]{2}(\\ |-){0,1}[0-9]{2}(\\ |-){0,1}[0-9]{1}(\\ |-){0,1}[0-9]{3}$/);\r\n return this.optional(element) || trimmedValue.match(re);\r\n }, \"Please enter a valid Australian mobile number.\");\r\n var typingTimer; //timer identifier\r\n var doneTypingInterval = 1000; //time in ms (5 seconds)\r\n //on keyup, start the countdown\r\n $('#Email').keyup(function () {\r\n clearTimeout(typingTimer);\r\n if ($('#Email').val()) {\r\n typingTimer = setTimeout(checkIfExist, doneTypingInterval);\r\n }\r\n });\r\n //user is \"finished typing,\" do something\r\n function checkIfExist() {\r\n jQuery.ajax({\r\n async: true,\r\n url: '/api/Users/IsEmailExist?email=' + $('#Email').val(),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n //contentType: \"application/json; charset=utf-8\",\r\n success: function (resp) {\r\n if (resp) {\r\n $('.register-extra-info').hide();\r\n $('.found_you_text').show();\r\n $('.extra_info_text').hide();\r\n $('#IsCurrentUser').val(resp.toString());\r\n }\r\n else {\r\n $('.register-extra-info').show();\r\n $('.found_you_text').hide();\r\n $('.extra_info_text').show();\r\n }\r\n },\r\n error: function (err) {\r\n alert(err.responseText);\r\n }\r\n });\r\n }\r\n // Behaviour to toggle the showing & hiding of the login panels\r\n $(\".login-wrapper\").find(\"[data-toggle-button]\").on(\"click touchend\", function (e) {\r\n var buttonClicked = $(this);\r\n e.preventDefault();\r\n var validate = buttonClicked.data(\"toggle-validate\") || false;\r\n if (!validate || registerForm.valid()) {\r\n $(buttonClicked.data(\"toggle-parent\")).fadeOut(300, function () {\r\n $(buttonClicked.data(\"toggle-target\")).fadeIn(null, function () { return $(\"select, [type=text]\", \".login-wrapper\").filter(\":visible\").first().focus(); });\r\n });\r\n }\r\n else if ($(\"label.has-error:visible\").length) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n $(\"#Email\").on(\"blur\", function () {\r\n if ($(\"#Username\").val() === '')\r\n $(\"#Username\").val($(this).val());\r\n });\r\n if (alreadyLoggedIn) {\r\n $('.login-wrapper').hide(300);\r\n $('#loggedin-wrapper').fadeIn();\r\n }\r\n initPasswordStrength();\r\n registerForm.on(\"submit\", function () {\r\n if (!registerForm.valid()) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n }\r\n Page.InitEventRegisterPage = InitEventRegisterPage;\r\n function InitRegisterPage() {\r\n var alreadyLoggedIn = arguments[0] || false;\r\n var registerForm = $('#registerForm');\r\n registerForm.validate({\r\n rules: {\r\n Username: {\r\n required: true,\r\n mcdUsername: true,\r\n usernameAvailable: true\r\n },\r\n FirstName: {\r\n required: true\r\n },\r\n LastName: {\r\n required: true\r\n },\r\n Email: {\r\n required: true,\r\n email: true,\r\n emailAvailable: true\r\n },\r\n Mobile: {\r\n mobileAvailable: true,\r\n ausMobile: true\r\n },\r\n Password: {\r\n required: true,\r\n minlength: 6,\r\n regex: /^\\S*$/\r\n },\r\n ConfirmPassword: {\r\n required: true,\r\n equalTo: '#Password'\r\n }\r\n },\r\n messages: {\r\n Username: {\r\n required: \"Please enter a user name\",\r\n mcdUsername: \"That is not a valid username\",\r\n usernameAvailable: \"That username already exists\"\r\n },\r\n FirstName: {\r\n required: \"We need your first name\"\r\n },\r\n LastName: {\r\n required: \"We need your last name\"\r\n },\r\n Mobile: {\r\n mobileAvailable: \"That mobile number is already used\",\r\n ausMobile: \"This is not a valid Australian mobile number\"\r\n },\r\n Email: {\r\n required: \"We need your email address\",\r\n email: \"This is not a valid email address\",\r\n emailAvailable: \"That email has already been used\"\r\n },\r\n Password: {\r\n required: \"Please enter your password\",\r\n minlength: \"Your password must be at least six characters long\",\r\n regex: \"Your password cannot contain any spaces\"\r\n },\r\n ConfirmPassword: {\r\n required: \"Please confirm your password\",\r\n equalTo: \"Your passwords must match\"\r\n }\r\n }\r\n });\r\n // Behaviour to toggle the showing & hiding of the login panels\r\n $(\".login-wrapper\").find(\"[data-toggle-button]\").on(\"click touchend\", function (e) {\r\n var buttonClicked = $(this);\r\n e.preventDefault();\r\n var validate = buttonClicked.data(\"toggle-validate\") || false;\r\n if (!validate || registerForm.valid()) {\r\n $(buttonClicked.data(\"toggle-parent\")).fadeOut(300, function () {\r\n $(buttonClicked.data(\"toggle-target\")).fadeIn(null, function () { return $(\"select, [type=text]\", \".login-wrapper\").filter(\":visible\").first().focus(); });\r\n });\r\n }\r\n else if ($(\"label.has-error:visible\").length) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n $(\"#Email\").on(\"blur\", function () {\r\n if ($(\"#Username\").val() === '')\r\n $(\"#Username\").val($(this).val());\r\n });\r\n if (alreadyLoggedIn) {\r\n $('.login-wrapper').hide(300);\r\n $('#loggedin-wrapper').fadeIn();\r\n }\r\n initPasswordStrength();\r\n registerForm.on(\"submit\", function () {\r\n if (!registerForm.valid()) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n }\r\n Page.InitRegisterPage = InitRegisterPage;\r\n function InitAboutUsPage() {\r\n $.getJSON(\"/api/Statistics/LoadAll\", function (data) {\r\n $(\".litUsers\").text(data.Users.toLocaleString()); //.ToString(\"N0\");\r\n $(\".litOrganisations\").text(data.Organisations.toLocaleString()); //.ToString(\"N0\");\r\n $(\".litOutlets\").text(data.Outlets.toLocaleString()); //.ToString(\"N0\");\r\n $(\".litServices\").text(data.Services.toLocaleString()); //.ToString(\"N0\");\r\n $(\".litServiceRegions\").text(data.ServiceRegions.toLocaleString()); //.ToString(\"N0\");\r\n $(\".litOutletsPerOrg\").text(\"Average \" + (parseFloat(data.Outlets) / parseFloat(data.Organisations)).toFixed(1) + \" per Organisation\");\r\n $(\".litServicesPerOutlet\").text(\"Average \" + (parseFloat(data.Services) / parseFloat(data.Outlets)).toFixed(1) + \" per Location\");\r\n $(\".litRegionsPerService\").text(\"Average \" + (parseFloat(data.ServiceRegions) / parseFloat(data.Services)).toFixed(1) + \" per Service\");\r\n window.orgData = new google.visualization.DataTable();\r\n window.orgData.addColumn('string', 'Organisation Type');\r\n window.orgData.addColumn('number', 'Count');\r\n $.each(data.OrganisationTypes, function (i, v) {\r\n window.orgData.addRow([v.label, v.data]);\r\n });\r\n drawOrgChart(window.orgData);\r\n window.orgMap = new google.visualization.DataTable();\r\n window.orgMap.addColumn('number', 'Latitude');\r\n window.orgMap.addColumn('number', 'Longitude');\r\n window.orgMap.addColumn('number', 'Locations');\r\n window.orgMap.addColumn('string', 'Region');\r\n $.each(data.ServiceCouncilMap, function (i, v) {\r\n window.orgMap.addRow([v.Latitude, v.Longitude, v.Count, v.Name]);\r\n });\r\n drawOrgMap(window.orgMap);\r\n window.serviceData = new google.visualization.DataTable();\r\n window.serviceData.addColumn('string', 'Service Type');\r\n window.serviceData.addColumn('number', 'Count');\r\n $.each(data.ServiceTypes, function (i, v) {\r\n window.serviceData.addRow([v.label, v.data]);\r\n });\r\n drawServiceChart(window.serviceData);\r\n window.resizeTimer = null;\r\n $(window).resize(function () {\r\n clearTimeout(window.resizeTimer);\r\n window.resizeTimer = window.setTimeout(function () {\r\n drawOrgChart(window.orgData);\r\n drawOrgMap(window.orgMap);\r\n drawServiceChart(window.serviceData);\r\n }, 500);\r\n });\r\n });\r\n }\r\n Page.InitAboutUsPage = InitAboutUsPage;\r\n function InitRegionListingPage(council, isLocality) {\r\n Common.InitCategoryLinks();\r\n if (isLocality) {\r\n Common.SetCurrentLocality(council);\r\n }\r\n else {\r\n Common.SetCurrentCouncil(council);\r\n }\r\n }\r\n Page.InitRegionListingPage = InitRegionListingPage;\r\n function InitListingPage(councilId, orgId, outletId, outletServiceId, categoryId, localityId, localityName, shouldShowComments, favouriteModalUrl, loggedIn, showContactForm) {\r\n var pageNumber = 1;\r\n displayExtraInformation();\r\n SetupOutletTeamMemberContacts();\r\n loadNearby(outletId, orgId, pageNumber);\r\n pageNumber++;\r\n $(\"body\").on(\"click touchend\", \".loadMore\", function () {\r\n loadNearby(outletId, orgId, pageNumber);\r\n pageNumber++;\r\n });\r\n $(\"#hfLocationId\").val(localityId || \"0\");\r\n $(\"#autocomplete-location\").val(localityName || \"\");\r\n if (localityId > 0) {\r\n $.getJSON(\"/api/Locations/id/\" + localityId, function (data) {\r\n Common.SetCurrentLocality(data);\r\n });\r\n }\r\n else {\r\n $.getJSON(\"/api/Councils/\" + councilId, function (data) {\r\n Common.SetCurrentCouncil(data);\r\n });\r\n }\r\n $.getJSON(\"/api/Outlets/OtherServices/\" + outletId + \"/\" + outletServiceId + \"/\" + councilId, function (data) {\r\n if (data.length !== 0) {\r\n var template = $(\"#otherServicesTemplate\").render(data);\r\n var $template = $(\"<div/>\").html(template);\r\n $(\".nofollow\", $template).removeAttr(\"rel\");\r\n template = $template.html();\r\n $(\"#otherServices\").show();\r\n $(\"#otherServices\").append(\"<ul>\" + template + \"</ul>\");\r\n }\r\n });\r\n $.getJSON(\"/api/Outlets/OtherServiceRegions/\" + outletId + \"/\" + outletServiceId + \"/\" + councilId + \"/\" + categoryId, function (data) {\r\n if (data.length !== 0) {\r\n var template = $(\"#otherServiceRegionsTemplate\").render(data);\r\n var $template = $(\"<div/>\").html(template);\r\n $(\".nofollow\", $template).removeAttr(\"rel\");\r\n template = $template.html();\r\n $(\"#otherServiceRegions\").show();\r\n $(\"#otherServiceRegions\").append(\"<ul>\" + template + \"</ul>\");\r\n }\r\n });\r\n Common.InitEmail(function (d) {\r\n return {\r\n OutletID: d.data(\"outlet\"),\r\n OutletServiceID: d.data(\"service\"),\r\n CategoryID: d.data(\"category\"),\r\n CouncilRegionID: d.data(\"region\"),\r\n FromName: $(\"#txt-name\").val(),\r\n FromEmail: $(\"#txt-email\").val(),\r\n Phone: $(\"#txt-phone\").val(),\r\n Message: $(\"#txt-enquiry\").val()\r\n };\r\n });\r\n if (window.opera || window.sidebar) {\r\n $(\".btn-add-to-favourites\").each(function () {\r\n $(this).attr(\"href\", window.location.href);\r\n $(this).attr(\"title\", document.title);\r\n $(this).attr(\"rel\", \"sidebar\");\r\n });\r\n }\r\n $(\".btn-add-to-favourites\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n Common.Favourites.ShowAddFavourite(e, parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"category\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouriteModalUrl, loggedIn);\r\n });\r\n $(\".btn-add-to-favourites\").off(\"keyup\").on(\"keyup\", function (e) {\r\n e.preventDefault();\r\n if (e.which === 13) {\r\n Common.Favourites.ShowAddFavourite(e, parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"category\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouriteModalUrl, loggedIn);\r\n }\r\n });\r\n $(\".description.trusted a\").attr(\"target\", \"_blank\");\r\n $(\".description.trusted a\").on(\"click\", function (e) {\r\n var href = $(this).attr(\"href\");\r\n var url = \"/api/link/click?action=inlinelink&outletId=\" + outletId + \"&categoryId=\" + categoryId + \"&redirecturl=\" + encodeURIComponent(href);\r\n $.ajax(url);\r\n });\r\n $(\".icon-website a.trusted\").on(\"click\", function (e) {\r\n var url = \"/api/link/click?action=recordclick&outletId=\" + outletId + \"&categoryId=\" + categoryId;\r\n $.ajax(url);\r\n });\r\n Common.SetupShareModal($('#ShareModal-ShareAListing'));\r\n $(\"a.btn-email\").attr(\"href\", \"mailto:?subject=About%20\" + encodeURIComponent($(\".company-header h3\").text().trim()) + \"&body=I%20have%20found%20this%20listing%20on%20My%20Community%20Directory:%0A%0A\" + encodeURIComponent(window.location.href));\r\n if (shouldShowComments) {\r\n showComments(window.AppSettings.ApiUrl + \"/api/v1/organisationComments?parentId=\" + outletServiceId + \"&type=0&pageNumber={pageNumber}\", orgId, outletId, outletServiceId);\r\n }\r\n if ($(\"#custom-tags\").length) {\r\n var selectize = null;\r\n $(\"#set-tags-modal\").on(\"show.bs.modal\", function () {\r\n if (selectize == null) {\r\n selectize = $(\"#custom-tags-modal\").selectize({\r\n plugins: {\r\n \"remove_button_accessible\": {},\r\n \"accessibility\": {\r\n Label: \"Search for tags that are applied to services in the directory\"\r\n }\r\n },\r\n valueField: 'Text',\r\n labelField: 'Text',\r\n searchField: 'Text',\r\n preload: true,\r\n selectOnTab: true,\r\n closeAfterSelect: true,\r\n hideSelected: true,\r\n load: function (query, callback) {\r\n $.ajax({\r\n url: \"/manage/tags/selectcustomtags\",\r\n type: \"get\",\r\n dataType: \"json\",\r\n error: function () {\r\n callback();\r\n },\r\n success: function (data) {\r\n callback(data.map(function (d) {\r\n return {\r\n Text: d.TagName\r\n };\r\n }));\r\n }\r\n });\r\n },\r\n render: {\r\n option: function (item, escape) {\r\n return \"<div><span>\" + escape(item.Text) + \"</span></div>\";\r\n }\r\n }\r\n })[0].selectize;\r\n }\r\n });\r\n $(\"#set-tags-modal\").on(\"hidden.bs.modal\", function () {\r\n selectize.clear(true);\r\n selectize.addItems($(\"#custom-tags-current\").val().split(\",\"));\r\n });\r\n $(\"body\").on(\"click touchend\", \"#update-tags-button\", function (ev) {\r\n $(\"#custom-tags-container\").hide();\r\n $(\"#custom-tags-busy\").show();\r\n var $form = $(ev.target).closest(\"form\");\r\n var data = {\r\n outletServiceId: $(\"#OutletServiceID\", $form).val(),\r\n tags: $(\"#custom-tags-modal\").val().split(\",\")\r\n };\r\n $(\"input, button\", $form).attr(\"disabled\", \"disabled\");\r\n $.ajax({\r\n url: \"/manage/tags/updateforservice\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json\",\r\n method: \"post\",\r\n success: function (result) {\r\n if (result.Success) {\r\n if (result.Data == null || result.Data === \"\") {\r\n $(\"#custom-tags-formatted\").html(\"There are no custom tags assigned to this listing. Why don't you add some?\");\r\n }\r\n else {\r\n $(\"#custom-tags-formatted\").html(result.Data);\r\n }\r\n $(\"#custom-tags-current\").val($(\"#custom-tags-modal\").val());\r\n $.notify({\r\n title: \"Success\",\r\n message: \"Successfully updated tags\",\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n }\r\n else {\r\n $.notify({\r\n title: \"Error\",\r\n message: result.Messages[0].Message,\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"danger\"\r\n });\r\n }\r\n },\r\n error: function () {\r\n $.notify({\r\n title: \"Error\",\r\n message: \"Something went wrong. Please try again.\",\r\n icon: \"glyphicon glyphicon-remove-circle\"\r\n }, {\r\n type: \"danger\"\r\n });\r\n },\r\n complete: function () {\r\n $(\"input, button\", $form).removeAttr(\"disabled\");\r\n $(\"#custom-tags-container\").show();\r\n $(\"#custom-tags-busy\").hide();\r\n $(\"#set-tags-modal\").modal(\"hide\");\r\n }\r\n });\r\n });\r\n }\r\n if (showContactForm) {\r\n $(\"#contact-form\").show();\r\n $('html, body').animate({\r\n scrollTop: $(\"#contact-form\").offset().top\r\n }, 2000);\r\n $(\"#txt-name\").focus();\r\n }\r\n }\r\n Page.InitListingPage = InitListingPage;\r\n function SetupOutletTeamMemberContacts() {\r\n $('#expand-location-users-list').off('click').on('click', function () {\r\n $('#expand-location-users-list').prop('disabled', true);\r\n var outletId = $(this).data('outlet-id');\r\n $.ajax({\r\n method: 'POST',\r\n url: \"/Manage/TeamMembers/GetOutletContacts\",\r\n data: JSON.stringify({ outletId: outletId }),\r\n contentType: 'application/json',\r\n success: function (response) {\r\n if (response && response.Success && response.Data && response.Data.length > 0) {\r\n var template = $.templates(\"#outlet-contacts-list-tmpl\");\r\n var data = response.Data.map(function (contact) {\r\n var _a;\r\n var emailParts = (_a = contact.Email) === null || _a === void 0 ? void 0 : _a.split['@'];\r\n var emailStart;\r\n var emailAt;\r\n if (emailParts && emailParts.length == 2) {\r\n emailStart = emailParts[0];\r\n emailAt = emailParts[1];\r\n }\r\n return {\r\n Role: contact.Role,\r\n FullName: contact.FullName,\r\n Email: contact.Email,\r\n EmailStart: emailStart,\r\n EmailAt: emailAt,\r\n ContactID: contact.ContactID,\r\n ProfileID: contact.ProfileID,\r\n Phone: contact.Phone,\r\n Mobile: contact.Mobile\r\n };\r\n });\r\n var listHtml = template.render(data);\r\n $('#outlet-contacts-list').removeClass('hidden');\r\n $('#outlet-contacts-list').html(listHtml);\r\n SetupAddUserToLists(outletId);\r\n $('#expand-location-users-list').off('click').on('click', function () {\r\n if ($(this).data('list-expanded') == false) {\r\n $(this).data('list-expanded', true);\r\n $('.logged-in-info.more-user').removeClass('hidden');\r\n $(this).text('Hide list');\r\n }\r\n else {\r\n $(this).data('list-expanded', false);\r\n $('.logged-in-info.more-user').addClass('hidden');\r\n $(this).text('View people in this location');\r\n }\r\n });\r\n $('#expand-location-users-list').click();\r\n }\r\n else {\r\n $('#expand-location-users-list').closest('.logged-in-info').hide();\r\n }\r\n },\r\n error: function (response) { },\r\n complete: function () {\r\n $('#expand-location-users-list').prop('disabled', false);\r\n }\r\n });\r\n });\r\n }\r\n function SetupAddUserToLists(outletId) {\r\n if (!outletId)\r\n return;\r\n $.ajax({\r\n method: 'POST',\r\n url: \"/Manage/Activities/GetActivityLists\",\r\n beforeSend: function () {\r\n $('.logged-in-info.more-user button.add-this-user').prop('disabled', true);\r\n },\r\n success: function (response) {\r\n if (response && response.Success && response.Data) {\r\n var data = response.Data;\r\n function toggleSubMenu(action, profileId) {\r\n $(\".add-user-dropdown-sub-menu[id^=\\\"submenu-\\\"][id$=\\\"-\" + profileId + \"\\\"]\").hide();\r\n $(\"#submenu-\" + action + \"-\" + profileId).show();\r\n }\r\n function closeAddUserMenu() {\r\n $('.add-user-dropdown-backdrop').remove();\r\n $(\".dropdown-menu-wrapper\").empty();\r\n }\r\n function attachDropdownBackdrop() {\r\n var backdrop = $('<div class=\"add-user-dropdown-backdrop\"></div>');\r\n $('body').append(backdrop);\r\n backdrop.on('click', function (event) {\r\n backdrop.remove();\r\n $(\".dropdown-menu-wrapper\").empty();\r\n });\r\n }\r\n // Event listener for rendering the dropdown menu\r\n $('.logged-in-info.more-user button.add-this-user').off('click').on('click', function () {\r\n $(\".dropdown-menu-wrapper\").empty();\r\n attachDropdownBackdrop();\r\n var template = $.templates(\"#add-user-menu-tmpl\");\r\n // Pass this data to newly rendered dropdown\r\n var dropdownHtml = template.render({\r\n ProfileId: $(this).data('profile-id'),\r\n ContactId: $(this).data('contact-id'),\r\n ContactName: $(this).data('contact-name'),\r\n ContactEmail: $(this).data('contact-email'),\r\n PersonalList: data.PersonalList,\r\n ProjectLists: data.ProjectLists,\r\n NetworkLists: data.NetworkLists\r\n });\r\n $(this).siblings('.dropdown-menu-wrapper').html(dropdownHtml);\r\n // Bind the event to the dynamically created buttons\r\n $('.add-user-dropdown-menu .add-user-menu-item>button.btn-add').on('click', function () {\r\n toggleSubMenu($(this).data('add-action'), $(this).data('profile-id'));\r\n });\r\n $('.add-user-dropdown-menu .add-user-menu-item>button.btn-close').on('click', function () {\r\n closeAddUserMenu();\r\n });\r\n $('.add-user-dropdown-menu .add-user-menu-item>button.btn-add[data-add-action=\"comment\"]').off('click').on('click', function () {\r\n var profileId = $(this).data('profile-id');\r\n $(\".add-user-dropdown-sub-menu[id^=\\\"submenu-\\\"][id$=\\\"-\" + profileId + \"\\\"]\").hide();\r\n $('#intel-gather-form').find('#subject-type').val(\"Profile\");\r\n $('#intel-gather-form').find('#subject-id').val($(this).data('profile-id'));\r\n $('#intel-gather-form').find('#subject-name').val($(this).data('contact-name'));\r\n $('#intel-gather-form').modal('show');\r\n });\r\n $('.add-user-dropdown-sub-menu').on('click', '.add-user-menu-item>button', function () {\r\n var formData = {\r\n ActivityId: $(this).data('activity-id'),\r\n Email: $(this).data('contact-email'),\r\n };\r\n var name = $(this).data('contact-name');\r\n var list = $(this).data('activity-title');\r\n $.ajax({\r\n type: 'POST',\r\n url: '/UserInfoCollection/AddUserToList',\r\n data: formData,\r\n success: function (response) {\r\n $('#addUserModal').modal('hide');\r\n if (response.Success) {\r\n $.notify({\r\n title: '<strong>Success</strong>',\r\n message: \"Successfully added <strong>\" + name + \"</strong> to <strong>\" + list + \"</strong>!\",\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n timer: 500,\r\n });\r\n }\r\n else {\r\n $.notify({\r\n title: '<strong>There was an error adding user!</strong>',\r\n message: response.Message,\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n },\r\n error: function (response) {\r\n $.notify({\r\n title: '<strong>There was an error adding user!</strong>',\r\n icon: \"glyphicon glyphicon-info-sign\",\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n },\r\n complete: function () {\r\n closeAddUserMenu();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n else {\r\n $('.logged-in-info.more-user button.add-this-user').hide();\r\n }\r\n },\r\n complete: function () {\r\n $('.logged-in-info.more-user button.add-this-user').prop('disabled', false);\r\n }\r\n });\r\n }\r\n function InitOutletPage(orgId, outletId, shouldShowComments) {\r\n var pageNumber = 1;\r\n SetupOutletTeamMemberContacts();\r\n displayExtraInformation();\r\n loadNearby(outletId, orgId, pageNumber);\r\n pageNumber++;\r\n $(\"body\").on(\"click touchend\", \".loadMore\", function () {\r\n loadNearby(outletId, orgId, pageNumber);\r\n pageNumber++;\r\n });\r\n Common.InitEmail(function (d) {\r\n return {\r\n OutletID: d.data(\"outlet\"),\r\n OutletServiceID: 0,\r\n CategoryID: 0,\r\n CouncilRegionID: 0,\r\n FromName: $(\"#txt-name\").val(),\r\n FromEmail: $(\"#txt-email\").val(),\r\n Phone: $(\"#txt-phone\").val(),\r\n Message: $(\"#txt-enquiry\").val()\r\n };\r\n });\r\n Common.SetupShareModal($('#ShareModal-ShareAListing'));\r\n //$(\".btn-facebook\").on(\"click\", function (e) {\r\n //\te.preventDefault();\r\n //\tvar w = 626;\r\n //\tvar h = 436;\r\n //\tvar winTop = ($(window).height() / 2) - (h / 2);\r\n //\tvar winLeft = ($(window).width() / 2) - (w / 2);\r\n //\t//window.open(\"https://www.facebook.com/sharer/sharer.php?s=100&p[url]=\" + location.href + \"&p[title]=\" + document.title + \"&p[summary]=\" + $(this).data(\"description\") + \"&p[images][0]=\" + $(this).data(\"image\"), \"\", \"toolbar=0,status=0,top=\" + winTop + \",left=\" + winLeft + \",width=\" + w + \",height=\" + h);\r\n //});\r\n $(\".icon-website a.trusted\").on(\"click\", function (e) {\r\n var url = \"/api/link/click?action=recordclick&outletId=\" + outletId + \"&categoryId=0\";\r\n $.ajax(url);\r\n });\r\n $(\"a.btn-email\").attr(\"href\", \"mailto:?subject=About%20\" + encodeURIComponent($(\".company-header h3\").text().trim()) + \"&body=I%20have%20found%20this%20listing%20on%20My%20Community%20Directory:%0A%0A\" + encodeURIComponent(window.location.href));\r\n $(\"#linksModal\").on(\"show.bs.modal\", function (e) {\r\n var link = $(e.relatedTarget);\r\n var contentName = link.data(\"content-id\");\r\n var serviceName = link.data(\"service-name\");\r\n var content = $(contentName).html();\r\n $(\".service-name\").text(serviceName);\r\n $(\".region-options\").html(content);\r\n });\r\n if (shouldShowComments) {\r\n showComments(window.AppSettings.ApiUrl + \"/api/v1/organisationComments?parentId=\" + outletId + \"&type=1&pageNumber={pageNumber}\");\r\n }\r\n }\r\n Page.InitOutletPage = InitOutletPage;\r\n function InitMobileSearch() {\r\n if ($(window).width() < 768) {\r\n $(\"#sectionMobileSearch\").show();\r\n $(\"#sectionDesktopSearch\").hide();\r\n }\r\n $(\"#btnShowSearchHeader\").on('click', function () {\r\n $(\"#sectionDesktopSearch\").show();\r\n $(\"#sectionMobileSearch\").hide();\r\n });\r\n }\r\n Page.InitMobileSearch = InitMobileSearch;\r\n function InitOrganisationPage(localityId, councilRegionId, state, orgId, showResourceList, favouritesUrl, loggedIn) {\r\n $(\"#locality-id\").val(localityId);\r\n $(\"#btn-apply\").on(\"click touchend\", function (ev) {\r\n ev.preventDefault();\r\n doSearch();\r\n });\r\n var lastLocation = 0;\r\n function doSearch() {\r\n var currentLocation = $(\".organisation #view-toggles .locality-id\").val();\r\n if (currentLocation > 0 || lastLocation > 0) {\r\n performSearch();\r\n }\r\n else {\r\n Common.DisableFilter();\r\n filterResults(Common.ReenableFilter);\r\n }\r\n lastLocation = currentLocation;\r\n }\r\n // Respond to user hitting enter within the text fields\r\n $(\".btn-filter input[type='text']\").on(\"keyup\", function (e) {\r\n if ($(\".btn-filter.disabled\").length) {\r\n return;\r\n }\r\n if (e.which === 13) {\r\n doSearch();\r\n }\r\n });\r\n $(\".btn-filter\").hide();\r\n function filterResults(finishedCallback) {\r\n var container = $(\"#results\");\r\n container.hide();\r\n var filterText = $(\"#name-filter\").val();\r\n var filteredResults = $.grep(searchResults, function (e) {\r\n return e.Outlet.Nickname.toLowerCase().indexOf(filterText) >= 0;\r\n });\r\n var results = $(\"#resultTemplate\").render(filteredResults, {});\r\n var $results = $(\"<div/>\").html(results);\r\n $(\".nofollow\", $results).removeAttr(\"rel\");\r\n results = $results.html();\r\n $(\"#results\").html(results);\r\n $(\".btn-add-to-favourites\").off(\"click touchend\").on(\"click touchend\", function (e) {\r\n e.preventDefault();\r\n Common.Favourites.ShowAddFavourite(e, parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"category\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouritesUrl, loggedIn);\r\n });\r\n $(\".btn-add-to-favourites\").off(\"keyup\").on(\"keyup\", function (e) {\r\n e.preventDefault();\r\n if (e.which === 13) {\r\n Common.Favourites.ShowAddFavourite(e, parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"category\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouritesUrl, loggedIn);\r\n }\r\n });\r\n if ($(\"#search-map\").length > 0) {\r\n Common.Map.LoadMapMarkers(\"#search-map\", filteredResults, showResourceList, $(\"#view-toggles .location-filter.tt-input\").val() || \"\");\r\n }\r\n setTimeout(function () {\r\n $(\".processing\", container.parent()).remove();\r\n container.show();\r\n if (!filteredResults.length) {\r\n $(\"#view-toggles .low-listings\").show();\r\n }\r\n else {\r\n $(\"#view-toggles .low-listings\").hide();\r\n $(\".search-result:not(:visible)\", container).removeClass(\"no-margin\");\r\n $(\".search-result:visible:first\", container).addClass(\"no-margin\");\r\n }\r\n if (typeof finishedCallback !== \"undefined\") {\r\n finishedCallback();\r\n }\r\n }, 500);\r\n }\r\n function resultsLoadedCallback() {\r\n $(\".btn-filter\").show();\r\n if ($(\"#name-filter\").val().length) {\r\n filterResults(Common.ReenableFilter);\r\n }\r\n else {\r\n if (!searchResults.length) {\r\n $(\"#view-toggles .low-listings\").show();\r\n }\r\n else {\r\n $(\"#view-toggles .low-listings\").hide();\r\n }\r\n Common.ReenableFilter();\r\n }\r\n }\r\n function performSearch() {\r\n Common.DisableFilter();\r\n var location = $(\"#view-toggles .locality-id\").val() || 0;\r\n Page.LoadSearchResults({\r\n SearchType: \"Search\",\r\n Location: location,\r\n Council: councilRegionId,\r\n State: state,\r\n ConstrainedToOrgId: orgId,\r\n Radius: -1,\r\n ShowResourceList: showResourceList,\r\n SortField: location > 0 ? \"Distance\" : \"Nickname\",\r\n SortDirection: \"ASC\",\r\n }, favouritesUrl, loggedIn, resultsLoadedCallback, Common.ReenableFilter);\r\n }\r\n performSearch();\r\n }\r\n Page.InitOrganisationPage = InitOrganisationPage;\r\n function InitRegisterOrganisationPage() {\r\n var form = $(\"form\");\r\n addAbnValidation();\r\n form.validate({\r\n rules: {\r\n UseExistingOrganisation: {\r\n required: true\r\n },\r\n OrganisationType: {\r\n required: true\r\n },\r\n Nickname: {\r\n required: true\r\n },\r\n Suburb: {\r\n required: true\r\n },\r\n Phone: {\r\n ausPhone: true,\r\n require_from_group: [1, \".required-contact\"]\r\n },\r\n Email: {\r\n email: true,\r\n require_from_group: [1, \".required-contact\"]\r\n },\r\n ManagerPhone: {\r\n ausPhone: true\r\n },\r\n ManagerEmail: {\r\n email: true\r\n },\r\n ManagerMobile: {\r\n ausMobile: true\r\n },\r\n Website: {\r\n simpleUrl: true\r\n },\r\n OrganisationNoAbnTradingName: {\r\n required: true,\r\n minlength: 3\r\n },\r\n OrganisationEnteredAbn: {\r\n required: true,\r\n abn: true\r\n },\r\n AlreadyListed: {\r\n required: true\r\n },\r\n SelectedOrganisationId: {\r\n required: \"input[type='radio'][name='AlreadyListed'][value='True']:checked\"\r\n },\r\n PrimaryService: {\r\n required: true\r\n },\r\n BriefDescription: {\r\n required: true,\r\n minlength: 20,\r\n maxlength: 200\r\n },\r\n AgreeConditions: {\r\n required: true\r\n }\r\n },\r\n messages: {\r\n UseExistingOrganisation: {\r\n required: \"You must specify if you are adding a location to your existing organisation.\"\r\n },\r\n OrganisationType: {\r\n required: \"You must specify the type of organisation.\"\r\n },\r\n Nickname: {\r\n required: \"You must specify the location's name.\"\r\n },\r\n Suburb: {\r\n required: \"You must supply a partial address for the location. Begin by entering an address above.\"\r\n },\r\n Phone: {\r\n require_from_group: \"A telephone number or email address is required.\",\r\n ausPhone: \"Please enter a valid phone number\"\r\n },\r\n Email: {\r\n require_from_group: \"A telephone number or email address is required.\",\r\n email: \"Please enter a valid email address\"\r\n },\r\n Website: {\r\n simpleUrl: \"Please enter a valid website\"\r\n },\r\n ManagerPhone: {\r\n ausPhone: \"Please enter a valid phone number\"\r\n },\r\n ManagerEmail: {\r\n email: \"Please enter a valid email address\"\r\n },\r\n ManagerMobile: {\r\n ausMobile: \"Please enter a valid mobile phone number\"\r\n },\r\n OrganisationNoAbnTradingName: {\r\n required: \"You must specify the trading name for your organisation.\",\r\n minlength: \"You must enter a name with 3 or more characters.\"\r\n },\r\n OrganisationEnteredAbn: {\r\n required: \"You must specify the ABN for your organisation.\"\r\n },\r\n AlreadyListed: {\r\n required: \"You must indicate if this organisation already exists.\"\r\n },\r\n SelectedOrganisationId: {\r\n required: \"You must select an existing organisation.\"\r\n },\r\n PrimaryService: {\r\n required: \"You must specify the primary service offered at this location.\"\r\n },\r\n BriefDescription: {\r\n required: \"You must provide a brief description for this service.\",\r\n minlength: \"You must enter a description of 20 or more characters.\"\r\n },\r\n AgreeConditions: {\r\n required: \"You must agree to our terms and conditions.\"\r\n }\r\n },\r\n errorPlacement: function (error, element) {\r\n if (element.is(\":checkbox\") || element.is(\":radio\")) {\r\n error.appendTo(element.parents('.controls'));\r\n }\r\n else {\r\n error.insertAfter(element);\r\n }\r\n }\r\n });\r\n var orgTypeDropDown = $(\"#OrganisationType\");\r\n var orgSelect = function () {\r\n var orgType = orgTypeDropDown.val();\r\n var orgDisplay = \".orgNone\";\r\n if (orgType !== \"\") {\r\n orgDisplay = \".org\" + orgType;\r\n }\r\n $(\".orgType\").hide();\r\n $(orgDisplay).show();\r\n };\r\n orgTypeDropDown.selectize({\r\n onChange: orgSelect\r\n });\r\n orgSelect();\r\n $(\".org-registerednames\").data(\"shown\", false);\r\n var showHideOrgDetails = function () {\r\n var existingOrg = $(\"#ExistingOrganisationType\").val();\r\n var isOrg = $(\"input[type='radio'][name='UseExistingOrganisation']:checked\").val();\r\n var noAbn = $(\"#OrganisationNoAbn\").is(':checked');\r\n $(\".org-details\").toggle((existingOrg !== \"FoundById\" && isOrg === \"False\") || $(\".org-existing\").length === 0);\r\n $(\".org-registerednames\").toggle(!noAbn && $(\".org-registerednames\").data(\"shown\"));\r\n $(\".org-unregisteredname\").toggle(noAbn);\r\n $(\".org-entered-abn\").prop(\"readonly\", noAbn).toggleClass(\"disabled\", noAbn);\r\n };\r\n showHideOrgDetails();\r\n $(\"input[type='radio'][name='UseExistingOrganisation']\").change(showHideOrgDetails);\r\n var showHideOrgType = function () {\r\n var isListed = $(\"input[type='radio'][name='AlreadyListed']:checked\").val();\r\n var noabn = $(\"#OrganisationNoAbn\").is(\":checked\");\r\n var orgListVisible = $('.org-existing-selection').is(\":visible\");\r\n $(\".org-type\").toggle(noabn || !orgListVisible || isListed !== \"True\");\r\n };\r\n $(\"#OrganisationNoAbn\").change(function () {\r\n showHideOrgDetails();\r\n if ($(\"#OrganisationEnteredAbn\").prop(\"readonly\")) {\r\n $(\"#OrganisationEnteredAbn-error\").remove();\r\n }\r\n showHideOrgType();\r\n });\r\n var alreadyListed = function () {\r\n var isListed = $(\"input[type='radio'][name='AlreadyListed']:checked\").val();\r\n $(\".org-existing-selection\").toggle(isListed === \"True\");\r\n showHideOrgType();\r\n };\r\n alreadyListed();\r\n $(\"input[type='radio'][name='AlreadyListed']\").change(alreadyListed);\r\n $(\"#OrganisationValidatedTradingName\").change(function () {\r\n var tradingName = $(\"#OrganisationValidatedTradingName\").val();\r\n if (tradingName) {\r\n $('.org-preferredname').val(tradingName);\r\n }\r\n });\r\n //$(\"div[id^='sectionnext-']\").click(function () {\r\n // var id = $(this).prop('id').substr('sectionnext-'.length);\r\n // if (form.valid()) {\r\n // $(\"#section-\" + id).hide();\r\n // id++;\r\n // $(\"#section-\" + id).show();\r\n // $(\"#section-\" + id).trigger(\"sectionShow\");\r\n // }\r\n //});\r\n //$(\"div[id^='sectionback-']\").click(function () {\r\n // var id = $(this).prop('id').substr('sectionback-'.length);\r\n // $(\"#section-\" + id).hide();\r\n // id--;\r\n // $(\"#section-\" + id).show();\r\n // $(\"#section-\" + id).trigger(\"sectionShow\");\r\n //});\r\n //var firstMap = true;\r\n //$(\"#section-2\").on(\"sectionShow\", function () {\r\n // if (firstMap) {\r\n // firstMap = false;\r\n // drawMap(\"#map-location\");\r\n // }\r\n // else {\r\n // google.maps.event.trigger(window.Map, 'resize');\r\n // }\r\n //});\r\n var geolocationCallback = function () {\r\n var lat = $(\".map-lat\").val();\r\n var lng = $(\".map-lng\").val();\r\n $(\"#UnsupportedAddress\").hide();\r\n $.ajax({\r\n type: \"GET\",\r\n url: \"/api/councils/\" + lat + \"/\" + lng,\r\n cache: false,\r\n success: function (data) {\r\n if (!data || !data.Loaded) {\r\n $(\"#UnsupportedAddress\").show();\r\n }\r\n }\r\n });\r\n };\r\n drawMap(\"#map-location\", geolocationCallback);\r\n setMapAddressReadonly(true);\r\n $('.map-edit-address').click(function (e) {\r\n e.preventDefault();\r\n var readonly = !$('.map-edit-address').hasClass(\"btn-success\");\r\n setMapAddressReadonly(readonly);\r\n if (readonly) {\r\n google.maps.event.trigger(window.Autocomplete, 'place_changed');\r\n }\r\n });\r\n $(\"#useOrgNameForOutlet\").click(function (e) {\r\n e.preventDefault();\r\n var name = \"\";\r\n var existingOrg = $(\"#ExistingOrganisationType\").val();\r\n var isOrg = $(\"input[type='radio'][name='UseExistingOrganisation']:checked\").val();\r\n if (existingOrg === \"FoundById\" || isOrg === \"True\") {\r\n name = $(\"#ExistingOrganisationName\").val();\r\n }\r\n else if ($('#OrganisationNoAbn').is(\":checked\")) {\r\n name = $(\"#OrganisationNoAbnTradingName\").val();\r\n }\r\n else {\r\n name = $.trim($(\"#OrganisationValidatedTradingNameSelect\").val());\r\n if (name === '') {\r\n var tradingName = $.trim($(\"#OrganisationValidatedTradingName\").val());\r\n if ((tradingName || \"\").length > 0 && tradingName !== \"-- none listed --\") {\r\n name = tradingName;\r\n }\r\n else {\r\n name = $(\"#OrganisationValidatedLegalName\").val();\r\n }\r\n }\r\n }\r\n var suburb = $.trim($(\"#Suburb\").val());\r\n if ((suburb || \"\").length > 0) {\r\n name = name + \" - \" + suburb;\r\n }\r\n $('#Nickname').val(name);\r\n });\r\n var referralRequired = function () {\r\n var refRequired = $(\"input[type='radio'][name='ReferralRequired']:checked\").val();\r\n $(\"#pnlReferralDetails\").toggle(refRequired === \"True\");\r\n };\r\n var populateAbnCharity = function (data) {\r\n var hadData = false;\r\n var fld;\r\n if ($.isNumeric(data.OrganisationTypeGuess)) {\r\n hadData = true;\r\n fld = $('#OrganisationType').selectize();\r\n if (fld.length > 0) {\r\n fld[0].selectize.setValue(data.OrganisationTypeGuess);\r\n }\r\n }\r\n if (data.CharityAddress) {\r\n hadData = true;\r\n $(\"#AddressSearch\").val(data.CharityAddress);\r\n window.Geocoder.geocode({\r\n 'address': data.CharityAddress\r\n }, function (results, status) {\r\n if (status === google.maps.GeocoderStatus.OK) {\r\n clearMap();\r\n var place = results[0];\r\n if (!place || !place.geometry)\r\n return;\r\n if (place.geometry.viewport) {\r\n window.MapView.fitBounds(place.geometry.viewport);\r\n }\r\n else {\r\n window.MapView.setCenter(place.geometry.location);\r\n }\r\n showGeocodeResults(place, google.maps.GeocoderStatus.OK, '', geolocationCallback);\r\n }\r\n else {\r\n clearMap();\r\n }\r\n if ($.trim($(\".map-address1\").val()).length === 0) {\r\n // The address couldn't be fully validated so clear it out.\r\n // Otherwise the person has to clear the field to enter in a valid address.\r\n $(\"#AddressSearch\").val(\"\");\r\n }\r\n });\r\n }\r\n if (data.CharityWebsite) {\r\n hadData = true;\r\n $(\"#Website\").val(data.CharityWebsite);\r\n }\r\n if (data.CharityEmail) {\r\n hadData = true;\r\n $(\"#Email\").val(data.CharityEmail);\r\n $(\"#ManagerEmail\").val(data.CharityEmail);\r\n }\r\n if (data.PrimaryServiceGuess) {\r\n hadData = true;\r\n fld = $('#PrimaryService').selectize();\r\n if (fld.length > 0) {\r\n fld[0].selectize.setValue(data.PrimaryServiceGuess);\r\n }\r\n }\r\n if (data.CharityDescription) {\r\n $(\"#CharityDescription\").html(\"<div class=\\\"form-group\\\"><label class=\\\"control-label\\\">About This Charity</label><div class=\\\"controls\\\">\" + data.CharityDescription + \"</div></div>\");\r\n }\r\n else {\r\n $(\"#CharityDescription\").empty();\r\n }\r\n if (hadData) {\r\n $.notify({\r\n title: \"Pre-filling\",\r\n message: \"We managed to discover some things about your organisation.<br/>Please check and confirm these details are correct.\",\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n }\r\n };\r\n $(\"#OrganisationEnteredAbn\").change(function () {\r\n $(\"#CharityDescription\").empty();\r\n getAbnDetails($(\"#OrganisationEnteredAbn\").val(), populateAbnCharity);\r\n });\r\n $(\"#AddressFormat\").selectize({\r\n plugins: {\r\n \"accessibility\": {}\r\n }\r\n });\r\n $(\"#ManagerTitle\").selectize({\r\n plugins: {\r\n \"accessibility\": {}\r\n }\r\n });\r\n $(\"#PrimaryService\").selectize({\r\n plugins: {\r\n \"accessibility\": {}\r\n }\r\n });\r\n referralRequired();\r\n $(\"input[type='radio'][name='ReferralRequired']\").change(referralRequired);\r\n showRemaining(\"#BriefDescription\", 200, \"#spanRemaining\");\r\n initHtmlEditor(\"FullDescription\");\r\n var description = CKEDITOR.instances[\"FullDescription\"].getData();\r\n description = jQuery('<div />').html(description).text();\r\n CKEDITOR.instances[\"FullDescription\"].setData(description);\r\n var agreeConditions = function () {\r\n $(\".terms-and-conditions-actions\").toggle($(\"#AgreeConditions\").is(\":checked\"));\r\n };\r\n agreeConditions();\r\n $(\"#AgreeConditions\").change(agreeConditions);\r\n var suppliedABN = $(\"#ExistingOrganisationAbn\").val();\r\n var existingOrg = $(\"#ExistingOrganisationType\").val();\r\n var enteredABN = $(\"#OrganisationEnteredAbn\").val();\r\n if (suppliedABN && existingOrg === \"None\" && !(enteredABN)) {\r\n $(\"#OrganisationEnteredAbn\").val(suppliedABN);\r\n getAbnDetails(suppliedABN, populateAbnCharity);\r\n }\r\n }\r\n Page.InitRegisterOrganisationPage = InitRegisterOrganisationPage;\r\n function InitHelpLinks() {\r\n $(document).on(\"keydown\", \".help-title\", function (e) {\r\n if (e.which === 13) {\r\n $(this).trigger(\"click.bs.collapse\");\r\n }\r\n });\r\n // Whenever a link expands, the 'Expand all' should now show 'collapse all'\r\n $(\".help-topic .help-content\").on(\"show.bs.collapse\", function () {\r\n var $elem = $(\".help-title\", $(this).parent());\r\n $elem.addClass(\"help-title-expanded\");\r\n $elem.attr(\"aria-expanded\", \"true\");\r\n });\r\n // Whenever a link set finishes closing, check whether all other groups are closed as well\r\n $(\".help-topic .help-content\").on(\"hidden.bs.collapse\", function () {\r\n var $elem = $(\".help-title\", $(this).parent());\r\n $elem.removeClass(\"help-title-expanded\");\r\n $elem.attr(\"aria-expanded\", \"false\");\r\n });\r\n }\r\n Page.InitHelpLinks = InitHelpLinks;\r\n function InitSearchToggleButtons(mapElem, calendarSelector, firstDate, organisationId) {\r\n var buttonWrapper = $(\"#view-toggles\");\r\n var mapButton = $(\".btn-map.tab-btn, .btn-map .tab-btn\", buttonWrapper);\r\n var listButton = $(\".btn-list.tab-btn, .btn-list .tab-btn\", buttonWrapper);\r\n var eventsButton = $(\".btn-events.tab-btn, .btn-events .tab-btn\", buttonWrapper);\r\n var sectionDiv = $(\".section-search-listing\");\r\n var haveEventsStartedLoading = false;\r\n var haveEventsFinishedLoading = false;\r\n var triggerEventsRerender = false;\r\n function triggerMap(e) {\r\n e.preventDefault();\r\n $(\".btn-list\", buttonWrapper).removeClass(\"active\");\r\n $(\".btn-events\", buttonWrapper).removeClass(\"active\");\r\n $(\".btn-map\", buttonWrapper).addClass(\"active\");\r\n sectionDiv.addClass(\"search-map-view\").removeClass(\"search-list-view\").removeClass(\"search-event-view\");\r\n if (window.MapView) {\r\n $(\".search-map\").show();\r\n google.maps.event.trigger(window.MapView, 'resize');\r\n if (window.Markers.length > 0) {\r\n Common.Map.FitMapBounds(window.MapView, window.Bounds);\r\n }\r\n else {\r\n if (typeof window.CouncilLayer !== 'undefined') {\r\n window.CouncilLayer.setMap(window.MapView);\r\n }\r\n }\r\n }\r\n $(\".search-support\").hide();\r\n $(\".region-information\").show();\r\n $(\".event-information\").hide();\r\n triggerEventsRerender = haveEventsStartedLoading && !haveEventsFinishedLoading;\r\n }\r\n mapButton.on(\"click touchend\", function (e) {\r\n triggerMap(e);\r\n });\r\n mapButton.on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerMap(e);\r\n }\r\n });\r\n function triggerList(e) {\r\n e.preventDefault();\r\n $(\".btn-map\", buttonWrapper).removeClass(\"active\");\r\n $(\".btn-events\", buttonWrapper).removeClass(\"active\");\r\n $(\".btn-list\", buttonWrapper).addClass(\"active\");\r\n sectionDiv.addClass(\"search-list-view\").removeClass(\"search-map-view\").removeClass(\"search-event-view\");\r\n $(\".search-support\").show();\r\n $(\".region-information\").hide();\r\n $(\".event-information\").hide();\r\n triggerEventsRerender = haveEventsStartedLoading && !haveEventsFinishedLoading;\r\n }\r\n listButton.on(\"click touchend\", function (e) {\r\n triggerList(e);\r\n });\r\n listButton.on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerList(e);\r\n }\r\n });\r\n function triggerEvents(e) {\r\n e.preventDefault();\r\n $(\".btn-map\", buttonWrapper).removeClass(\"active\");\r\n $(\".btn-list\", buttonWrapper).removeClass(\"active\");\r\n $(\".btn-events\", buttonWrapper).addClass(\"active\");\r\n sectionDiv.addClass(\"search-event-view\").removeClass(\"search-map-view\").removeClass(\"search-list-view\");\r\n $(\".search-support\").hide();\r\n $(\".search-map\").hide();\r\n $(\".region-information\").hide();\r\n $(\".event-information\").show();\r\n function loadingCallback() {\r\n haveEventsStartedLoading = true;\r\n }\r\n function loadedCallback() {\r\n haveEventsFinishedLoading = true;\r\n }\r\n if (!haveEventsStartedLoading) {\r\n Calendars.InitListingCalendar(calendarSelector, firstDate, organisationId, undefined, undefined, loadingCallback, loadedCallback);\r\n }\r\n if (triggerEventsRerender) {\r\n triggerEventsRerender = false;\r\n $(calendarSelector).fullCalendar(\"rerenderEvents\");\r\n }\r\n }\r\n eventsButton.on(\"click touchend\", function (e) {\r\n triggerEvents(e);\r\n });\r\n eventsButton.on(\"keyup\", function (e) {\r\n if (e.which === 13) {\r\n triggerEvents(e);\r\n }\r\n });\r\n }\r\n Page.InitSearchToggleButtons = InitSearchToggleButtons;\r\n function InitAmcToggleButtons() {\r\n var buttonWrapper = $(\"#amc-toggles\");\r\n var mapButton = buttonWrapper.find(\".btn-map\");\r\n var listButton = buttonWrapper.find(\".btn-list\");\r\n var sectionDiv = $(\".section-search-listing\");\r\n mapButton.on(\"click touchend\", function (e) {\r\n e.preventDefault();\r\n listButton.removeClass(\"active\");\r\n $(this).addClass(\"active\");\r\n sectionDiv.addClass(\"search-map-view\").removeClass(\"search-list-view\");\r\n google.maps.event.trigger(window.MapView, 'resize');\r\n $(\".search-support\").hide();\r\n });\r\n listButton.on(\"click touchend\", function (e) {\r\n e.preventDefault();\r\n mapButton.removeClass(\"active\");\r\n $(this).addClass(\"active\");\r\n sectionDiv.addClass(\"search-list-view\").removeClass(\"search-map-view\");\r\n $(\".search-support\").show();\r\n });\r\n $(\"#settingsModal\").on(\"shown.bs.modal\", function () {\r\n $(\"#settingsModal [role=document]:first\").focus();\r\n });\r\n }\r\n Page.InitAmcToggleButtons = InitAmcToggleButtons;\r\n function LoadPartners() {\r\n }\r\n Page.LoadPartners = LoadPartners;\r\n function LoadRemoteResults(councilId, categoryGroupId, categoryId, searchTerm, page, focus) {\r\n var resultsTargetName = \".search-support .results\";\r\n var resultsTemplateName = \"#remoteTemplate\";\r\n if (page === 1) {\r\n Page.ShowThinking(resultsTargetName);\r\n }\r\n var s = (searchTerm || \"-\").replace(/[^a-zA-Z0-9]/g, ' ');\r\n var apiSearchUrl = \"/api/Search/Remote/\" + councilId + \"/\" + categoryGroupId + \"/\" + categoryId + \"/\" + encodeURIComponent(s) + \"/\" + page;\r\n if ($('#hfShiftCategoryId').val() > 0) {\r\n apiSearchUrl = \"/api/Shift/Search/Remote/\" + councilId + \"/\" + $('#hfShiftCategoryId').val() + \"/0/\" + encodeURIComponent(s) + \"/\" + page;\r\n }\r\n $.getJSON(\"\" + apiSearchUrl, function (data) {\r\n if (page === 1) {\r\n var template = $(resultsTemplateName).render(data.Results);\r\n var $template = $(\"<div/>\").html(template);\r\n $(\".nofollow\", $template).removeAttr(\"rel\");\r\n template = $template.html();\r\n $(resultsTargetName).html(template);\r\n if (data.Results.length <= 0 || data.Total <= 0) {\r\n $(\".servicing-this-region\").hide();\r\n }\r\n }\r\n else {\r\n var template2 = $(resultsTemplateName).render(data.Results);\r\n var $template2 = $(\"<div/>\").html(template2);\r\n $(\".nofollow\", $template2).removeAttr(\"rel\");\r\n template2 = $template2.html();\r\n $(resultsTargetName).append(template2);\r\n }\r\n $(resultsTargetName).attr(\"aria-rowcount\", $(\"#remote-results .search-support-item\").length);\r\n if (data.Total > 0) {\r\n setupSearchResultsAria(document.getElementById(\"remote-results\"), focus ? \"#remote-results\" : null);\r\n }\r\n if (data.Results.length > 0) {\r\n $(resultsTargetName).append('<a tabindex=\"0\" class=\"btn-load-more\" data-next-page=\"' + (page + 1) + '\" aria-label=\"Show more listings servicing this area\">Load more</a>');\r\n $(\".btn-load-more\").off(\"click\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n $(this).hide();\r\n Page.LoadRemoteResults(councilId, categoryGroupId, categoryId, searchTerm, $(this).data(\"next-page\"), true);\r\n });\r\n $(\".btn-load-more\").off(\"keyup\").on(\"keyup\", function (e) {\r\n e.preventDefault();\r\n if (e.which === 13) {\r\n $(this).hide();\r\n Page.LoadRemoteResults(councilId, categoryGroupId, categoryId, searchTerm, $(this).data(\"next-page\"), true);\r\n }\r\n });\r\n }\r\n //else {\r\n // $(\".servicing-this-region\").hide();\r\n //}\r\n });\r\n }\r\n Page.LoadRemoteResults = LoadRemoteResults;\r\n function LoadCategorySuggestions(searchTerm) {\r\n //var resultsTargetName = \".category-results\";\r\n var resultsTemplateName = \"#categoryTemplate\";\r\n var s = (searchTerm || \"-\").replace(/[^a-zA-Z0-9]/g, ' ');\r\n $.getJSON(\"/api/Search/categories/\" + s, function (data) {\r\n if (data == null || data.length == 0) {\r\n $(\".category-search-support\").hide();\r\n return;\r\n }\r\n var template = $(resultsTemplateName).render(data);\r\n console.log(template);\r\n var $template = $(\"<div/>\").html(template);\r\n $(\".nofollow\", $template).removeAttr(\"rel\");\r\n template = $template.html();\r\n $(\".category-results-contents\").append($template);\r\n $(\".category-suggestions-loading\").hide();\r\n $(\".category-search-support-item\").show();\r\n });\r\n }\r\n Page.LoadCategorySuggestions = LoadCategorySuggestions;\r\n function InitAdvancedSearch() {\r\n var councilId = parseInt(arguments[0]);\r\n var stateCode = arguments[1];\r\n var useElasticOptimisationDefault = arguments[2];\r\n $(\"#btnClearFields\").on('click touchend', function (e) {\r\n e.preventDefault();\r\n $(\"input\").val('');\r\n $(\"select\").val('');\r\n $(\".answer-btn:first-child\").click();\r\n $(\"#tags\").selectize()[0].selectize.clear();\r\n $(\"#accreditations\").selectize()[0].selectize.clear();\r\n $(\"#advancedCategory\").selectize()[0].selectize.clear();\r\n $(\"#radius\").val('50');\r\n });\r\n $(\"#btnSearchAdvanced\").on('click touchend', function (e) {\r\n e.preventDefault();\r\n console.log($(\"#hfStateCode\").val());\r\n var search = saveAdvancedSearch();\r\n window.location.href = \"/Search/Directory?\" + jsonToQueryString(search);\r\n });\r\n $(\"#btnNearMe\").on('click', function (e) {\r\n navigator.geolocation.getCurrentPosition(showPosition, function (posError) {\r\n $.notify({\r\n title: \"Error\",\r\n message: \"We were unable to get your location from your browser for the following reason: <i>\" + posError.message + \"</i>\",\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n });\r\n function showPosition(position) {\r\n $.getJSON(\"/api/Councils/\" + position.coords.latitude + \"/\" + position.coords.longitude, function (councilData) {\r\n if (councilData.Loaded) {\r\n $.getJSON(\"/api/Locations/\" + position.coords.latitude + \"/\" + position.coords.longitude, function (locData) {\r\n if ((locData.Name || '') !== '') {\r\n $(\"#autocomplete-location\").val($.trim(locData.Name + \" \" + (locData.Postcode || \"\")));\r\n }\r\n else {\r\n $(\"#autocomplete-location\").val(councilData.DisplayName);\r\n }\r\n });\r\n }\r\n else {\r\n $.notify({\r\n title: \"Error\",\r\n message: \"We were unable to find your location in one of our member councils.\",\r\n icon: \"glyphicon glyphicon-info-sign\"\r\n });\r\n }\r\n });\r\n }\r\n });\r\n $(\"#abn\").mask('99 999 999 999');\r\n $(\".answer-btn\").on('click', selectOption);\r\n $(\".answer-set-btn\").on('click', selectSetOption);\r\n $(\".btn-where\").on(\"click\", selectLocation);\r\n restoreAdvancedSearch(getSearchValues(councilId), useElasticOptimisationDefault);\r\n $(\"#hfStateCode\").val(stateCode);\r\n var localityId = $(\"#hfLocationId\").val();\r\n if (localityId > 0) {\r\n $.getJSON(\"/api/Locations/id/\" + localityId, function (data) {\r\n Common.SetCurrentLocality(data);\r\n });\r\n }\r\n else if (councilId > 0) {\r\n $.getJSON(\"/api/Councils/\" + councilId, function (data) {\r\n Common.SetCurrentCouncil(data);\r\n });\r\n }\r\n else if (stateCode) {\r\n $.getJSON(\"/api/States/\" + stateCode, function (data) {\r\n Common.SetCurrentCouncil(data);\r\n });\r\n }\r\n $('#tags').selectize({\r\n delimiter: ',',\r\n valueField: 'ID',\r\n labelField: 'TagName',\r\n sortField: 'TagName',\r\n searchField: ['Keywords', 'TagName'],\r\n closeAfterSelect: true,\r\n hideSelected: true,\r\n create: false,\r\n preload: true,\r\n placeholder: \"Tags\",\r\n plugins: {\r\n \"accessibility\": {\r\n Label: \"Search for tags that are applied to services in the directory. Select then press enter. Backspace deletes last entry\"\r\n }\r\n },\r\n onChange: function () {\r\n if (this.items.length > 0) {\r\n $(\"#hintTags\").show();\r\n }\r\n else {\r\n $(\"#hintTags\").hide();\r\n }\r\n },\r\n onInitialize: function () {\r\n var previousSelections = $(this.$input).data('selectize-value') || \"\";\r\n if (previousSelections === \"\")\r\n return;\r\n var self = this;\r\n $.ajax({\r\n url: \"/api/tags/specified/\" + previousSelections,\r\n type: 'GET',\r\n dataType: 'json',\r\n success: function (data) {\r\n var items = data.Results;\r\n self.clear();\r\n self.clearOptions();\r\n self.addOption(items);\r\n items.forEach(function (option) {\r\n self.addItem(option[self.settings.valueField]);\r\n });\r\n }\r\n });\r\n },\r\n load: function (query, callback) {\r\n var orderByLength = \"true\";\r\n // check if query is empty\r\n if (!query.length) {\r\n query = \"_\"; //return callback();\r\n orderByLength = \"false\";\r\n }\r\n $.ajax({\r\n url: \"/api/tags/page/1/\" + query + \"/true/\" + orderByLength,\r\n type: 'GET',\r\n dataType: 'json',\r\n data: {\r\n s: query,\r\n per: 10\r\n },\r\n error: function (data) {\r\n callback(data);\r\n },\r\n success: function (data) {\r\n callback(data.Results);\r\n }\r\n });\r\n }\r\n });\r\n $('#accreditations').selectize({\r\n delimiter: ',',\r\n valueField: 'AccreditationID',\r\n labelField: 'Title',\r\n searchField: 'Title',\r\n sortField: 'Title',\r\n closeAfterSelect: true,\r\n hideSelected: true,\r\n create: false,\r\n preload: true,\r\n placeholder: \"Self Assessments\",\r\n plugins: {\r\n \"accessibility\": {\r\n Label: \"Search for self assessment type. Select then press enter. Backspace deletes last entry\"\r\n }\r\n },\r\n onChange: function () {\r\n if (this.items.length > 0) {\r\n $(\"#hintSelfAssessments\").show();\r\n }\r\n else {\r\n $(\"#hintSelfAssessments\").hide();\r\n }\r\n },\r\n onInitialize: function () {\r\n var previousSelections = $(this.$input).data('selectize-value') || \"\";\r\n if (previousSelections === \"\")\r\n return;\r\n var self = this;\r\n $.ajax({\r\n url: \"/api/accreditation/specified/\" + previousSelections,\r\n type: 'GET',\r\n dataType: 'json',\r\n success: function (data) {\r\n var items = data.Results;\r\n self.clear();\r\n self.clearOptions();\r\n self.addOption(items);\r\n items.forEach(function (option) {\r\n self.addItem(option[self.settings.valueField]);\r\n });\r\n }\r\n });\r\n },\r\n load: function (query, callback) {\r\n // check if query is empty\r\n if (!query.length)\r\n query = \"_\"; // return callback();\r\n $.ajax({\r\n url: \"/api/accreditation/page/1/\" + query,\r\n type: 'GET',\r\n dataType: 'json',\r\n data: {\r\n s: query,\r\n per: 10\r\n },\r\n error: function (data) {\r\n callback(data);\r\n },\r\n success: function (data) {\r\n callback(data.Results);\r\n }\r\n });\r\n }\r\n });\r\n $(\"#advancedCategory\").selectize({\r\n delimiter: ',',\r\n valueField: 'CategoryID',\r\n labelField: 'CategoryName',\r\n searchField: 'CategoryName',\r\n sortField: 'special',\r\n optgroupField: 'class',\r\n placeholder: 'Category',\r\n plugins: {\r\n \"accessibility\": {\r\n Label: \"Search within service categories. Select then press enter. Backspace deletes last entry\"\r\n }\r\n },\r\n preload: true,\r\n onChange: function () {\r\n if (this.items.length > 0) {\r\n $(\"#hintCategory\").show();\r\n }\r\n else {\r\n $(\"#hintCategory\").hide();\r\n }\r\n },\r\n onInitialize: function () {\r\n var previousSelections = $(this.$input).data('selectize-value') || \"\";\r\n if (previousSelections === \"\")\r\n return;\r\n var self = this;\r\n $.ajax({\r\n url: \"/api/categorygroups/specified/\" + previousSelections,\r\n type: 'GET',\r\n dataType: 'json',\r\n success: function (data) {\r\n var items = data.Results;\r\n self.clear();\r\n self.clearOptions();\r\n self.addOption(items);\r\n items.forEach(function (item) {\r\n if (item.Categories.length === 0) {\r\n var option = {\r\n special: \"a\" + item.Name,\r\n CategoryID: \"0.\" + item.ID,\r\n CategoryName: item.Name + \" -- All\",\r\n class: item.CategoryKeywords\r\n };\r\n self.addOption(option);\r\n self.addItem(option[self.settings.valueField]);\r\n }\r\n else {\r\n item.Categories.forEach(function (category) {\r\n var option = {\r\n special: \"z\" + item.Name,\r\n CategoryID: category.ID + \".\" + item.ID,\r\n CategoryName: category.Name,\r\n class: item.CategoryKeywords\r\n };\r\n self.addOption(option);\r\n self.addItem(option[self.settings.valueField]);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n },\r\n load: function (query, callback) {\r\n var self = this;\r\n if (!query.length) {\r\n query = \"_\";\r\n }\r\n $.ajax({\r\n url: \"/api/categorygroups/page/1/\" + query + \"/true/false\",\r\n type: 'GET',\r\n dataType: 'json',\r\n data: {\r\n s: query,\r\n per: 10\r\n },\r\n error: function () {\r\n console.log('Error loading categories.');\r\n },\r\n success: function (data) {\r\n var groupID = 0;\r\n for (var i = 0; i < data.Results.length; i++) {\r\n if (data.Results[i].ID !== groupID) {\r\n self.addOptionGroup(data.Results[i].CategoryKeywords, {\r\n label: data.Results[i].Name,\r\n special: data.Results[i].Name\r\n });\r\n self.addOption({\r\n special: \"a\" + data.Results[i].Name,\r\n CategoryID: \"0.\" + data.Results[i].ID,\r\n CategoryName: data.Results[i].Name + \" -- All\",\r\n class: data.Results[i].CategoryKeywords\r\n });\r\n groupID = data.Results[i].ID;\r\n }\r\n self.addOption({\r\n special: \"z\" + data.Results[i].Name,\r\n CategoryID: data.Results[i].Categories[0].ID + \".\" + data.Results[i].ID,\r\n CategoryName: data.Results[i].Categories[0].Name,\r\n class: data.Results[i].CategoryKeywords\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n Page.InitAdvancedSearch = InitAdvancedSearch;\r\n function AfterSimilarResultsRequest() {\r\n $('#view-similar-btn').show();\r\n var currentListingID = $('#similar-listings').data('listing-id');\r\n $(\"#results .search-result[data-listing-id=\\\"\" + currentListingID + \"\\\"]\").hide(); // hide the same service\r\n var radius = $('#results').data('radius');\r\n var category = $('#results').data('category');\r\n var categoryGroup = $('#results').data('category-group');\r\n var location = $('#results').data('location');\r\n var council = $('#results').data('council');\r\n var sortField = $('#results').data('sort-field');\r\n var sortDirection = $('#results').data('sort-direction');\r\n var pageNo = $('#results').data('page-no');\r\n var pageSize = $('#results').data('page-size');\r\n var loggedIn = $('#results').data('logged-in');\r\n if (($('#results .search-result').length <= 0)\r\n || ($('#results .search-result').length <= 1 && $(\"#results .search-result[data-listing-id=\\\"\" + currentListingID + \"\\\"]\").length > 0)) { // not including the same service\r\n var moreResults = $('#results').data('more-results');\r\n if (moreResults === undefined || moreResults === true) {\r\n var radiusList = [10, 20, 50, 100];\r\n var currentRadiusIndex = radiusList.indexOf(radius);\r\n if (currentRadiusIndex < radiusList.length - 1)\r\n currentRadiusIndex++;\r\n radius = radiusList[currentRadiusIndex];\r\n if (radius >= 100) {\r\n $('#results').data('more-results', false);\r\n }\r\n $('#results').data('radius', radius);\r\n $('#similar-listings #radius-text').text(\"within \" + radius + \"km radius\");\r\n LoadSearchResults({\r\n SearchType: 'Category',\r\n What: '',\r\n Where: '',\r\n Category: category,\r\n CategoryGroup: categoryGroup,\r\n Location: location,\r\n Radius: radius,\r\n Council: council,\r\n SortField: sortField,\r\n SortDirection: sortDirection,\r\n PageNo: pageNo,\r\n PageSize: pageSize\r\n }, null, loggedIn, function () { return AfterSimilarResultsRequest(); });\r\n }\r\n }\r\n else {\r\n $('#similar-listings #radius-text').text(\"within \" + radius + \"km radius\");\r\n }\r\n }\r\n Page.AfterSimilarResultsRequest = AfterSimilarResultsRequest;\r\n function LoadSearchResults(crit, favouriteModalUrl, loggedIn, onSuccess, onFailed) {\r\n Common.SetupShareModal($('#ShareModal-ShareNonlisted'));\r\n $('#results').data('category', crit.Category);\r\n $('#results').data('category-group', crit.CategoryGroup);\r\n $('#results').data('location', crit.Location);\r\n $('#results').data('radius', crit.Radius);\r\n $('#results').data('council', crit.Council);\r\n $('#results').data('sort-field', crit.SortField);\r\n $('#results').data('sort-direction', crit.SortDirection);\r\n $('#results').data('page-no', crit.PageNo);\r\n $('#results').data('page-size', crit.PageSize);\r\n $('#results').data('logged-in', loggedIn);\r\n function loadResults(data, crit) {\r\n displayResults(data, true, crit.ShowResourceList);\r\n if ($('#similar-listings').length <= 0) { // a hack to ignore some pages\r\n if (data.IsExpandedSearch) {\r\n displayOtherResultsSummary(data);\r\n }\r\n else {\r\n displayResultsSummary(data);\r\n }\r\n displayExtraInformation();\r\n if (data.Total > 0 && $('#similar-listings').length <= 0) {\r\n setupSearchResultsAria(document.getElementById(\"results\"), null);\r\n }\r\n $(\".search-force-expanded\").toggle(data.Criteria.ForceExpandSearch);\r\n if (data.Criteria.ForceExpandSearch) {\r\n crit.Ext = true;\r\n if (crit.OrigParams)\r\n crit.OrigParams.Ext = true;\r\n }\r\n displayResultsPagination(crit, loggedIn, data.Results.length, data.Total, data.Criteria.PageSize, favouriteModalUrl, data.Criteria.AllowExpandSearch);\r\n setupResultsButtonActions(crit, favouriteModalUrl, loggedIn, onSuccess);\r\n }\r\n }\r\n function searchLocalServices() {\r\n $.getJSON(\"/api/Search/Local\", crit, function (data) {\r\n loadResults(data, crit);\r\n })\r\n .fail(function (jqXHR, textStatus, errorThrown) {\r\n if (jqXHR.status === 404) {\r\n loadResults(jqXHR.responseJSON, crit);\r\n $(\".search-expand\").show();\r\n }\r\n else if (jqXHR.responseText === \"Timeout\") {\r\n $(\"#results\").html(\"<div class='alert alert-danger'>Your request took too long, please try again later.</div>\");\r\n }\r\n else {\r\n $(\"#results\").html(\"<div class='alert alert-danger'>An unexpected error occurred: \" + (errorThrown || textStatus || \"unknown error\") + \".</div>\");\r\n }\r\n if (typeof onFailed !== \"undefined\") {\r\n onFailed();\r\n }\r\n })\r\n .done(function () {\r\n PageSetup.InitSearchResultsBehavior();\r\n $(\".search-expand\").show();\r\n if (typeof onSuccess !== \"undefined\") {\r\n onSuccess();\r\n }\r\n });\r\n }\r\n function searchCouncilServices() {\r\n // If search by Council, we should increase the radius to the large number\r\n crit.Radius = 4000;\r\n $.getJSON(\"/api/search/council/\" + crit.Council + \"/0\", crit, function (data) {\r\n loadResults(data, crit);\r\n })\r\n .fail(function (jqXHR, textStatus, errorThrown) {\r\n if (jqXHR.status === 404) {\r\n loadResults(jqXHR.responseJSON, crit);\r\n $(\".search-expand\").show();\r\n }\r\n else if (jqXHR.responseText === \"Timeout\") {\r\n $(\"#results\").html(\"<div class='alert alert-danger'>Your request took too long, please try again later.</div>\");\r\n }\r\n else {\r\n $(\"#results\").html(\"<div class='alert alert-danger'>An unexpected error occurred: \" + (errorThrown || textStatus || \"unknown error\") + \".</div>\");\r\n }\r\n if (typeof onFailed !== \"undefined\") {\r\n onFailed();\r\n }\r\n })\r\n .done(function () {\r\n PageSetup.InitSearchResultsBehavior();\r\n $(\".search-expand\").show();\r\n if (typeof onSuccess !== \"undefined\") {\r\n onSuccess();\r\n }\r\n });\r\n }\r\n aria.Utils.AriaAlert(\"Performing search\", 2);\r\n if (firstSearch) {\r\n firstSearch = false;\r\n $(\".btn-expand-search\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n crit.Ext = true;\r\n crit.OrigParams.Ext = true;\r\n $(\".btn-expand-search\").hide();\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn);\r\n });\r\n crit.OrigTitle = document.title;\r\n crit.OrigUrl = document.location.href.split(/[?#]/)[0];\r\n crit.OrigParams = document.location.search.replace(/(^\\?)/, '').split(\"&\").map(function (n) {\r\n var parts;\r\n parts = n.split(\"=\");\r\n this[parts[0]] = parts[1];\r\n return this;\r\n }.bind({}))[0];\r\n $(window).on('popstate', function (e) {\r\n crit = e.originalEvent.state;\r\n Page.LoadSearchResults(crit, favouriteModalUrl, loggedIn);\r\n });\r\n }\r\n if (crit.SearchType && crit.SearchType === 'Search') {\r\n $('#autocomplete-category').val(crit.IsAdvanced ? \"\" : crit.What);\r\n crit.Where = $(\"#autocomplete-location-new\").val();\r\n $('#autocomplete-location').val(crit.Where);\r\n $('.ddl-radius').val(crit.Radius);\r\n }\r\n // TODO: these should be assigned somewhere else\r\n // do not modify these here as these are used for presenting the \r\n // current state in order to interact with the current/initial view data correctly\r\n // only modify in case of transitioning to a different result page\r\n //$(\"#hfCategoryGroupId\").val(crit.CategoryGroup);\r\n //$(\"#hfCategoryId\").val(crit.Category);\r\n //$(\"#hfLocationId\").val(crit.Location);\r\n //$(\"#hfCouncilId\").val(crit.Council);\r\n //$(\"#hfSortField\").val(crit.SortField);\r\n //$(\"#hfSortDirection\").val(crit.SortDirection);\r\n //$(\"#hfShiftCategoryId\").val(crit.ShiftCategory);\r\n if (crit.ShiftCategory > 0) {\r\n $('#autocomplete-category').val(crit.What);\r\n }\r\n Page.ShowThinking(\"#results\");\r\n if (crit.Location !== null && crit.Location !== 0) {\r\n searchLocalServices();\r\n }\r\n else {\r\n // If location is null, search by council region\r\n searchCouncilServices();\r\n }\r\n $(\"body\").on(\"click touchend\", \".keywordSearch .close\", function (ev) {\r\n ev.preventDefault();\r\n var $anchor = $(ev.target);\r\n $anchor.closest(\".keywordSearch\").hide();\r\n });\r\n }\r\n Page.LoadSearchResults = LoadSearchResults;\r\n function LoadNHSDResults(what, where) {\r\n var url = \"/api/search/nhsd?what=\" + what + \"&where=\" + where;\r\n $(\"#nhsdResults\").show();\r\n var htmlResult = \"\";\r\n $.getJSON(url, function (d) {\r\n if (d) {\r\n var result = JSON.parse(d);\r\n if (result && result.SiteSearchResponse && result.SiteSearchResponse.SiteSearchResult &&\r\n result.SiteSearchResponse.SiteSearchResult.ResultList && result.SiteSearchResponse.SiteSearchResult.ResultList.SiteData &&\r\n result.SiteSearchResponse.SiteSearchResult.ResultList.SiteData.length > 0) {\r\n if (!result.NHSDUrl) {\r\n // fallback url\r\n result.NHSDUrl = 'https://www.healthdirect.gov.au/australian-health-services';\r\n }\r\n console.log(result.SiteSearchResponse.SiteSearchResult.ResultList.SiteData);\r\n var results_1 = $(\"#nhsdTemplate\").render(result.SiteSearchResponse.SiteSearchResult.ResultList.SiteData, {\r\n nhsdUrl: result.NHSDUrl,\r\n nhsdId: result.NHSDID\r\n });\r\n var $results = $(\"<div/>\").html(results_1);\r\n $(\".nofollow\", $results).removeAttr(\"rel\");\r\n results_1 = $results.html();\r\n var preHtml = \"<p>Search <b>\" + what + \"</b> in or near <b>\" + where + \"</b> on the <b><em>National Health Services Directory</em></b></p>\";\r\n var endHtml = \"<p class='nhsd-results-logo'>Search results powered by <img src='https://mcdcdn.blob.core.windows.net/images/nhsdLogo.png'></p>\";\r\n htmlResult = preHtml + results_1 + endHtml;\r\n }\r\n }\r\n }).done(function () {\r\n if (htmlResult === \"\") {\r\n $(\"#nhsdResults\").hide();\r\n }\r\n else {\r\n $(\"#nhsdResults\").html(htmlResult);\r\n }\r\n });\r\n $.views.converters(\"dec\", function (val) {\r\n return (+val / 1000).toFixed(2) + \"km\";\r\n });\r\n }\r\n Page.LoadNHSDResults = LoadNHSDResults;\r\n function InitSliders() {\r\n // Create the slick sliders on the homepage\r\n $(\".section-supporters .list-partners\").not('.slick-initialized').slick({\r\n slide: \"li\",\r\n slidesToShow: 4,\r\n responsive: [{\r\n breakpoint: 1080,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: 840,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n },\r\n {\r\n breakpoint: 560,\r\n settings: {\r\n slidesToShow: 1\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n Page.InitSliders = InitSliders;\r\n function InitConnectPage() {\r\n var passwordForm = $(\"#passwordForm\");\r\n if (passwordForm.length) {\r\n passwordForm.validate({\r\n rules: {\r\n Password: {\r\n required: true,\r\n minlength: 6,\r\n regex: /^\\S*$/\r\n },\r\n PasswordConfirmation: {\r\n required: true,\r\n equalTo: \"#Password\"\r\n }\r\n },\r\n messages: {\r\n Password: {\r\n required: \"Please enter your password\",\r\n minlength: \"Your password must be at least six characters long\",\r\n regex: \"Your password cannot contain any spaces\"\r\n },\r\n PasswordConfirmation: {\r\n required: \"Please confirm your password\",\r\n equalTo: \"Your passwords must match\"\r\n }\r\n }\r\n });\r\n initPasswordStrength();\r\n }\r\n var tokenForm = $(\"#tokenForm\");\r\n if (tokenForm.length) {\r\n tokenForm.validate({\r\n rules: {\r\n Token: {\r\n required: true,\r\n maxlength: 60\r\n }\r\n },\r\n messages: {\r\n Token: {\r\n required: \"Please input a token\",\r\n maxlength: \"The token must be at most 60 characters long\"\r\n }\r\n }\r\n });\r\n }\r\n drawMap(\"#locationMap\");\r\n }\r\n Page.InitConnectPage = InitConnectPage;\r\n function InitResetPasswordPage() {\r\n var passwordForm = $(\"#passwordForm\");\r\n if (passwordForm.length) {\r\n passwordForm.validate({\r\n rules: {\r\n Password: {\r\n required: true,\r\n minlength: 6,\r\n regex: /^\\S*$/\r\n },\r\n PasswordConfirmation: {\r\n required: true,\r\n equalTo: \"#Password\"\r\n }\r\n },\r\n messages: {\r\n Password: {\r\n required: \"Please enter your new password\",\r\n minlength: \"Your new password must be at least six characters long\",\r\n regex: \"Your new password cannot contain any spaces\"\r\n },\r\n PasswordConfirmation: {\r\n required: \"Please confirm your new password\",\r\n equalTo: \"Your new passwords must match\"\r\n }\r\n }\r\n });\r\n initPasswordStrength();\r\n }\r\n var tokenForm = $(\"#tokenForm\");\r\n if (tokenForm.length) {\r\n tokenForm.validate({\r\n rules: {\r\n Token: {\r\n required: true,\r\n maxlength: 60\r\n }\r\n },\r\n messages: {\r\n Token: {\r\n required: \"Please input a token\",\r\n maxlength: \"The token must be at most 60 characters long\"\r\n }\r\n }\r\n });\r\n }\r\n passwordForm.on(\"submit\", function () {\r\n if (!passwordForm.valid()) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n }\r\n Page.InitResetPasswordPage = InitResetPasswordPage;\r\n function InitChangePasswordPage() {\r\n var passwordForm = $(\"#passwordForm\");\r\n if (passwordForm.length) {\r\n passwordForm.validate({\r\n rules: {\r\n CurrentPassword: {\r\n required: true,\r\n minlength: 6,\r\n regex: /^\\S*$/\r\n },\r\n Password: {\r\n required: true,\r\n minlength: 6,\r\n regex: /^\\S*$/\r\n },\r\n PasswordConfirmation: {\r\n required: true,\r\n equalTo: \"#Password\"\r\n }\r\n },\r\n messages: {\r\n CurrentPassword: {\r\n required: \"Please enter your current password\",\r\n minlength: \"\",\r\n regex: \"\"\r\n },\r\n Password: {\r\n required: \"Please enter your new password\",\r\n minlength: \"Your new password must be at least six characters long\",\r\n regex: \"Your new password cannot contain any spaces\"\r\n },\r\n PasswordConfirmation: {\r\n required: \"Please confirm your new password\",\r\n equalTo: \"Your new passwords must match\"\r\n }\r\n }\r\n });\r\n initPasswordStrength();\r\n }\r\n }\r\n Page.InitChangePasswordPage = InitChangePasswordPage;\r\n function InitHHSPage() {\r\n var mapName = arguments[0] || \".map\";\r\n drawMap(mapName);\r\n $(\".connect\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n var regionId = $(this).data(\"regionid\");\r\n var categoryId = $(this).data(\"categoryid\");\r\n $(this).append(\"<img src='/_static/images/processing_small.gif' class='waiting_on_map' />\");\r\n $.getJSON(\"/api/search/regional/\" + regionId + \"/\" + categoryId, function (d) {\r\n loadMap(mapName, d.Results);\r\n $('.waiting_on_map').remove();\r\n });\r\n });\r\n }\r\n Page.InitHHSPage = InitHHSPage;\r\n function InitAffiliateGroupMapPage() {\r\n var mapName = arguments[0] || \".map\";\r\n drawMap(mapName);\r\n $(\".connect\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n var regionId = $(this).data(\"regionid\");\r\n var group = $(this).data(\"group\");\r\n $(this).append(\"<img src='/_static/images/processing_small.gif' class='waiting_on_map' />\");\r\n $.getJSON(\"/api/search/group/\" + regionId + \"/\" + group, function (d) {\r\n loadMap(mapName, d.Results);\r\n $('.waiting_on_map').remove();\r\n });\r\n });\r\n }\r\n Page.InitAffiliateGroupMapPage = InitAffiliateGroupMapPage;\r\n function InitCommunityActivityPage() {\r\n Common.SetupShareModal($('#ShareModal-ShareQRCode'));\r\n $('.activity-form').submit(function (e) {\r\n e.preventDefault(); // Prevent default form submission\r\n var formData = $(this).serialize(); // Serialize form data\r\n $.ajax({\r\n type: \"POST\",\r\n url: $(this).attr('action'),\r\n data: formData,\r\n success: function (response) {\r\n if (response.Success) {\r\n $.notify({\r\n title: '<strong>Success!</strong>',\r\n message: 'Activity saved.'\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n else {\r\n $.notify({\r\n title: '<strong>Error!</strong>',\r\n message: 'Failed to save activity ' + response.Message\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n },\r\n error: function () {\r\n $.notify({\r\n title: '<strong>Error!</strong>',\r\n message: 'Failed to save activity. An error occurred.'\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n },\r\n complete: function () {\r\n }\r\n });\r\n });\r\n $('#copyButton').click(function () {\r\n var urlToCopy = $(this).data('url');\r\n var $temp = $(\"<input>\");\r\n $(\"body\").append($temp);\r\n $temp.val(urlToCopy).select();\r\n document.execCommand(\"copy\");\r\n $temp.remove();\r\n $.notify({\r\n title: '<strong>QR Code Link Coppied!</strong>',\r\n message: ''\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n timer: 500,\r\n });\r\n });\r\n toggleSendEmailButton();\r\n // Event listener for checkbox state change\r\n $('.email-checkbox').change(function () {\r\n toggleSendEmailButton();\r\n });\r\n // Function to enable/disable Send Email button\r\n function toggleSendEmailButton() {\r\n var anyChecked = $('.email-checkbox:checked').length > 0;\r\n $('#sendEmailButton').prop('disabled', !anyChecked);\r\n }\r\n $('#shareQRCode').click(function () {\r\n $('#ShareModal-ShareQRCode').modal('show');\r\n });\r\n if ($('.message-type').length && $('.message-text').length) {\r\n var messageType = $('.message-type').text();\r\n var messageText = $('.message-text').text();\r\n if (messageType === \"Success\") {\r\n $.notify({\r\n title: '<strong>Success!</strong>',\r\n message: messageText\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n else if (messageType === \"Error\") {\r\n $.notify({\r\n title: '<strong>Error!</strong>',\r\n message: messageText\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n }\r\n }\r\n Page.InitCommunityActivityPage = InitCommunityActivityPage;\r\n function InitActivityCotactListPage() {\r\n Common.SetupShareModal($('#ShareModal-ShareQRCode'));\r\n $('button[name=\"copyButton\"]').click(function () {\r\n var urlToCopy = $(this).data('url');\r\n var $temp = $(\"<input>\");\r\n $(\"body\").append($temp);\r\n $temp.val(urlToCopy).select();\r\n document.execCommand(\"copy\");\r\n $temp.remove();\r\n $.notify({\r\n title: '<strong>QR Code Link Coppied!</strong>',\r\n message: ''\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n timer: 500,\r\n });\r\n });\r\n toggleSendEmailButton();\r\n // Event listener for checkbox state change\r\n $('.email-checkbox').change(function () {\r\n toggleSendEmailButton();\r\n });\r\n // Function to enable/disable Send Email button\r\n function toggleSendEmailButton() {\r\n var anyChecked = $('.email-checkbox:checked').length > 0;\r\n $('#sendEmailButton').prop('disabled', !anyChecked);\r\n $('#deleteUserButton').prop('disabled', !anyChecked);\r\n }\r\n $('button[name=\"shareQRCode\"]').click(function () {\r\n // Add a temporary hidden input field to the form with the JSON data\r\n $('<input>').attr({\r\n type: 'hidden',\r\n id: 'currentQRCodePageLink',\r\n value: $(this).closest('.qr-code-wrapper').find('button[name=\"copyButton\"]').data('url')\r\n }).appendTo(this);\r\n $('#ShareModal-ShareQRCode').modal('show');\r\n });\r\n if ($('.message-type').length && $('.message-text').length) {\r\n var messageType = $('.message-type').text();\r\n var messageText = $('.message-text').text();\r\n if (messageType === \"Success\") {\r\n $.notify({\r\n title: '<strong>Success!</strong>',\r\n message: messageText\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n else if (messageType === \"Error\") {\r\n $.notify({\r\n title: '<strong>Error!</strong>',\r\n message: messageText\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n }\r\n $('button[name=\"addUserButton\"]').click(function () {\r\n $('#addUserModal').find('#activityId-input').val($(this).data('activity-id'));\r\n $('#addUserModal').modal('show');\r\n });\r\n var timeout;\r\n $('#user-email-input').on('input', function () {\r\n clearTimeout(timeout);\r\n var email = $(this).val();\r\n if (email.includes('@')) {\r\n timeout = setTimeout(function () {\r\n $.ajax({\r\n url: '/UserInfoCollection/OrgByEmailDomain',\r\n method: 'POST',\r\n data: { email: email },\r\n success: function (response) {\r\n var _a, _b;\r\n if (response.IsOrgFound) {\r\n if ((response === null || response === void 0 ? void 0 : response.Org) != null) {\r\n var orgName = (_b = (_a = response.Org.DisplayName) !== null && _a !== void 0 ? _a : response.Org.PreferredName) !== null && _b !== void 0 ? _b : \"\";\r\n console.log(\"orgName\", orgName);\r\n $('#organisationName-input').val(orgName);\r\n }\r\n }\r\n },\r\n error: function () {\r\n console.error('An error occurred while finding the org.');\r\n }\r\n });\r\n }, 1000);\r\n }\r\n else {\r\n }\r\n });\r\n var typingTimer; //timer identifier\r\n var doneTypingInterval = 1000; //time in ms (5 seconds)\r\n var isExistingEmail = false;\r\n //on keyup, start the countdown\r\n $('#user-email-input').keyup(function () {\r\n $('.can-be-hide').hide();\r\n $('.found_you_text').hide();\r\n $('#add-user-submit').prop('disabled', true);\r\n clearTimeout(typingTimer);\r\n if ($('#user-email-input').val()) {\r\n typingTimer = setTimeout(checkIfExist, doneTypingInterval);\r\n }\r\n });\r\n function checkIfExist() {\r\n $('#email-spinner').show();\r\n jQuery.ajax({\r\n async: true,\r\n url: '/api/Users/IsEmailExist?email=' + $('#user-email-input').val(),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (resp) {\r\n if (resp) {\r\n $('.found_you_text').show();\r\n $('.can-be-hide').hide();\r\n $('.can-be-hide').find('input').val('');\r\n isExistingEmail = true;\r\n }\r\n else {\r\n $('.can-be-hide').show();\r\n $('.found_you_text').hide();\r\n isExistingEmail = false;\r\n }\r\n $('#add-user-submit').prop('disabled', false);\r\n $('#email-spinner').hide();\r\n },\r\n error: function (err) {\r\n alert(err.responseText);\r\n $('#email-spinner').hide();\r\n }\r\n });\r\n }\r\n // Function to validate email\r\n function isValidEmail(email) {\r\n var emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return emailRegex.test(email);\r\n }\r\n // Function to show error message\r\n function showError(elementId, message) {\r\n $('#' + elementId).addClass('input-error');\r\n if (!$('#' + elementId + '-error').length) {\r\n $('<div id=\"' + elementId + '-error\" class=\"error-message\">' + message + '</div>').insertAfter('#' + elementId);\r\n }\r\n }\r\n // Function to clear error message\r\n function clearError(elementId) {\r\n $('#' + elementId).removeClass('is-invalid');\r\n $('#' + elementId + '-error').remove();\r\n }\r\n $('#addUserForm').submit(function (event) {\r\n event.preventDefault();\r\n clearError('user-email-input');\r\n clearError('firstName-input');\r\n clearError('lastName-input');\r\n // validation\r\n var isValid = true;\r\n var email = $('#user-email-input').val().trim();\r\n if (!email || !isValidEmail(email)) {\r\n showError('user-email', 'Please enter a valid email address');\r\n isValid = false;\r\n }\r\n var firstName = $('#firstName-input').val().trim();\r\n if (!firstName && !isExistingEmail) {\r\n showError('firstName', 'First name is required');\r\n isValid = false;\r\n }\r\n var lastName = $('#lastName-input').val().trim();\r\n if (!lastName && !isExistingEmail) {\r\n showError('lastName', 'Last name is required');\r\n isValid = false;\r\n }\r\n if (!isValid) {\r\n return;\r\n }\r\n var formData = {\r\n ActivityId: $('#activityId-input').val(),\r\n Email: $('#user-email-input').val(),\r\n FirstName: $('#firstName-input').val(),\r\n LastName: $('#lastName-input').val(),\r\n MobileNumber: $('#mobileNumber-input').val(),\r\n OrganisationName: $('#organisationName-input').val(),\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: '/UserInfoCollection/AddUserToList',\r\n data: formData,\r\n success: function (response) {\r\n // Handle success response (e.g., close modal, show success message, update list)\r\n $('#addUserModal').modal('hide');\r\n if (response.Success) {\r\n $.notify({\r\n title: '<strong>Successfully added user!</strong>',\r\n message: ''\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n timer: 500,\r\n });\r\n window.location.reload();\r\n }\r\n else {\r\n $.notify({\r\n title: '<strong>There was an error adding a user!</strong>',\r\n message: response.Message\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n },\r\n error: function (response) {\r\n // Handle error response\r\n $.notify({\r\n title: '<strong>There was an error adding a user!</strong>',\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n },\r\n complete: function () {\r\n }\r\n });\r\n });\r\n $('#addUserModal').on('hidden.bs.modal', function () {\r\n $('#addUserForm').find('input').val('');\r\n $('.can-be-hide').hide();\r\n $('.found_you_text').hide();\r\n $('#add-user-submit').prop('disabled', true);\r\n });\r\n $('button[name=\"deleteUserButton\"]').click(function (ev) {\r\n ev.preventDefault();\r\n var selectedUserIds = [];\r\n $('.email-checkbox:checked').each(function () {\r\n var userId = $(this).closest('tr').data('contactid');\r\n selectedUserIds.push(userId);\r\n });\r\n if (selectedUserIds.length === 0) {\r\n alert('Please select at least one user to delete.');\r\n return;\r\n }\r\n // Confirm delete action\r\n if (!confirm('Are you sure you want to delete the selected users?')) {\r\n return;\r\n }\r\n // Send delete request to the server\r\n $.ajax({\r\n url: '/Manage/Activities/DeleteUsers',\r\n type: 'POST',\r\n contentType: 'application/json',\r\n data: JSON.stringify({ userIds: selectedUserIds }),\r\n success: function (response) {\r\n if (response.success) {\r\n $.notify({\r\n title: '<strong>Successfully deleted users!</strong>',\r\n message: ''\r\n }, {\r\n type: 'success',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n location.reload();\r\n }\r\n else {\r\n $.notify({\r\n title: '<strong>Error!</strong>',\r\n message: response.message\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n // Handle error\r\n $.notify({\r\n title: '<strong>There was an error deleting users!</strong>',\r\n }, {\r\n type: 'danger',\r\n placement: {\r\n from: \"top\",\r\n align: \"right\"\r\n },\r\n delay: 2000,\r\n timer: 500,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n Page.InitActivityCotactListPage = InitActivityCotactListPage;\r\n function InitEmailFoundOrg() {\r\n var timeout;\r\n $('#Email').on('input', function () {\r\n clearTimeout(timeout);\r\n var email = $(this).val();\r\n if (email.includes('@')) {\r\n timeout = setTimeout(function () {\r\n $.ajax({\r\n url: '/UserInfoCollection/OrgByEmailDomain',\r\n method: 'POST',\r\n data: { email: email },\r\n success: function (response) {\r\n var _a, _b;\r\n if (response.IsOrgFound) {\r\n if ((response === null || response === void 0 ? void 0 : response.Org) != null) {\r\n var orgName = (_b = (_a = response.Org.DisplayName) !== null && _a !== void 0 ? _a : response.Org.PreferredName) !== null && _b !== void 0 ? _b : \"\";\r\n $('#OrganisationName').val(orgName);\r\n }\r\n }\r\n },\r\n error: function () {\r\n console.error('An error occurred while finding the org.');\r\n }\r\n });\r\n }, 1000);\r\n }\r\n else {\r\n }\r\n });\r\n }\r\n Page.InitEmailFoundOrg = InitEmailFoundOrg;\r\n function InitUserInfoCollectionPage() {\r\n var alreadyLoggedIn = arguments[0] || false;\r\n var registerForm = $('#registerForm');\r\n registerForm.validate({\r\n rules: {\r\n FirstName: {\r\n required: true\r\n },\r\n LastName: {\r\n required: true\r\n },\r\n Email: {\r\n required: false,\r\n email: true\r\n },\r\n Mobile: {\r\n mobileAvailable: true,\r\n ausMobile: true\r\n },\r\n },\r\n messages: {\r\n FirstName: {\r\n required: \"We need your first name\"\r\n },\r\n LastName: {\r\n required: \"We need your last name\"\r\n },\r\n Mobile: {\r\n mobileAvailable: \"That mobile number is already used\",\r\n ausMobile: \"This is not a valid Australian mobile number\"\r\n },\r\n Email: {\r\n required: \"We need your email address\",\r\n email: \"This is not a valid email address\",\r\n emailAvailable: \"That email has already been used\"\r\n },\r\n }\r\n });\r\n $.validator.addMethod(\"ausMobile\", function (value, element) {\r\n var trimmedValue = value.replace(/[^\\d\\+]/gi, '');\r\n var re = new RegExp(/^\\({0,1}((0|\\+61)(4)){1}\\){0,1}(\\ |-){0,1}[0-9]{2}(\\ |-){0,1}[0-9]{2}(\\ |-){0,1}[0-9]{1}(\\ |-){0,1}[0-9]{3}$/);\r\n return this.optional(element) || trimmedValue.match(re);\r\n }, \"Please enter a valid Australian mobile number.\");\r\n var typingTimer; //timer identifier\r\n var doneTypingInterval = 1000; //time in ms (5 seconds)\r\n //on keyup, start the countdown\r\n $('#Email').keyup(function () {\r\n $('.found_you_text').hide();\r\n $('.form-last input[type=\"submit\"]').prop('disabled', true);\r\n clearTimeout(typingTimer);\r\n if ($('#Email').val()) {\r\n typingTimer = setTimeout(checkIfExist, doneTypingInterval);\r\n }\r\n });\r\n //user is \"finished typing,\" do something\r\n function checkIfExist() {\r\n $('#email-spinner').show();\r\n jQuery.ajax({\r\n async: true,\r\n url: '/api/Users/IsEmailExist?email=' + $('#Email').val(),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n //contentType: \"application/json; charset=utf-8\",\r\n success: function (resp) {\r\n if (resp) {\r\n $('.register-extra-info').hide();\r\n $('.found_you_text').show();\r\n $('.extra_info_text').hide();\r\n $('#IsCurrentUser').val(resp.toString());\r\n $('.form-last input[type=\"submit\"]').prop('disabled', false);\r\n }\r\n else {\r\n $('.register-extra-info').show();\r\n $('.found_you_text').hide();\r\n $('.extra_info_text').show();\r\n $('.form-last input[type=\"submit\"]').prop('disabled', false);\r\n }\r\n $('#email-spinner').hide();\r\n },\r\n error: function (err) {\r\n alert(err.responseText);\r\n $('#email-spinner').hide();\r\n }\r\n });\r\n }\r\n // Behaviour to toggle the showing & hiding of the login panels\r\n $(\".login-wrapper\").find(\"[data-toggle-button]\").on(\"click touchend\", function (e) {\r\n var buttonClicked = $(this);\r\n e.preventDefault();\r\n var validate = buttonClicked.data(\"toggle-validate\") || false;\r\n if (!validate || registerForm.valid()) {\r\n $(buttonClicked.data(\"toggle-parent\")).fadeOut(300, function () {\r\n $(buttonClicked.data(\"toggle-target\")).fadeIn(null, function () { return $(\"select, [type=text]\", \".login-wrapper\").filter(\":visible\").first().focus(); });\r\n });\r\n }\r\n else if ($(\"label.has-error:visible\").length) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n $(\"#Email\").on(\"blur\", function () {\r\n if ($(\"#Username\").val() === '')\r\n $(\"#Username\").val($(this).val());\r\n });\r\n if (alreadyLoggedIn) {\r\n $('.login-wrapper').hide(300);\r\n $('#loggedin-wrapper').fadeIn();\r\n }\r\n initPasswordStrength();\r\n registerForm.on(\"submit\", function () {\r\n if (!registerForm.valid()) {\r\n $(\"input\", $(\"label.has-error:visible:first\").parent()).focus();\r\n }\r\n });\r\n }\r\n Page.InitUserInfoCollectionPage = InitUserInfoCollectionPage;\r\n})(Page || (Page = {}));\r\n"]}