{"version":3,"sources":["pages/Pages.PageScripts.js"],"names":["google","PageSetup","String","prototype","endsWith","searchString","length","undefined","this","substring","Pages","newFavourites","initAmcMap","mapName","lat","$","data","lng","kml","window","MapView","createMapPanel","Search","RegionID","KmlLayer","maps","url","suppressInfoWindows","clickable","map","InfoWindow","Geocoder","Location","getCenter","Spiderfier","OverlappingMarkerSpiderfier","markersWontMove","markersWontHide","Clusterer","MarkerClusterer","gridSize","maxZoom","ignoreHidden","addListener","marker","showInfoWindow","html","getPosition","outlet","input","document","getElementById","Autocomplete","places","componentRestrictions","country","bindTo","event","place","getPlace","geometry","location","displayMyLocation","show","viewport","fitBounds","defAddress","defComplete","DefaultLatLng","latLng","desc","geocode","results","status","GeocoderStatus","OK","i","types","formatted_address","checkIfAllMarkersVisible","initAmcActions","hide","showOpenDataSets","hideOpenDataOnMap","Markers","Locations","OpenData","each","group","src","children","attr","setGroupDisplay","replace","hideCategoryGroupOnMap","setupSettings","slider","value","min","max","step","tooltip_position","on","e","Radius","text","showCircle","refresh","preventDefault","IsLoggedIn","ServicesShown","slideDown","slideUp","bind","keyCode","turnOn","obj","hideMarkers","showMarkers","allVisible","index","Marker","setVisible","push","totalObj","Group","parseInt","getBounds","contains","position","removeMarkers","addMarkers","toggleAllServicesOnMap","prop","categoryId","CategoryID","valLabel","val","totalLabel","total","toggleSingleServiceOnMap","setAllCategoriesChecked","loadCategoryGroup","displayAndSetMyLocation","is","alert","setting","key","localStorage","setItem","cookie","setStoredValue","modal","type","outletID","DirectionsDisplay","DirectionsRenderer","draggable","setMap","setPanel","DirectionsService","close","request","origin","destination","travelMode","route","result","DirectionsStatus","click","setDirections","getDirections","clearDirections","showOpenDataOnMap","hasClass","def","getDefaultAddress","navigator","geolocation","SettingsDone","radius","posLatLng","Circle","center","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","description","latlng","allowedToRelocate","TravelMode","DRIVING","TRANSIT","WALKING","BICYCLING","setContent","setPosition","open","regions","region","GeographyID","LatLng","CentreLat","CentreLng","getItem","getStoredValue","getCurrentPosition","coords","latitude","longitude","vals","split","refreshMarkers","addr","err","setCenter","LocationMarker","icon","visible","getRegions","focus","markers","grpSel","showAll","found","showGroupCount","selectedValues","$checkedCheckboxes","loadCategoriesList","getJSON","RegionType","list","bounds","LatLngBounds","Lat","Lng","title","Name","Html","animation","Animation","DROP","OutletID","extend","addMarker","point","parseFloat","fadeOut","error","getOutlets","numberShown","catCountLabel","clearMap","clearMarkers","groups","inArray","unspiderfy","vis","checked","set","Type","iconUrl","MarkerIcon","ItemURL","addOpenDataMarkersToArray","always","getGroupValue","parent","multiple","values","v","join","setGroupValue","addClass","getSearchValues","lastQuery","sessionStorage","savedSearch","query","search","pairs","slice","forEach","pair","toLowerCase","decodeURIComponent","Object","keys","JSON","stringify","parse","queryStringToJSON","ABN","abn","Accreditations","accreditations","AccreditationsAny","accreditationsany","AccreditationsRequired","accreditationsrequired","category","Council","council","DgrStatus","dgrstatus","Email","email","EntityType","entitytype","FeeToAccess","feetoaccess","LocationID","Phone","phone","ReferralRequired","referralrequired","Service","service","ServiceCategories","servicecategories","ServiceCategoriesRequired","servicecategoriesrequired","Tags","tags","TagsAny","tagsany","TagsRequired","tagsrequired","Website","website","What","what","WhatAny","whatany","WhatRequired","whatrequired","WheelchairAccess","wheelchairaccess","Age","age","Gender","gender","saveSearch","IsGov","isgov","Where","where","selectLocation","siblings","removeClass","closest","next","selectOption","selectSetOption","innerText","removePersonalFavourites","favouriteListSelector","selectize","clearOptions","disable","removeSubCategories","subCategorySelector","setupFavouriteLists","parentCategory","parentSubCategory","enable","personalFavouritesOptions","personalFavouritesValues","find","elem","FavouriteID","FavouriteName","addOption","setValue","setupFavouriteCategories","favouriteType","categorySelector","categoryOptions","DataCategory","Category","setupAddFavouriteClick","unbind","outletId","serviceId","councilRegionId","all","addEventListener","valid","notifyDefaults","delay","allow_dismiss","newest_on_top","mouse_over","template","sending","notify","message","icon_type","existing","newList","favs","ServiceID","CouncilRegionID","Existing","NewList","SubCategory","timer","ajax","contentType","dataType","success","hasError","Success","Message","trigger","saveFavourite","showAddFavourite","evt","profile","favouriteModalUrl","validate","resetForm","cbOrganisationFavourite","get","cache","replaceWith","backdrop","ignore","rules","favouritelist","required","messages","currentId","persist","maxItems","valueField","labelField","searchField","createOnBlur","plugins","render","item","escape","option","create","onOptionAdd","onOptionRemove","indexOf","splice","DataSubCategory","onChange","subCategoryOptions","setupFavouriteSubCategories","clear","toggle","displayCategory","selectedIndex","selectedValue","bTitle","bUrl","protocol","host","external","AddFavorite","sidebar","addPanel","opera","userAgent","bookmarkLink","removeFavouritesList","favouriteId","favouritesUrl","loadFavouritesFromLink","favouritesLink","pageNumber","setupConverters","loadFavouritesToMap","Listings","setupTooltipsStyling","pageNo","setupPagination","loadFavouritesList","confirm","shouldRedirect","ShouldRedirect","RedirectUrl","Criteria","summary","addCommas","TotalNumberOfListings","CategoryName","ServiceName","LocalityName","CouncilName","IsAdvanced","tempUrl","crit","jQuery","SortField","SortDirection","empty","showGeocodeResults","address","geolocationCallback","address_components","short_name","su","a1a","a1b","a1","st","pc","sp","blg","long_name","saveLatLng","trim","test","name","setMapAddressReadonly","loadMapPlace","content","setZoom","markMap","readonly","toggleClass","drawMap","showMap","showMarker","showAddress","isStatic","zoom","drawStreetView","panoName","panoramaOptions","pov","heading","pitch","addressControlOptions","ControlPosition","TOP_RIGHT","zoomControlOptions","style","ZoomControlStyle","SMALL","BOTTOM_RIGHT","linksControl","panControl","panorama","StreetViewPanorama","setStreetView","loadSuburbMap","mapOptions","mapTypeId","MapTypeId","ROADMAP","Map","centerLat","centerLng","mapContainer","MY_MAPTYPE_ID","visualRefresh","mapTypeControlOptions","MapTypeControlStyle","mapTypeIds","disableDefaultUI","disableDoubleClickZoom","scrollwheel","customMapType","StyledMapType","featureType","stylers","saturation","elementType","hue","weight","mapTypes","loadMap","showResourceList","searchCenter","Bounds","CouncilLayer","markerHandler","listing","Outlet","pstripped","substr","DisplayAddress","inner","encodeURIComponent","Url","Suburb","Distance","MapLocation","ShowMarker","Nickname","_currentCouncil","KmlLocation","fitMapBounds","addListenerOnce","getZoom","MapLocationShowMarker","MapLocationLat","MapLocationLng","OutletNickname","OutletDisplayAddress","nStr","x","x1","x2","rgx","loadConverters","views","converters","tel","telValue","setupResultsButtonActions","href","savedSearchSelector","buttonWrapper","rankButton","alphaButton","distanceButton","mapButton","setSortButtonDirection","PageNo","LoadSearchResults","direction","btn","ascClass","descClass","displayExtraInformation","element","healthEngineId","healthEngineStatus","HealthEngineNextAppointment","drawOrgChart","visualization","NumberFormat","pattern","format","PieChart","draw","height","width","chartArea","left","top","drawOrgMap","GeoMap","dataMode","drawServiceChart","showRemaining","control","maxlength","limitcontrol","setLimit","l","_pendingAbn","getAbnDetails","onSuccess","Abn","tradingNames","ABNFound","LegalName","AvailableTradingNames","append","TradingName","removeAttr","GSTRegistered","DGRStatus","RegisteredCharity","newAbn","newName","msgGrowl","orgs","orgNum","org","orgName","DisplayName","orgID","OrganisationID","numOutlets","Outlets","a","showFoundOrgs","getMatchedOrgs","complete","initEmail","callback","animate","scrollTop","offset","onClosed","AppSettings","ApiUrl","setCurrentCouncil","$template","initPasswordStrength","popoverOptions","placement","popover","options","common","usernameField","zxcvbn","ui","viewports","progress","verdict","remove","pwstrength","pageLinks","numberOfPages","Math","floor","startPage","endPage","pages","setupCommentNotificationsDefaults","showLoadingComments","setInterval","Array","tooltips","qtip","finishLoadingComments","hideEditComment","commentId","updateComment","target","orgCommentsUrl","selectedFlags","model","Id","UpdatedComment","CommentFlags","original","flags","reloadComments","ev","bootstrapToggle","isDragging","wasDragging","editVisible","container","has","keypress","which","showComments","organisationId","outletServiceRegionId","selection","addNewComment","Comment","OrganisationId","OutletId","OutletServiceRegionId","printModalOutputOption","outputClass","printModalMessage","limit","setupPrintModal","defaultTitle","getModel","call","change","Title","OutputTo","OutputAs","Mobile","$form","action","showBackgroundImage","current","BackgroundImages","css","ImageURL","BackgroundTimeout","clearTimeout","setTimeout","DisplayTime","CurrentCouncil","ShowThinking","arguments","InitBackgroundImages","images","dots","Index","Class","ImageID","setupBackgroundPager","InitEventPage","d","EventID","EventInstanceID","FromName","FromEmail","remove_button_accessible","accessibility","Label","preload","selectOnTab","closeAfterSelect","hideSelected","load","Text","TagName","addItems","eventId","method","Data","Messages","eventInstanceId","InitLoginPage","alreadyLoggedIn","buttonClicked","fadeIn","link","InitVerifyEmailPage","initial","Token","InitRegisterPage","registerForm","Username","mcdUsername","usernameAvailable","FirstName","LastName","emailAvailable","mobileAvailable","ausMobile","Password","minlength","regex","ConfirmPassword","equalTo","InitHomePage","stateCode","assemblyVersion","statesArray","Common","Leaflet","Init","InitAboutUsPage","Users","toLocaleString","Organisations","Services","ServiceRegions","toFixed","orgData","DataTable","addColumn","OrganisationTypes","addRow","Count","orgMap","ServiceCouncilMap","Latitude","Longitude","serviceData","ServiceTypes","resizeTimer","resize","InitRegionPage","InitCategoryLinks","slick","slidesToShow","slide","autoplay","InitStatePage","state","StateUrl","loadLeafletMap","Code","InitRegionListingPage","InitFavouritesPage","InitFavouritesListingPage","favouriteName","relatedTarget","favouriteLink","favouriteUrl","favouriteUrlHtml","FavouritesLink","InitListingPage","councilId","orgId","listingId","shouldShowComments","showSuburb","SuburbKml","PageUrl","PageTitle","InitOutletPage","winTop","winLeft","contentName","serviceName","InitMobileSearch","InitOrganisationPage","loadOutletsToMap","InitRegisterOrganisationPage","form","validator","addMethod","validatedAbn","optional","UseExistingOrganisation","OrganisationType","ausPhone","require_from_group","ManagerPhone","ManagerEmail","ManagerMobile","simpleUrl","OrganisationNoAbnTradingName","OrganisationEnteredAbn","AlreadyListed","SelectedOrganisationId","PrimaryService","BriefDescription","AgreeConditions","errorPlacement","appendTo","parents","insertAfter","orgSelect","orgType","orgTypeDropDown","orgDisplay","showHideOrgDetails","existingOrg","isOrg","noAbn","showHideOrgType","isListed","noabn","orgListVisible","alreadyListed","tradingName","siteParam","AffiliateSiteID","Loaded","autocomplete","suburb","referralRequired","refRequired","populateAbnCharity","fld","hadData","isNumeric","OrganisationTypeGuess","hadGuess","CharityAddress","CharityWebsite","CharityEmail","PrimaryServiceGuess","CharityDescription","CKEDITOR","removeButtons","removePlugins","enterMode","ENTER_P","htmlEncodeOutput","agreeConditions","suppliedABN","enteredABN","ExpandButton","$target","collapse","prev","itemsToShow","itemSelector","hiddenClass","counterToUpdate","InitHelpLinks","InitSearchToggleButtons","listButton","sectionDiv","InitAmcToggleButtons","LoadPartners","LoadRemoteResults","resultsTargetName","resultsTemplateName","searchTerm","page","s","Results","InitAdvancedSearch","keyVal","thisSearch","saveAdvancedSearch","filter","councilData","locData","Postcode","posError","mask","delimiter","sortField","placeholder","items","onInitialize","previousSelections","$input","self","addItem","settings","orderByLength","per","optgroupField","special","ID","class","CategoryKeywords","console","log","groupID","addOptionGroup","label","SearchType","performKeyWordSearch","keywordSearchResults","KeywordSearchResults","$keywordSearchResults","criteria","$results","prepend","displayResults","ShowResourceList","Total","Locality","LocalityID","DisplayNameCouncil","AffiliateSite","totalPages","pageSize","ga","displayResultsPagination","PageSize","fail","jqXHR","textStatus","errorThrown","InitSearchResultsBehavior","InitSliders","responsive","breakpoint","InitConnectPage","passwordForm","PasswordConfirmation","tokenForm","InitResetPasswordPage","LoadCommunityRegionListings","addrTitle","addrWidth","regionId","showDetails","fullCount","dataTable","scrollX","lengthChange","ordering","info","searching","paging","pageLength","pagingType","processing","serverSide","searchDelay","stateSave","language","emptyTable","zeroRecords","columns","sClass","p","start","recordsTotal","recordsFiltered","services","SubResults","Description","InitHHSPage","InitAffiliatePage","hover","thisClass","InitAffiliateGroupMapPage","InitCommunityRegionPage","InitAmcPage","InitVCAPage","StateName"],"mappings":"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","file":"Pages.PageScripts.min.js","sourcesContent":["var google = google || {};\r\nvar PageSetup = PageSetup || {};\r\n\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 Pages = (function () {\r\n    var newFavourites = [];\r\n\r\n    /*\r\n     Access My Community functions\r\n     */\r\n    function initAmcMap(mapName) {\r\n\r\n        var lat = $(mapName).data(\"lat\");\r\n        var lng = $(mapName).data(\"lng\");\r\n        var kml = $(mapName).data(\"kml\") || '';\r\n\r\n        window.MapView = createMapPanel(mapName, lat, lng, 12, false);\r\n\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\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, { markersWontMove: true, markersWontHide: true });\r\n        window.Clusterer = new MarkerClusterer(window.MapView, [], { gridSize: 50, maxZoom: 15, 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\r\n        var input = document.getElementById('txtLocation');\r\n        window.Autocomplete = new google.maps.places.Autocomplete(input, { componentRestrictions: { country: 'au' } });\r\n        window.Autocomplete.bindTo(\"bounds\", window.MapView);\r\n\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\r\n            if (place.geometry.location) {\r\n                displayMyLocation(place.geometry.location, true);\r\n            }\r\n            else {\r\n                $('#cantFindYou').show();\r\n\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        var defComplete = new google.maps.places.Autocomplete(defAddress, { componentRestrictions: { country: 'au' } });\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) { showInfo(event.latLng); });\r\n        // Fired when the map stops moving, including the 'slide' effect after dragging.\r\n        google.maps.event.addListener(window.MapView, 'idle', function () { checkIfAllMarkersVisible(); });\r\n        // Fired when the map is zoomed in or out\r\n        google.maps.event.addListener(window.MapView, 'zoom_changed', function () { checkIfAllMarkersVisible(); });\r\n    }\r\n\r\n    function initAmcActions() {\r\n\r\n        resetAmcDisplay();\r\n        setupSettings();\r\n\r\n        $(\"#distanceSlider\")\r\n            .slider({\r\n                value: 1,\r\n                min: 1,\r\n                max: 20,\r\n                step: 1,\r\n                tooltip_position: 'bottom'})\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('slideStop', function (e) {\r\n                refresh();\r\n                });\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                } 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\r\n        $('form').bind(\"keypress\", function (e) {\r\n            if (e.keyCode === 13) return false;\r\n        });\r\n\r\n        $('#allCategories').on('click', function (e) {\r\n            toggleAllServicesOnMap($(this).prop(\"checked\"));\r\n            $(\"input:checkbox[name='service']:visible\").prop(\"checked\", $(this).prop(\"checked\"));\r\n        });\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\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\r\n            if (src.endsWith(\"_off.jpg\")) {\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        });\r\n\r\n        $('#btnCurrentLocation').on('click', function (e) {\r\n            e.preventDefault();\r\n            displayAndSetMyLocation(false, true);\r\n        });\r\n\r\n        $(\"#geoDefault\").on(\"click\", function (e) {\r\n            $(\"#defAddress\").val('');\r\n        });\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\r\n        $(\"#btnSaveSettings\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            if ($('#manDefault').is(':checked') && $(\"#defAddress\").val() === '') {\r\n                alert('You must either use the geolocation service or enter an address to use!');\r\n                return;\r\n            }\r\n            var address = $(\"#defAddress\").val();\r\n            setStoredValue(address);\r\n            $(\"#settingsModal\").modal('hide');\r\n            displayAndSetMyLocation(false, false);\r\n        });\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\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        \r\n        $(document).on(\"click\", \"a.setMyLocation\", function (e) {\r\n            e.preventDefault();\r\n            setMyLocation();\r\n        });\r\n\r\n        $(\".close-directions\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            clearDirections();\r\n        });\r\n\r\n        $('div.openData a').click(function (e) {\r\n            e.preventDefault();\r\n\r\n            var type = $(this).data('type');\r\n            var status = $(this).data('status');\r\n            var imgs = $('div.openData a img');\r\n\r\n            if (!window.Search.IsLoggedIn) {\r\n\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\r\n                // Hide the data on the map\r\n                hideOpenDataOnMap('');\r\n\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\r\n                    showOpenDataOnMap(type);\r\n                }\r\n            }\r\n            else {\r\n\r\n                // Set the Status property. \r\n                $(this).data('status', status === 'off' ? 'on' : 'off');\r\n\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);\r\n                }\r\n                else {\r\n                    src = src.replace(\".png\", \"_off.png\");\r\n                    hideOpenDataOnMap(type);\r\n                }\r\n                $(this).children('img').attr('src', src);\r\n            }\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) window.DirectionsDisplay.setMap(null);\r\n        if (window.InfoWindow) window.InfoWindow.close();\r\n        if (!$(\"#panelServices\").hasClass(\"in\")) $(\"a[href='#panelServices']\").click();\r\n    }\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('');\r\n        window.Markers.Locations.length = 0;\r\n        window.Markers.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\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\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\r\n    function showCircle(radius, posLatLng) {\r\n\r\n        if (window.Circle) window.Circle.setMap(null);\r\n\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\r\n    function showInfo(latLng) {\r\n        var desc = '<div><strong>Your Destination</strong></div><div>';\r\n        window.Geocoder.geocode({ 'latLng': latLng }, function (results, status) {\r\n            if (status === google.maps.GeocoderStatus.OK) {\r\n                for (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\r\n    function showInfoWindow(description, latlng, allowedToRelocate, outletID) {\r\n        if (window.InfoWindow) window.InfoWindow.close();\r\n        window.InfoWindow = new google.maps.InfoWindow();\r\n        if (allowedToRelocate)\r\n            description += '<div style=\"margin-top: 15px;\">' +\r\n                       '<a href=\"#\" class=\"setMyLocation\" title=\"Set this location as your location\">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\r\n        description += '<a href=\"#\" class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.DRIVING + '\" data-outletid=\"' + outletID + '\" title=\"Driving Directions\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirDriving.png\" /></a>  ' +\r\n                       '<a href=\"#\" class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.TRANSIT + '\" data-outletid=\"' + outletID + '\" title=\"Public Transport Directions\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirPublic.png\" /></a>  ' +\r\n                       '<a href=\"#\" class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.WALKING + '\" data-outletid=\"' + outletID + '\" title=\"Walking Directions\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirWalking.png\" /></a>  ' +\r\n                       '<a href=\"#\" class=\"getDirections btn btn-mini\" data-mode=\"' + google.maps.TravelMode.BICYCLING + '\" data-outletid=\"' + outletID + '\" title=\"Bicycling Directions\"><img src=\"https://mcdcdn.blob.core.windows.net/map-icons/dirCycling.png\" /></a>  ' +\r\n                       '</div>';\r\n        window.InfoWindow.setContent(description);\r\n        window.InfoWindow.setPosition(latlng);\r\n        window.InfoWindow.open(window.MapView);\r\n    }\r\n\r\n    function getDirections(type, outletID) {\r\n\r\n        if (!window.DirectionsDisplay) {\r\n            window.DirectionsDisplay = new google.maps.DirectionsRenderer({ draggable: true });\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\r\n        if (!window.Search.Location)\r\n            window.Search.Location = window.MapView.getCenter();\r\n\r\n        if (window.InfoWindow) window.InfoWindow.close();\r\n\r\n        var request = {\r\n            origin: window.Search.Location,\r\n            destination: window.InfoWindow.getPosition(),\r\n            travelMode: type\r\n        };\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                $(\".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\r\n    function setMyLocation() {\r\n        displayMyLocation(window.InfoWindow.position, false, true);\r\n        if (window.InfoWindow) window.InfoWindow.close();\r\n    }\r\n\r\n    function showOpenDataSets(regions) {\r\n\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\r\n        // Nationwide datasets\r\n        $('div.openData a.region0, div.openData h6.region0').show();\r\n\r\n        //var ids = councilId.toString().split(',');\r\n\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\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\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        } 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(vals[1], vals[2]);\r\n            }\r\n            return vals[0];\r\n        }\r\n    }\r\n\r\n    function displayAndSetMyLocation(refreshMarkers) {\r\n\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                },\r\n                function (err) {\r\n                    if (!window.Search.SettingsDone) setupSettings();\r\n                    $(\"#settingsModal\").modal('show');\r\n                });\r\n            }\r\n            else if (addr === \"\") {\r\n                if (!window.Search.SettingsDone) 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\r\n    function displayMyLocation(latLng, refreshMarkers) {\r\n\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\r\n        if (window.Search.LocationMarker) {\r\n            window.Search.LocationMarker.setMap(null);\r\n            window.Search.LocationMarker = null;\r\n        }\r\n\r\n        window.Search.LocationMarker = 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\r\n        if (refreshMarkers) refresh();\r\n\r\n        showCircle(window.Search.Radius, window.Search.Location);\r\n\r\n        window.Geocoder.geocode({ 'latLng': latLng }, function (results, status) {\r\n            $('#cantFindYou').hide();\r\n\r\n            if (status === google.maps.GeocoderStatus.OK) {\r\n\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\r\n    function hideCategoryGroupOnMap(group) {\r\n        var markers = [];\r\n        var allVisible = true;\r\n        $.each(window.Markers.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.setVisible) {\r\n                    var currentBounds = window.MapView.getBounds();\r\n                    if (!currentBounds.contains(value.Marker.position)) {\r\n                        allVisible = false;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        if (!allVisible) alertNotAllMarkersVisible();\r\n        else hideAlertMarkersVisible();\r\n        window.Clusterer.removeMarkers(markers);\r\n    }\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) $('#btnRefine').show();\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            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                else\r\n                    $('#btnRefine').show();\r\n            }\r\n        }\r\n        setAllCategoriesChecked();\r\n    }\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 numberShown = 0;\r\n        var hideMarkers = [];\r\n        var showMarkers = [];\r\n        var allVisible = true;\r\n        var currentBounds;\r\n        $.each(window.Markers.Locations, function (index, value) {\r\n            if (value.Group === group) {\r\n                if (showAll) {\r\n                    showMarkers.push(value.Marker);\r\n                    numberShown++;\r\n                    value.Marker.setVisible = true;\r\n                    currentBounds = window.MapView.getBounds();\r\n                    if (!currentBounds.contains(value.Marker.position)) {\r\n                        allVisible = false;\r\n                }\r\n                }\r\n                else {\r\n                    if ($(\"#services input[class~='category\" + value.CategoryID + \"']:checked\").length === 1) {\r\n                        numberShown++;\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.position)) {\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) alertNotAllMarkersVisible();\r\n        else hideAlertMarkersVisible();\r\n        window.Clusterer.removeMarkers(hideMarkers);\r\n        window.Clusterer.addMarkers(showMarkers);\r\n        showGroupCount(group);\r\n\r\n        if (found) return;\r\n\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\r\n    function showGroupCount(group) {\r\n        var numberShown = 0;\r\n        $(\"input[data-group='\" + group + \"'] ~ span.label\").text(\"0\");\r\n\r\n        $.each(window.Markers.Locations, function (index, value) {\r\n            if (value.Group === group) {\r\n                numberShown++;\r\n                var catCountLabel = $(\"input[data-category='\" + value.CategoryID + \"'] ~ span.label\");\r\n                catCountLabel.text(parseInt(catCountLabel.text()) + 1);\r\n                $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html(numberShown);\r\n            }\r\n        });\r\n        $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html(numberShown);\r\n    }\r\n\r\n    function loadCategoriesList(group) {\r\n        $checkedCheckboxes = $(\"input[data-group='\" + group + \"']\");\r\n        var selectedValues = \"\";\r\n        $checkedCheckboxes.each(function () { selectedValues += $(this).data(\"category\") + \",\"; });\r\n        return selectedValues;\r\n    }\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-category='\" + list[i].CategoryID + \"']: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].CategoryID + '.png'\r\n            });\r\n            bounds.extend(latlng);\r\n\r\n            window.Markers.Locations.push({\r\n                Group: group,\r\n                CategoryID: list[i].CategoryID,\r\n                Marker: marker\r\n            });\r\n            if (window.Spiderfier) window.Spiderfier.addMarker(marker); \r\n            if (window.Clusterer) window.Clusterer.addMarker(marker, false);\r\n\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) alertNotAllMarkersVisible();\r\n        else hideAlertMarkersVisible();\r\n        showGroupCount(group);\r\n        $(\"#dvLoading\").fadeOut(300);\r\n    }\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.Markers.Locations, function (index, value) {\r\n            if ($.inArray(value.Group, groups) === -1) {\r\n                if (value.Marker.setVisible) {\r\n                hideCategoryGroupOnMap(value.Group);\r\n                groups.push(value.Group);\r\n            }\r\n            }\r\n        });\r\n\r\n        // Remove outlets from the display and the array and reget them\r\n        window.Markers.Locations.length = 0;\r\n        $.each(groups, function (index, value) {\r\n            loadCategoryGroup(value, false);\r\n        });\r\n\r\n        // Remove openData from the display and the array and reget them\r\n        hideOpenDataOnMap('');\r\n        window.Markers.OpenData.length = 0;\r\n        $('div.openData a').each(function () {\r\n            if ($(this).data(\"status\") === \"on\") showOpenDataOnMap($(this).data('type'));\r\n        });\r\n\r\n        if (window.Spiderfier) window.Spiderfier.unspiderfy();\r\n\r\n        clearDirections();\r\n    }\r\n\r\n    function toggleSingleServiceOnMap(turnOn, categoryId) {\r\n        var hideMarkers = [];\r\n        var showMarkers = [];\r\n        var allVisible = true;\r\n        $.each(window.Markers.Locations, function (index, value) {\r\n            if (value.CategoryID === categoryId) {\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.position)) {\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\r\n        if (!allVisible && showMarkers.length > 0) alertNotAllMarkersVisible();\r\n        else hideAlertMarkersVisible();\r\n\r\n        var valLabel = $(\"input[data-category='\" + categoryId + \"'] ~ span.label\");\r\n        var val = parseInt(valLabel.text());\r\n\r\n        var totalLabel = $(\".categoryButtons [data-group='\" + $(\"input[data-category='\" + categoryId + \"']\").data(\"group\") + \"'] span.badge\");\r\n        var total = parseInt(totalLabel.text());\r\n\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\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.Markers.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.position)) {\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) alertNotAllMarkersVisible();\r\n        else hideAlertMarkersVisible();\r\n    }\r\n\r\n    function checkIfAllMarkersVisible() {\r\n        var allVisible = true;\r\n        $.each(window.Markers.Locations, function (index, value) {\r\n            if (value.Marker.setVisible) {\r\n                var currentBounds = window.MapView.getBounds();\r\n                if (!currentBounds.contains(value.Marker.position)) {\r\n                    allVisible = false;\r\n                }\r\n            }\r\n        });\r\n        if (!allVisible) alertNotAllMarkersVisible();\r\n        else hideAlertMarkersVisible();\r\n    }\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\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\r\n    function setAllCategoriesChecked() {\r\n        var vis = 0;\r\n        $(\"input[data-status]\").each(function () {\r\n            if ($(this).data(\"status\") === \"on\") 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\r\n    function hideOpenDataOnMap(type) {\r\n        $.each(window.Markers.OpenData, function (index, value) {\r\n            if (type === '' || value.Type === type)\r\n                value.Marker.setMap(null);\r\n        });\r\n    }\r\n\r\n    function showOpenDataOnMap(type) {\r\n        var found = false;\r\n        $.each(window.Markers.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\r\n        if (!found) getOpenData(type);\r\n    }\r\n\r\n    function getRegions(lat, lng) {\r\n        if (window.Search.RegionID === 0) {\r\n            $.getJSON(\"/api/amc/getregionsbypoint/\" + lat + \"/\" + lng,\r\n                function (data) {\r\n                    showOpenDataSets(data);\r\n                }\r\n            );\r\n        }\r\n        else {\r\n            $.getJSON(\"/api/amc/getregionsbyregion/\" + window.Search.RegionID,\r\n                function (data) {\r\n                    showOpenDataSets(data);\r\n                }\r\n            );\r\n        }\r\n    }\r\n\r\n    function getOutlets(group, selectedValues, showAll) {\r\n        if (!window.Search.Location) window.Search.Location = window.MapView.getCenter();\r\n        if (parseInt(window.Search.Radius) === 0) window.Search.Radius = 1;\r\n\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() + \r\n                                     \"/\" + window.Search.Location.lng() + \r\n                                     \"/\" + window.Search.Radius + \r\n                                     \"/\" + window.Search.RegionID +\r\n                                     \"/\" + window.Search.RegionType + \r\n                                     \"/\" + selectedValues,\r\n            function (data) {\r\n                addMarkers(group, data, showAll);\r\n            }\r\n        ).error(function () {\r\n            $(\".categoryButtons [data-group='\" + group + \"'] span.badge\").html('');\r\n        });\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,\r\n            function (data) {\r\n                addOpenDataMarkersToArray(type, data);\r\n            }\r\n        )\r\n        .always(function () {\r\n           $(\".opendata-loading\").hide();\r\n        });\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\r\n        $(\"#dvLoading\").show();\r\n\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 === '') 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 !== '') 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\r\n            google.maps.event.addListener(marker, \"click\", function (event) {\r\n                showInfoWindow(this.html, this.getPosition(), true, 0);\r\n            });\r\n            window.Markers.OpenData.push({\r\n                Type: type,\r\n                Marker: marker\r\n            });\r\n        }\r\n        $(\"#dvLoading\").fadeOut(500);\r\n\r\n    }\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\r\n        if (!def) {\r\n            def = \"geo\";\r\n        }\r\n\r\n        if (def === \"geo\") {\r\n            return navigator.geolocation ? def : \"\";\r\n        }\r\n\r\n        return def;\r\n    }\r\n\r\n    function setStoredValue(setting) {\r\n        var key = 'AMCHomeAddress';\r\n        var value = setting;\r\n\r\n        if (value !== \"geo\" && value !== \"\" && window.Search.DefaultLatLng)\r\n            value += \"|\" + window.Search.DefaultLatLng.lat() + \"|\" + window.Search.DefaultLatLng.lng();\r\n\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    /**************************************/\r\n    /* Advanced Search functions          */\r\n    /**************************************/\r\n\r\n    function queryStringToJSON() {\r\n        if (location.search === \"\") return null;\r\n\r\n        var pairs = location.search.slice(1).split('&');\r\n        if (pairs.length === 0) return null;\r\n\r\n        var result = {};\r\n        pairs.forEach(function (pair) {\r\n            pair = pair.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\r\n    function jsonToQueryString(obj) {\r\n        var keyVal;\r\n\r\n        var items = Object.keys(obj).map(function (key) {\r\n            switch (key) {\r\n                case \"CategoryID\":\r\n                case \"ServiceID\":\r\n                case \"CouncilID\":\r\n                case \"LocationID\":\r\n                case \"Radius\":\r\n                    return key + '=' + obj[key];\r\n                case \"ReferralRequired\":\r\n                    keyVal = obj[key] || \"\";\r\n                    if (keyVal !== \"\" && keyVal !== \"Any\") {\r\n                        return key + '=' + encodeURIComponent(obj[key]);\r\n                    }\r\n                    break;\r\n                default:\r\n                    if (key.substr(-3) === \"Any\") {\r\n                        if ((obj[key] || \"\") !== \"true\") {\r\n                            return key + '=' + encodeURIComponent(obj[key]);\r\n                        }\r\n                    }\r\n                    else if (key.substr(-8) === \"Required\") {\r\n                        if ((obj[key] || \"\") !== \"true\") {\r\n                            return key + '=' + encodeURIComponent(obj[key]);\r\n                        }\r\n                    }\r\n                    else {\r\n                        keyVal = obj[key] || \"\";\r\n                        if (keyVal !== \"\" && keyVal !== \"Any\") {\r\n                            return key + '=' + encodeURIComponent(obj[key]);\r\n                        }\r\n                    }\r\n                    break;\r\n            }\r\n        });\r\n        items = items.filter(function (e) { return !!e; });\r\n        return items.join('&');\r\n    }\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\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\r\n    function saveAdvancedSearch() {\r\n        var thisSearch = {};\r\n\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.CategoryID = $(\"#hfCategoryId\").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.Phone = $(\"#phone\").val() || \"\";\r\n        thisSearch.Radius = $(\"#radius\").val() || 50;\r\n        thisSearch.ReferralRequired = getGroupValue(\"#referral\", false);\r\n        thisSearch.ServiceID = $(\"#hfServiceId\").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\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\r\n        thisSearch.ServiceCategories = $(\"#advancedCategory\").val() || \"\";\r\n        $(\"#advancedCategory\").val(\"\");\r\n        thisSearch.ServiceCategoriesRequired = getGroupValue(\"#categoryRequired\", false) === \"Required\" ? \"true\" : \"false\";\r\n        \r\n        var searchType = getGroupValue(\"#whereBtns\", false);\r\n        switch (searchType) {\r\n            case \"All\":\r\n                thisSearch.Council = 0;\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        }\r\n\r\n        sessionStorage.setItem(\"SavedSearch\", JSON.stringify(thisSearch));\r\n        sessionStorage.setItem(\"SearchQuery\", location.search);\r\n\r\n        return thisSearch;\r\n    }\r\n\r\n    function getSearchValues() {\r\n        var lastQuery = sessionStorage.getItem(\"SearchQuery\");\r\n        var savedSearch = {};\r\n        var query = queryStringToJSON();\r\n\r\n        if ((query === null) || (lastQuery === location.search)) {\r\n            savedSearch = JSON.parse(sessionStorage.getItem(\"SavedSearch\")) || {};\r\n            query = {};\r\n        } else {\r\n            sessionStorage.setItem(\"SavedSearch\", JSON.stringify({}));\r\n        }\r\n\r\n        var search = {};\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.CategoryID = query.category || savedSearch.CategoryID || 0;\r\n        search.Council = query.council || savedSearch.Council || 0;\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.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.Service = query.service || savedSearch.Service || 0;\r\n        search.ServiceCategories = query.servicecategories || savedSearch.ServiceCategories || '';\r\n        search.ServiceCategoriesRequired = query.servicecategoriesrequired || savedSearch.ServiceCategoriesRequired || \"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 || saveSearch.Gender || \"Any\";\r\n        search.IsGov = query.isgov || savedSearch.IsGov || \"Any\";\r\n        search.Where = query.where || savedSearch.Where || \"\";\r\n\r\n        return search;\r\n    }\r\n\r\n    function restoreAdvancedSearch(search) {\r\n\r\n        $(\"#abn\").val(search.ABN);\r\n\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\r\n        $(\"#hfCategoryId\").val(search.CategoryID);\r\n        $(\"#hfCouncilId\").val(search.Council);\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        $(\"#hfServiceId\").val(search.Service);\r\n\r\n        $(\"#advancedCategory\").data(\"selectize-value\", search.ServiceCategories);\r\n        setGroupValue(\"#categoryRequired\", search.ServiceCategoriesRequired === \"true\" ? \"Required\" : \"Prefer\");\r\n\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\r\n        $(\"#website\").val(search.Website);\r\n\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\r\n        setGroupValue(\"#wheelchair\", search.WheelchairAccess);\r\n        setGroupValue(\"#gender\", search.Gender);\r\n        setGroupValue(\"#gov\", search.IsGov);\r\n\r\n        $('#age').val(search.Age);\r\n\r\n        $('#autocomplete-location').val(search.Where);\r\n        if ($(\"#autocomplete-location\").val() === \"\" && parseInt($(\"#hfCouncilId\").val()) > 0)\r\n        {\r\n            $(\"#btnDirectory\").click();\r\n        }\r\n        $(\"#hintSelfAssessments\").hide();\r\n        $(\"#hintTags\").hide();\r\n    }\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\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\r\n    function selectSetOption() {\r\n        var value = \"\";\r\n\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\r\n        for (var i = 0; i < $(this).siblings(\".active\").length; i++) {\r\n            value += $(this).siblings(\".active\")[i].innerText + \";\";\r\n        }\r\n\r\n        value = value.slice(0, -1);\r\n\r\n        $(this).siblings(\"input\").val(value);\r\n    }\r\n\r\n    /**************************************/\r\n\r\n    function removePersonalFavourites() {\r\n        var $favouriteListSelector = $(\"#favouritelist\");\r\n        var favouriteListSelector = $favouriteListSelector[0].selectize;\r\n        favouriteListSelector.clearOptions();\r\n        favouriteListSelector.disable();\r\n    }\r\n\r\n    function removeSubCategories() {\r\n        var $subCategorySelector = $(\"#subcategory\");\r\n        var subCategorySelector = $subCategorySelector[0].selectize;\r\n        subCategorySelector.clearOptions();\r\n        subCategorySelector.disable();\r\n        return subCategorySelector;\r\n    }\r\n\r\n    function setupFavouriteLists(parentCategory, parentSubCategory, outlet, service, council) {\r\n        var $favouriteListSelector = $(\"#favouritelist\");\r\n        var favouriteListSelector = $favouriteListSelector[0].selectize;\r\n        favouriteListSelector.clearOptions();\r\n        favouriteListSelector.enable();\r\n\r\n        var personalFavouritesOptions = [];\r\n        var personalFavouritesValues = [];\r\n        var $nodes;\r\n\r\n        if (parentCategory !== undefined && parentSubCategory !== undefined) {\r\n            $nodes = $(\"#options\").find(\"[data-category='\" + parentCategory + \"'] [data-sub-category='\" + parentSubCategory + \"'] div\").parent();\r\n        } else if (parentCategory !== undefined && parentSubCategory === undefined) {\r\n            $nodes = $(\"#options\").find(\"[data-category='\" + parentCategory + \"'] [data-sub-category][data-sub-category=''] div\").parent();\r\n        } else {\r\n            $nodes = $(\"#options\").find(\"[data-category=''] div\").parent();\r\n        }\r\n        $nodes.map(function (index, elem) {\r\n            personalFavouritesOptions.push({ FavouriteID: $(elem).data(\"favourite-id\"), FavouriteName: $(elem).data(\"favourite-name\") });\r\n        });\r\n\r\n        if (parentCategory !== undefined && parentSubCategory !== undefined) {\r\n            $nodes = $(\"#options\").find(\"[data-category='\" + parentCategory + \"'] [data-sub-category='\" + parentSubCategory + \"'] div[data-favourite-outlet='\" + outlet + \"'][data-favourite-service='\" + service + \"'][data-favourite-council='\" + council + \"']\").parent();\r\n        } else if (parentCategory !== undefined && parentSubCategory === undefined) {\r\n            $nodes = $(\"#options\").find(\"[data-category='\" + parentCategory + \"'] [data-sub-category][data-sub-category=''] div[data-favourite-outlet='\" + outlet + \"'][data-favourite-service='\" + service + \"'][data-favourite-council='\" + council + \"']\").parent();\r\n        } else {\r\n            $nodes = $(\"#options\").find(\"[data-category=''] div[data-favourite-outlet='\" + outlet + \"'][data-favourite-service='\" + service + \"'][data-favourite-council='\" + council + \"']\").parent();\r\n        }\r\n        $nodes.map(function (index, elem) {\r\n            personalFavouritesValues.push($(elem).data(\"favourite-id\"));\r\n        });\r\n\r\n        favouriteListSelector.addOption(personalFavouritesOptions);\r\n        favouriteListSelector.setValue(personalFavouritesValues);\r\n    }\r\n\r\n    function setupFavouriteSubCategories(parentCategory) {\r\n        removePersonalFavourites();\r\n        var subCategorySelector = removeSubCategories();\r\n\r\n        subCategorySelector.enable();\r\n\r\n        var subCategoryOptions = [];\r\n        var $nodes = $(\"#options\").find(\"[data-category='\" + parentCategory + \"'] [data-sub-category][data-sub-category!='']\");\r\n        $nodes.map(function (index, elem) {\r\n            subCategoryOptions.push({ DataSubCategory: $(elem).data(\"sub-category\"), SubCategory: $(elem).data(\"sub-category\") });\r\n        });\r\n        subCategorySelector.addOption(subCategoryOptions);\r\n\r\n        setupFavouriteLists(parentCategory, undefined, $(\"#btnAddFavourite\").data(\"outlet\"), $(\"#btnAddFavourite\").data(\"service\"), $(\"#btnAddFavourite\").data(\"region\"));\r\n    }\r\n\r\n    function setupFavouriteCategories(favouriteType) {\r\n        removePersonalFavourites();\r\n        removeSubCategories();\r\n\r\n        var $categorySelector = $(\"#category\");\r\n        var categorySelector = $categorySelector[0].selectize;\r\n        categorySelector.clearOptions();\r\n        categorySelector.enable();\r\n\r\n        var categoryOptions = [];\r\n        var $nodes = $(\"#options\").find(\"[data-category][data-category!=''][data-favourite-type='\" + favouriteType + \"']\");\r\n        $nodes.map(function (index, elem) {\r\n            categoryOptions.push({ DataCategory: $(elem).data(\"category\"), Category: $(elem).data(\"category\") });\r\n        });\r\n\r\n        categorySelector.addOption(categoryOptions);\r\n    }\r\n\r\n    function setupCheckBoxTrigger(outlet, service, region) {\r\n        $(\"#cbTeamFavourite\").unbind(\"click touchend\").on(\"click touchend\", function () {\r\n            $(\"#categoryPanel\").toggle(this.checked);\r\n\r\n            if (!$(\"#categoryPanel:visible\").length) {\r\n                setupFavouriteLists(undefined, undefined, outlet, service, region);\r\n                $(\"#category\").addClass(\"ignore\");\r\n                $(\"#btnAddFavourite\").data(\"favouritesOwnerType\", 0); // 0 = FavouritesOwnerType.Profile\r\n            } else {\r\n                setupFavouriteCategories(\"Outlet\");\r\n                $(\"#category\").removeClass(\"ignore\");\r\n                $(\"#btnAddFavourite\").data(\"favouritesOwnerType\", 1); // 1 = FavouritesOwnerType.Team\r\n            }\r\n        });\r\n    }\r\n\r\n    function setupDropDownTrigger(outlet, service, region) {\r\n        $(\"#SelectedScope\").unbind(\"change\").on(\"change\", function() {\r\n            var displayCategory = this.selectedIndex > 0;\r\n            $(\"#categoryPanel\").toggle(displayCategory);\r\n\r\n            var selectedValue = $(this).val();\r\n            if (selectedValue === \"Organisation\" || selectedValue === \"Outlet\") {\r\n                setupFavouriteCategories(selectedValue);\r\n                $(\"#category\").removeClass(\"ignore\");\r\n                $(\"#btnAddFavourite\").data(\"favouritesOwnerType\", selectedValue === \"Organisation\" ? 2 : 1);\r\n            }\r\n            else if ($(this).val() === \"Profile\") {\r\n                setupFavouriteLists(undefined, undefined, outlet, service, region);\r\n                $(\"#category\").addClass(\"ignore\");\r\n                $(\"#btnAddFavourite\").data(\"favouritesOwnerType\", 0); // 0 = FavouritesOwnerType.Profile\r\n            }\r\n        });\r\n    }\r\n\r\n    function setupAddFavouriteClick() {\r\n        $(\"#btnAddFavourite\").unbind(\"click touchend\").on(\"click touchend\", function (e) {\r\n            e.preventDefault();\r\n            saveFavourite($(this).data(\"outlet\"), $(this).data(\"service\"), $(this).data(\"region\"), $(this).data(\"favouritesOwnerType\"));\r\n        });\r\n    }\r\n\r\n    function setupSaveSearchClick(crit) {\r\n        $(\"#btnSaveSearch\").unbind(\"click touchend\").on(\"click touchend\", function (e) {\r\n            e.preventDefault();\r\n            saveSearch(crit);\r\n        });\r\n    }\r\n\r\n    function bookmarkLink(evt, url) {\r\n\t\tvar bTitle = document.title;\r\n\t\tvar bUrl = window.location.protocol + \"//\" + window.location.host + url;\r\n\r\n\t\t$.notifyDefaults({\r\n\t\t\ttype: \"info\",\r\n\t\t\tdelay: 5000,\r\n\t\t\ttimer: 500,\r\n\t\t\tallow_dismiss: true,\r\n\t\t\tnewest_on_top: true,\r\n\t\t\tmouse_over: 'pause',\r\n\t\t\ttemplate: '<div data-notify=\"container\" class=\"col-xs-11 col-sm-3 alert alert-{0}\" role=\"alert\">' +\r\n\t\t\t\t\t  '<button type=\"button\" aria-hidden=\"true\" class=\"close\" data-notify=\"dismiss\">×</button>' +\r\n\t\t\t\t\t  '<span data-notify=\"icon\"></span>' +\r\n\t\t\t\t\t  '<div class=\"content\"><span data-notify=\"title\">{1}</span>' +\r\n\t\t\t\t\t  '<span data-notify=\"message\">{2}</span></div>' +\r\n\t\t\t\t\t  '<div class=\"progress\" data-notify=\"progressbar\">' +\r\n\t\t\t\t\t  '<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\t\t\t\t\t  '</div>'\r\n\t\t});\r\n\r\n\t\ttry {\r\n\t\t\t// IE\r\n\t\t\tif ('AddFavorite' in window.external) {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\twindow.external.AddFavorite(bUrl, bTitle);\r\n\t\t\t\t$.notify({ title: \"Success ...\", message: \"This page has been added to your browser favourites. To store favourites in a list you need to login.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t\t}\r\n\t\t\t// Older versions of FF\r\n\t\t\telse if ('addPanel' in window.sidebar) {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\twindow.sidebar.addPanel(bTitle, bUrl);\r\n\t\t\t\t$.notify({ title: \"Success ...\", message: \"This page has been added to your browser favourites. To store favourites in a list you need to login.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t\t}\r\n\t\t\t// FF/Opera\r\n\t\t\telse if (window.opera || window.sidebar) {\r\n\t\t\t\t$.notify({ title: \"Success ...\", message: \"This page has been added to your browser favourites. To store favourites in a list you need to login.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t\t\treturn true;\r\n\t\t\t// Unsupported\r\n\t\t\t} else {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\t$.notify({ title: \"Info ...\", message: 'Your browser won\\'t let me store this as a favourite for you automatically. Press ' + (navigator.userAgent.toLowerCase().indexOf('mac') !== -1 ? 'Command/Cmd' : 'CTRL') + ' + D to bookmark this page. To store favourites in a list you need to login.', icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\t$.notify({ title: \"Info ...\", message: 'Your browser won\\'t let me store this as a favourite for you automatically. Press ' + (navigator.userAgent.toLowerCase().indexOf('mac') !== -1 ? 'Command/Cmd' : 'CTRL') + ' + D to bookmark this page. To store favourites in a list you need to login.', icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t}\r\n\t}\r\n\r\n    function showAddFavourite(evt, profile, outlet, service, region, url, favouriteModalUrl) {\r\n        newFavourites = [];\r\n\r\n        // reset form validation\r\n\t    if ($(\"#favouritesForm .error\").length !== 0) {\r\n\t        var validator = $(\"#favouritesForm\").validate();\r\n\t        validator.resetForm();\r\n\t    }\r\n\r\n        // hide organisation favourites panel\r\n\t    var cbOrganisationFavourite = $(\"#cbOrganisationFavourite\");\r\n\t    var isOrganisationFavourite = cbOrganisationFavourite.length !== 0 && cbOrganisationFavourite.get(0).checked;\r\n        if (isOrganisationFavourite) {\r\n            $(\"#cbOrganisationFavourite\").trigger(\"click\");\r\n\t    }\r\n\r\n\t\tif (!profile || profile === 0) {\r\n\t\t\tbookmarkLink(evt, url);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n        $.ajax({\r\n            type: \"GET\",\r\n            url: favouriteModalUrl.replace(0, outlet),\r\n            cache: false,\r\n            success: function(data) {\r\n                $(\"#favouritesModal\").replaceWith(data);\r\n\r\n                $(\"#btnAddFavourite\").data(\"outlet\", outlet);\r\n                $(\"#btnAddFavourite\").data(\"service\", service);\r\n                $(\"#btnAddFavourite\").data(\"region\", region);\r\n\r\n                $(\"#favouritesModal\").modal({ backdrop: \"static\", show: true });\r\n\r\n                $(\"#category\").addClass(\"ignore\");\r\n\r\n                var favouritesModalForm = $(\"#favouritesForm\");\r\n                favouritesModalForm.validate({\r\n                    ignore: \".ignore\",\r\n                    rules: {\r\n                        \"favouritelist\": { required: true },\r\n                        \"category\": { required: true }\r\n                    },\r\n                    messages: {\r\n                        \"favouritelist\": { required: \"A favourites list name must be provided.\" },\r\n                        \"category\": { required: \"A category must be provided.\" }\r\n                    }\r\n                });\r\n\r\n                var currentId = -1;\r\n\r\n                var $favouriteListSelector = $(\"#favouritelist\").selectize({\r\n                    persist: false,\r\n                    maxItems: null,\r\n                    valueField: \"FavouriteID\",\r\n                    labelField: \"FavouriteName\",\r\n                    searchField: [\"FavouriteName\"],\r\n                    createOnBlur: true,\r\n                    plugins: [\"remove_button\"],\r\n                    render: {\r\n                        item: function(item, escape) {\r\n                            return \"<div><span>\" + escape(item.FavouriteName) + \"</span></div>\";\r\n                        },\r\n                        option: function(item, escape) {\r\n                            return \"<div><span class=\\\"label\\\" style=\\\"color:black;\\\">\" + escape(item.FavouriteName) + \"</span></div>\";\r\n                        }\r\n                    },\r\n                    create: function(input) {\r\n                        return { FavouriteID: currentId--, FavouriteName: input };\r\n                    },\r\n                    onOptionAdd: function(value, data) {\r\n                        if (value < 0) {\r\n                            newFavourites.push({ FavouriteID: data.FavouriteID, FavouriteName: data.FavouriteName });\r\n                        }\r\n                    },\r\n                    onOptionRemove: function(value) {\r\n                        var index = newFavourites.map(function(e) { return e.FavouriteID; }).indexOf(parseInt(value));\r\n                        if (index > -1) {\r\n                            newFavourites.splice(index, 1);\r\n                        }\r\n                    }\r\n                });\r\n\r\n                var favouriteListSelector = $favouriteListSelector[0].selectize;\r\n\r\n                if ($(\"#category\").length) {\r\n                    var $subCategorySelector = $(\"#subcategory\").selectize({\r\n                        persist: false,\r\n                        maxItems: 1,\r\n                        valueField: \"DataSubCategory\",\r\n                        labelField: \"SubCategory\",\r\n                        searchField: [\"SubCategory\"],\r\n                        createOnBlur: true,\r\n                        render: {\r\n                            item: function(item, escape) {\r\n                                return \"<div><span>\" + escape(item.SubCategory) + \"</span></div>\";\r\n                            },\r\n                            option: function(item, escape) {\r\n                                return \"<div><span class=\\\"label\\\" style=\\\"color:black;\\\">\" + escape(item.SubCategory) + \"</span></div>\";\r\n                            }\r\n                        },\r\n                        create: function(input) {\r\n                            return { DataSubCategory: input, SubCategory: input };\r\n                        },\r\n                        onChange: function(value) {\r\n                            setupFavouriteLists($(\"#category\").val(), !value.length ? undefined : value, outlet, service, region);\r\n                        }\r\n                    });\r\n\r\n                    // make operations (clear/disable/etc) available on sub-categories through var\r\n                    var subCategorySelector = $subCategorySelector[0].selectize;\r\n\r\n                    var $categorySelector = $(\"#category\").selectize({\r\n                        persist: false,\r\n                        maxItems: 1,\r\n                        valueField: \"DataCategory\",\r\n                        labelField: \"Category\",\r\n                        searchField: [\"Category\"],\r\n                        createOnBlur: true,\r\n                        render: {\r\n                            item: function(item, escape) {\r\n                                return \"<div><span>\" + escape(item.Category) + \"</span></div>\";\r\n                            },\r\n                            option: function(item, escape) {\r\n                                var label = item.Category || item.DataCategory;\r\n                                return \"<div><span class=\\\"label\\\" style=\\\"color:black;\\\">\" + escape(label) + \"</span></div>\";\r\n                            }\r\n                        },\r\n                        create: function(input) {\r\n                            return { DataCategory: input, Category: input };\r\n                        },\r\n                        onChange: function(value) {\r\n                            if (!value.length) return;\r\n\r\n                            setupFavouriteSubCategories(value);\r\n                        }\r\n                    });\r\n\r\n                    // reset selection\r\n                    var categorySelector = $categorySelector[0].selectize;\r\n                    categorySelector.clear();\r\n\r\n                    subCategorySelector.disable();\r\n                    subCategorySelector.clear();\r\n                }\r\n\r\n                favouriteListSelector.disable();\r\n                favouriteListSelector.clear();\r\n\r\n                setupFavouriteLists(undefined, undefined, outlet, service, region);\r\n\r\n                setupCheckBoxTrigger(outlet, service, region);\r\n                setupDropDownTrigger(outlet, service, region);\r\n\r\n                setupAddFavouriteClick();\r\n            },\r\n            error: function() {\r\n                $.notify({ title: \"Error\", message: \"Something went wrong trying to retrieve favourites.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n            }\r\n        });\r\n\t}\r\n\r\n    function showSavedSearch(profile) {\r\n        newFavourites = [];\r\n\r\n        // reset form validation\r\n\t    if ($(\"#savedSearchForm .error\").length !== 0) {\r\n\t        var validator = $(\"#savedSearchForm\").validate();\r\n\t        validator.resetForm();\r\n\t    }\r\n\r\n\t    if (!profile || profile === 0) {\r\n\t        $.notify({ title: \"Error\", message: \"You cannot save a search unless you're logged in.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n\t        return;\r\n\t    }\r\n\r\n\t    $.getJSON(\"/api/favourites/loadlists/0/1\", // owner type = profile, favourite type = saved search\r\n\t\t\tfunction (data) {\r\n\t\t\t    $(\"#savedSearchModal\").modal({ backdrop: \"static\", show: true });\r\n\r\n\t\t\t    var savedSearchModalForm = $(\"#savedSearchForm\");\r\n\t\t\t    savedSearchModalForm.validate({\r\n                    ignore: \".ignore\",\r\n                    rules: {\r\n                        \"savedSearch\": { required: true }\r\n                    },\r\n                    messages: {\r\n                        \"savedSearch\": { required: \"A name must be provided in order to save this search.\" }\r\n                    }\r\n\t\t\t    });\r\n\r\n\t\t\t    var currentId = -1;\r\n\r\n\t\t\t    var $savedSearchSelector = $(\"#savedSearch\").selectize({\r\n\t\t\t        persist: false,\r\n\t\t\t        maxItems: null,\r\n\t\t\t        valueField: \"FavouriteID\",\r\n\t\t\t        labelField: \"FavouriteName\",\r\n\t\t\t        searchField: [\"FavouriteName\"],\r\n\t\t\t        createOnBlur: true,\r\n\t\t\t        plugins: [\"remove_button\"],\r\n\t\t\t        render: {\r\n\t\t\t            item: function (item, escape) {\r\n\t\t\t                return \"<div><span>\" + escape(item.FavouriteName) + \"</span></div>\";\r\n\t\t\t            },\r\n\t\t\t            option: function (item, escape) {\r\n\t\t\t                return \"<div><span class=\\\"label\\\" style=\\\"color:black;\\\">\" + escape(item.FavouriteName) + \"</span></div>\";\r\n\t\t\t            }\r\n\t\t\t        },\r\n\t\t\t        create: function (input) {\r\n\t\t\t            return { FavouriteID: currentId--, FavouriteName: input };\r\n\t\t\t        },\r\n\t\t\t        onOptionAdd: function (value, data) {\r\n\t\t\t            if (value < 0) {\r\n\t\t\t                newFavourites.push({ FavouriteID: data.FavouriteID, FavouriteName: data.FavouriteName });\r\n\t\t\t            }\r\n\t\t\t        },\r\n\t\t\t        onOptionRemove: function (value) {\r\n\t\t\t            var index = newFavourites.map(function (e) { return e.FavouriteID; }).indexOf(parseInt(value));\r\n\t\t\t            if (index > -1) {\r\n\t\t\t                newFavourites.splice(index, 1);\r\n\t\t\t            }\r\n\t\t\t        }\r\n\t\t\t    });\r\n\r\n\t\t\t    var savedSearchSelector = $savedSearchSelector[0].selectize;\r\n\t\t\t    savedSearchSelector.clearOptions();\r\n\t\t\t    savedSearchSelector.addOption(data.map(function (e) { return { FavouriteID: e.FavouriteID, FavouriteName: e.FavouriteName }; }));\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n    function removeFavouritesList(favouriteId, favouritesUrl) {\r\n\t\tvar sending = $.notify({\r\n\t\t\ttitle: \"Removing ...\",\r\n\t\t\tmessage: \"Please wait while we remove this favourites list... \",\r\n\t\t\ticon: \"/_static/images/processing.gif\"\r\n\t\t}, {\r\n\t\t\ticon_type: \"image\"\r\n\t\t});\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: \"/api/Favourites/RemoveList/\" + favouriteId,\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tdataType: \"json\",\r\n\t\t\tsuccess: function (data) {\r\n\t\t\t\tvar hasError = false;\r\n\t\t\t\tsending.close();\r\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\t\t\tvar result = data[i];\r\n\r\n\t\t\t\t\tif (result.Success) {\r\n\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\ttitle: \"Success\", message: result.Message, icon: \"glyphicon glyphicon-ok-circle\"\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\ttype: \"success\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\ttitle: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\ttype: \"warning\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\thasError = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!hasError) {\r\n\t\t\t\t\twindow.location.replace(favouritesUrl);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function () {\r\n\t\t\t\tsending.close();\r\n\t\t\t\t$.notify({\r\n\t\t\t\t\ttitle: \"Dang It\", message: \"There was an error trying to remove this favourites list.\", icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t}, {\r\n\t\t\t\t\ttype: \"danger\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction removeFavourite(favouriteId, outletId, serviceId, councilRegionId) {\r\n\t\tvar sending = $.notify({\r\n\t\t\ttitle: \"Removing ...\",\r\n\t\t\tmessage: \"Please wait while we remove this listing from your favourites ... \",\r\n\t\t\ticon: \"/_static/images/processing.gif\"\r\n\t\t}, {\r\n\t\t\ticon_type: 'image'\r\n\t\t});\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: \"/api/Favourites/Remove\",\r\n\t\t\tdata: JSON.stringify({ FavouriteID : favouriteId, OutletID : outletId, ServiceID : serviceId, CouncilRegionID : councilRegionId }),\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tdataType: \"json\",\r\n\t\t\tsuccess: function (data) {\r\n\t\t\t    var hasError = false;\r\n\t\t\t    var shouldRedirect = false;\r\n\t\t\t\tsending.close();\r\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\t\t\tvar result = data[i];\r\n\r\n\t\t\t\t\tif (result.Success) {\r\n\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\ttitle: \"Success\", message: result.Message, icon: \"glyphicon glyphicon-ok-circle\"\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\ttype: \"success\"\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t    shouldRedirect = shouldRedirect || data[i].ShouldRedirect;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\ttitle: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\ttype: \"warning\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\thasError = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!hasError) {\r\n\t\t\t\t    if (shouldRedirect) {\r\n\t\t\t\t        window.location.replace(window.RedirectUrl);\r\n\t\t\t\t    } else {\r\n\t\t\t\t        $(\"#favourites-processing\").show();\r\n\t\t\t\t        $(\"#results\").hide();\r\n\t\t\t\t        loadFavouritesList(favouriteId, 0); // favourites type = list\r\n\t\t\t\t    }\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function () {\r\n\t\t\t\tsending.close();\r\n\t\t\t\t$.notify({\r\n\t\t\t\t\ttitle: \"Dang It\", message: \"There was an error trying to remove this listing from your favourites selection.\", icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t}, {\r\n\t\t\t\t\ttype: \"danger\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n    /* This function and loadFavouritesList should be merged */\r\n\tfunction loadFavouritesFromLink(favouritesLink, favouriteType, pageNumber) {\r\n\t    if (favouriteType === 0) { // favourites type = list\r\n\t        $.getJSON(\"/api/favourites/loadfavouriteslink/\" + favouritesLink,\r\n\t\t\t    function (data) {\r\n\t\t\t        if (data) {\r\n\t\t\t            setupConverters();\r\n\r\n\t\t\t            $(\"#favourites-processing\").hide();\r\n\t\t\t            $(\"#results\").show();\r\n\t\t\t            $(\"#results\").html($(\"#favouritesListTemplate\").render(data));\r\n\r\n\t\t\t            loadFavouritesToMap(\"#search-map\", data.Listings);\r\n\r\n\t\t\t            setupTooltipsStyling();\r\n\t\t\t        } else {\r\n\t\t\t            $(\"#favourites-processing\").hide();\r\n\t\t\t            $(\"#results\").hide();\r\n\t\t\t            $(\"#no-favourites\").show();\r\n\t\t\t        }\r\n\t\t\t    });\r\n\t    } else { // favourites type = search\r\n\t        var pageNo = !pageNumber ? 1 : pageNumber;\r\n\t        $.getJSON(\"/api/favourites/loadsearchlink/\" + favouritesLink + \"/\" + pageNo,\r\n                function (data) {\r\n                    if (data) {\r\n                        setupConverters();\r\n\r\n                        $(\"#favourites-processing\").hide();\r\n                        $(\"#results\").show();\r\n                        $(\"#results\").html($(\"#favouritesListTemplate\").render(data));\r\n\r\n                        loadFavouritesToMap(\"#search-map\", data.Listings);\r\n\r\n                        setupTooltipsStyling();\r\n                    } else {\r\n                        $(\"#favourites-processing\").hide();\r\n                        $(\"#results\").hide();\r\n                        $(\"#no-favourites\").show();\r\n\t\t\t            $(\".view-toggles\").hide();\r\n\t\t\t        }\r\n\r\n                    setupPagination(favouritesLink, undefined, favouriteType, data, pageNo);\r\n                });\r\n\t    }\r\n\t}\r\n\r\n\tfunction loadFavouriteCategories(favouritesUrl) {\r\n\t    $(\"#favourites-processing\").show();\r\n\t    $(\"#favourites\").hide();\r\n\t    $(\"#favourites-error\").hide();\r\n\r\n\t    $.ajax({\r\n\t        type: \"GET\",\r\n\t        url: favouritesUrl,\r\n            cache: false,\r\n\t        success: function (data) {\r\n\t            $(\"#favourites\").show();\r\n\t            $(\"#favourites\").html(data);\r\n\r\n\t            setupTooltipsStyling();\r\n\r\n\t            $(\".btn-remove-favourites-list\").on(\"click\", function (e) {\r\n\t                e.preventDefault();\r\n\r\n\t                if (confirm(\"Are you sure you want to remove this favourites list?\")) {\r\n\t                    removeFavouritesList($(this).data(\"favourite-list\"), favouritesUrl);\r\n\t                }\r\n\t            });\r\n\t        },\r\n\t        error: function () {\r\n\t            $(\"#favourites-error\").show();\r\n\t        },\r\n            complete: function() {\r\n                $(\"#favourites-processing\").hide();\r\n            }\r\n\t    });\r\n\t}\r\n\r\n    /* This function and loadFavouritesFromLink should be merged */\r\n\tfunction loadFavouritesList(favouriteId, favouriteType, pageNumber) {\r\n        if(favouriteType === 0) { // favourites type = list\r\n            $.getJSON(\"/api/favourites/loadlist/\" + favouriteId,\r\n                function(data) {\r\n                    if (data) {\r\n                        setupConverters();\r\n\r\n                        $(\"#favourites-processing\").hide();\r\n                        $(\"#results\").show();\r\n                        $(\"#results\").html($(\"#favouritesListTemplate\").render(data));\r\n\r\n                        loadFavouritesToMap(\"#search-map\", data.Listings);\r\n\r\n                        setupTooltipsStyling();\r\n\r\n                        $(\".btn-remove-from-favourites\").on(\"click\", function(e) {\r\n                            e.preventDefault();\r\n\r\n                            if (confirm(\"Are you sure you want to remove this listing from your favourites?\")) {\r\n                                removeFavourite($(this).data(\"favourite\"), $(this).data(\"outlet\"), $(this).data(\"service\"), $(this).data(\"region\"));\r\n                            }\r\n                        });\r\n                    } else {\r\n                        $(\"#favourites-processing\").hide();\r\n                        $(\"#results\").hide();\r\n                        $(\"#no-favourites\").show();\r\n\t                }\r\n\t        });\r\n\t    } else { // favourites type = search\r\n\t        var pageNo = !pageNumber ? 1 : pageNumber;\r\n\t        $.getJSON(\"/api/favourites/loadsearch/\" + favouriteId + \"/\" + pageNo,\r\n                function(data) {\r\n                    if (data) {\r\n                        setupConverters();\r\n\r\n                        $(\"#favourites-processing\").hide();\r\n                        $(\"#results\").show();\r\n                        $(\"#results\").html($(\"#favouritesListTemplate\").render(data));\r\n\r\n                        loadFavouritesToMap(\"#search-map\", data.Listings);\r\n\r\n                        setupTooltipsStyling();\r\n\r\n                        if (data.Criteria) {\r\n\t\t\t\t\t        var summary = \"<strong>\" + addCommas(data.TotalNumberOfListings) + \" Result\" + (data.TotalNumberOfListings === 1 ? \"\": \"s\") + \"</strong> for \";\r\n\t\t\t\t\t        if (data.Criteria.Category === 0 && data.Criteria.Service === 0) {\r\n\t\t\t\t\t            if (data.Criteria.What === \"\") {\r\n\t\t\t\t\t                summary += \"everything \";\r\n\t\t\t\t\t\t        }\r\n\t\t\t\t\t\t        else {\r\n\t\t\t\t\t\t\t        summary += \"'\" + data.Criteria.What + \"' \";\r\n\t\t\t\t\t\t        }\r\n\t\t\t\t\t\t    } else {\r\n\t\t\t\t\t\t        if (data.Criteria.Service === 0) {\r\n\t\t\t\t\t\t\t        summary += \"All \" + data.Criteria.CategoryName + \" \";\r\n                                } else {\r\n\t\t\t\t\t\t\t        summary += data.Criteria.ServiceName + \" \";\r\n\t\t\t\t\t\t\t    }\r\n\t\t\t\t\t\t\t}\r\n\r\n                            if (data.Criteria.Location === 0) {\r\n\t\t\t\t\t\t        if (data.Criteria.Where !== \"\") {\r\n\t\t\t\t\t\t\t        summary += data.Criteria.Radius + \"km from \" + data.Criteria.Where;\r\n\t\t\t\t\t\t\t    }\r\n\t\t\t\t\t\t\t} else {\r\n                                summary += data.Criteria.Radius + \"km from \" + data.Criteria.LocalityName;\r\n\t\t\t\t\t        }\r\n\r\n\t\t\t\t\t        if (data.Criteria.Council > 0) {\r\n\t\t\t\t\t\t        summary += \" in the \" + data.Criteria.CouncilName + \" region\";\r\n                            }\r\n\r\n                            if (data.Criteria.IsAdvanced) {\r\n                                summary += \" <em>with <a href='#' class='advanced-search-btn'>advanced criteria</a><em>\";\r\n                            }\r\n\r\n                            $(\".search-summary\").html(summary);\r\n\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 = tempUrl;\r\n                            });\r\n                        }\r\n                    } else {\r\n                        $(\"#favourites-processing\").hide();\r\n                        $(\"#results\").hide();\r\n                        $(\"#no-favourites\").show();\r\n\t\t\t            $(\".view-toggles\").hide();\r\n                    }\r\n\r\n                    setupPagination(undefined, favouriteId, favouriteType, data, pageNo);\r\n                });\r\n        }\r\n    }\r\n\r\n    function saveFavourite(outletId, serviceId, councilRegionId, type) {\r\n        // Ignore validation for IE < 9 as it's broken -- will defer to server-side checks\r\n        if (!(document.all && !document.addEventListener)){\r\n            var form = $(\"#favouritesForm\");\r\n\r\n            if (!form.valid()) {\r\n                return;\r\n            }\r\n        }\r\n\r\n\t\t$(\"#favouritesModal\").modal(\"hide\");\r\n\r\n\t\t$.notifyDefaults({\r\n\t\t\tdelay: 0,\r\n\t\t\tallow_dismiss: false,\r\n\t\t\tnewest_on_top: true,\r\n\t\t\tmouse_over: \"pause\",\r\n\t\t\ttemplate: \"<div data-notify=\\\"container\\\" class=\\\"col-xs-11 col-sm-3 alert alert-{0}\\\" role=\\\"alert\\\">\" +\r\n\t\t\t\t\t  \"<img data-notify=\\\"icon\\\">\" +\r\n\t\t\t\t\t  \"<div class=\\\"content\\\"><span data-notify=\\\"title\\\">{1}</span>\" +\r\n\t\t\t\t\t  \"<span data-notify=\\\"message\\\">{2}</span></div>\" +\r\n\t\t\t\t\t  \"</div>\"\r\n\t\t});\r\n\r\n\t\tvar sending = $.notify({\r\n\t\t\ttitle: \"Saving ...\",\r\n\t\t\tmessage: \"Please wait while we save this listing to your favourites ... \",\r\n\t\t\ticon: \"/_static/images/processing.gif\"\r\n\t\t}, {\r\n\t\t\ticon_type: \"image\"\r\n\t\t});\r\n\r\n\t\tvar existing = [];\r\n\t\t$(\"#favouritelist\").val().split(\",\").map(function (e) { if (parseInt(e) > -1) existing.push(e); });\r\n\t\texisting = existing.join(\",\");\r\n\r\n\t\tvar newList = [];\r\n\t\tnewFavourites.map(function (e) { newList.push(e.FavouriteName); });\r\n\t\tnewList = newList.join(\",\");\r\n\r\n\t\tvar favs = {\r\n\t\t\tOutletID: outletId,\r\n\t\t\tServiceID: serviceId,\r\n\t\t\tCouncilRegionID: councilRegionId,\r\n\t\t\tExisting: existing,\r\n\t\t\tNewList: newList,\r\n\t\t\tCategory: $(\"#category\").val(),\r\n\t\t\tSubCategory : $(\"#subcategory\").val(),\r\n            Type: type\r\n\t\t};\r\n\r\n\t\t$.notifyDefaults({\r\n\t\t\tdelay: 5000,\r\n\t\t\ttimer: 500,\r\n\t\t\tallow_dismiss: true,\r\n\t\t\tnewest_on_top: true,\r\n\t\t\tmouse_over: 'pause',\r\n\t\t\ttemplate: '<div data-notify=\"container\" class=\"col-xs-11 col-sm-3 alert alert-{0}\" role=\"alert\">' +\r\n\t\t\t\t\t  '<button type=\"button\" aria-hidden=\"true\" class=\"close\" data-notify=\"dismiss\">×</button>' +\r\n\t\t\t\t\t  '<span data-notify=\"icon\"></span>' +\r\n\t\t\t\t\t  '<div class=\"content\"><span data-notify=\"title\">{1}</span>' +\r\n\t\t\t\t\t  '<span data-notify=\"message\">{2}</span></div>' +\r\n\t\t\t\t\t  '<div class=\"progress\" data-notify=\"progressbar\">' +\r\n\t\t\t\t\t  '<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\t\t\t\t\t  '</div>'\r\n\t\t});\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: \"/api/Favourites/Save\",\r\n\t\t\tdata: JSON.stringify(favs),\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tdataType: \"json\",\r\n\t\t\tsuccess: function (data) {\r\n\t\t\t\tvar hasError = false;\r\n\t\t\t\tsending.close();\r\n\t\t\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\t\t\tvar result = data[i];\r\n\r\n\t\t\t\t\tif (result.Success) {\r\n\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\ttitle: \"Success\", message: result.Message, icon: \"glyphicon glyphicon-ok-circle\"\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\ttype: \"success\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\ttitle: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\ttype: \"warning\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\thasError = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!hasError) {\r\n\t\t\t\t\t$(\"#ddlSelectFavourite\").val(null).trigger(\"change\");\r\n\t\t\t\t\t$(\"#txtNewFavourite\").val('');\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function () {\r\n\t\t\t\tsending.close();\r\n\t\t\t\t$.notify({\r\n\t\t\t\t\ttitle: \"Dang It\", message: \"There was an error trying to save your favourites selection.\", icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t}, {\r\n\t\t\t\t\ttype: \"danger\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n    function saveSearch(crit) {\r\n\t\t// Ignore validation for IE < 9 as it's broken -- will defer to server-side checks\r\n        if (!(document.all && !document.addEventListener)){\r\n            var form = $(\"#savedSearchForm\");\r\n\r\n            if (!form.valid()) {\r\n                return;\r\n            }\r\n        }\r\n\r\n        $(\"#savedSearchModal\").modal(\"hide\");\r\n\r\n        $.notifyDefaults({\r\n                    delay: 0,\r\n                    allow_dismiss: false,\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\t\t\t\t\t  \"<img data-notify=\\\"icon\\\">\" +\r\n\t\t\t\t\t  \"<div class=\\\"content\\\"><span data-notify=\\\"title\\\">{1}</span>\" +\r\n\t\t\t\t\t  \"<span data-notify=\\\"message\\\">{2}</span></div>\" +\r\n\t\t\t\t\t  \"</div>\"\r\n        });\r\n\r\n        var sending = $.notify({\r\n            title: \"Saving ...\",\r\n            message: \"Please wait while we save this search to your favourites ... \",\r\n            icon: \"/_static/images/processing.gif\"\r\n        }, {\r\n            icon_type: \"image\"\r\n        });\r\n\r\n        var existing = [];\r\n        $(\"#savedSearch\").val().split(\",\").map(function (e) { if (parseInt(e) > -1) existing.push(e); });\r\n        existing = existing.join(\",\");\r\n\r\n        var newList = [];\r\n        newFavourites.map(function (e) { newList.push(e.FavouriteName); });\r\n        newList = newList.join(\",\");\r\n\r\n        var favs = jQuery.extend({\r\n            SortField: $(\"#hfSortField\").val(),\r\n            SortDirection: $(\"#hfSortDirection\").val(),\r\n            Existing: existing,\r\n            NewList: newList\r\n        }, crit);\r\n\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\t\t\t\t\t  \"<button type=\\\"button\\\" aria-hidden=\\\"true\\\" class=\\\"close\\\" data-notify=\\\"dismiss\\\">×</button>\" +\r\n\t\t\t\t\t  \"<span data-notify=\\\"icon\\\"></span>\" +\r\n\t\t\t\t\t  \"<div class=\\\"content\\\"><span data-notify=\\\"title\\\">{1}</span>\" +\r\n\t\t\t\t\t  \"<span data-notify=\\\"message\\\">{2}</span></div>\" +\r\n\t\t\t\t\t  \"<div class=\\\"progress\\\" data-notify=\\\"progressbar\\\">\" +\r\n\t\t\t\t\t  \"<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\t\t\t\t\t  \"</div>\"\r\n        });\r\n\r\n        $.ajax({\r\n            type: \"POST\",\r\n            url: \"/api/Favourites/SaveSearch\",\r\n            data: JSON.stringify(favs),\r\n            contentType: \"application/json; charset=utf-8\",\r\n            dataType: \"json\",\r\n            success: function (data) {\r\n                var hasError = false;\r\n                sending.close();\r\n                for (var i = 0; i < data.length; i++) {\r\n                    var result = data[i];\r\n\r\n                    if (result.Success) {\r\n                        $.notify({\r\n                            title: \"Success\", message: result.Message, icon: \"glyphicon glyphicon-ok-circle\"\r\n                        }, {\r\n                            type: \"success\"\r\n                        });\r\n                    } else {\r\n                        $.notify({\r\n                            title: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n                        }, {\r\n                            type: \"warning\"\r\n                        });\r\n                        hasError = true;\r\n                    }\r\n                }\r\n                if (!hasError) {\r\n                    $(\"#ddlSelectSavedSearch\").val(null).trigger(\"change\");\r\n                    $(\"#txtSavedSearch\").val(\"\");\r\n                }\r\n            },\r\n            error: function () {\r\n                sending.close();\r\n                $.notify({\r\n                    title: \"Dang It\", message: \"There was an error trying to save your search.\", icon: \"glyphicon glyphicon-remove-circle\"\r\n                }, {\r\n                    type: \"danger\"\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n\tfunction clearMap() {\r\n\t\t$(\".map-lat\").val(0);\r\n\t\t$(\".map-lng\").val(0);\r\n\t\t$(\".map-latlng\").empty();\r\n\t\tif (window.InfoWindow) window.InfoWindow.close();\r\n\t}\r\n\r\n\tfunction showGeocodeResults(place, status, address, geolocationCallback) {\r\n\t\tvar addr = address;\r\n\r\n\t\tif (place.address_components) {\r\n\t\t\tif ((place.formatted_address || \"\").length > 0) {\r\n\t\t\t\taddr = place.formatted_address;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\taddr = [(place.address_components[0] && place.address_components[0].short_name || ''),\r\n\t\t\t\t\t\t(place.address_components[1] && place.address_components[1].short_name || ''),\r\n\t\t\t\t\t\t(place.address_components[2] && place.address_components[2].short_name || '')].join(', ');\r\n\t\t\t}\r\n\r\n\t\t\tloadMapPlace(place, geolocationCallback);\r\n\t\t\t$('.map-edit-address').show();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$('.map-edit-address').hide();\r\n\t\t}\r\n\r\n\t\tmarkMap(place.geometry.location, '<div><strong>Your Location</strong></div>' + addr);\r\n\t}\r\n\r\n\tfunction markMap(latlng, content) {\r\n\t    if (window.InfoWindow) window.InfoWindow.close();\r\n\t\twindow.Marker.setVisible(false);\r\n\r\n\t\tsaveLatLng(latlng);\r\n\r\n\t\twindow.MapView.setCenter(latlng);\r\n\t\twindow.MapView.setZoom(12);\r\n\r\n\t\twindow.Marker.setPosition(latlng);\r\n\t\twindow.Marker.setVisible(true);\r\n\r\n\t\tif (window.InfoWindow) {\r\n\t\t    window.InfoWindow.setContent(content);\r\n\t\t    window.InfoWindow.setPosition(latlng);\r\n\t\t    window.InfoWindow.open(window.MapView, window.Marker);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setMapAddressReadonly(readonly) {\r\n\t\t$(\".map-address1\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n\t\t$(\".map-address2\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n\t\t$(\".map-suburb\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n\t\t$(\".map-state\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n\t\t$(\".map-postcode\").prop(\"readonly\", readonly).toggleClass(\"disabled\", readonly);\r\n\r\n\t\tif (readonly) {\r\n\t\t\t// Disable fields - reset button to Edit\r\n\t\t\t$(\".map-edit-address\").addClass(\"btn-success\").text(\"Edit\");\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Enable fields - set button to Undo\r\n\t\t\t$(\".map-edit-address\").removeClass(\"btn-success\").text(\"Undo\");\r\n\t\t}\r\n\t}\r\n\r\n\tfunction clearMapAddress() {\r\n\t\t$(\".map-search\").val(\"\");\r\n\t\t$(\".map-address1\").val(\"\");\r\n\t\t$(\".map-address2\").val(\"\");\r\n\t\t$(\".map-suburb\").val(\"\");\r\n\t\t$(\".map-state\").val(\"\");\r\n\t\t$(\".map-postcode\").val(\"\");\r\n\t}\r\n\r\n\tfunction loadMapPlace(place, geolocationCallback) {\r\n\t\tvar su = '';\r\n\t\tvar a1a = '';\r\n\t\tvar a1b = '';\r\n\t\tvar a1 = '';\r\n\t\tvar a2 = '';\r\n\t\tvar st = '';\r\n\t\tvar pc = '';\r\n\t\tvar co = '';\r\n\t\tvar sp = '';\r\n\t\tvar blg = '';\r\n\t\tfor (var i = 0; i < place.address_components.length; i++) {\r\n\t\t\tswitch (place.address_components[i].types[0]) {\r\n\t\t\t    case \"floor\": blg = place.address_components[i].long_name; break;\r\n\t\t\t    case \"establishment\": blg = place.address_components[i].long_name; break;\r\n\t\t\t    case \"premise\": blg = place.address_components[i].long_name; break;\r\n\t\t\t    case \"subpremise\": sp = place.address_components[i].long_name; break;\r\n\t\t\t    case \"street_address\": a1 = place.address_components[i].long_name; break;\r\n\t\t\t    case \"street_number\": a1a = place.address_components[i].long_name; break;\r\n\t\t\t\tcase \"route\": a1b = place.address_components[i].long_name; break;\r\n\t\t\t\tcase \"locality\": su = place.address_components[i].long_name; break;\r\n\t\t\t\tcase \"administrative_area_level_1\": st = place.address_components[i].short_name; break;\r\n\t\t\t\tcase \"postal_code\": pc = place.address_components[i].short_name; break;\r\n\t\t\t\tcase \"country\": co = place.address_components[i].long_name; break;\r\n\t\t\t\tdefault: break;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsaveLatLng(place.geometry.location);\r\n\r\n\t\tif (a1.length === 0) a1 = $.trim(a1a + ' ' + a1b);\r\n\r\n\t\tif (a1.length > 0 || su.length > 0) {\r\n\t\t    if (sp.length > 0) {\r\n\t\t        if (/^\\d+[a-zA-Z]?$/.test(sp)) {\r\n\t\t            a1 = sp + \"/\" + a1;\r\n\t\t            sp = '';\r\n\t\t        }\r\n\t\t        else if (blg.length === 0) {\r\n\t\t            blg = sp;\r\n\t\t        }\r\n\t\t    }\r\n\r\n\t\t    if (blg.length === 0 && place.name && place.types &&\r\n                place.types[0] !== \"street_address\" && $.inArray(place.types, \"street_address\") >= 0) {\r\n\t\t        blg = place.name;\r\n\t\t    }\r\n\r\n\t\t\t$(\".map-search\").val(place.formatted_address);\r\n\t\t\t$(\".map-building\").val($.trim(blg) || \"\");\r\n\t\t\t$(\".map-address1\").val($.trim(a1) || \" \");\r\n\t\t\t$(\".map-address2\").val($.trim(a2) || \" \");\r\n\t\t\t$(\".map-suburb\").val($.trim(su) || \" \");\r\n\t\t\t$(\".map-state\").val($.trim(st) || \" \");\r\n\t\t\t$(\".map-postcode\").val($.trim(pc) || \" \");\r\n\r\n\t\t\tsetMapAddressReadonly(true);\r\n\r\n\t\t\tif (geolocationCallback) {\r\n\t\t\t    geolocationCallback();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveLatLng(latlng) {\r\n\t\t$(\".map-lat\").val(latlng.lat());\r\n\t\t$(\".map-lng\").val(latlng.lng());\r\n\t\t$(\".map-latlng\").html(\"Lat / Lng : \" + latlng.lat() + \" / \" + latlng.lng());\r\n\t}\r\n\r\n\tfunction geocodeLatLng(latlng) {\r\n\t\twindow.Geocoder.geocode({ 'latLng': latlng }, function (results, status) {\r\n\t\t\tif (status === google.maps.GeocoderStatus.OK) {\r\n\t\t\t\tshowGeocodeResults(results[0], status, '');\r\n\t\t\t} else {\r\n\t\t\t\talert('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction drawMap(mapName, geolocationCallback) {\r\n\r\n\t    if (!$(mapName).length) return;\r\n\r\n\t\tvar lat = $(mapName).data(\"lat\");\r\n\t\tvar lng = $(mapName).data(\"lng\");\r\n\t\tvar showMap = $(mapName).data(\"showmap\") || true;\r\n\t\tvar showMarker = $(mapName).data(\"showmarker\");\r\n\t\tvar showAddress = $(mapName).data(\"showaddress\");\r\n\t\tvar html = $(mapName).data(\"html\");\r\n\t\tvar isStatic = $(mapName).data(\"static\") || false;\r\n\t\tvar zoom = $(mapName).data(\"zoom\") || 14;\r\n\t\tvar kml = $(mapName).data(\"kml\") || '';\r\n\r\n\t\tif (!showMap) return;\r\n\r\n\t\twindow.MapView = createMapPanel(mapName, lat, lng, zoom, isStatic);\r\n\r\n\t\tif (showMarker) {\r\n\t\t\twindow.Marker = new google.maps.Marker({\r\n\t\t\t\tposition: new google.maps.LatLng(lat, lng),\r\n\t\t\t\tmap: window.MapView,\r\n\t\t\t\ticon: \"/_static/images/map_marker.png\",\r\n\t\t\t\thtml: html\r\n\t\t\t});\r\n\r\n\t\t\twindow.InfoWindow = new google.maps.InfoWindow();\r\n\t\t\tif (html !== '') {\r\n\t\t\t\tgoogle.maps.event.addListener(window.Marker, 'click', function () {\r\n\t\t\t\t\twindow.InfoWindow.setContent(this.html);\r\n\t\t\t\t\twindow.InfoWindow.open(window.MapView, this);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (showAddress) {\r\n\t\t\twindow.Geocoder = new google.maps.Geocoder();\r\n\t\t\twindow.Marker = new google.maps.Marker({\r\n\t\t\t    map: window.MapView\r\n\t\t\t});\r\n\r\n\t\t\tvar input = $(\".map-address\").get(0);\r\n\t\t\twindow.Autocomplete = new google.maps.places.Autocomplete(input, { componentRestrictions: { country: 'au' } });\r\n\t\t\twindow.Autocomplete.bindTo(\"bounds\", window.MapView);\r\n\r\n\t\t\tgoogle.maps.event.addListener(window.MapView, 'click', function (event) { geocodeLatLng(event.latLng); });\r\n\r\n\t\t\tgoogle.maps.event.addListener(window.Autocomplete, 'place_changed', function () {\r\n\t\t\t\tclearMap();\r\n\r\n\t\t\t\tvar place = window.Autocomplete.getPlace();\r\n\t\t\t\tif (!place || !place.geometry) return;\r\n\r\n\t\t\t\tif (place.geometry.viewport) {\r\n\t\t\t\t\twindow.MapView.fitBounds(place.geometry.viewport);\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.MapView.setCenter(place.geometry.location);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tshowGeocodeResults(place, google.maps.GeocoderStatus.OK, '', geolocationCallback);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (kml) {\r\n\t\t    window.KmlLayer = new google.maps.KmlLayer({\r\n\t\t        url: kml,\r\n\t\t        suppressInfoWindows: true,\r\n\t\t        clickable: false,\r\n\t\t        map: window.MapView\r\n\t\t    });\r\n\t\t}\r\n\t}\r\n\r\n\tfunction drawStreetView(map, panoName) {\r\n\r\n\t    if (!$(panoName).length) return;\r\n\t    if (map === null) return;\r\n\r\n\t\tvar lat = $(panoName).data(\"lat\");\r\n\t\tvar lng = $(panoName).data(\"lng\");\r\n\t\tvar showView = $(panoName).data(\"show\");\r\n\r\n\t\tif (!showView) return;\r\n\r\n\t\tvar location = new google.maps.LatLng(lat, lng);\r\n\r\n\t\tvar panoramaOptions = {\r\n\t\t\tposition: location,\r\n\t\t\tpov: { heading: 0, pitch: 0 },\r\n\t\t\taddressControlOptions: { position: google.maps.ControlPosition.TOP_RIGHT },\r\n\t\t\tzoomControlOptions: { style: google.maps.ZoomControlStyle.SMALL, position: google.maps.ControlPosition.BOTTOM_RIGHT },\r\n\t\t\tlinksControl: false,\r\n\t\t\tpanControl: false\r\n\t\t};\r\n\t\tvar panorama = new google.maps.StreetViewPanorama($(panoName)[0], panoramaOptions);\r\n\t\tmap.setStreetView(panorama);\r\n\t}\r\n\r\n\tfunction loadSuburbMap(mapName, kml) {\r\n\t    var map;\r\n\t    var regionLayer;\r\n\t    var marker;\r\n\r\n\t    var mapOptions = {\r\n\t        mapTypeId: google.maps.MapTypeId.ROADMAP\r\n\t    };\r\n\r\n\t    map = new google.maps.Map($(mapName)[0], mapOptions);\r\n\r\n\t    var nyLayer = new google.maps.KmlLayer(kml, {\r\n\t        suppressInfoWindows: true,\r\n\t        map: map\r\n\t    });\r\n\t}\r\n\r\n\tfunction loadRegionMembers() {\r\n\t    if (_currentCouncil.CouncilRegionID) {\r\n\t        $.getJSON(\"/api/Members/\" + _currentCouncil.CouncilRegionID,\r\n                function (data) {\r\n                    if (data.length !== 0) {\r\n                        $(\"#lstMembers\").parent().show();\r\n                        $(\"#lstMembers\").html($(\"#membersTemplate\").render(data));\r\n                        $(\"#lstMembers\").slick({\r\n                            slidesToShow: $(\"#lstMembers\").attr(\"data-slick-slidesToShow\"),\r\n                            slide: $(\"#lstMembers\").attr(\"data-slick-slideElement\"),\r\n                            autoplay: true\r\n                        });\r\n                    }\r\n                }\r\n            );\r\n\t    }\r\n\t}\r\n\r\n\tfunction createMapPanel(mapName, centerLat, centerLng, zoom, isStatic) {\r\n\r\n\t\tif (!(centerLat || centerLng)) {\r\n\t\t\tcenterLat = -27.4984;\r\n\t\t\tcenterLng = 152.9712;\r\n\t\t}\r\n\r\n\t\tvar mapContainer = $(mapName);\r\n\t\tvar MY_MAPTYPE_ID = 'custom_style';\r\n\r\n\t\tvar featureOpts = [\r\n\t\t{ \"featureType\": \"water\", \"stylers\": [{ \"saturation\": -63 }] },\r\n\t\t{ \"featureType\": \"road\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"administrative.province\", \"elementType\": \"labels.text\", \"stylers\": [{ \"hue\": \"#dd00ff\" }, { \"weight\": 1.2 }] },\r\n\t\t{ \"featureType\": \"poi.government\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"poi.business\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"poi.government\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"poi.medical\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"poi.place_of_worship\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"poi.school\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"poi.sports_complex\", \"stylers\": [{ \"saturation\": -100 }] },\r\n\t\t{ \"featureType\": \"water\", \"stylers\": [{ \"saturation\": 44 }] },\r\n\t\t{ \"featureType\": \"administrative.locality\" }\r\n\t\t];\r\n\r\n\t\tvar location = new google.maps.LatLng(centerLat, centerLng);\r\n\t\tvar mapOptions;\r\n\t\t\r\n\t\tgoogle.maps.visualRefresh = true;\r\n\r\n\t\tmapOptions = {\r\n\t\t\tzoom: zoom || 14,\r\n\t\t\tcenter: location,\r\n\t\t\tmapTypeControlOptions: { style: google.maps.MapTypeControlStyle.SMALL, mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID] },\r\n\t\t\tmapTypeId: MY_MAPTYPE_ID\r\n\t\t};\r\n\r\n\t\tif (isStatic)\r\n\t\t{\r\n\t\t\tmapOptions = {\r\n\t\t\t\tzoom: zoom || 14,\r\n\t\t\t\tcenter: location,\r\n\t\t\t\tmapTypeControlOptions: { style: google.maps.MapTypeControlStyle.SMALL, mapTypeIds: [google.maps.MapTypeId.ROADMAP, MY_MAPTYPE_ID] },\r\n\t\t\t\tmapTypeId: MY_MAPTYPE_ID,\r\n\t\t\t\tdisableDefaultUI: true,\r\n\t\t\t\tdisableDoubleClickZoom: true,\r\n\t\t\t\tscrollwheel: false,\r\n\t\t\t\tdraggable: false\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar map = new google.maps.Map(mapContainer[0], mapOptions);\r\n\r\n\t\tvar styledMapOptions = { name: 'Custom Style' };\r\n\t\tvar customMapType = new google.maps.StyledMapType(featureOpts, styledMapOptions);\r\n\t\tmap.mapTypes.set(MY_MAPTYPE_ID, customMapType);\r\n\r\n\t\treturn map;\r\n\r\n\t}\r\n\r\n\t// Map for the Item Listing page\r\n\tfunction loadMap(mapName, results, showResourceList, searchCenter) {\r\n\r\n        window.MapView = createMapPanel(mapName);\r\n\t\twindow.Bounds = new google.maps.LatLngBounds();\r\n\r\n\t\tvar i;\r\n\r\n\t\t// Clear out any exisitng map markers\r\n\t\tif (typeof window.Markers !== 'undefined') {\r\n\t\t\tfor (i = 0; i < window.Markers.length; i++) {\r\n\t\t\t\twindow.Markers[i].setMap(null);\r\n\t\t\t}\r\n\t\t}\r\n\t\twindow.Markers = [];\r\n\t\twindow.InfoWindow = new google.maps.InfoWindow({});\r\n\r\n\t\t// Clear out the council map if used.\r\n\t\tif (typeof window.CouncilLayer !== 'undefined') {\r\n\t\t\twindow.CouncilLayer.setMap(window.MapView);\r\n\t\t}\r\n\r\n\t\tvar markerHandler = function () {\r\n\t\t\twindow.InfoWindow.setContent(this.html);\r\n\t\t\twindow.InfoWindow.open(window.MapView, this);\r\n\t\t};\r\n\r\n\t\tfor (i = 0; i < results.length; i++) {\r\n\t\t\t// An example marker\r\n\t\t    var listing = results[i];\r\n\t\t    var html = \"<div class='google-result'><div class='contact-details'>\";\r\n\t\t    if (showResourceList)\r\n\t\t    {\r\n\t\t        var phone = listing.Outlet.Phone || \"\";\r\n\t\t        var pstripped = phone.replace(/[^0-9]+/g, \"\");\r\n\t\t        if (pstripped.length > 0) {\r\n\t\t            html += \"<p class='icon icon-phone60'><a href='tel:\" + pstripped + \"'>\" + phone + \"</a></p>\";\r\n\t\t        }\r\n\t\t        else if (phone.substr(0, 2) === \"--\") {\r\n\t\t            html += \"<p class='icon icon-phone60'>\" + value + \"</p>\";\r\n\t\t        }\r\n\r\n\t\t        var value = listing.Outlet.DisplayAddress || \"\";\r\n\t\t        var inner = \"--not supplied--\";\r\n\r\n\t\t        if (value.length > 0) {\r\n\t\t            if (value.substr(0, 2) === \"--\") {\r\n\t\t                inner = value;\r\n\t\t            }\r\n\t\t            else {\r\n\t\t                inner = \"<a href='https://maps.google.com/?q=\" + encodeURIComponent(value) + \"' target='_blank'>\" + value + \"</a>\";\r\n\t\t            }\r\n\t\t        }\r\n\t\t        html += \"<p class='icon icon-map15'>\" + inner + \"</p>\";\r\n            }\r\n\t\t    else {\r\n\t\t        html += \"<p class='icon icon-phone60'><a href='\" + listing.Url + \"' class='btn btn-small btn-blue'>Contact Us</a></p>\";\r\n\t\t        html += \"<p class='icon icon-map15'>\" + listing.Outlet.Suburb + \"</p>\";\r\n\t\t    }\r\n\t\t    if (searchCenter !== 'undefined' && searchCenter !== '') {\r\n\t\t        html += \"<p class='icon icon-podcast distance'>\" + listing.Distance + \" from the centre of \" + searchCenter + \"</p>\";\r\n\t\t    }\r\n\r\n\t\t    html += \"</div></div>\";\r\n\r\n\t\t\tif (listing.Outlet.MapLocation.ShowMarker) {\r\n\t\t\t\tvar marker = new google.maps.Marker({\r\n\t\t\t\t\tposition: new google.maps.LatLng(listing.Outlet.MapLocation.Lat, listing.Outlet.MapLocation.Lng),\r\n\t\t\t\t\tmap: window.MapView,\r\n\t\t\t\t\ticon: \"/_static/images/map_marker.png\",\r\n\t\t\t\t\thtml: '<h3 class=\"h5 orange\"><a href=\"' + listing.Url + '\">' + listing.Outlet.Nickname + '</a></h3>' + html\r\n\t\t\t\t});\r\n\t\t\t\twindow.Bounds.extend(marker.position);\r\n\r\n\t\t\t\tgoogle.maps.event.addListener(marker, 'click', markerHandler);\r\n\r\n\t\t\t\twindow.Markers[window.Markers.length] = marker;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (window.Markers.length === 0) {\r\n\t\t    if (_currentCouncil) {\r\n\t\t        window.CouncilLayer = new google.maps.KmlLayer(_currentCouncil.KmlLocation);\r\n\t\t        window.CouncilLayer.setMap(window.MapView);\r\n\t\t    }\r\n\t\t} else {\r\n\t\t\tfitMapBounds();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fitMapBounds()\r\n\t{\r\n\t\twindow.MapView.fitBounds(window.Bounds);\r\n\r\n\t\tgoogle.maps.event.addListenerOnce(window.MapView, 'bounds_changed', function (event) {\r\n\t\t\tif (this.getZoom() > 17) {\r\n\t\t\t\tthis.setZoom(17);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction loadOutletsToMap(mapName, results) {\r\n\t    window.MapView = createMapPanel(mapName);\r\n\t    window.Bounds = new google.maps.LatLngBounds();\r\n\t    window.Spiderfier = new OverlappingMarkerSpiderfier(window.MapView, { markersWontMove: true, markersWontHide: true });\r\n\t    window.Clusterer = new MarkerClusterer(window.MapView, [], { gridSize: 50, maxZoom: 15 });\r\n\r\n\t    window.Spiderfier.addListener('click', function (marker) {\r\n\t        window.InfoWindow.setContent(marker.html);\r\n\t        window.InfoWindow.open(window.MapView, marker);\r\n\t    });\r\n\r\n\t    var i;\r\n\r\n\t    // Clear out any exisitng map markers\r\n\t    if (typeof window.Markers !== 'undefined') {\r\n\t        for (i = 0; i < window.Markers.length; i++) {\r\n\t            window.Markers[i].setMap(null);\r\n\t        }\r\n\t    }\r\n\t    window.Markers = [];\r\n\t    window.InfoWindow = new google.maps.InfoWindow({});\r\n\r\n\t    var markerHandler = function () {\r\n\t        window.InfoWindow.setContent(this.html);\r\n\t        window.InfoWindow.open(window.MapView, this);\r\n\t    };\r\n\r\n\t    for (i = 0; i < results.length; i++) {\r\n\t        // An example marker\r\n\t        var listing = results[i];\r\n\r\n\t        if (listing.MapLocation.ShowMarker) {\r\n\t            var marker = new google.maps.Marker({\r\n\t                position: new google.maps.LatLng(listing.MapLocation.Lat, listing.MapLocation.Lng),\r\n\t                map: window.MapView,\r\n\t                title: listing.Nickname,\r\n\t                icon: \"/_static/images/map_marker.png\",\r\n\t                html: '<h3 class=\"h5 orange\"><a href=\"/Outlet/' + listing.Url + '\">' + listing.Nickname + '</a></h3><p>' + listing.DisplayAddress + '</p>'\r\n\t            });\r\n\t            window.Bounds.extend(marker.position);\r\n\r\n\t            //google.maps.event.addListener(marker, 'click', markerHandler);\r\n\r\n\t            window.Markers[window.Markers.length] = marker;\r\n\t            window.Spiderfier.addMarker(marker);\r\n\t        }\r\n\t    }\r\n\r\n\t    if (window.Markers.length >= 0) {\r\n\t        window.Clusterer.addMarkers(window.Markers, false);\r\n\t        fitMapBounds();\r\n\t    }\r\n\t}\r\n\r\n\tfunction loadFavouritesToMap(mapName, results) {\r\n\r\n\t    window.MapView = createMapPanel(mapName, -27.4984, 152.9712);\r\n\t\twindow.Bounds = new google.maps.LatLngBounds();\r\n\t\tvar i = 0;\r\n\r\n\t\t// Clear out any exisitng map markers\r\n\t\tif (typeof window.Markers !== 'undefined') {\r\n\t\t\tfor (i = 0; i < window.Markers.length; i++) {\r\n\t\t\t\twindow.Markers[i].setMap(null);\r\n\t\t\t}\r\n\t\t}\r\n\t\twindow.Markers = [];\r\n\t\twindow.InfoWindow = new google.maps.InfoWindow({});\r\n\r\n\t\tvar markerHandler = function () {\r\n\t\t\twindow.InfoWindow.setContent(this.html);\r\n\t\t\twindow.InfoWindow.open(window.MapView, this);\r\n\t\t};\r\n\r\n\t\tif (results) {\r\n\t\t\tfor (i = 0; i < results.length; i++) {\r\n\t\t\t    var listing = results[i];\r\n\r\n\t\t\t\tif (listing.MapLocationShowMarker) {\r\n\t\t\t\t\tvar marker = new google.maps.Marker({\r\n\t\t\t\t\t\tposition: new google.maps.LatLng(listing.MapLocationLat, listing.MapLocationLng),\r\n\t\t\t\t\t\tmap: window.MapView,\r\n\t\t\t\t\t\ticon: \"/_static/images/map_marker.png\",\r\n\t\t\t\t\t\thtml: '<h3 class=\"h5 orange\"><a href=\"' + listing.Url + '\">' + listing.OutletNickname + '</a></h3><p>' + listing.OutletDisplayAddress + '</p>'\r\n\t\t\t\t\t});\r\n\t\t\t\t\twindow.Bounds.extend(marker.position);\r\n\r\n\t\t\t\t\tgoogle.maps.event.addListener(marker, 'click', markerHandler);\r\n\r\n\t\t\t\t\twindow.Markers[window.Markers.length] = marker;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (window.Markers.length >= 0) {\r\n\t\t\twindow.MapView.fitBounds(window.Bounds);\r\n\t\t}\r\n\t}\r\n\r\n\t// Displays a number with commas separating the thousands\r\n\tfunction addCommas(nStr) {\r\n\t\tnStr += '';\r\n\t\tx = nStr.split('.');\r\n\t\tx1 = x[0];\r\n\t\tx2 = x.length > 1 ? '.' + x[1] : '';\r\n\t\tvar rgx = /(\\d+)(\\d{3})/;\r\n\t\twhile (rgx.test(x1)) {\r\n\t\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n\t\t}\r\n\t\treturn x1 + x2;\r\n\t}\r\n\r\n\tvar loadConverters = true;\r\n\r\n\tfunction setupConverters() {\r\n\t\tif (loadConverters) {\r\n\t\t\tloadConverters = false;\r\n\r\n\t\t\t$.views.converters({\r\n\t\t\t\ttel: function (value) {\r\n\t\t\t\t\tvalue = value || \"\";\r\n\r\n\t\t\t\t\tvar telValue = value.replace(/[^0-9]/g, \"\");\r\n\r\n\t\t\t\t\tif (telValue.length > 0) {\r\n\t\t\t\t\t\treturn \"<p class='icon icon-phone60'><a href='tel:\" + telValue + \"'>\" + value + \"</a></p>\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (value.substr(0, 2) === \"--\") {\r\n\t\t\t\t\t\treturn \"<p class='icon icon-phone60'>\" + value + \"</p>\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\tmap: function (value) {\r\n\t\t\t\t\tvalue = value || \"\";\r\n\r\n\t\t\t\t\tvar inner = \"--not supplied--\";\r\n\r\n\t\t\t\t\tif (value.length > 0) {\r\n\t\t\t\t\t\tif (value.substr(0, 2) === \"--\") {\r\n\t\t\t\t\t\t\tinner = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tinner = \"<a href='https://maps.google.com/?q=\" + encodeURIComponent(value) + \"' target='_blank'>\" + value + \"</a>\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn \"<p class='icon icon-map15'>\" + inner + \"</p>\";\r\n\t\t\t\t},\r\n\r\n\t\t\t\temail: function (value) {\r\n\t\t\t\t\tvalue = value || \"\";\r\n\r\n\t\t\t\t\tif (value.indexOf(\"@\") >= 0) {\r\n\t\t\t\t\t\treturn \"<p class='icon icon-new48'><a href='mailto:\" + value + \"'>\" + value + \"</a></p>\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction displayResults(data, performKeyWordSearch, showResourceList) {\r\n\r\n\t    setupConverters();\r\n\r\n\t    var keywordSearchResults = performKeyWordSearch ? $(\"#keywordSearchResultTemplate\").render(data.KeywordSearchResults) : \"\";\r\n        var $keywordSearchResults = $(\"<div/>\").html(keywordSearchResults);\r\n        $(\".nofollow\", $keywordSearchResults).removeAttr(\"rel\");\r\n\t    keywordSearchResults = $keywordSearchResults.html();\r\n\r\n\t    var results = $(\"#resultTemplate\").render(data.Results, { criteria: data.Criteria || {} } );\r\n        var $results = $(\"<div/>\").html(results);\r\n        $(\".nofollow\", $results).removeAttr(\"rel\");\r\n        results = $results.html();\r\n\r\n\t    $(\"#results\").html(keywordSearchResults + results);\r\n\r\n\t    if (data.Results.length < 10) {\r\n\t        $(\".low-listings\").show();\r\n\t    }\r\n\r\n\t    loadMap(\"#search-map\", data.Results, showResourceList, data.Criteria.Where);\r\n\r\n\t    if (data.Results.length === 0) {\r\n\t        $(\".view-toggles\").hide();\r\n\t        $(\".mcd-pagination\").hide();\r\n\r\n\t        if (data.KeywordSearchResults.length !== 0) {\r\n\t            // Add a little space between keyword search results and expand your search area\r\n\t            $(\".extend-your-search\").prepend(\"<div style='margin-top:30px;'/>\");\r\n\t        }\r\n\t    }\r\n\t}\r\n\r\n\tfunction displayResultsPagination(crit, totalPages, pageSize, favouriteModalUrl) {\r\n\t    var pageLinks = '';\r\n\t    var pageNo = crit.PageNo;\r\n\t    var numberOfPages = Math.floor(totalPages / pageSize);\r\n\t    if (totalPages % pageSize > 0) numberOfPages++;\r\n\r\n\t    var startPage = 1;\r\n\t    var endPage = numberOfPages;\r\n\t    var maxDisplayPages = 11;\r\n\r\n\t    if (numberOfPages > maxDisplayPages) {\r\n\t        startPage = pageNo - Math.floor((maxDisplayPages - 1) / 2);\r\n\t        if (startPage <= 0) startPage = 1;\r\n\r\n\t        endPage = startPage + maxDisplayPages;\r\n\t        if (endPage > numberOfPages) {\r\n\t            endPage = numberOfPages;\r\n\t            startPage = endPage - maxDisplayPages;\r\n\t        }\r\n\t    }\r\n\r\n\t    if (pageNo > 1) pageLinks += '<a href=\"#\" data-page=\"' + (pageNo - 1) + '\" class=\"pickPage previous\">Previous</a>';\r\n\r\n\t    if (startPage > 1) {\r\n\t        pageLinks += '<a href=\"#\" data-page=\"1\" class=\"number pickPage\">1</a> ... ';\r\n\t    }\r\n\r\n\t    for (var i = startPage; i <= endPage; i++) {\r\n\t        pageLinks += '<a href=\"#\" data-page=\"' + i + '\" class=\"number ' + (i === pageNo ? 'current' : 'pickPage') + '\">' + i + '</a>';\r\n\t    }\r\n\r\n\t    if (endPage < numberOfPages) {\r\n\t        pageLinks += ' ... <a href=\"#\" data-page=\"' + numberOfPages + '\" class=\"number pickPage\">' + numberOfPages + '</a>';\r\n        }\r\n\r\n\t    if (numberOfPages !== pageNo) {\r\n\t        pageLinks += '<a href=\"#\" data-page=\"' + (pageNo + 1) + '\" class=\"pickPage next\">Next</a>';\r\n\t    }\r\n\r\n\t    var pages = '<p>Page ' + pageNo + ' of ' + numberOfPages + '</p>';\r\n\t    if (numberOfPages !== 1) pages += '<div class=\"pagination-links\">' + pageLinks + '</div>';\r\n\r\n\t    $(\".search-expand\").show();\r\n\r\n\t    $('.mcd-pagination').html(pages);\r\n\r\n\t    $(\".mcd-pagination .pickPage\").on(\"click\", function (e) {\r\n\t        $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n\t        crit.PageNo = $(this).data(\"page\");\r\n\t        if (ga) {\r\n\t            ga('send', 'event', 'button', 'click', 'page', crit.PageNo);\r\n\t        }\r\n\t        Pages.LoadSearchResults(crit, favouriteModalUrl);\r\n\t    });\r\n\t}\r\n\t\r\n\tfunction setupResultsButtonActions(crit, favouriteModalUrl) {\r\n\t    if (window.opera || window.sidebar) {\r\n\t        $(\".btn-add-to-favourites\").each(function () {\r\n\t            $(this).attr(\"href\", window.location.href);\r\n\t            $(this).attr(\"title\", document.title);\r\n\t            $(this).attr(\"rel\", \"sidebar\");\r\n\t        });\r\n\t    }\r\n\r\n\t    $(\".btn-add-to-favourites\").on(\"click\", function (e) {\r\n\t        e.preventDefault();\r\n\t        showAddFavourite(e, parseInt($(this).data(\"profile\")), parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouriteModalUrl);\r\n\t    });\r\n\r\n\t    $(\".btn-save-search\").on(\"click\", function (e) {\r\n\t        e.preventDefault();\r\n\t        showSavedSearch($(this).data(\"profile\"));\r\n\t    });\r\n\r\n\t    setupSaveSearchClick(crit);\r\n\r\n\t    var buttonWrapper = $(\"#view-toggles\");\r\n\t    var rankButton = buttonWrapper.find(\".btn-rank\");\r\n\t    var alphaButton = buttonWrapper.find(\".btn-alpha\");\r\n\t    var distanceButton = buttonWrapper.find(\".btn-distance\");\r\n\t    var mapButton = buttonWrapper.find(\".btn-map\");\r\n\r\n\t    if (crit.SortField === 'Relevance') {\r\n\t        // Reset the other buttons\r\n\t        alphaButton.removeClass(\"active\").removeClass(\"icon-sort-alpha-desc\").addClass(\"icon-sort-alpha-asc\").data(\"sort-direction\", \"ASC\");\r\n\t        distanceButton.removeClass(\"active\").removeClass(\"icon-sort-distance-desc\").addClass(\"icon-sort-distance-asc\").data(\"sort-direction\", \"ASC\");\r\n\r\n\t        rankButton.addClass(\"active\");\r\n\t    }\r\n\t    else if (crit.SortField === 'Distance') {\r\n\t        // Reset the other buttons\r\n\t        rankButton.removeClass(\"active\");\r\n\t        alphaButton.removeClass(\"active\").removeClass(\"icon-sort-alpha-desc\").addClass(\"icon-sort-alpha-asc\").data(\"sort-direction\", \"ASC\");\r\n\r\n\t        // Set distance button display\r\n\t        setSortButtonDirection(distanceButton, crit.SortDirection, \"distance\");\r\n\t    }\r\n\t    else {\r\n\t        // Reset the other buttons\r\n\t        rankButton.removeClass(\"active\");\r\n\t        distanceButton.removeClass(\"active\").removeClass(\"icon-sort-distance-desc\").addClass(\"icon-sort-distance-asc\").data(\"sort-direction\", \"ASC\");\r\n\r\n\t        // Set alpha button display\r\n\t        setSortButtonDirection(alphaButton, crit.SortDirection, \"alpha\");\r\n\t    }\r\n\r\n\t    rankButton.unbind(\"click touchend\").on(\"click touchend\", function (e) {\r\n\t        e.preventDefault();\r\n\t        crit.SortField = \"Relevance\";\r\n\t        crit.SortDirection = \"DESC\";\r\n\t        crit.PageNo = 1;\r\n\t        Pages.LoadSearchResults(crit, favouriteModalUrl);\r\n\t    });\r\n\r\n\t    alphaButton.unbind(\"click touchend\").on(\"click touchend\", function (e) {\r\n\t        e.preventDefault();\r\n\t        crit.SortField = \"Nickname\";\r\n\t        crit.SortDirection = \"ASC\";\r\n\t        crit.PageNo = 1;\r\n\t        if ($(this).hasClass(\"active\")) {\r\n\t            var direction = $(this).data(\"sort-direction\");\r\n\t            crit.SortDirection = direction === \"DESC\" ? \"ASC\" : \"DESC\";\r\n\t        }\r\n\t        Pages.LoadSearchResults(crit, favouriteModalUrl);\r\n\t    });\r\n\r\n\t    distanceButton.unbind(\"click touchend\").on(\"click touchend\", function (e) {\r\n\t        e.preventDefault();\r\n\r\n\t        if ($(\"#autocomplete-location\").val() === '') {\r\n\t            $(\".modal-title\").text(\"Location needed\");\r\n\t            $(\".search-text\").text(\"Before you can sort the results by distance you need to tell us where you are located. Choose your suburb in the panel at the top of the page.\");\r\n\t            $(\"#searchTextModal\").modal(\"show\");\r\n\t            return;\r\n\t        }\r\n\r\n\t        crit.SortField = \"Distance\";\r\n\t        crit.SortDirection = \"ASC\";\r\n\t        crit.PageNo = 1;\r\n\r\n\t        if ($(this).hasClass(\"active\")) {\r\n\t            var direction = $(this).data(\"sort-direction\");\r\n\t            crit.SortDirection = direction === \"DESC\" ? \"ASC\" : \"DESC\";\r\n\t        }\r\n\r\n\t        Pages.LoadSearchResults(crit, favouriteModalUrl);\r\n\r\n\t        if (mapButton.hasClass(\"active\")) {\r\n\t            if (window.Markers.length > 0) {\r\n\t                fitMapBounds();\r\n\t            } else {\r\n\t                if (typeof window.CouncilLayer !== 'undefined') {\r\n\t                    window.CouncilLayer.setMap(window.MapView);\r\n\t                }\r\n\t            }\r\n\t        }\r\n\t    });\r\n\t}\r\n\r\n\tfunction setSortButtonDirection(btn, direction, icon) {\r\n\t    var ascClass = \"icon-sort-\" + icon + \"-asc\";\r\n\t    var descClass = \"icon-sort-\" + icon + \"-desc\";\r\n\t    if (direction === 'DESC') {\r\n\t        btn.removeClass(ascClass).addClass(descClass);\r\n\t    }\r\n\t    else {\r\n\t        btn.removeClass(descClass).addClass(ascClass);\r\n\t    }\r\n\t    btn.addClass(\"active\").data(\"sort-direction\", direction);\r\n    }\r\n\r\n\tfunction displayResultsSummary(data) {\r\n\t    var summary = \"<strong>\" + addCommas(data.Total) + \" Result\" + (data.Total === 1 ? \"\" : \"s\") + \"</strong> for \";\r\n\t    if (data.Criteria.Category.ID === 0 && data.Criteria.Service === 0) {\r\n\t        if (data.Criteria.What === '') {\r\n\t            summary += \"everything \";\r\n\t        }\r\n\t        else {\r\n\t            summary += \"'\" + data.Criteria.What + \"' \";\r\n\t        }\r\n\t    }\r\n\t    else {\r\n\t        if (data.Criteria.Service.ServiceID === 0) {\r\n\t            summary += \"All \" + data.Criteria.Category.Name + \" \";\r\n\t        } else {\r\n\t            summary += data.Criteria.Service.ServiceName + \" \";\r\n\t        }\r\n\t    }\r\n\t    if (data.Criteria.Locality.LocalityID === 0) {\r\n\t        if (data.Criteria.Where !== '') {\r\n\t            summary += data.Criteria.Radius + \"km from \" + data.Criteria.Where;\r\n\t        }\r\n\t    }\r\n\t    else {\r\n\t        summary += data.Criteria.Radius + \"km from \" + data.Criteria.Locality.Name;\r\n\t    }\r\n\t    if (data.Criteria.Council.CouncilRegionID > 0) {\r\n\t        summary += \" in the \" + data.Criteria.Council.DisplayNameCouncil + \" region\";\r\n\t    }\r\n\t    else {\r\n\t        if (data.Criteria.AffiliateSite.Loaded) {\r\n\t            summary += \" in the \" + data.Criteria.AffiliateSite.Name + \" region\";\r\n\t        }\r\n\t    }\r\n\r\n\t    if (data.Criteria.IsAdvanced) {\r\n\t        summary += \" <em>with <a href='#' class='advanced-search-btn'>advanced criteria</a><em>\";\r\n\t    }\r\n\r\n\t    $(\".search-summary\").html(summary);\r\n\r\n\t    $(\".advanced-search-btn\").on('click touchend', function (e) {\r\n\t        e.preventDefault();\r\n\t        var tempUrl = '/Search/Advanced' + location.search;\r\n\t        window.location = tempUrl;\r\n\t    });\r\n\t}\r\n\r\n\tfunction displayExtraInformation() {\r\n\t    $(\".next-appt\").each(function (i, element) {\r\n\t        var outletId = $(this).data(\"outlet-id\");\r\n\t        var healthEngineId = $(this).data(\"healthengine-id\");\r\n\t        var healthEngineStatus = $(this).data(\"healthengine-status\") || \"-\";\r\n\r\n\t        if (outletId && healthEngineId) {\r\n\t            $.getJSON(\"/api/Outlets/GetNextBooking/\" + outletId + \"/\" + healthEngineId + \"/\" + healthEngineStatus,\r\n                    function (data) {\r\n                        if (data && data.HealthEngineNextAppointment) {\r\n                            $(element).html($(\"#nextAppointmentTemplate\").render(data));\r\n                        }\r\n                        else {\r\n                            $(element).hide();\r\n                        }\r\n                    });\r\n\t        }\r\n\t    });\r\n\r\n\t    $(\".accreditations\").each(function (i, element) {\r\n\t        var outletId = $(this).data(\"outletid\");\r\n\r\n\t        if (outletId) {\r\n\t            $.getJSON(\"/api/Outlets/GetAccreditations/\" + outletId,\r\n                    function (data) {\r\n                        if (!data || data.length === 0) {\r\n                            $(element).hide();\r\n                        }\r\n                        else {\r\n                            $(element).html($(\"#accreditationsTemplate\").render(data));\r\n                        }                        \r\n                    });\r\n\t        }\r\n\t    });\r\n\t}\r\n\r\n\tfunction drawOrgChart(data) {\r\n\t\tvar formatter = new google.visualization.NumberFormat({ pattern: '###,###' });\r\n\t\tformatter.format(data, 1);\r\n\t\tvar options = {\r\n\t\t\theight: 300,\r\n\t\t\twidth: '100%',\r\n\t\t\tchartArea: {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\ttop: 0,\r\n\t\t\t\twidth: \"100%\",\r\n\t\t\t\theight: \"100%\"\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar chart = new google.visualization.PieChart(document.getElementById('orgtypes'));\r\n\t\tchart.draw(data, options);\r\n\t}\r\n\r\n\tfunction drawOrgMap(data) {\r\n\t\tvar formatter = new google.visualization.NumberFormat({ pattern: '###,###' });\r\n\t\tformatter.format(data, 2);\r\n\t\tvar options = {\r\n\t\t\tregion: \"AU\",\r\n\t\t\tdataMode: \"markers\",\r\n\t\t\theight: 300,\r\n\t\t\twidth: '100%',\r\n\t\t\tchartArea: {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\ttop: 0,\r\n\t\t\t\twidth: \"100%\",\r\n\t\t\t\theight: \"100%\"\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar chart = new google.visualization.GeoMap(document.getElementById('orgmap'));\r\n\t\tchart.draw(data, options);\r\n\t}\r\n\r\n\tfunction drawServiceChart(data) {\r\n\t\tvar formatter = new google.visualization.NumberFormat({ pattern: '###,###' });\r\n\t\tformatter.format(data, 1);\r\n\t\tvar options = {\r\n\t\t\theight: 300,\r\n\t\t\twidth: '100%',\r\n\t\t\tchartArea: {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\ttop: 0,\r\n\t\t\t\twidth: \"100%\",\r\n\t\t\t\theight: \"100%\"\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar chart = new google.visualization.PieChart(document.getElementById('servicetypes'));\r\n\t\tchart.draw(data, options);\r\n\t}\r\n\r\n\tfunction showRemaining(control, maxlength, limitcontrol) {\r\n\t\tvar setLimit = function () {\r\n\t\t\tvar l = ($(control).val() || \"\").length;\r\n\t\t\tvar left = (maxlength - l);\r\n\t\t\tif (left < 0) left = 0;\r\n\t\t\t$(limitcontrol).text(left + ' characters left');\r\n\t\t};\r\n\r\n\t\t$(control).on('keyup', setLimit);\r\n\r\n\t\tsetLimit();\r\n\t}\r\n\r\n\tvar _pendingAbn = false;\r\n\r\n\tfunction getAbnDetails(abn, onSuccess) {\r\n\t\tif ((abn || \"\").length === 0 || abn === \"N/A\") return;\r\n\r\n\t\t_pendingAbn = true;\r\n\t\tclearMatchedOrgs();\r\n\t\t$('.org-unregisteredname').hide();\r\n\t\t$('.org-registerednames').show().data(\"shown\", true);\r\n\t\t$('.org-spinner').show();\r\n\r\n\t\t$.ajax({\r\n\t\t\turl: '/api/Outlets/AbnValidation',\r\n\t\t\tdata: JSON.stringify({ Abn: abn }),\r\n\t\t\tdataType: \"json\",\r\n\t\t\ttype: \"POST\",\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tsuccess: function (data) {\r\n\t\t\t\tvar tradingNames = $('.org-validated-tradingnames');\r\n\t\t\t\ttradingNames.empty();\r\n\r\n\t\t\t\tif (data.ABNFound) {\r\n\t\t\t\t\t$('.org-entered-abn').val(data.ABN);\r\n\t\t\t\t\t$('.org-validated-abn').val(data.ABN);\r\n\t\t\t\t\t$('.org-validated-legalname').val(data.LegalName);\r\n\t\t\t\t\tif (data.AvailableTradingNames.length === 0) {\r\n\t\t\t\t\t\ttradingNames.append($(\"<option />\", { value: '', text: \" -- none listed -- \" }));\r\n\t\t\t\t\t\ttradingNames.val('');\r\n\t\t\t\t\t\ttradingNames.attr(\"readonly\", \"readonly\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t//don't forget error handling!\r\n\t\t\t\t\t\tfor (var i = 0; i < data.AvailableTradingNames.length; i++) {\r\n\t\t\t\t\t\t\tvar name = data.AvailableTradingNames[i];\r\n\t\t\t\t\t\t\ttradingNames.append($(\"<option />\", { value: name, text: name }));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttradingNames.val(data.TradingName);\r\n\t\t\t\t\t\ttradingNames.removeAttr(\"readonly\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$('.org-validated-entitytype').val(data.EntityType);\r\n\t\t\t\t\t$('.org-validated-gstreg').prop(\"checked\", data.GSTRegistered);\r\n\t\t\t\t\t$('.org-validated-dgrstatus').prop(\"checked\", data.DGRStatus);\r\n\t\t\t\t\t$('.org-validated-charity').prop(\"checked\", data.RegisteredCharity);\r\n\t\t\t\t\t$('.org-preferredname').val(data.TradingName === '' ? data.LegalName : data.TradingName);\r\n\t\t\t\t\t$('.org-preferredname').removeAttr(\"readonly\");\r\n\t\t\t\t\tif (onSuccess) onSuccess(data);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t$('.org-validated-abn').val(\"\");\r\n\t\t\t\t\t$('.org-validated-legalname').val('');\r\n\t\t\t\t\ttradingNames.append($(\"<option />\", { value: '', text: \" -- none listed --\" }));\r\n\t\t\t\t\ttradingNames.val('');\r\n\t\t\t\t\ttradingNames.attr(\"readonly\", \"readonly\");\r\n\t\t\t\t\t$('.org-validated-entitytype').val('');\r\n\t\t\t\t\t$('.org-validated-gstreg').prop(\"checked\", false);\r\n\t\t\t\t\t$('.org-validated-dgrstatus').prop(\"checked\", false);\r\n\t\t\t\t\t$('.org-validated-charity').prop(\"checked\", false);\r\n\t\t\t\t\t$('.org-preferredname').val('');\r\n\t\t\t\t\t$('.org-preferredname').attr(\"readonly\", \"readonly\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgetMatchedOrgs();\r\n\t\t\t},\r\n\t\t\tcomplete: function () {\r\n\t\t\t\t_pendingAbn = false;\r\n\r\n\t\t\t\t$('.org-spinner').hide();\r\n\t\t\t\t$('.org-entered-abn').valid();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction showFoundOrgs(orgs) {\r\n\t\tvar found = false;\r\n\r\n\t\tif (orgs.length && orgs.length > 0) {\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var orgNum = 0; orgNum < orgs.length; orgNum++) {\r\n\t\t\t\tvar org = orgs[orgNum];\r\n\r\n\t\t\t\tvar orgName = org.DisplayName;\r\n\t\t\t\tvar orgID = org.OrganisationID;\r\n\t\t\t\tvar numOutlets = org.Outlets.length;\r\n\r\n\t\t\t\t$(\".org-matched-select\").append($(\"<option />\").val(orgID).text(orgName));\r\n\r\n\t\t\t\thtml += \"<div style=\\\"padding-left: 10px;\\\">\";\r\n\t\t\t\thtml += \"<p class=\\\"small\\\" style=\\\"margin-bottom:0;\\\"><strong>\" + orgName + \"</strong></p>\";\r\n\t\t\t\tif (numOutlets > 0) {\r\n\t\t\t\t\thtml += \"<p class=\\\"small\\\" style=\\\"margin-bottom:0;\\\">With the following outlet\" + (numOutlets > 1 ? \"s\" : \"\") + \":</p><ul>\";\r\n\t\t\t\t\tfor (var a = 0; a < numOutlets; a++) {\r\n\t\t\t\t\t\thtml += \"<li class=\\\"small\\\" >\" + org.Outlets[a].Nickname + \", \" + org.Outlets[a].Suburb + \"</li>\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\thtml += \"</ul>\";\r\n\t\t\t\t}\r\n\t\t\t\thtml += \"</div>\";\r\n\r\n\t\t\t\tif (orgs.length === 1) {\r\n\t\t\t\t\t$(\".org-matched-select\").val(orgID);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$('.org-existing-selection').hide();\r\n\t\t\t$(\".org-matched-info\").html(html);\r\n\t\t\t$(\".org-matched-is-listed\").prop('checked', false);\r\n\r\n\t\t\tfound = true;\r\n\t\t}\r\n\r\n\t\t$(\".org-matched\").toggle(found);\r\n\t}\r\n\r\n\tfunction clearMatchedOrgs() {\r\n\t\t$(\"org-matched-list\").empty();\r\n\t\t$(\".org-matched-select\").html(\"<option value=''>Choose an organisation ...</option>\").val(\"\");\r\n\t\t$('.org-matched').hide();\r\n\t}\r\n\r\n\tfunction getMatchedOrgs() {\r\n\t\tvar newAbn = $('.org-validated-abn').val();\r\n\t\tvar newName = $('.org-tradingnames-unverified').val();\r\n\r\n\t\t$('.org-matched-select').val(\"\");\r\n\r\n\t\tif ($('.org-noabn').is(':checked')) {\r\n\t\t\tnewAbn = \"\";\r\n\t\t\tif (newName.length < 3) {\r\n\t\t\t\t$.msgGrowl({ type: 'error', title: 'Name Invalid', position: 'bottom-right', text: 'You must enter in a name with 3 or more characters.' });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t\tnewName = \"\";\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: \"/api/Outlets/FindOrganisations\",\r\n\t\t\tdata: JSON.stringify({ Abn: newAbn, TradingName: newName }),\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tdataType: \"json\",\r\n\t\t\tsuccess: function (data) {\r\n\t\t\t\tshowFoundOrgs(data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction addAbnValidation(abnControl) {\r\n\t\t$.validator.addMethod(\r\n\t\t\t\"abn\",\r\n\t\t\tfunction (value, element) {\r\n\t\t\t\tif ($(\".org-noabn\").is(\"checked\")) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_pendingAbn) return \"pending\";\r\n\r\n\t\t\t\tvar validatedAbn = $(\".org-validated-abn\").val();\r\n\t\t\t\treturn this.optional(element) || value === \"N/A\" || ((validatedAbn || \"\").length > 0 && value === validatedAbn);\r\n\t\t\t},\r\n\t\t\t\"Please enter a valid ABN.\"\r\n\t\t);\r\n\t}\r\n\r\n    function initEmail(callback) {\r\n        $(\"a[href='#contact-form']\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n\r\n            $(\"#contact-form\").show();\r\n            $(\"#txt-name\").focus();\r\n            $('html, body').animate({\r\n                scrollTop: $(\"#contact-form\").offset().top\r\n            }, 1000);\r\n        });\r\n\r\n        $(\"#cancelEmail\").on(\"click\", function (e) {\r\n            e.preventDefault();\r\n            $(\"#contact-form\").hide();\r\n        });\r\n\r\n        $('#sendEmail').on(\"click\", function (e) {\r\n            e.preventDefault();\r\n\r\n            $.notifyDefaults({\r\n                delay: 0,\r\n                allow_dismiss: false,\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                          '<img data-notify=\"icon\">' +\r\n                          '<div class=\"content\"><span data-notify=\"title\">{1}</span>' +\r\n                          '<span data-notify=\"message\">{2}</span></div>' +\r\n                          '</div>'\r\n            }\r\n            );\r\n\r\n            var sending = $.notify({\r\n                title: \"Sending ...\",\r\n                message: \"Please wait while we rewrite your message on to our premium papyrus and load the carrier pidgeon. It will be sent soon ... \",\r\n                icon: \"/_static/images/processing.gif\"\r\n            }, { icon_type: 'image' });\r\n            $(this).prop('disabled', true);\r\n\r\n            var email = callback($(this));\r\n\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                onClosed: function () { $('#sendEmail').prop('disabled', false); },\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                          '<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            $.ajax({\r\n                type: 'POST',\r\n                url: window.AppSettings.ApiUrl + \"/api/v1/Email/SendEventContact\",\r\n                data: JSON.stringify(email),\r\n                contentType: 'application/json; charset=utf-8',\r\n                dataType: 'json',\r\n                success: function (data) {\r\n                    if (data.Success) {\r\n                        sending.close();\r\n                        $.notify({ title: \"Success\", message: \"Your message was successfully sent.\", icon: \"glyphicon glyphicon-ok-circle\" }, { type: \"success\" });\r\n                        $(\"#txt-name\").val('');\r\n                        $(\"#txt-email\").val('');\r\n                        $(\"#txt-phone\").val('');\r\n                        $(\"#txt-enquiry\").val('');\r\n                        $(\"#contact-form\").hide();\r\n                    } else {\r\n                        sending.close();\r\n                        $.notify({ title: \"Ooops\", message: \"We had the following error in trying to send your message: \" + data.Message, icon: \"glyphicon glyphicon-remove-circle\" }, { type: \"warning\" });\r\n                    }\r\n                },\r\n                error: function () {\r\n                    sending.close();\r\n                    $.notify({ title: \"Oh My\", message: \"There was an error trying to send your message.\", icon: \"glyphicon glyphicon-remove-circle\" }, { type: \"danger\" });\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n\tfunction initHtmlEditor(control) {\r\n\t\tCKEDITOR.replace(control, {\r\n\t\t\tremoveButtons: \"Source,About\",\r\n\t\t\tremovePlugins: \"elementspath\",\r\n\t\t\theight: \"300px\",\r\n\t\t\tenterMode: CKEDITOR.ENTER_P,\r\n\t\t\thtmlEncodeOutput: true\r\n\t\t});\r\n\t}\r\n\r\n\tfunction geolocateCouncilOnLoad() {\r\n\t\tvar hideSelector = PageSetup.GetCookie(\"hide-council-selector\");\r\n\t\tif (hideSelector === \"true\") return;\r\n\r\n\t\tvar referrer = document.referrer;\r\n\t\tvar thisUrl = document.baseURI;\r\n\r\n\t\t// Only show We Found You if it is the first time to the site!\r\n\t\tif (referrer === '' || referrer.substr(0, thisUrl.length) !== thisUrl) {\r\n\t\t\tPageSetup.GeolocateCouncil();\r\n\t\t}\r\n\t}\r\n\r\n\tvar _currentCouncil;\r\n\r\n\tfunction setCurrentCouncil(council) {\r\n\t\t_currentCouncil = council;\r\n        $(\"#hfCouncilId\").val(_currentCouncil.CouncilRegionID);\r\n\r\n        var template = $(\"#councilTrailTemplate\").render(_currentCouncil);\r\n\t    var $template = $(\"<div/>\").html(template);\r\n\t    $(\".nofollow\", $template).removeAttr(\"rel\");\r\n        template = $template.html();\r\n\r\n\t\t$(\".council-trail\").html(template);\r\n\t\twindow.setupTooltipsStyling();\r\n    }\r\n\r\n\tfunction initPasswordStrength() {\r\n\t    var popoverOptions = {\r\n\t        html: true,                             // display HTML content\r\n\t        content:    \"<div class='popover-verdict'>\" +\r\n\t                    \"   <div><strong>Password strength:</strong> <span id='password-verdict'>Invalid</span>\" +\r\n\t                    \"</div>\" +\r\n\t                    \"<div id='password-strength'>\" +\r\n\t                    \"   <div class='progress'></div>\" +\r\n\t                    \"</div>\" +\r\n\t                    \"<p>Use at least 6 characters without spaces. To protect your data we recommend choosing a strong password.</p>\",\r\n\t        template:   \"<div class='popover password-tip' role='tooltip'>\" +\r\n\t                    \"   <div class='arrow'></div>\" +\r\n\t                    \"   <div class='popover-content'></div>\" +\r\n\t                    \"</div>\",\r\n\t        placement: function () { return $(window).width() < 900 ? \"top\" : \"right\"; }    // override popover placement for narrow resolutions\r\n\t    };\r\n\r\n\t    $(\"#Password\").popover(popoverOptions);\r\n\r\n\t    var options = {};\r\n\t    options.common = {\r\n\t        usernameField: \"#password-ignore\",      // this seems to be required, so just provide a field that has an empty value\r\n\t        zxcvbn: true                            // https://blogs.dropbox.com/tech/2012/04/zxcvbn-realistic-password-strength-estimation/\r\n\t    };\r\n\r\n\t    options.ui = {\r\n\t        viewports: {\r\n\t            progress: \"#password-strength\",     // override where progress bar is shown\r\n\t            verdict: \"#password-verdict\"        // override where password verdict is shown\r\n\t        }\r\n\t    };\r\n\r\n\t    $(\"#Password\").on(\"keyup click\", function () {\r\n\t        if (!$(\"#Password\").valid()) {\r\n\t            // already showing password strength meter -- hide it\r\n\t            if ($(\"#password-strength .progress-bar\").length !== 0) {\r\n\t                $(\"#Password\").pwstrength(\"destroy\");\r\n\t                $(\"#password-strength\").append($(\"<div>\").addClass(\"progress\"));\r\n\t                $(\"#password-verdict\").html(\"Invalid\");\r\n\t            }\r\n\r\n\t            return;\r\n\t        }\r\n\r\n\t        // not showing password strength meter -- show it\r\n\t        if ($(\"#password-strength .progress-bar\").length === 0) {\r\n\t            $(\"#password-strength .progress\").remove();\r\n\t            $(\"#password-verdict\").html(\"\");\r\n\t            $(\"#Password\").pwstrength(options);\r\n\t        }\r\n\t    });\r\n\t}\r\n\r\n    function setupPagination(favouritesLink, favouriteId, type, data, pageNo) {\r\n        if (!data || data.Listings.length === 0) {\r\n\t\t\t$(\".mcd-pagination\").hide();\r\n            return; \r\n\t\t}\r\n\r\n        var pageLinks = \"\";\r\n        var pageSize = 20;\r\n\t\tvar numberOfPages = Math.floor(data.TotalNumberOfListings / pageSize);\r\n\t\tif (data.TotalNumberOfListings % pageSize > 0) numberOfPages++;\r\n\r\n\t\tvar startPage = 1;\r\n\t\tvar endPage = numberOfPages;\r\n\t\tvar maxDisplayPages = 11;\r\n\r\n\t\tif (numberOfPages > maxDisplayPages) {\r\n\t\t    startPage = pageNo - Math.floor((maxDisplayPages - 1) / 2);\r\n\t\t    if (startPage <= 0) startPage = 1;\r\n\r\n\t\t    endPage = startPage + maxDisplayPages;\r\n\t\t    if (endPage > numberOfPages) {\r\n\t\t        endPage = numberOfPages;\r\n\t\t        startPage = endPage - maxDisplayPages;\r\n\t\t    }\r\n\t\t}\r\n\r\n\t\tif (pageNo > 1) pageLinks += '<a href=\"#\" data-page=\"' + (pageNo - 1) + '\" class=\"pickPage previous\">Previous</a>';\r\n\r\n\t\tif (startPage > 1) {\r\n\t\t    pageLinks += '<a href=\"#\" data-page=\"1\" class=\"number pickPage\">1</a> ... ';\r\n\t\t}\r\n\r\n\t\tfor (var i = startPage; i <= endPage; i++) {\r\n\t\t    pageLinks += '<a href=\"#\" data-page=\"' + i + '\" class=\"number ' + (i === pageNo ? 'current' : 'pickPage') + '\">' + i + '</a>';\r\n\t\t}\r\n\r\n\t\tif (endPage < numberOfPages) {\r\n\t\t    pageLinks += ' ... <a href=\"#\" data-page=\"' + numberOfPages + '\" class=\"number pickPage\">' + numberOfPages + '</a>';\r\n\t\t}\r\n\r\n\t\tif (numberOfPages !== pageNo) {\r\n\t\t    pageLinks += '<a href=\"#\" data-page=\"' + (pageNo + 1) + '\" class=\"pickPage next\">Next</a>';\r\n\t\t}\r\n\r\n\t\tvar pages = '<p>Page ' + pageNo + ' of ' + numberOfPages + '</p>';\r\n\t\tif (numberOfPages !== 1) pages += '<div class=\"pagination-links\">' + pageLinks + '</div>';\r\n\r\n        $(\".mcd-pagination\").html(pages);\r\n        $(\".mcd-pagination .pickPage\").on(\"click\",\r\n            function(e) {\r\n\t\t        e.preventDefault();\r\n                $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n\r\n\t\t        if(!favouritesLink) {\r\n\t\t            loadFavouritesList(favouriteId, type, $(this).data(\"page\"));\r\n\t\t        } else {\r\n\t\t            loadFavouritesFromLink(favouritesLink, type, $(this).data(\"page\"));\r\n\t\t        }\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\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\r\n        var i = 0;\r\n        var text = \"loading comments\";\r\n        setInterval(function () {\r\n            $(\"#loading\").html(text + Array((++i % 4) + 1).join(\".\"));\r\n        }, 500);\r\n\r\n        // hide all existing tooltips\r\n        var tooltips = $(\".qtip\");\r\n        if (tooltips.length > 0) {\r\n            tooltips.each(function () { $(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    }\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\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\r\n    function updateComment(target, orgCommentsUrl) {\r\n        var commentId = target.data(\"comment\");\r\n\r\n        target.attr(\"disabled\", \"disabled\");\r\n\r\n        showLoadingComments();\r\n        hideEditComment(commentId);\r\n\r\n        setupCommentNotificationsDefaults();\r\n\r\n        var selectedFlags = [];\r\n        var selection = target.parent().parent().find('input:checked');\r\n        selection.each(function () {\r\n            selectedFlags.push($(this).data(\"value\"));\r\n        });\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\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\r\n        if (model.UpdatedComment !== original || model.CommentFlags !== flags) {\r\n            $.ajax({\r\n                type: \"POST\",\r\n                url: \"/api/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\r\n                        if (!result.Success) {\r\n                            $.notify({\r\n                                title: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n                            }, {\r\n                                type: \"warning\"\r\n                            });\r\n\r\n                            hasError = true;\r\n                        }\r\n                    }\r\n\r\n                    if (!hasError) {\r\n                        reloadComments(1, orgCommentsUrl);\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\", message: \"There was an error trying to update this comment.\", 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        } else {\r\n            target.removeAttr(\"disabled\");\r\n            finishLoadingComments();\r\n        }\r\n    }\r\n\r\n    function reloadComments(pageNumber, orgCommentsUrl) {\r\n        showLoadingComments();\r\n\r\n        $.ajax({\r\n            type: \"GET\",\r\n            cache: false,\r\n            url: orgCommentsUrl.replace(\"pageNumber\", pageNumber),\r\n            success: function (data) {\r\n                $(\"#comments\").html(pageNumber > 1 ? $(\"#comments\").html() + data : data);\r\n\r\n                // reset existing tooltips\r\n                $(\"#comments [data-hasqtip]\").each(function () { $(this).attr(\"title\", $(this).attr(\"oldtitle\")); });\r\n\r\n                setupTooltipsStyling();\r\n\r\n                $(\"#more-comments\").removeAttr(\"disabled\", \"disabled\");\r\n                $(\"#more-comments\").data(\"page-number\", pageNumber);\r\n                $(\"#more-comments\").toggle($(\"#comments .comments-more-available\", data).val());\r\n\r\n                // setup per-comment behaviours\r\n                $(\".btn-delete-comment\").on(\"click\", function (ev) {\r\n                    ev.preventDefault();\r\n\r\n                    if (confirm(\"Are you sure you want to delete this comment?\")) {\r\n                        showLoadingComments();\r\n\r\n                        setupCommentNotificationsDefaults();\r\n\r\n                        $.ajax({\r\n                            type: \"POST\",\r\n                            url: \"/api/organisationcomments/remove/\" + $(this).data(\"comment\"),\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\r\n                                    if (!result.Success) {\r\n                                        $.notify({\r\n                                            title: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n                                        }, {\r\n                                            type: \"warning\"\r\n                                        });\r\n\r\n                                        hasError = true;\r\n                                    }\r\n                                }\r\n\r\n                                if (!hasError) {\r\n                                    reloadComments(1, orgCommentsUrl);\r\n                                }\r\n                            },\r\n                            error: function () {\r\n                                $.notify({\r\n                                    title: \"Dang It\", message: \"There was an error trying to delete this comment.\", 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\r\n                $(\".btn-edit-comment\").on(\"click\", function (ev) {\r\n                    ev.preventDefault();\r\n\r\n                    var commentId = $(this).data(\"comment\");\r\n\r\n                    // only retrigger if not already visible\r\n                    if ($(\"#comment-\" + commentId + \" .edit-comment:visible\").length === 0) {\r\n                        showEditComment($(this).data(\"comment\"));\r\n                    }\r\n                });\r\n\r\n                var isDragging = false;\r\n\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\r\n                    var editVisible = $(\".edit-comment:visible\");\r\n                    if (editVisible.length === 0 || wasDragging) {\r\n                        return;\r\n                    }\r\n\r\n                    var commentId = editVisible.data(\"comment\");\r\n                    var container = $(\"#comment-\" + commentId);\r\n\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\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\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\r\n                $(\".edit-comment-controls .yes\").on(\"click\", function () {\r\n                    updateComment($(this), orgCommentsUrl);\r\n                });\r\n                \r\n                $(\".edit-comment textarea\").keypress(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                });\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\t}\r\n\r\n    function showComments(orgCommentsUrl, organisationId, outletId, outletServiceRegionId) {\r\n        reloadComments(1, orgCommentsUrl);\r\n\r\n        // setup other comment-related behaviours\r\n        $(\"#more-comments\").on(\"click\", function (ev) {\r\n            ev.preventDefault();\r\n\r\n            $(\"#more-comments\").attr(\"disabled\", \"disabled\");\r\n\r\n            $(this).data(\"page-number\", $(this).data(\"page-number\") + 1);\r\n\r\n            reloadComments($(this).data(\"page-number\"), orgCommentsUrl);\r\n        });\r\n\r\n        if (!outletServiceRegionId || !$(\"#comment-text\").length) {\r\n\t        return;\r\n\t    }\r\n\r\n\t    // add new comment behaviour\r\n\t    $(\"#comment-text\").data(\"organisation\", organisationId);\r\n\t    $(\"#comment-text\").data(\"outlet\", outletId);\r\n\t    $(\"#comment-text\").data(\"outletserviceregion\", outletServiceRegionId);\r\n\r\n\t    $(\"#comment-text\").keypress(function (e) {\r\n\t        var target = $(e.target);\r\n\t        if (e.which === 13 && target.val().length) { // user hit ENTER\r\n\t            showLoadingComments();\r\n\r\n\t            target.attr(\"disabled\", \"disabled\");\r\n\r\n\t            var selectedFlags = [];\r\n\t            var selection = target.parent().find('input:checked');\r\n\t            selection.each(function () {\r\n\t                selectedFlags.push($(this).data(\"value\"));\r\n\t            });\r\n\r\n\t            var addNewComment = {\r\n                    Comment: target.val(),\r\n                    OrganisationId: target.data(\"organisation\"),\r\n                    OutletId: target.data(\"outlet\"),\r\n                    OutletServiceRegionId: target.data(\"outletserviceregion\"),\r\n                    CommentFlags: selectedFlags.join(\",\")\r\n\t            };\r\n\r\n\t            target.val(\"\");\r\n\t            selection.prop('checked', false);\r\n\r\n\t            setupCommentNotificationsDefaults();\r\n\r\n\t            $.ajax({\r\n\t                type: \"POST\",\r\n\t                url: \"/api/organisationcomments/addnewcomment\",\r\n\t                data: JSON.stringify(addNewComment),\r\n\t                contentType: \"application/json; charset=utf-8\",\r\n\t                dataType: \"json\",\r\n\t                success: function (data) {\r\n\t                    var hasError = false;\r\n\t                    for (var i = 0; i < data.length; i++) {\r\n\t                        var result = data[i];\r\n\r\n\t                        if (!result.Success) {\r\n\t                            $.notify({\r\n\t                                title: \"Ooops\", message: result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n\t                            }, {\r\n\t                                type: \"warning\"\r\n\t                            });\r\n\r\n\t                            hasError = true;\r\n\t                        }\r\n\t                    }\r\n\r\n\t                    if (!hasError) {\r\n\t                        reloadComments(1, orgCommentsUrl);\r\n                        }\r\n\t                },\r\n\t                error: function () {\r\n\t                    $.notify({\r\n\t                        title: \"Dang It\", message: \"There was an error trying to post a new comment.\", icon: \"glyphicon glyphicon-remove-circle\"\r\n\t                    }, {\r\n\t                        type: \"danger\"\r\n\t                    });\r\n\t                        },\r\n                    complete: function() {\r\n                        finishLoadingComments();\r\n\t                    $(\"#comment-text\").removeAttr(\"disabled\");\r\n\t                    $(\"#comment-text\").focus();\r\n                    }\r\n\t            });\r\n\t        }\r\n\t    });\r\n    }\r\n\r\n    function printModalOutputOption() {\r\n        var outputClass = \".output-\" + $(this).val();\r\n\r\n        $(\".output-option\").each(function () {\r\n            $(this).toggle($(this).is(outputClass));\r\n        });\r\n\r\n        printModalMessage();\r\n    }\r\n\r\n    function printModalMessage() {\r\n        var text = $(\"#txtPrintMessage\").val();\r\n        var target = $(\"#optPrintTo\").val();\r\n\r\n        var limit;\r\n\r\n        if (target === \"email\") {\r\n\t\t\tlimit = 500;\r\n\t\t\t$('#ShareEventForm #txtPrintMessage').attr('maxLength', limit);\r\n        } else if (target === \"sms\") {\r\n            limit = 60;\r\n\t\t\t$('#ShareEventForm #txtPrintMessage').attr('maxLength', limit);\r\n\t\t}\r\n        else {\r\n            $(\"#lblPrintMessageLimit\").empty();\r\n            return;\r\n        }\r\n\r\n        if (text.length === 0) {\r\n            $(\"#lblPrintMessageLimit\").text(\"Optional, \" + limit + \" characters allowed.\");\r\n        }\r\n        else if (text.length > limit) {\r\n            $(\"#lblPrintMessageLimit\").text(\"Your message is too long!\");\r\n        }\r\n        else {\r\n            $(\"#lblPrintMessageLimit\").text((limit - text.length) + \" characters left.\");\r\n        }\r\n    }\r\n\r\n    function printModalHide() {\r\n        $(\"#printTarget\").off(\"click\");\r\n        $(\"#printModal\").modal(\"hide\");\r\n    }\r\n\r\n    function setupPrintModal(url, defaultTitle, getModel) {\r\n        $(\"#printModal\").on(\"show.bs.modal\", function (e) {\r\n            $(\"#printSetup\").show();\r\n            $(\"#printStart\").show();\r\n\r\n            $(\"#printResult\").hide();\r\n            $(\"#printTarget\").hide();\r\n            $(\"#printError\").hide();\r\n            $(\"#txtPrintTitle\").val(defaultTitle);\r\n            $(\"#optPrintTo\").val(\"email\");\r\n            $(\"#optPrintAs\").val(\"link\");\r\n            $(\"#txtPrintEmail\").val('');\r\n            $(\"#txtPrintName\").val('');\r\n            $(\"#txtPrintMobile\").val('');\r\n            $(\"#txtPrintMessage\").val('');\r\n            \r\n            printModalOutputOption.call($(\"#optPrintTo\"));\r\n        });\r\n\r\n        $(\"#optPrintTo\").change(printModalOutputOption);\r\n\r\n        $(\"#txtPrintMessage\").on(\"change keyup\", printModalMessage);\r\n\r\n        $(\"#printStart\").click(function () {\r\n            $(\"#printError\").hide();\r\n\r\n            var model = getModel();\r\n\r\n            model.Title = $(\"#txtPrintTitle\").val();\r\n            model.OutputTo = $(\"#optPrintTo\").val();\r\n            model.OutputAs = $(\"#optPrintAs\").val();\r\n            model.Email = $(\"#txtPrintEmail\").val();\r\n            model.Name = $(\"#txtPrintName\").val();\r\n            model.Mobile = $(\"#txtPrintMobile\").val();\r\n            model.Message = $(\"#txtPrintMessage\").val();\r\n\r\n\r\n\t\t\tvar $form = $(\"#ShareEventForm\");\r\n\t\t\tvar action = $form.attr('action');\r\n\t\t\tif ($form.valid()) {\r\n\t\t\t\t$form.unbind('submit').bind('submit', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\t\turl: action,\r\n\t\t\t\t\t\tdata: JSON.stringify(model),\r\n\t\t\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t\t\tif (result.Success == true) {\r\n\t\t\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\t\t\ttitle: \"Success\", message: \"Your request was sent successfully.\", icon: \"glyphicon glyphicon-ok-circle\"\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\ttype: \"success\"\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\t\t\ttitle: \"Error\", message: \"An error has occurred. Please try again later. \" + result.Message, icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\t\ttype: \"danger\"\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror: function () {\r\n\t\t\t\t\t\t\t$.notify({\r\n\t\t\t\t\t\t\t\ttitle: \"Error\", message: \"An unexpected error has occurred. Please try again later.\", icon: \"glyphicon glyphicon-remove-circle\"\r\n\t\t\t\t\t\t\t}, {\r\n\t\t\t\t\t\t\t\ttype: \"danger\"\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tcomplete: function () {\r\n\t\t\t\t\t\t\t$('#printModal').modal('hide');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t});\r\n\t\t\t}\r\n        });\r\n    }\r\n\r\n    function setupBackgroundPager(current) {\r\n        var dots = [];\r\n        for (var i = 0; i < window.BackgroundImages.length; i++) {\r\n            dots.push({ \"Index\": i, \"Class\": i === current ? \"active\" : \"\", \"ImageID\": window.BackgroundImages[i].ImageID, \"Title\": window.BackgroundImages[i].Title });\r\n        }\r\n\r\n        $(\".bg-pager\").html($(\"#pagerTemplate\").render(dots));\r\n\r\n        $(\".bg-pager-link\").on('click', function (e) {\r\n            e.preventDefault();\r\n            var next = $(this).data('image-index') - 1;\r\n            if (window.BackgroundTimeout) clearTimeout(window.BackgroundTimeout);\r\n            showBackgroundImage(next);\r\n        });\r\n    }\r\n\r\n    function showBackgroundImage(current) {\r\n        var next = current + 1;\r\n\t\tif (next >= window.BackgroundImages.length) next = 0;\r\n\t\tif ($('.council-search').length > 0) {\r\n\t\t\t$('.council-search').css('background-image', 'url(' + window.BackgroundImages[next].ImageURL + ')');\r\n\t\t}\r\n\t\tif ($('#special-event-bg').length > 0) {\r\n\t\t\t$('#special-event-bg').css('background-image', 'url(' + window.BackgroundImages[next].ImageURL + ')');\r\n\t\t}\r\n\r\n        var template = $('#attributionTemplate').render(window.BackgroundImages[next]);\r\n        var $template = $(\"<div/>\").html(template);\r\n        $(\".nofollow\", $template).removeAttr(\"rel\");\r\n        template = $template.html();\r\n\r\n        $('.image-attribution').html(template);\r\n        $(\".bg-pager-link\").removeClass('active');\r\n        $(\".bg-pager-link[data-image-index='\" + next + \"']\").addClass('active');\r\n        if (window.BackgroundTimeout) clearTimeout(window.BackgroundTimeout);\r\n        window.BackgroundTimeout = setTimeout(showBackgroundImage, window.BackgroundImages[next].DisplayTime, next);\r\n    }\r\n\r\n\treturn {\r\n\t\tCurrentCouncil: function () {\r\n\t\t\treturn _currentCouncil;\r\n\t\t},\r\n\r\n\t\tShowThinking: function () { \r\n\t\t\tvar regionToShow = arguments[0];\r\n\t\t\t$(regionToShow).html('<div style=\"margin: auto; text-align: center;\"><img src=\"/_static/images/processing.gif\" /></div>');\r\n\t\t\t$(\".search-expand\").hide();\r\n\t\t},\r\n\r\n\t\tInitBackgroundImages: function (images, current) {\r\n\t\t    window.BackgroundImages = images || [];\r\n\r\n\t\t    if (window.BackgroundImages.length > 1) {\r\n\t\t        setupBackgroundPager(current);\r\n\t\t        window.BackgroundTimeout = setTimeout(showBackgroundImage, window.BackgroundImages[current].DisplayTime, current);\r\n\t\t    }\r\n\t\t},\r\n\r\n\t\tInitEventPage: function(council) {\r\n\t\t    drawMap(\"#eventMap\");\r\n\t\t    drawStreetView(window.MapView, \"#eventPano\");\r\n\t\t    setCurrentCouncil(council);\r\n\t\t    initEmail(function (d) {\r\n\t\t        return { EventID: d.data(\"event\"), EventInstanceID: d.data(\"instance\"), FromName: $(\"#txt-name\").val(), FromEmail: $(\"#txt-email\").val(), Phone: $(\"#txt-phone\").val(), Message: $(\"#txt-enquiry\").val() };\r\n            });\r\n\r\n            if ($(\"#custom-tags\").length) {\r\n                var selectize = null;\r\n\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\": { Label: \"Search for tags that are applied to services in the directory\" }\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: \"/event/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) { return { Text: d.TagName }; }));\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\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\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\r\n                    var $form = $(ev.target).closest(\"form\");\r\n                    var url = $form.attr(\"action\");\r\n                    var data = {\r\n                        eventId: $(\"#EventID\", $form).val(),\r\n                        tags: $(\"#custom-tags-modal\").val().split(\",\")\r\n                    };\r\n\r\n                    $(\"input, button\", $form).attr(\"disabled\", \"disabled\");\r\n                    $.ajax({\r\n                        url: url,\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\r\n                                $.notify({ title: \"Success\", message: \"Successfully updated tags\", icon: \"glyphicon glyphicon-info-sign\" });\r\n                            }\r\n                            else {\r\n                                $.notify(\r\n                                    { title: \"Error\", message: result.Messages[0].Message, icon: \"glyphicon glyphicon-remove-circle\" },\r\n                                    { type: \"danger\" });\r\n                            }\r\n                        },\r\n                        error: function () {\r\n                            $.notify(\r\n                                { title: \"Error\", message: \"Something went wrong. Please try again.\", icon: \"glyphicon glyphicon-remove-circle\" },\r\n                                { type: \"danger\" });\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\r\n            $(\".btn-cancel\").on(\"click touchend\", function (ev) {\r\n                var $form = $(ev.target).closest(\"form\");\r\n                var url = $form.attr(\"action\");\r\n                var data = {\r\n                    eventInstanceId: $(ev.target).data(\"event-instance-id\")\r\n                };\r\n\r\n                $(\"#no-show-modal\").modal(\"hide\");\r\n                $(\".btn-no-show\").attr(\"disabled\", \"disabled\");\r\n                $(\".btn-no-show\").hide();\r\n                $(\".no-show-busy\").show();\r\n\r\n                $.ajax({\r\n                    url: url,\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                            $.notify({ title: \"Success\", message: result.Messages[0].Message, icon: \"glyphicon glyphicon-info-sign\" });\r\n                            $(\".no-show-info\").show();\r\n                        }\r\n                        else {\r\n                            $.notify(\r\n                                { title: \"Error\", message: result.Messages[0].Message, icon: \"glyphicon glyphicon-remove-circle\" },\r\n                                { type: \"danger\" });\r\n                            $(\".btn-no-show\").show();\r\n                        }\r\n                    },\r\n                    error: function () {\r\n                        $.notify(\r\n                            { title: \"Error\", message: \"Something went wrong. Please try again.\", icon: \"glyphicon glyphicon-remove-circle\" },\r\n                            { type: \"danger\" });\r\n                        $(\".btn-no-show\").show();\r\n                    },\r\n                    complete: function () {\r\n                        $(\".btn-no-show\").removeAttr(\"disabled\");\r\n                        $(\".no-show-busy\").hide();\r\n                    }\r\n                });\r\n            });\r\n\r\n            $(\".hidden\").hide().removeClass(\"hidden\");\r\n\t\t},\r\n\r\n\t\tInitLoginPage: function () {\r\n\t\t\tvar alreadyLoggedIn = arguments[0] || false;\r\n\r\n\t\t\t// Behaviour to toggle the showing & hiding of the login panels\r\n\t\t\t$(\".login-wrapper\").find(\"[data-toggle-button]\").on(\"click touchend\", function (e) {\r\n\t\t\t\tvar buttonClicked = $(this);\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$(buttonClicked.data(\"toggle-parent\")).fadeOut(300, function () {\r\n\t\t\t\t\t$(buttonClicked.data(\"toggle-target\")).fadeIn();\r\n\t\t\t\t\t//$('html, body').animate({\r\n\t\t\t\t\t//    scrollTop: $(buttonClicked.data(\"toggle-target\")).offset().top - 50\r\n\t\t\t\t\t//}, 200);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t$(\".register-wrapper button\").on(\"click\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar link = $(this).data(\"link\");\r\n\t\t\t\twindow.location = link;\r\n\t\t\t});\r\n\r\n\t\t\tif (alreadyLoggedIn) {\r\n\t\t\t\t$('.login-wrapper').hide(300);\r\n\t\t\t\t$('#loggedin-wrapper').fadeIn();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t    InitVerifyEmailPage: function () {\r\n\t\t\tvar initial = arguments[0]|| \"token-wrapper\";\r\n\t\t\t$('.login-wrapper').hide();\r\n\t\t\t$(initial).show();\r\n\t\t\tvar tokenForm = $('#tokenForm');\r\n\t\t\ttokenForm.validate({\r\n\t\t\t    rules: {\r\n\t\t\t        Token: { required: true }\r\n                },\r\n\t\t\t    messages: {\r\n\t\t\t        Token: { required: \"Please enter a token to validate\" }\r\n\t\t\t\t}\r\n\t\t    });\r\n\t\t},\r\n\r\n\t\tInitRegisterPage: function () {\r\n\t\t\tvar alreadyLoggedIn = arguments[0] || false;\r\n\t\t\tvar registerForm = $('#registerForm');\r\n\r\n\t\t\tregisterForm.validate({\r\n\t\t\t\trules: {\r\n\t\t\t\t\tUsername: { required: true, mcdUsername: true, usernameAvailable: true },\r\n\t\t\t\t\tFirstName: { required: true },\r\n\t\t\t\t\tLastName: { required: true },\r\n\t\t\t\t\tEmail: { required: true, email: true, emailAvailable: true },\r\n\t\t\t\t\tMobile: { mobileAvailable: true, ausMobile: true },\r\n\t\t\t\t\tPassword: { required: true, minlength: 6, regex: /^\\S*$/ },\r\n\t\t\t\t\tConfirmPassword: { required: true, equalTo: '#Password' }\r\n\t\t\t\t},\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tUsername: { required: \"Please enter a user name\", mcdUsername: \"That is not a valid username\", usernameAvailable: \"That username already exists\" },\r\n\t\t\t\t\tFirstName: { required: \"We need your first name\" },\r\n\t\t\t\t\tLastName: { required: \"We need your last name\" },\r\n\t\t\t\t\tMobile: { mobileAvailable: \"That mobile number is already used\", ausMobile: \"This is not a valid Australian mobile number\" },\r\n\t\t\t\t\tEmail: { required: \"We need your email address\", email: \"This is not a valid email address\", emailAvailable: \"That email has already been used\" },\r\n\t\t\t\t\tPassword: { required: \"Please enter your password\", minlength: \"Your password must be at least six characters long\", regex: \"Your password cannot contain any spaces\" },\r\n\t\t\t\t\tConfirmPassword: { required: \"Please confirm your password\", equalTo: \"Your passwords must match\" }\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Behaviour to toggle the showing & hiding of the login panels\r\n\t\t\t$(\".login-wrapper\").find(\"[data-toggle-button]\").on(\"click touchend\", function (e) {\r\n\t\t\t\tvar buttonClicked = $(this);\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar validate = buttonClicked.data(\"toggle-validate\") || false;\r\n\t\t\t\tif (!validate || registerForm.valid()) {\r\n\t\t\t\t\t$(buttonClicked.data(\"toggle-parent\")).fadeOut(300, function () {\r\n\t\t\t\t\t\t$(buttonClicked.data(\"toggle-target\")).fadeIn();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$(\"#Email\").on(\"blur\", function () {\r\n\t\t\t\tif ($(\"#Username\").val() === '') $(\"#Username\").val($(this).val());\r\n\t\t\t});\r\n\r\n\t\t\tif (alreadyLoggedIn) {\r\n\t\t\t\t$('.login-wrapper').hide(300);\r\n\t\t\t\t$('#loggedin-wrapper').fadeIn();\r\n\t\t\t}\r\n\r\n\t\t\tinitPasswordStrength();\r\n\t\t},\r\n\r\n        InitHomePage: function (stateCode, assemblyVersion, statesArray) {\r\n            $(\"#SearchCriteria_WhatText\").focus();\r\n                        \r\n            if (stateCode && assemblyVersion && statesArray) {\r\n                Common.Leaflet.Init(stateCode, assemblyVersion, statesArray, 3.8);\r\n            }\r\n\t\t},\r\n\r\n\t\tInitAboutUsPage: function () {\r\n\r\n\t\t\t$.getJSON(\"/api/Statistics/LoadAll\",\r\n\t\t\t\tfunction (data) {\r\n\r\n\t\t\t\t\t$(\".litUsers\").text(data.Users.toLocaleString()); //.ToString(\"N0\");\r\n\t\t\t\t\t$(\".litOrganisations\").text(data.Organisations.toLocaleString()); //.ToString(\"N0\");\r\n\t\t\t\t\t$(\".litOutlets\").text(data.Outlets.toLocaleString()); //.ToString(\"N0\");\r\n\t\t\t\t\t$(\".litServices\").text(data.Services.toLocaleString()); //.ToString(\"N0\");\r\n\t\t\t\t\t$(\".litServiceRegions\").text(data.ServiceRegions.toLocaleString()); //.ToString(\"N0\");\r\n\r\n\t\t\t\t\t$(\".litOutletsPerOrg\").text(\"Avg. \" + (parseFloat(data.Outlets) / parseFloat(data.Organisations)).toFixed(1) + \" per Organisation\");\r\n\t\t\t\t\t$(\".litServicesPerOutlet\").text(\"Avg. \" + (parseFloat(data.Services) / parseFloat(data.Outlets)).toFixed(1) + \" per Location\");\r\n\t\t\t\t\t$(\".litRegionsPerService\").text(\"Avg. \" + (parseFloat(data.ServiceRegions) / parseFloat(data.Services)).toFixed(1) + \" per Service\");\r\n\r\n\t\t\t\t\twindow.orgData = new google.visualization.DataTable();\r\n\t\t\t\t\twindow.orgData.addColumn('string', 'Organisation Type');\r\n\t\t\t\t\twindow.orgData.addColumn('number', 'Count');\r\n\t\t\t\t\t$.each(data.OrganisationTypes, function (i, v) {\r\n\t\t\t\t\t\twindow.orgData.addRow([v.Name, v.Count]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdrawOrgChart(window.orgData);\r\n\r\n\t\t\t\t\twindow.orgMap = new google.visualization.DataTable();\r\n\t\t\t\t\twindow.orgMap.addColumn('number', 'Latitude');\r\n\t\t\t\t\twindow.orgMap.addColumn('number', 'Longitude');\r\n\t\t\t\t\twindow.orgMap.addColumn('number', 'Locations');\r\n\t\t\t\t\twindow.orgMap.addColumn('string', 'Region');\r\n\t\t\t\t\t$.each(data.ServiceCouncilMap, function (i, v) {\r\n\t\t\t\t\t\twindow.orgMap.addRow([v.Latitude, v.Longitude, v.Count, v.Name]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdrawOrgMap(window.orgMap);\r\n\r\n\t\t\t\t\twindow.serviceData = new google.visualization.DataTable();\r\n\t\t\t\t\twindow.serviceData.addColumn('string', 'Service Type');\r\n\t\t\t\t\twindow.serviceData.addColumn('number', 'Count');\r\n\t\t\t\t\t$.each(data.ServiceTypes, function (i, v) {\r\n\t\t\t\t\t\twindow.serviceData.addRow([v.Name, v.Count]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdrawServiceChart(window.serviceData);\r\n\r\n\t\t\t\t\twindow.resizeTimer = null;\r\n\r\n\t\t\t\t\t$(window).resize(function () {\r\n\t\t\t\t\t\tclearTimeout(window.resizeTimer);\r\n\t\t\t\t\t\twindow.resizeTimer = setTimeout(function () {\r\n\t\t\t\t\t\t\tdrawOrgChart(window.orgData);\r\n\t\t\t\t\t\t\tdrawOrgMap(window.orgMap);\r\n\t\t\t\t\t\t\tdrawServiceChart(window.serviceData);\r\n\t\t\t\t\t\t}, 500);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tInitRegionPage: function () {\r\n\t\t\tvar council = arguments[0];\r\n\t\t\tthis.InitCategoryLinks();\r\n\r\n\t\t\t//loadBackgroundImages();\r\n\r\n\t\t\tsetCurrentCouncil(council);\r\n\t\t\tloadRegionMembers();\r\n\t\t},\r\n\r\n\t\tInitStatePage: function () {\r\n\t\t    var state = arguments[0];\r\n\t\t    var assemblyVersion = arguments[1];\r\n\r\n\t\t    //loadBackgroundImages();\r\n\r\n\t\t    setCurrentCouncil(state);\r\n\r\n\t\t    window.StateUrl = state.StateUrl;\r\n\r\n\t\t    $(window).on(\"resize\", function () {\r\n\t\t        if ($(\"#leaflet-map:visible\").length && !$(\"#leaflet-map.leaflet-container\").length) {\r\n\t\t            loadLeafletMap(state.Code, assemblyVersion);\r\n\t\t        }\r\n\t\t    });\r\n\r\n\t\t    if (!$(\"#leaflet-map:visible\").length) {\r\n\t\t        return;\r\n\t\t    }\r\n\r\n\t\t    loadLeafletMap(state.Code, assemblyVersion);\r\n\t\t},\r\n\r\n\t\tInitRegionListingPage: function () {\r\n\t\t    var council = arguments[0];\r\n\t\t\tthis.InitCategoryLinks();\r\n\r\n\t\t\tsetCurrentCouncil(council);\r\n\t\t},\r\n\r\n\t\tInitFavouritesPage: function(favouritesUrl) {\r\n\t\t\tloadFavouriteCategories(favouritesUrl);\r\n\t\t},\r\n\r\n\t\tInitFavouritesListingPage: function (favouriteId, favouritesLink, type, favouritesUrl, favouriteName) {\r\n\t\t    if (typeof favouriteId !== \"undefined\") {\r\n\t\t        loadFavouritesList(favouriteId, type);\r\n\t\t    } else if (typeof favouritesLink !== \"undefined\") {\r\n\t\t        loadFavouritesFromLink(favouritesLink, type);\r\n\t\t    } else {\r\n\t\t        $(\"#favourites-processing\").hide();\r\n\t\t        $(\"#results\").hide();\r\n\t\t        $(\"#no-favourites\").show();\r\n\t\t        return;\r\n\t\t    }\r\n\r\n\t\t    $(\"#linksModal\").on(\"show.bs.modal\", function (e) {\r\n                var link = $(e.relatedTarget);\r\n                var favouriteLink = link.data(\"favourite-link\");\r\n                var favouriteName = link.data(\"favourite-name\");\r\n                var favouriteUrl = link.data(\"favourite-url\").replace(\"empty\", favouriteLink);\r\n                $(\"#txLinkEmail\").val(favouriteUrl);\r\n                var favouriteUrlHtml = \"<a href='\" + favouriteUrl + \"' target='_blank'>\" + favouriteName + \" - My Community Directory</a>\";\r\n                $(\"#txLinkHTML\").val(favouriteUrlHtml);\r\n            });\r\n\r\n\t\t    setupPrintModal(\"/api/Favourites/Print\", favouriteName, function () {\r\n\t\t        var model = {\r\n\t\t            FavouriteID: favouriteId,\r\n\t\t            FavouritesLink: favouritesLink\r\n\t\t        };\r\n\r\n\t\t        return model;\r\n\t\t    });\r\n\r\n            $(\".btn-remove-favourites-list\").on(\"click\", function (e) {\r\n                e.preventDefault();\r\n\r\n                if (confirm(\"Are you sure you want to remove this favourites list?\")) {\r\n                    removeFavouritesList($(this).data(\"favourite-list\"), favouritesUrl);\r\n                }\r\n            });\r\n\t\t},\r\n\r\n\t\tInitListingPage: function () {\r\n\t\t\tvar councilId = arguments[0];\r\n\t\t\tvar orgId = arguments[1];\r\n\t\t\tvar outletId = arguments[2];\r\n\t\t\tvar serviceId = arguments[3];\r\n\t\t\tvar listingId = arguments[4];\r\n\t\t\tvar shouldShowComments = arguments[5];\r\n\t\t\tvar orgCommentsUrl = arguments[6];\r\n\t\t    var favouriteModalUrl = arguments[7];\r\n\r\n\t\t\tdisplayExtraInformation();\r\n\r\n\t\t\t$.getJSON(window.AppSettings.ApiUrl + \"/api/v1/system/councils/\" + councilId,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tsetCurrentCouncil(data);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\t$.getJSON(\"/api/Outlets/Siblings/0/\" + orgId,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (data.length !== 0) {\r\n\t\t\t\t\t\t$(\".other-locations\").show();\r\n\t\t\t\t\t\t$(\".other-locations-content\").html(\"<ul>\" + $(\"#otherLocationsTemplate\").render(data) + \"</ul>\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar showMarker = false;\r\n\t\t\t\t\tvar showSuburb = false;\r\n\t\t\t\t\tvar i;\r\n\t\t\t\t\tfor (i = 0; i < data.length; i++) {\r\n\t\t\t\t\t    if (data[i].MapLocation.ShowMarker) {\r\n\t\t\t\t\t        showMarker = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    else if (data[i].MapLocation.Lat !== 0 || data[i].MapLocation.Lng !== 0) {\r\n\t\t\t\t\t        showSuburb = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (showMarker) {\r\n\t\t\t\t\t    drawMap(\"#item-list-map\");\r\n\t\t\t\t\t    drawStreetView(window.MapView, \"#item-list-pano\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (showSuburb) {\r\n\t\t\t\t\t    for (i = 0; i < data.length; i++) {\r\n\t\t\t\t\t        if (data[i].OutletID === outletId) {\r\n\t\t\t\t\t            loadSuburbMap(\"#item-list-map\", data[i].MapLocation.SuburbKml);\r\n\t\t\t\t\t            break;\r\n\t\t\t\t\t        }\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t    // handled in _MapDisplay.cshtml\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\t$.getJSON(\"/api/Outlets/OtherServices/\" + outletId + \"/\" + councilId + \"/\" + serviceId,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (data.length !== 0) {\r\n\t\t\t\t\t\t$(\"#otherServices\").show();\r\n\t\t\t\t\t\t$(\"#otherServices\").append(\"<ul>\" + $(\"#otherServicesTemplate\").render(data) + \"</ul>\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\t$.getJSON(\"/api/Outlets/OtherServiceRegions/\" + outletId + \"/\" + councilId + \"/\" + serviceId,\r\n\t\t\t\tfunction(data) {\r\n\t\t\t\t\tif (data.length !== 0) {\r\n\t\t\t\t\t\t$(\"#otherServiceRegions\").show();\r\n\t\t\t\t\t\t$(\"#otherServiceRegions\").append(\"<ul>\" + $(\"#otherServiceRegionsTemplate\").render(data) + \"</ul>\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tinitEmail(function (d) {\r\n\t\t\t    return { OutletID: d.data(\"outlet\"), ServiceID: d.data(\"service\"), CouncilRegionID: d.data(\"region\"), FromName: $(\"#txt-name\").val(), FromEmail: $(\"#txt-email\").val(), Phone: $(\"#txt-phone\").val(), Message: $(\"#txt-enquiry\").val() };\r\n\t\t\t});\r\n\r\n\t\t\tif (window.opera || window.sidebar) {\r\n\t\t\t\t$(\".btn-add-to-favourites\").each(function() {\r\n\t\t\t\t\t$(this).attr(\"href\", window.location.href);\r\n\t\t\t\t\t$(this).attr(\"title\", document.title);\r\n\t\t\t\t\t$(this).attr(\"rel\", \"sidebar\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t$(\".btn-add-to-favourites\").on(\"click\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tshowAddFavourite(e, parseInt($(this).data(\"profile\")), parseInt($(this).data(\"outlet\")), parseInt($(this).data(\"service\")), parseInt($(this).data(\"region\")), $(this).data(\"url\"), favouriteModalUrl);\r\n\t\t\t});\r\n\r\n\t\t\tsetupPrintModal(\"/Download/Generate\", document.title, function () {\r\n\t\t\t    var model = {\r\n\t\t\t        PageUrl: window.location.href,\r\n\t\t\t        PageTitle: document.title\r\n\t\t\t    };\r\n\r\n\t\t\t    return model;\r\n\t\t\t});\r\n\r\n\t\t\t$(\"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\r\n\t\t\tif (shouldShowComments) {\r\n\t\t\t    showComments(orgCommentsUrl, orgId, outletId, listingId);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tInitOutletPage: function () {\r\n\t\t\tvar orgId = parseInt(arguments[0]);\r\n\t\t\tvar outletId = parseInt(arguments[1]);\r\n\t\t\tvar shouldShowComments = arguments[2];\r\n\t\t\tvar orgCommentsUrl = arguments[3];\r\n\r\n\t\t\tdisplayExtraInformation();\r\n\r\n\t\t\t$.getJSON(\"/api/Outlets/Siblings/0/\" + orgId,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (data.length !== 0) {\r\n\t\t\t\t\t\t$(\".other-locations\").show();\r\n\t\t\t\t\t\t$(\".other-locations-content\").html(\"<ul>\" + $(\"#otherLocationsTemplate\").render(data) + \"</ul>\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar showMarker = false;\r\n\t\t\t\t\tvar showSuburb = false;\r\n\t\t\t\t\tvar i;\r\n\t\t\t\t\tfor (i = 0; i < data.length; i++) {\r\n\t\t\t\t\t    if (data[i].MapLocation.ShowMarker) {\r\n\t\t\t\t\t        showMarker = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    else if (data[i].MapLocation.Lat !== 0 || data[i].MapLocation.Lng !== 0) {\r\n\t\t\t\t\t        showSuburb = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (showMarker) {\r\n\t\t\t\t\t    drawMap(\"#item-list-map\");\r\n\t\t\t\t\t    drawStreetView(window.MapView, \"#item-list-pano\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (showSuburb) {\r\n\t\t\t\t\t    for (i = 0; i < data.length; i++) {\r\n\t\t\t\t\t        if (data[i].OutletID === outletId) {\r\n\t\t\t\t\t            loadSuburbMap(\"#item-list-map\", data[i].MapLocation.SuburbKml);\r\n\t\t\t\t\t            break;\r\n\t\t\t\t\t        }\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t    // handled in _MapDisplay.cshtml\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\t$.getJSON(\"/api/Outlets/OtherServices/\" + outletId + \"/0/0\",\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (data.length !== 0) {\r\n\t\t\t\t\t\t$(\"#otherServices\").show();\r\n\t\t\t\t\t\t$(\"#otherServices\").append(\"<ul>\" + $(\"#otherServicesTemplate\").render(data) + \"</ul>\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tinitEmail(function (d) {\r\n\t\t\t    return { OutletID: d.data(\"outlet\"), ServiceID: 0, CouncilRegionID: 0, FromName: $(\"#txt-name\").val(), FromEmail: $(\"#txt-email\").val(), Phone: $(\"#txt-phone\").val(), Message: $(\"#txt-enquiry\").val() };\r\n\t\t\t});\r\n\r\n\t\t\t$(\".btn-facebook\").on(\"click\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar w = 626;\r\n\t\t\t\tvar h = 436;\r\n\t\t\t\tvar winTop = parseInt(($(window).height() / 2) - (h / 2));\r\n\t\t\t\tvar winLeft = parseInt(($(window).width() / 2) - (w / 2));\r\n\t\t\t\twindow.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\t\t\t});\r\n\r\n\t\t\tsetupPrintModal(\"/Download/Generate\", document.title, function () {\r\n\t\t\t    var model = {\r\n\t\t\t        PageUrl: window.location.href,\r\n\t\t\t        PageTitle: document.title\r\n\t\t\t    };\r\n\r\n\t\t\t    return model;\r\n\t\t\t});\r\n\r\n\t\t\t$(\"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\r\n\t\t\t$(\"#linksModal\").on(\"show.bs.modal\", function (e) {\r\n\t\t\t\tvar link = $(e.relatedTarget);\r\n\t\t\t\tvar contentName = link.data(\"content-id\");\r\n\t\t\t\tvar serviceName = link.data(\"service-name\");\r\n\t\t\t\tvar content = $(contentName).html();\r\n\t\t\t\t$(\".service-name\").text(serviceName);\r\n\t\t\t\t$(\".region-options\").html(content);\r\n\t\t\t});\r\n\r\n\t\t\tif (shouldShowComments) {\r\n\t\t\t    showComments(orgCommentsUrl);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tInitMobileSearch: function() {\r\n\t\t    if ($(window).width() < 768) {\r\n\t\t        $(\"#sectionMobileSearch\").show();\r\n\t\t        $(\"#sectionDesktopSearch\").hide();\r\n\t\t    }\r\n\t\t    $(\"#btnShowSearchHeader\").on('click', function () {\r\n\t\t        $(\"#sectionDesktopSearch\").show();\r\n\t\t        $(\"#sectionMobileSearch\").hide();\r\n\t\t    });\r\n\t\t},\r\n\r\n\t\tInitOrganisationPage: function () {\r\n\t\t\tvar orgId = parseInt(arguments[0]);\r\n\r\n\t\t\t$.getJSON(\"/api/Outlets/Siblings/0/\" + orgId,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (data.length === 0) {\r\n\t\t\t\t\t\t$(\".other-locations\").hide();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar showMarker = false;\r\n\t\t\t\t\tvar showSuburb = false;\r\n\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\t\t\t    if (data[i].MapLocation.ShowMarker) {\r\n\t\t\t\t\t        showMarker = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t    else if (data[i].MapLocation.Lat !== 0 || data[i].MapLocation.Lng !== 0) {\r\n\t\t\t\t\t        showSuburb = true;\r\n\t\t\t\t\t    }\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (showMarker) {\r\n\t\t\t\t\t    drawMap(\"#item-list-map\");\r\n\t\t\t\t\t    loadOutletsToMap(\"#item-list-map\", data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (showSuburb) {\r\n\t\t\t\t\t    loadSuburbMap(\"#item-region-map\", data[0].MapLocation.SuburbKml);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t    // handled in _MapDisplay.cshtml\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t$(\".other-locations-content\").html(\"<ul>\" + $(\"#otherLocationsTemplate\").render(data) + \"</ul>\");\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t\t$(\"#emailModal\").on(\"show.bs.modal\", function (e) {\r\n\t\t\t\tvar link = $(e.relatedTarget);\r\n\t\t\t\tvar position = link.data(\"position\");\r\n\t\t\t\tvar name = link.data(\"name\");\r\n\t\t\t\t$(\".contact-name\").text(name);\r\n\t\t\t\t$(\".contact-position\").text(position);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitRegisterOrganisationPage: function () {\r\n\t\t\tvar form = $(\"form\");\r\n\r\n\t\t\taddAbnValidation();\r\n\r\n\t\t\tform.validate({\r\n\t\t\t\trules: {\r\n\t\t\t\t\tUseExistingOrganisation: { required: true },\r\n\r\n\t\t\t\t\tOrganisationType: { required: true },\r\n\r\n\t\t\t\t\tNickname: { required: true },\r\n\t\t\t\t\tSuburb: { required: true },\r\n\t\t\t\t\tPhone: {\r\n\t\t\t\t\t\tausPhone: true,\r\n\t\t\t\t\t\trequire_from_group: [1, \".required-contact\"]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tEmail: {\r\n\t\t\t\t\t\temail: true,\r\n\t\t\t\t\t\trequire_from_group: [1, \".required-contact\"]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tManagerPhone: { ausPhone: true },\r\n\t\t\t\t\tManagerEmail: { email: true },\r\n\t\t\t\t\tManagerMobile: { ausMobile: true },\r\n\t\t\t\t\tWebsite: { simpleUrl: true },\r\n\r\n\t\t\t\t\tOrganisationNoAbnTradingName: { required: true, minlength: 3 },\r\n\t\t\t\t\tOrganisationEnteredAbn: { required: true, abn: true },\r\n\r\n\t\t\t\t\tAlreadyListed: { required: true },\r\n\t\t\t\t\tSelectedOrganisationId: { required: \"input[type='radio'][name='AlreadyListed'][value='True']:checked\" },\r\n\r\n\t\t\t\t\tPrimaryService: { required: true },\r\n\r\n\t\t\t\t\tBriefDescription: { required: true, minlength: 20, maxlength: 200 },\r\n\r\n\t\t\t\t\tAgreeConditions: { required: true }\r\n\t\t\t\t},\r\n\t\t\t\tmessages: {\r\n\t\t\t\t\tUseExistingOrganisation: { required: \"You must specify if you are adding a location to your existing organisation.\" },\r\n\r\n\t\t\t\t\tOrganisationType: { required: \"You must specify the type of organisation.\" },\r\n\r\n\t\t\t\t\tNickname: { required: \"You must specify the location's name.\" },\r\n\t\t\t\t\tSuburb: { required: \"You must supply a partial address for the location. Begin by entering an address above.\" },\r\n\t\t\t\t\tPhone: { require_from_group: \"A telephone number or email address is required.\", ausPhone: \"Please enter a valid phone number\" },\r\n\t\t\t\t\tEmail: { require_from_group: \"A telephone number or email address is required.\", email: \"Please enter a valid email address\" },\r\n\t\t\t\t\tWebsite: { simpleUrl: \"Please enter a valid website\" },\r\n\r\n\t\t\t\t\tManagerPhone: { ausPhone: \"Please enter a valid phone number\" },\r\n\t\t\t\t\tManagerEmail: { email: \"Please enter a valid email address\" },\r\n\t\t\t\t\tManagerMobile: { ausMobile: \"Please enter a valid mobile phone number\" },\r\n\r\n\t\t\t\t\tOrganisationNoAbnTradingName: { required: \"You must specify the trading name for your organisation.\", minlength: \"You must enter a name with 3 or more characters.\" },\r\n\t\t\t\t\tOrganisationEnteredAbn: { required: \"You must specify the ABN for your organisation.\" },\r\n\r\n\t\t\t\t\tAlreadyListed: { required: \"You must indicate if this organisation already exists.\" },\r\n\t\t\t\t\tSelectedOrganisationId: { required: \"You must select an existing organisation.\" },\r\n\r\n\t\t\t\t\tPrimaryService: { required: \"You must specify the primary service offered at this location.\" },\r\n\r\n\t\t\t\t\tBriefDescription: { required: \"You must provide a brief description for this service.\", minlength: \"You must enter a description of 20 or more characters.\" },\r\n\r\n\t\t\t\t\tAgreeConditions: { required: \"You must agree to our terms and conditions.\" }\r\n\t\t\t\t},\r\n\t\t\t\terrorPlacement: function (error, element) {\r\n\t\t\t\t\tif (element.is(\":checkbox\") || element.is(\":radio\")) {\r\n\t\t\t\t\t\terror.appendTo(element.parents('.controls'));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\terror.insertAfter(element);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar orgTypeDropDown = $(\"#OrganisationType\");\r\n\r\n\t\t\tvar orgSelect = function () {\r\n\t\t\t\tvar orgType = orgTypeDropDown.val();\r\n\t\t\t\tvar orgDisplay = \".orgNone\";\r\n\r\n\t\t\t\tif (orgType !== \"\") {\r\n\t\t\t\t\torgDisplay = \".org\" + orgType;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(\".orgType\").hide();\r\n\t\t\t\t$(orgDisplay).show();\r\n\t\t\t};\r\n\r\n\t\t\torgTypeDropDown.selectize({ onChange: orgSelect });\r\n\t\t\torgSelect();\r\n\r\n\t\t\t$(\".org-registerednames\").data(\"shown\", false);\r\n\r\n\t\t\tvar showHideOrgDetails = function () {\r\n\t\t\t    var existingOrg = $(\"#ExistingOrganisationType\").val();\r\n\t\t\t\tvar isOrg = $(\"input[type='radio'][name='UseExistingOrganisation']:checked\").val();\r\n\t\t\t\tvar noAbn = $(\"#OrganisationNoAbn\").is(':checked');\r\n\r\n\t\t\t\t$(\".org-details\").toggle((existingOrg !== \"FoundById\" && isOrg === \"False\") || $(\".org-existing\").length === 0);\r\n\t\t\t\t$(\".org-registerednames\").toggle(!noAbn && $(\".org-registerednames\").data(\"shown\"));\r\n\t\t\t\t$(\".org-unregisteredname\").toggle(noAbn);\r\n\t\t\t\t$(\".org-entered-abn\").prop(\"readonly\", noAbn).toggleClass(\"disabled\", noAbn);\r\n\t\t\t};\r\n\r\n\t\t\tshowHideOrgDetails();\r\n\t\t\t$(\"input[type='radio'][name='UseExistingOrganisation']\").change(showHideOrgDetails);\r\n\r\n\t\t\tvar showHideOrgType = function () {\r\n\t\t\t    var isListed = $(\"input[type='radio'][name='AlreadyListed']:checked\").val();\r\n\t\t\t    var noabn = $(\"#OrganisationNoAbn\").is(\":checked\");\r\n\t\t\t    var orgListVisible = $('.org-existing-selection').is(\":visible\");\r\n\r\n\t\t\t    $(\".org-type\").toggle(noabn || !orgListVisible || isListed !== \"True\");\r\n\t\t\t};\r\n\r\n\t\t\t$(\"#OrganisationNoAbn\").change(function () {\r\n\t\t\t\tshowHideOrgDetails();\r\n\r\n\t\t\t\tif ($(\"#OrganisationEnteredAbn\").prop(\"readonly\")) {\r\n\t\t\t\t\t$(\"#OrganisationEnteredAbn-error\").remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tshowHideOrgType();\r\n\t\t\t});\r\n\r\n\t\t\tvar alreadyListed = function () {\r\n\t\t\t\tvar isListed = $(\"input[type='radio'][name='AlreadyListed']:checked\").val();\r\n\r\n\t\t\t\t$(\".org-existing-selection\").toggle(isListed === \"True\");\r\n\r\n\t\t\t\tshowHideOrgType();\r\n\t\t\t};\r\n\r\n\t\t\talreadyListed();\r\n\t\t\t$(\"input[type='radio'][name='AlreadyListed']\").change(alreadyListed);\r\n\r\n\t\t\t$(\"#OrganisationValidatedTradingName\").change(function () {\r\n\t\t\t    var tradingName = $(\"#OrganisationValidatedTradingName\").val();\r\n\t\t\t    if (tradingName) {\r\n\t\t\t        $('.org-preferredname').val(tradingName);\r\n\t\t\t    }\r\n\t\t\t});\r\n\t\t\t\r\n\r\n\t\t\t//$(\"div[id^='sectionnext-']\").click(function () {\r\n\t\t\t//    var id = $(this).prop('id').substr('sectionnext-'.length);\r\n\r\n\t\t\t//    if (form.valid()) {\r\n\t\t\t//        $(\"#section-\" + id).hide();\r\n\t\t\t//        id++;\r\n\t\t\t//        $(\"#section-\" + id).show();\r\n\t\t\t//        $(\"#section-\" + id).trigger(\"sectionShow\");\r\n\t\t\t//    }\r\n\t\t\t//});\r\n\r\n\t\t\t//$(\"div[id^='sectionback-']\").click(function () {\r\n\t\t\t//    var id = $(this).prop('id').substr('sectionback-'.length);\r\n\r\n\t\t\t//    $(\"#section-\" + id).hide();\r\n\t\t\t//    id--;\r\n\t\t\t//    $(\"#section-\" + id).show();\r\n\t\t\t//    $(\"#section-\" + id).trigger(\"sectionShow\");\r\n\t\t\t//});\r\n\r\n\t\t\t//var firstMap = true;\r\n\r\n\t\t\t//$(\"#section-2\").on(\"sectionShow\", function () {\r\n\t\t\t//    if (firstMap) {\r\n\t\t\t//        firstMap = false;\r\n\r\n\t\t\t//        drawMap(\"#map-location\");\r\n\t\t\t//    }\r\n\t\t\t//    else {\r\n\t\t\t//        google.maps.event.trigger(window.Map, 'resize');\r\n\t\t\t//    }\r\n\t\t\t//});\r\n\r\n\t\t\tvar geolocationCallback = function () {\r\n\t\t\t    var lat = $(\".map-lat\").val();\r\n\t\t\t    var lng = $(\".map-lng\").val();\r\n\r\n\t\t\t    $(\"#UnsupportedAddress\").hide();\r\n\r\n\t\t\t    var siteParam = \"\";\r\n\t\t\t    if (window.AppSettings.AffiliateSiteID) {\r\n\t\t\t        siteParam = \"?site=\" + window.AppSettings.AffiliateSiteID;\r\n\t\t\t    }\r\n\r\n\t\t\t    $.ajax({\r\n\t\t\t        type: \"GET\",\r\n\t\t\t        url: window.AppSettings.ApiUrl + \"/api/v1/system/councils/\" + lat + \"/\" + lng + siteParam,\r\n\t\t\t        cache: false,\r\n\t\t\t        success: function (data) {\r\n\t\t\t            if (!data || !data.Loaded) {\r\n\t\t\t                $(\"#UnsupportedAddress\").show();\r\n\t\t\t            }\r\n\t\t\t        }\r\n\t\t\t    });\r\n\t\t    };\r\n\r\n\t\t\tdrawMap(\"#map-location\", geolocationCallback);\r\n\r\n\t\t\tsetMapAddressReadonly(true);\r\n\r\n\t\t\t$('.map-edit-address').click(function (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar readonly = !$('.map-edit-address').hasClass(\"btn-success\");\r\n\r\n\t\t\t\tsetMapAddressReadonly(readonly);\r\n\r\n\t\t\t\tif (readonly) {\r\n\t\t\t\t\tgoogle.maps.event.trigger(autocomplete, 'place_changed');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\t$(\"#useOrgNameForOutlet\").click(function (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar name = \"\";\r\n\r\n\t\t\t\tvar existingOrg = $(\"#ExistingOrganisationType\").val();\r\n\t\t\t\tvar isOrg = $(\"input[type='radio'][name='UseExistingOrganisation']:checked\").val();\r\n\t\t\t\tif (existingOrg === \"FoundById\" || isOrg === \"True\") {\r\n\t\t\t\t\tname = $(\"#ExistingOrganisationName\").val();\r\n\t\t\t\t}\r\n\t\t\t\telse if ($('#OrganisationNoAbn').is(\":checked\")) {\r\n\t\t\t\t\tname = $(\"#OrganisationNoAbnTradingName\").val();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tname = $.trim($(\"#OrganisationValidatedTradingNameSelect\").val());\r\n\r\n\t\t\t\t\tif (name === '') {\r\n\t\t\t\t\t\tvar tradingName = $.trim($(\"#OrganisationValidatedTradingName\").val());\r\n\r\n\t\t\t\t\t\tif ((tradingName || \"\").length > 0 && tradingName !== \"-- none listed --\") {\r\n\t\t\t\t\t\t\tname = tradingName;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tname = $(\"#OrganisationValidatedLegalName\").val();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar suburb = $.trim($(\"#Suburb\").val());\r\n\r\n\t\t\t\tif ((suburb || \"\").length > 0) {\r\n\t\t\t\t\tname = name + \" - \" + suburb;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$('#Nickname').val(name);\r\n\t\t\t});\r\n\r\n\t\t\tvar referralRequired = function () {\r\n\t\t\t\tvar refRequired = $(\"input[type='radio'][name='ReferralRequired']:checked\").val();\r\n\r\n\t\t\t\t$(\"#pnlReferralDetails\").toggle(refRequired === \"True\");\r\n\t\t\t};\r\n\r\n\t\t\tvar populateAbnCharity = function (data) {\r\n\t\t\t    var hadData = false;\r\n\t\t\t    var fld;\r\n\r\n\t\t\t    if ($.isNumeric(data.OrganisationTypeGuess)) {\r\n\t\t\t        hadData = true;\r\n\t\t\t        fld = $('#OrganisationType').selectize();\r\n\t\t\t        if (fld.length > 0) {\r\n\t\t\t            fld[0].selectize.setValue(data.OrganisationTypeGuess);\r\n\t\t\t            hadGuess = true;\r\n\t\t\t        }\r\n\t\t\t    }\r\n\r\n\t\t\t    if (data.CharityAddress) {\r\n\t\t\t        hadData = true;\r\n\r\n\t\t\t        $(\"#AddressSearch\").val(data.CharityAddress);\r\n\r\n\t\t\t        window.Geocoder.geocode({ 'address': data.CharityAddress }, function (results, status) {\r\n\t\t\t            if (status === google.maps.GeocoderStatus.OK) {\r\n\t\t\t                clearMap();\r\n\r\n\t\t\t                var place = results[0];\r\n\t\t\t                if (!place || !place.geometry) return;\r\n\r\n\t\t\t                if (place.geometry.viewport) {\r\n\t\t\t                    window.MapView.fitBounds(place.geometry.viewport);\r\n\t\t\t                } else {\r\n\t\t\t                    window.MapView.setCenter(place.geometry.location);\r\n\t\t\t                }\r\n\r\n\t\t\t                showGeocodeResults(place, google.maps.GeocoderStatus.OK, '', geolocationCallback);\t\t\t               \r\n\t\t\t            }\r\n\t\t\t            else {\r\n\t\t\t                clearMap();\r\n\t\t\t            }\r\n\r\n\t\t\t            if ($.trim($(\".map-address1\").val()).length === 0) {\r\n\t\t\t                // The address couldn't be fully validated so clear it out.\r\n\t\t\t                // Otherwise the person has to clear the field to enter in a valid address.\r\n\t\t\t                $(\"#AddressSearch\").val(\"\");\r\n\t\t\t            }\r\n\t\t\t        });\r\n\t\t\t    }\r\n\r\n\t\t\t    if (data.CharityWebsite) {\r\n\t\t\t        hadData = true;\r\n\t\t\t        $(\"#Website\").val(data.CharityWebsite);\r\n\t\t\t    }\r\n\r\n\t\t\t    if (data.CharityEmail) {\r\n\t\t\t        hadData = true;\r\n\t\t\t        $(\"#Email\").val(data.CharityEmail);\r\n\t\t\t        $(\"#ManagerEmail\").val(data.CharityEmail);\r\n\t\t\t    }\r\n\r\n\t\t\t    if (data.PrimaryServiceGuess) {\r\n\t\t\t        hadData = true;\r\n\t\t\t        fld = $('#PrimaryService').selectize();\r\n\t\t\t        if (fld.length > 0) {\r\n\t\t\t            fld[0].selectize.setValue(data.PrimaryServiceGuess);\r\n\t\t\t            hadGuess = true;\r\n\t\t\t        }\r\n\t\t\t    }\r\n\r\n\t\t\t    if (data.CharityDescription) {\r\n\t\t\t        $(\"#CharityDescription\").html(\"<div class=\\\"form-group\\\"><label class=\\\"control-label\\\">About This Charity</label><div class=\\\"controls\\\">\" + data.CharityDescription + \"</div></div>\");\r\n\t\t\t    }\r\n\t\t\t    else {\r\n\t\t\t        $(\"#CharityDescription\").empty();\r\n\t\t\t    }\r\n\r\n\t\t\t    if (hadData) {\r\n\t\t\t        $.notify({ title: \"Pre-filling\", message: \"We managed to discover some things about your organisation.<br/>Please check and confirm these details are correct.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t\t    }\r\n\t\t\t};\r\n\r\n\t\t\t$(\"#OrganisationEnteredAbn\").change(function () {\r\n\t\t\t    $(\"#CharityDescription\").empty();\r\n\r\n\t\t\t    getAbnDetails($(\"#OrganisationEnteredAbn\").val(), populateAbnCharity);\r\n\t\t\t});\r\n\r\n\t\t\t$(\"#AddressFormat\").selectize();\r\n\r\n\t\t\t$(\"#ManagerTitle\").selectize();\t\t\t\r\n\t\t\t\r\n\t\t\t$(\"#PrimaryService\").selectize();\r\n\r\n\t\t\treferralRequired();\r\n\t\t\t$(\"input[type='radio'][name='ReferralRequired']\").change(referralRequired);\r\n\r\n\t\t\tshowRemaining(\"#BriefDescription\", 200, \"#spanRemaining\");\r\n\r\n\t\t\tinitHtmlEditor(\"FullDescription\");\r\n\r\n\t\t\tvar agreeConditions = function () {\r\n\t\t\t\t$(\".terms-and-conditions-actions\").toggle($(\"#AgreeConditions\").is(\":checked\"));\r\n\t\t\t};\r\n\r\n\t\t\tagreeConditions();\r\n\t\t\t$(\"#AgreeConditions\").change(agreeConditions);\r\n\r\n\t\t\tvar suppliedABN = $(\"#ExistingOrganisationAbn\").val();\r\n\t\t\tvar existingOrg = $(\"#ExistingOrganisationType\").val();\r\n\t\t\tvar enteredABN = $(\"#OrganisationEnteredAbn\").val();\r\n\t\t\tif (suppliedABN && existingOrg === \"None\" && !(enteredABN)) {\r\n\t\t\t    $(\"#OrganisationEnteredAbn\").val(suppliedABN);\r\n\t\t\t    getAbnDetails(suppliedABN, populateAbnCharity);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tInitCategoryLinks: function () {\r\n\t\t\tvar ExpandButton = $(\".btn-expand-collapse\");\r\n\t\t\t// Extend bootstrap's collapse\r\n\t\t\t$('body').on('click.collapse-next.data-api', '[data-toggle=collapse-next]', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar $target = $(this).parent().next();\r\n\t\t\t\tif ($target.data('bs.collapse')) {\r\n\t\t\t\t\t// Collpase has initialised\r\n\t\t\t\t\t$target.collapse('toggle');\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Collapse needs initialising\r\n\t\t\t\t\t$target.collapse();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t// Whenever a link expands, the 'Expand all' should now show 'collapse all'\r\n\t\t\t$(\".category-link .link-list\").on(\"show.bs.collapse\", function () {\r\n\t\t\t\tif (ExpandButton.length) {\r\n\t\t\t\t\tif (!ExpandButton.hasClass(\"btn-collapse-all\")) {\r\n\t\t\t\t\t\tExpandButton.addClass(\"btn-collapse-all\");\r\n\t\t\t\t\t\tExpandButton.text(\"Close all categories\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t$(this).prev().find(\".category-expand\").addClass(\"category-expanded\");\r\n\t\t\t});\r\n\t\t\t// Whenever a link set finishes closing, check whether all other groups are closed as well\r\n\t\t\t$(\".category-link .link-list\").on(\"hidden.bs.collapse\", function () {\r\n\t\t\t\tif (ExpandButton.length) {\r\n\t\t\t\t\tif ($(\".link-list:visible\").length === 0) {\r\n\t\t\t\t\t\t// No more are visible, so update expand all button\r\n\t\t\t\t\t\tExpandButton.removeClass(\"btn-collapse-all\");\r\n\t\t\t\t\t\tExpandButton.text(\"Expand all categories\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t$(this).prev().find(\".category-expand\").removeClass(\"category-expanded\");\r\n\t\t\t});\r\n\t\t\tif (ExpandButton.length) {\r\n\t\t\t\tExpandButton.on(\"click touchend\", function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tif ($(this).hasClass(\"btn-collapse-all\")) {\r\n\t\t\t\t\t\t// Collapse all relevant items\r\n\t\t\t\t\t\t$(\".link-list:visible\").each(function () {\r\n\t\t\t\t\t\t\t$(this).prev().find(\".category-expand\").trigger(\"click\");\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Expand everything\r\n\t\t\t\t\t\t$(\".category-expand\").each(function () {\r\n\t\t\t\t\t\t\t$(this).trigger(\"click\");\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t$(\".btn-load-more\").on(\"click touchend\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar itemsToShow = $(this).data(\"items-to-show\");\r\n\t\t\t\tvar itemSelector = $(this).data(\"item-selector\");\r\n\t\t\t\tvar hiddenClass = $(this).data(\"hidden-class\"); // The class used on the items to hide them from display\r\n\t\t\t\tvar counterToUpdate = $($(this).data(\"counter-selector\"));// May or may not exist\r\n\r\n\t\t\t\t// Show the next x hidden items based on the attribute\r\n\t\t\t\t//console.log($(\".category-link:not(:visible)\").length);\r\n\t\t\t\t$(itemSelector + \".\" + hiddenClass + \":lt(\" + itemsToShow + \")\").removeClass(hiddenClass);\r\n\r\n\t\t\t\t// Update the counters\r\n\t\t\t\tif (counterToUpdate.length)\r\n\t\t\t\t\tcounterToUpdate.text($(itemSelector + \":not(.\" + hiddenClass + \")\").length);\r\n\t\t\t\t// Hide the 'Load More' if it is no longer needed\r\n\t\t\t\tif ($(itemSelector + \".\" + hiddenClass).length === 0)\r\n\t\t\t\t\t$(this).hide();\r\n\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitHelpLinks: function () {\r\n\t\t\t// Whenever a link expands, the 'Expand all' should now show 'collapse all'\r\n\t\t\t$(\".help-topic .help-content\").on(\"show.bs.collapse\", function () {\r\n\t\t\t\t$(this).parent().find(\".help-title\").addClass(\"help-title-expanded\");\r\n\t\t\t});\r\n\t\t\t// Whenever a link set finishes closing, check whether all other groups are closed as well\r\n\t\t\t$(\".help-topic .help-content\").on(\"hidden.bs.collapse\", function () {\r\n\t\t\t\t$(this).parent().find(\".help-title\").removeClass(\"help-title-expanded\");\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitSearchToggleButtons: function () {\r\n\t\t\tvar buttonWrapper = $(\"#view-toggles\");\r\n\t\t\tvar mapButton = buttonWrapper.find(\".btn-map\");\r\n\t\t\tvar listButton = buttonWrapper.find(\".btn-list\");\r\n\t\t\tvar sectionDiv = $(\".section-search-listing\");\r\n\r\n\t\t\tmapButton.on(\"click touchend\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tlistButton.removeClass(\"active\");\r\n\t\t\t\t$(this).addClass(\"active\");\r\n\t\t\t\tsectionDiv.addClass(\"search-map-view\").removeClass(\"search-list-view\");\r\n\t\t\t\tgoogle.maps.event.trigger(window.MapView, 'resize');\r\n\t\t\t\tif (window.Markers.length > 0) {\r\n\t\t\t\t\tfitMapBounds();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (typeof window.CouncilLayer !== 'undefined') {\r\n\t\t\t\t\t\twindow.CouncilLayer.setMap(window.MapView);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t$(\".search-support\").hide();\r\n\t\t\t});\r\n\r\n\t\t\tlistButton.on(\"click touchend\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tmapButton.removeClass(\"active\");\r\n\t\t\t\t$(this).addClass(\"active\");\r\n\t\t\t\tsectionDiv.addClass(\"search-list-view\").removeClass(\"search-map-view\");\r\n\t\t\t\t$(\".search-support\").show();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitAmcToggleButtons: function () {\r\n\t\t    var buttonWrapper = $(\"#amc-toggles\");\r\n\t\t    var mapButton = buttonWrapper.find(\".btn-map\");\r\n\t\t    var listButton = buttonWrapper.find(\".btn-list\");\r\n\t\t    var sectionDiv = $(\".section-search-listing\");\r\n\r\n\t\t    mapButton.on(\"click touchend\", function (e) {\r\n\t\t        e.preventDefault();\r\n\t\t        listButton.removeClass(\"active\");\r\n\t\t        $(this).addClass(\"active\");\r\n\t\t        sectionDiv.addClass(\"search-map-view\").removeClass(\"search-list-view\");\r\n\t\t        google.maps.event.trigger(window.MapView, 'resize');\r\n\t\t        $(\".search-support\").hide();\r\n\t\t    });\r\n\r\n\t\t    listButton.on(\"click touchend\", function (e) {\r\n\t\t        e.preventDefault();\r\n\t\t        mapButton.removeClass(\"active\");\r\n\t\t        $(this).addClass(\"active\");\r\n\t\t        sectionDiv.addClass(\"search-list-view\").removeClass(\"search-map-view\");\r\n\t\t        $(\".search-support\").show();\r\n\t\t    });\r\n\t\t},\r\n\r\n\t\tLoadPartners: function () {\r\n\r\n\t\t},\r\n\r\n\t\tLoadRemoteResults: function () {\r\n\t\t\tvar resultsTargetName = \".search-support .results\";\r\n\t\t\tvar resultsTemplateName = \"#remoteTemplate\";\r\n\t\t\tvar councilId = parseInt(arguments[0]);\r\n\t\t\tvar categoryId = parseInt(arguments[1]);\r\n\t\t\tvar serviceId = parseInt(arguments[2]);\r\n\t\t\tvar searchTerm = arguments[3];\r\n\t\t\tvar page = parseInt(arguments[4]);\r\n\r\n\t\t\tif (page === 1) {\r\n\t\t\t\tPages.ShowThinking(resultsTargetName);\r\n\t\t\t}\r\n\r\n\t\t\tvar s = (searchTerm || \"-\").replace(\"/\", \" \");\r\n\r\n\t\t\t$.getJSON(\"/api/Search/Remote/\" + councilId + \"/\" + categoryId + \"/\" + serviceId + \"/\" + encodeURIComponent(s) + \"/\" + page,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t\tif (page === 1) {\r\n\t\t\t\t\t\t$(resultsTargetName).html($(resultsTemplateName).render(data.Results));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t$(resultsTargetName).append($(resultsTemplateName).render(data.Results));\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (data.Results.length > 0) {\r\n\t\t\t\t\t\t$(resultsTargetName).append('<a href=\"#\" class=\"btn-load-more\" data-next-page=\"' + (page + 1) + '\">Load more</a>');\r\n\r\n\t\t\t\t\t\t$(\".btn-load-more\").on(\"click\", function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t$(this).hide();\r\n\t\t\t\t\t\t\tPages.LoadRemoteResults(resultsTargetName, resultsTemplateName, councilId, categoryId, serviceId, searchTerm, $(this).data(\"next-page\"));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t$(\".servicing-this-region\").hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tInitAdvancedSearch: function () {\r\n\r\n\t\t    $(\"#btnClearFields\").on('click touchend', function (e) {\r\n\t\t        e.preventDefault();\r\n\t\t        $(\"input\").val('');\r\n\t\t        $(\"select\").val('');\r\n\t\t        $(\".answer-btn:first-child\").click();\r\n\t\t        $(\"#tags\").selectize()[0].selectize.clear();\r\n\t\t        $(\"#accreditations\").selectize()[0].selectize.clear();\r\n\t\t        $(\"#advancedCategory\").selectize()[0].selectize.clear();\r\n\t\t        $(\"#radius\").val('50');\r\n\t\t    });\r\n\r\n\t\t    $(\"#btnSearchAdvanced\").on('click touchend', function (e) {\r\n\t\t        e.preventDefault();\r\n\t\t        var search = saveAdvancedSearch();\r\n\t\t        window.location = '/Search/Directory?' + jsonToQueryString(search);\r\n\t\t    });\r\n\r\n\t\t    $(\"#btnNearMe\").on('click', function (e) {\r\n\t\t        navigator.geolocation.getCurrentPosition(showPosition, function (posError) {\r\n\t\t            $.notify({ title: \"Error\", message: \"We were unable to get your location from your browser for the following reason: <em>\" + posError.message + \"</em>\", icon: \"glyphicon glyphicon-info-sign\" });\r\n\t\t        });\r\n\t\t        function showPosition(position) {\r\n\t\t            var siteParam = \"\";\r\n\t\t            if (window.AppSettings.AffiliateSiteID) {\r\n\t\t                siteParam = \"?site=\" + window.AppSettings.AffiliateSiteID;\r\n\t\t            }\r\n\r\n\t\t            $.getJSON(window.AppSettings.ApiUrl + \"/api/v1/system/councils/\" + position.coords.latitude + \"/\" + position.coords.longitude + siteParam,\r\n                        function (councilData) {\r\n                            if (councilData.Loaded) {\r\n                                $.getJSON(window.AppSettings.ApiUrl + \"/api/v1/system/localities/\" + position.coords.latitude + \"/\" + position.coords.longitude + siteParam,\r\n                                    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({ title: \"Error\", message: \"We were unable to find your location in one of our member councils.\", icon: \"glyphicon glyphicon-info-sign\" });\r\n                            }\r\n                        }\r\n                    );\r\n\t\t        }\r\n\t\t    });\r\n\t\t    \r\n\t\t    $(\"#abn\").mask('99 999 999 999');\r\n\r\n\t\t    $(\".answer-btn\").on('click', selectOption);\r\n\t\t    $(\".answer-set-btn\").on('click', selectSetOption);\r\n\t\t    $(\".btn-where\").on(\"click\", selectLocation);\r\n\r\n\t\t    restoreAdvancedSearch(getSearchValues());\r\n\r\n\t\t    $('#tags').selectize({\r\n\t\t        delimiter: ',',\r\n\t\t        valueField: 'ID',\r\n\t\t        labelField: 'TagName',\r\n\t\t        sortField: 'TagName',\r\n\t\t        searchField: ['Keywords', 'TagName'],\r\n\t\t        selectOnTab: true,\r\n\t\t        closeAfterSelect: true,\r\n\t\t        hideSelected: true,\r\n\t\t        create: false,\r\n\t\t        preload: true,\r\n\t\t        placeholder: \"Tags\",\r\n\t\t        onChange: function () {\r\n\t\t            if (this.items.length > 0) {\r\n\t\t                $(\"#hintTags\").show();\r\n\t\t            }\r\n\t\t            else {\r\n\t\t                $(\"#hintTags\").hide();\r\n\t\t            }\r\n\t\t        },\r\n\t\t        onInitialize: function () {\r\n\t\t            var previousSelections = $(this.$input).data('selectize-value') || \"\";\r\n\t\t            if (previousSelections === \"\") return;\r\n\t\t            var self = this;\r\n\r\n\t\t            $.ajax({\r\n\t\t                url: \"/api/tags/specified/\" + previousSelections,\r\n\t\t                type: 'GET',\r\n\t\t                dataType: 'json',\r\n\t\t                success: function (data) {\r\n\t\t                    var items = data.Results;\r\n\t\t                    self.clear();\r\n\t\t                    self.clearOptions();\r\n\t\t                    self.addOption(items);\r\n\t\t                    items.forEach(function (option) {\r\n\t\t                        self.addItem(option[self.settings.valueField]);\r\n\t\t                    });\r\n\t\t                }\r\n\t\t            });\r\n\t\t        },\r\n\t\t        load: function (query, callback) {\r\n\t\t            var orderByLength = \"true\";\r\n\t\t            // check if query is empty\r\n\t\t            if (!query.length) {\r\n\t\t                query = \"_\"; //return callback();\r\n\t\t                orderByLength = \"false\";\r\n\t\t            }\r\n\t\t            $.ajax({\r\n\t\t                url: \"/api/tags/page/1/\" + query + \"/true/\" + orderByLength,\r\n\t\t                type: 'GET',\r\n\t\t                dataType: 'json',\r\n\t\t                data: { s: query, per: 10 },\r\n\t\t                error: function () {\r\n\t\t                    callback(data);\r\n\t\t                },\r\n\t\t                success: function (data) {\r\n\t\t                    callback(data.Results);\r\n\t\t                }\r\n\t\t            });\r\n\t\t        }\r\n\t\t    });\r\n\r\n\t\t    $('#accreditations').selectize({\r\n\t\t        delimiter: ',',\r\n\t\t        valueField: 'AccreditationID',\r\n\t\t        labelField: 'Title',\r\n\t\t        searchField: 'Title',\r\n\t\t        sortField: 'Title',\r\n\t\t        selectOnTab: true,\r\n\t\t        closeAfterSelect: true,\r\n\t\t        hideSelected: true,\r\n\t\t        create: false,\r\n\t\t        preload: true,\r\n\t\t        placeholder: \"Self Assessments\",\r\n\t\t        onChange: function () {\r\n\t\t            if (this.items.length > 0) {\r\n\t\t                $(\"#hintSelfAssessments\").show();\r\n\t\t            }\r\n\t\t            else {\r\n\t\t                $(\"#hintSelfAssessments\").hide();\r\n\t\t            }\r\n\t\t        },\r\n\t\t        onInitialize: function () {\r\n\t\t            var previousSelections = $(this.$input).data('selectize-value') || \"\";\r\n\t\t            if (previousSelections === \"\") return;\r\n\t\t            var self = this;\r\n\r\n\t\t            $.ajax({\r\n\t\t                url: \"/api/accreditation/specified/\" + previousSelections,\r\n\t\t                type: 'GET',\r\n\t\t                dataType: 'json',\r\n\t\t                success: function (data) {\r\n\t\t                    var items = data.Results;\r\n\t\t                    self.clear();\r\n\t\t                    self.clearOptions();\r\n\t\t                    self.addOption(items);\r\n\t\t                    items.forEach(function (option) {\r\n\t\t                        self.addItem(option[self.settings.valueField]);\r\n\t\t                    });\r\n\t\t                }\r\n\t\t            });\r\n\t\t        },\r\n\t\t        load: function (query, callback) {\r\n\t\t            // check if query is empty\r\n\t\t            if (!query.length) query = \"_\";// return callback();\r\n\t\t            $.ajax({\r\n\t\t                url: \"/api/accreditation/page/1/\" + query,\r\n\t\t                type: 'GET',\r\n\t\t                dataType: 'json',\r\n\t\t                data: { s: query, per: 10 },\r\n\t\t                error: function () {\r\n\t\t                    callback(data);\r\n\t\t                },\r\n\t\t                success: function (data) {\r\n\t\t                    callback(data.Results);\r\n\t\t                }\r\n\t\t            });\r\n\t\t        }\r\n\t\t    });\r\n\r\n\t\t    $(\"#advancedCategory\").selectize({\r\n\t\t        delimiter: ',',\r\n\t\t        valueField: 'ServiceID',\r\n\t\t        labelField: 'ServiceName',\r\n\t\t        searchField: 'ServiceName',\r\n\t\t        sortField: 'special',\r\n\t\t        optgroupField: 'class',\r\n\t\t        placeholder: 'Category',\r\n\t\t        preload: true,\r\n\t\t        onChange: function () {\r\n\t\t            if (this.items.length > 0) {\r\n\t\t                $(\"#hintCategory\").show();\r\n\t\t            }\r\n\t\t            else {\r\n\t\t                $(\"#hintCategory\").hide();\r\n\t\t            }\r\n\t\t        },\r\n\t\t        onInitialize: function () {\r\n\t\t            var previousSelections = $(this.$input).data('selectize-value') || \"\";\r\n\t\t            if (previousSelections === \"\") return;\r\n\t\t            var self = this;\r\n\r\n\t\t            $.ajax({\r\n\t\t                url: \"/api/categorygroups/specified/\" + previousSelections,\r\n\t\t                type: 'GET',\r\n\t\t                dataType: 'json',\r\n\t\t                success: function (data) {\r\n\t\t                    var items = data.Results;\r\n\t\t                    self.clear();\r\n\t\t                    self.clearOptions();\r\n\t\t                    self.addOption(items);\r\n\t\t                    items.forEach(function (item) {\r\n\t\t                        if (item.Services.length === 0) {\r\n\t\t                            var option = { special: \"a\" + item.Name, ServiceID: \"0.\" + item.ID, ServiceName: item.Name + \" -- All\", class: item.CategoryKeywords };\r\n\t\t                            self.addOption(option);\r\n\t\t                            self.addItem(option[self.settings.valueField]);\r\n                                }\r\n\t\t                        else {\r\n\t\t                            item.Services.forEach(function (service) {\r\n\t\t                                var option = { special: \"z\" + item.Name, ServiceID: service.ServiceID + \".\" + item.ID, ServiceName: service.ServiceName, class: item.CategoryKeywords };\r\n\t\t                                self.addOption(option);\r\n\t\t                                self.addItem(option[self.settings.valueField]);\r\n\t\t                            });\r\n\t\t                        }\r\n\t\t                    });\r\n\t\t                }\r\n\t\t            });\r\n\t\t        },\r\n\t\t        load: function (query, callback) {\r\n\r\n\t\t            var self = this;\r\n\t\t            if (!query.length) {\r\n\t\t                query = \"_\";\r\n\t\t            }\r\n\t\t            $.ajax({\r\n\t\t                url: \"/api/categorygroups/page/1/\" + query + \"/true/false\",\r\n\t\t                type: 'GET',\r\n\t\t                dataType: 'json',\r\n\t\t                data: {\r\n\t\t                    s: query,\r\n\t\t                    per: 10\r\n\t\t                },\r\n\t\t                error: function () {\r\n\t\t                    console.log('Error loading categories.');\r\n\t\t                },\r\n\t\t                success: function (data) {\r\n\t\t                    var groupID = 0;\r\n\t\t                    for (var i = 0; i < data.Results.length; i++) {\r\n\t\t                        if (data.Results[i].ID !== groupID) {\r\n\t\t                            self.addOptionGroup(data.Results[i].CategoryKeywords, { label: data.Results[i].Name, special: data.Results[i].Name });\r\n\t\t                            self.addOption({ special: \"a\" + data.Results[i].Name, ServiceID: \"0.\" + data.Results[i].ID, ServiceName: data.Results[i].Name + \" -- All\", class: data.Results[i].CategoryKeywords });\r\n\t\t                            groupID = data.Results[i].ID;\r\n\t\t                        }\r\n\t\t                        self.addOption({ special: \"z\" + data.Results[i].Name, ServiceID: data.Results[i].Services[0].ServiceID + \".\" + data.Results[i].ID, ServiceName: data.Results[i].Services[0].ServiceName, class: data.Results[i].CategoryKeywords });\r\n\t\t                    }\r\n\t\t                }\r\n\t\t            });\r\n\t\t        }\r\n\t\t    });\r\n\t\t},\r\n\r\n\t\tLoadSearchResults: function () {\r\n\r\n\t\t    var crit = arguments[0];\r\n\t\t    var favouriteModalUrl = arguments[1];\r\n\r\n\t\t    if (crit.SearchType === 'Search') {\r\n\t\t        $('#autocomplete-category').val(crit.IsAdvanced ? \"\" : crit.What);\r\n\t\t        $('#autocomplete-location').val(crit.Where);\r\n\t\t        $('.ddl-radius').val(crit.Radius);\r\n\t\t    }\r\n\r\n\t\t\t$(\"#hfCategoryId\").val(crit.Category);\r\n\t\t\t$(\"#hfServiceId\").val(crit.Service);\r\n\t\t\t$(\"#hfLocationId\").val(crit.Location);\r\n\t\t\t$(\"#hfCouncilId\").val(crit.Council);\r\n\t\t\t$(\"#hfSortField\").val(crit.SortField);\r\n\t\t\t$(\"#hfSortDirection\").val(crit.SortDirection);\r\n\r\n\t\t\tPages.ShowThinking(\"#results\");\r\n\r\n\t\t\t$.getJSON(\"/api/Search/Local\", crit,\r\n\t\t\t\tfunction (data) {\r\n\t\t\t\t    displayResults(data, true, crit.ShowResourceList === 1);\r\n\t\t\t\t    displayResultsSummary(data);\r\n\t\t\t\t    displayExtraInformation();\r\n\r\n\t\t\t\t    displayResultsPagination(crit, data.Total, data.Criteria.PageSize, favouriteModalUrl);\r\n\t\t\t\t    setupResultsButtonActions(crit, favouriteModalUrl);\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\t.fail(function (jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t$(\"#results\").html(\"<div class='alert alert-danger'>An unexpected error occurred: \" + (errorThrown || textStatus || \"unknown error\") + \".</div>\");\r\n\t\t\t\t$(\".search-expand\").show();\r\n\t\t\t})\r\n\t\t\t.success(function() {\r\n\t\t\t\tPageSetup.InitSearchResultsBehavior();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitSliders: function () {\r\n\r\n\t\t\t// Create the slick sliders on the homepage\r\n\t\t\t$(\".section-supporters .list-partners\").slick({\r\n\t\t\t\tslide: \"li\",\r\n\t\t\t\tslidesToShow: 4,\r\n\t\t\t\tresponsive: [\r\n\t\t\t\t\t{ breakpoint: 1080, settings: { slidesToShow: 3 } },\r\n\t\t\t\t\t{ breakpoint: 840, settings: { slidesToShow: 2 } },\r\n\t\t\t\t\t{ breakpoint: 560, settings: { slidesToShow: 1 } }\r\n\t\t\t\t]\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitConnectPage: function () {\r\n\t\t    var passwordForm = $(\"#passwordForm\");\r\n            if (passwordForm.length) {\r\n                passwordForm.validate({\r\n                    rules: {\r\n                        Password: { required: true, minlength: 6, regex: /^\\S*$/ },\r\n                        PasswordConfirmation: { required: true, equalTo: \"#Password\" }\r\n                    },\r\n                    messages: {\r\n                        Password: { required: \"Please enter your password\", minlength: \"Your password must be at least six characters long\", regex: \"Your password cannot contain any spaces\" },\r\n                        PasswordConfirmation: { required: \"Please confirm your password\", equalTo: \"Your passwords must match\" }\r\n                    }\r\n                });\r\n\r\n                initPasswordStrength();\r\n            }\r\n\r\n            var tokenForm = $(\"#tokenForm\");\r\n            if (tokenForm.length) {\r\n                tokenForm.validate({\r\n                    rules: {\r\n                        Token: { required: true, maxlength: 60 }\r\n                    },\r\n                    messages: {\r\n                        Token: { required: \"Please input a token\", maxlength: \"The token must be at most 60 characters long\" }\r\n                    }\r\n                });\r\n            }\r\n\r\n\t\t\tdrawMap(\"#locationMap\");\r\n\t\t},\r\n\r\n\t\tInitResetPasswordPage: function () {\r\n\t\t    var passwordForm = $(\"#passwordForm\");\r\n\t\t    if (passwordForm.length) {\r\n\t\t        passwordForm.validate({\r\n\t\t            rules: {\r\n\t\t                Password: { required: true, minlength: 6, regex: /^\\S*$/ },\r\n\t\t                PasswordConfirmation: { required: true, equalTo: \"#Password\" }\r\n\t\t            },\r\n\t\t            messages: {\r\n\t\t                Password: { required: \"Please enter your new password\", minlength: \"Your new password must be at least six characters long\", regex: \"Your new password cannot contain any spaces\" },\r\n\t\t                PasswordConfirmation: { required: \"Please confirm your new password\", equalTo: \"Your new passwords must match\" }\r\n\t\t            }\r\n\t\t        });\r\n\r\n\t\t        initPasswordStrength();\r\n\t\t    }\r\n\r\n\t\t    var tokenForm = $(\"#tokenForm\");\r\n\t\t    if (tokenForm.length) {\r\n\t\t        tokenForm.validate({\r\n\t\t            rules: {\r\n\t\t                Token: { required: true, maxlength: 60 }\r\n\t\t            },\r\n\t\t            messages: {\r\n\t\t                Token: { required: \"Please input a token\", maxlength: \"The token must be at most 60 characters long\" }\r\n\t\t            }\r\n\t\t        });\r\n\t\t    }\r\n\t\t},\r\n\r\n\t\tLoadCommunityRegionListings: function () {\r\n\t\t\tvar regionId = arguments[0] || 0;\r\n\t\t\tvar showDetails = arguments[1] || false;\r\n\r\n\t\t\tvar addrTitle, addrWidth;\r\n\t\t\tif (showDetails) {\r\n\t\t\t\taddrTitle = \"Address\";\r\n\t\t\t\taddrWidth = \"300px\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\taddrTitle = \"Suburb\";\r\n\t\t\t\taddrWidth = \"150px\";\r\n\t\t\t}\r\n\t\t\tvar fullCount = -1;\r\n\r\n\t\t\t$('#listings').dataTable({\r\n\t\t\t\tscrollX: true,\r\n\t\t\t\tlengthChange: false,\r\n\t\t\t\tordering: false,\r\n\t\t\t\tinfo: true,\r\n\t\t\t\tsearching: true,\r\n\t\t\t\tpaging: true,\r\n\t\t\t\tpageLength: 20,\r\n\t\t\t\tpagingType: \"full_numbers\",\r\n\t\t\t\tprocessing: true,\r\n\t\t\t\tserverSide: true,\r\n\t\t\t\tsearchDelay: 1500,\r\n\t\t\t\tstateSave: false,\r\n\t\t\t\tlanguage: {\r\n\t\t\t\t\temptyTable: \"No locations\",\r\n\t\t\t\t\tzeroRecords: \"No matching locations\"\r\n\t\t\t\t},\r\n\t\t\t\tcolumns : [   \r\n\t\t\t\t\t{ title: \"Organisation\", width: '300px' },\r\n\t\t\t\t\t{ title: addrTitle, width: addrWidth },\r\n\t\t\t\t\t{ title: \"Contact\", width: '100px', sClass: \"centered\" },\r\n\t\t\t\t\t{ title: \"Services\", width: '400px' },\r\n\t\t\t\t\t{ title: \"Description\", width: '800px' },\r\n\t\t\t\t],\r\n\t\t\t\tajax: function (data, callback, settings) {\r\n\t\t\t\t\tvar s = data.search.value || \"-\";\r\n\t\t\t\t\tvar p = (data.start / 20) + 1;\r\n\r\n\t\t\t\t\tif (ga && fullCount !== -1) {\r\n\t\t\t\t\t\t// Send an analytics event when not the first load\r\n\t\t\t\t\t\tga('send', 'event', 'button', 'click', 'page', p);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$.getJSON(\"/api/search/regional/\" + regionId + \"/\" + s + \"/\" + p + \"/\" + data.draw,\r\n\t\t\t\t\t\tfunction (d) {\r\n\t\t\t\t\t\t\tif (fullCount === -1) {\r\n\t\t\t\t\t\t\t\tfullCount = d.Total;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar a = { data: [], recordsTotal: fullCount, recordsFiltered: d.Total };\r\n\r\n\t\t\t\t\t\t\td.Results.forEach(function (item) {\r\n\t\t\t\t\t\t\t\tvar services = \"\";\r\n\r\n\t\t\t\t\t\t\t\titem.SubResults.forEach(function (service) {\r\n\t\t\t\t\t\t\t\t\tservices = services + \"<a href='\" + service.Url + \"'>\" + service.Service.ServiceName + \"</a><br/>\";\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tvar phone, addr;\r\n\t\t\t\t\t\t\t\tif (showDetails) {\r\n\t\t\t\t\t\t\t\t\tphone = item.Outlet.Phone || \"\";\r\n\t\t\t\t\t\t\t\t\tvar pstripped = phone.replace(/[^0-9]+/g, \"\");\r\n\t\t\t\t\t\t\t\t\tif (pstripped.length === 0) {\r\n\t\t\t\t\t\t\t\t\t\tphone = \"\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\tphone = \"<a href='tel:\" + pstripped + \"'>\" + phone + \"</a>\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\taddr = item.Outlet.DisplayAddress;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tphone = \"<a href='\" + item.Url + \"' class='btn btn-small btn-blue'>Contact Us</a>\";\r\n\t\t\t\t\t\t\t\t\taddr = item.Outlet.Suburb;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\ta.data.push([\r\n\t\t\t\t\t\t\t\t\t\"<a href='\" + item.Url + \"'>\" + item.Outlet.Nickname + \"</a>\",\r\n\t\t\t\t\t\t\t\t\taddr,\r\n\t\t\t\t\t\t\t\t\tphone,\r\n\t\t\t\t\t\t\t\t\tservices,\r\n\t\t\t\t\t\t\t\t\titem.Description\r\n\t\t\t\t\t\t\t\t]);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tcallback(a);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}).on('processing.dt', function (e, settings, processing) {\r\n\t\t\t\tif (processing) {\r\n\t\t\t\t\tPages.ShowThinking(\"#listings_processing\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitHHSPage: function () {\r\n\r\n\t\t    var mapName = arguments[0] || \".map\";\r\n\t\t\tdrawMap(mapName);\r\n\r\n\t\t\t$(\".connect\").on(\"click\", function (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar regionId = $(this).data(\"regionid\");\r\n\t\t\t\tvar serviceId = $(this).data(\"serviceid\");\r\n\r\n\t\t\t\t$(this).append(\"<img src='/_static/images/processing_small.gif' class='waiting_on_map' />\");\r\n\r\n\t\t\t\t$.getJSON(\"/api/search/regional/\" + regionId + \"/\" + serviceId,\r\n\t\t\t\t\tfunction (d) {\r\n\t\t\t\t\t    loadMap(mapName, d.Results);\r\n\t\t\t\t\t    $('.waiting_on_map').remove();\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tInitAffiliatePage: function () {\r\n\t\t    $(\"#ImageMap\").find(\"area\").hover(function () {\r\n\t\t        var thisClass = $(this).attr(\"class\"),\r\n                    image = $(\"#\" + thisClass);\r\n\t\t        image.removeClass(\"visually-hidden\");\r\n\t\t    }, function () {\r\n\t\t        var thisClass = $(this).attr(\"class\"),\r\n                    image = $(\"#\" + thisClass);\r\n\t\t        image.addClass(\"visually-hidden\");\r\n\t\t    });\r\n\r\n\t\t},\r\n\r\n\t\tInitAffiliateGroupMapPage: function () {\r\n\t\t    var mapName = arguments[0] || \".map\";\r\n\t\t    drawMap(mapName);\r\n\r\n\t\t    $(\".connect\").on(\"click\", function (e) {\r\n\t\t        e.preventDefault();\r\n\r\n\t\t        var regionId = $(this).data(\"regionid\");\r\n\t\t        var group = $(this).data(\"group\");\r\n\r\n\t\t        $(this).append(\"<img src='/_static/images/processing_small.gif' class='waiting_on_map' />\");\r\n\r\n\t\t        $.getJSON(\"/api/search/group/\" + regionId + \"/\" + group,\r\n\t\t\t\t\tfunction (d) {\r\n\t\t\t\t\t    loadMap(mapName, d.Results);\r\n\t\t\t\t\t    $('.waiting_on_map').remove();\r\n\t\t\t\t\t});\r\n\t\t    });\r\n\t\t},\r\n\r\n\t\tInitCommunityRegionPage: function () {\r\n\t\t    initEmail(function (d) {\r\n\t\t        return { OutletID: d.data(\"outlet\"), ServiceID: d.data(\"service\"), CouncilRegionID: d.data(\"region\"), FromName: $(\"#txt-name\").val(), FromEmail: $(\"#txt-email\").val(), Phone: $(\"#txt-phone\").val(), Message: $(\"#txt-enquiry\").val() };\r\n\t\t    });\r\n\t\t},\r\n\r\n\t\tInitAmcPage: function() {\r\n\t\t    var mapName = arguments[0];\r\n\t\t    var region = arguments[1];\r\n\r\n\t\t    window.Search = {\r\n\t\t        Location: null,\r\n\t\t        LocationMarker: null,\r\n\t\t        DefaultLatLng: null,\r\n\t\t        Radius: 1,\r\n\t\t        RegionID: region.RegionID,\r\n\t\t        RegionType: region.RegionType,\r\n\t\t        CentreLat: region.CentreLat,\r\n\t\t        CentreLng: region.CentreLng,\r\n\t\t        IsLoggedIn: arguments[2],\r\n\t\t        ServicesShown: false,\r\n\t\t        SettingsDone: false\r\n\t\t    };\r\n\r\n\t\t    window.Markers = {\r\n\t\t        Locations: [],\r\n\t\t        OpenData: []\r\n\t\t    };\r\n\r\n\t\t    initAmcMap(mapName);\r\n\t\t    initAmcActions();\r\n\r\n\t\t    if (window.Search.RegionID === 0) {\r\n\t\t        displayAndSetMyLocation(true, false);\r\n\t\t    }\r\n\t\t    else {\r\n\t\t        getRegions(0, 0);\r\n\t\t        $('#cantFindYou').hide();\r\n\t\t        $(\".txt-address-wrapper\").hide();\r\n\t\t        $(\".txt-distance-wrapper\").hide();\r\n\t\t        $(\".txt-buttons-wrapper\").hide();\r\n            }\r\n\t\t},\r\n\r\n\t\tInitVCAPage: function () {\r\n\t\t    this.InitCategoryLinks();\r\n\r\n\t\t    var state = {\r\n\t\t        Code: 'ACT',\r\n\t\t        StateName: 'Australian Capital Territory',\r\n\t\t        StateUrl: 'Australian_Capital_Territory'\r\n\t\t    };\r\n\t\t    var assemblyVersion = arguments[0];\r\n\r\n\t\t    //loadBackgroundImages();\r\n\r\n\t\t    setCurrentCouncil(state);\r\n\r\n\t\t    window.StateUrl = state.StateUrl;\r\n\r\n\t\t    $(window).on(\"resize\", function () {\r\n\t\t        if ($(\"#leaflet-map:visible\").length && !$(\"#leaflet-map.leaflet-container\").length) {\r\n\t\t            loadLeafletMap(state.Code, assemblyVersion);\r\n\t\t        }\r\n\t\t    });\r\n\r\n\t\t    if (!$(\"#leaflet-map:visible\").length) {\r\n\t\t        return;\r\n\t\t    }\r\n\r\n\t\t    loadLeafletMap(state.Code, assemblyVersion);\r\n\r\n\t\t}\r\n\t};\r\n})();\r\n"]}