{"version":3,"sources":["page/professionalsSearch.js"],"names":["jQuery","fn","InitializeSearchPage","option","$","extend","initialJsonData","serviceUrl","typeAheadModelUrl","typeAheadServiceUrl","viewModelJs","JSON","parse","viewModel","ko","mapping","fromJS","i","SearchFilters","ServiceFilters","length","filter","Name","toLowerCase","indexOf","ParentName","typeAheadTimer","defaultScrollTop","offset","top","pageContent","this","lastChangedType","HasSearchRun","observable","IsSearchRunning","IsSelectAll","IsClearAll","ScrollPositionUpdate","HasPendingUpdates","SelectedFilters","observableArray","TypeAheadResultGroup","SearchBoxFocus","KeywordSearching","SearchBoxFocusThrottled","computed","throttle","SubmissionFlag","window","location","search","scrollPosition","animate","scrollTop","LoadDataFromServer","viewModelToSend","GetRequestObject","ajax","url","type","dataType","contentType","data","toJSON","cache","success","results","Skip","ResultCount","GridData","removeAll","utils","arrayForEach","item","push","HasMoreResults","KeywordFilter","DecodeHtmlInput","ReloadFilters","SetSelectedFilters","error","xhr","textStatus","errorThrown","console","log","PopulateResults","History","getState","qs","qsParms","parseQueryString","currentSkip","newSkip","skip","parseInt","projectedTotal","Take","pop","Array","ClearAllSearchFilters","hasFilters","reloadFilters","reload","keyword","services","ID","IsSelected","IndustryFilters","office","OfficeFilters","school","SchoolFilters","level","LevelFilters","baradmission","BarAdmissionFilters","letter","LetterFilters","sort","SortField","scroll","LoadFromParameters","Sort","sortField","Search","onstatechange","LoadNextPage","QueryString","pushState","options","initialTitle","forceScrollPosition","queryString","selectedItems","encodeURIComponent","join","windowPosition","HasSelectedFilters","KeywordSearch","ClearLetterFilter","blur","LetterSearch","ClearSearchFilter","arrayFirst","callBack","ClearAdvancedSearchFilters","isFunction","parentName","newItem","IsEnabled","Label","keyWordLabel","Url","ClearFilter","ClearSearch","ResetDropdowns","dropdowns","currentValues","find","firstValues","innerHTML","ResetDropdown","id","currentValue","firstValue","dropDownName","each","removeClass","SetSelectedFilter","obj","encodedString","textArea","document","createElement","value","GetFilterName","async","LoadTypeAheadDataFromServer","searchTerm","findArray","replace","split","grep","n","preservedCaseKeywords","keywordIndex","Results","childItem","DisplayMatched","searchItem","regEx","RegExp","test","exec","containsPlaceholder","originalCase","shift","TypeAheadSelect","suggestion","bindingHandlers","bindTypeAheadKeyUp","init","element","valueAccessor","allBindingsAccessor","bindingContext","keyup","event","val","keycode","keyCode","which","clearTimeout","setTimeout","applyBindings","get","on","preventDefault","context","contextFor","$data"],"mappings":"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","file":"professionalsSearch.js","sourcesContent":["jQuery.fn.InitializeSearchPage = function (option) {\r\n var defaults = {\r\n initialJsonData: null,\r\n serviceUrl: null,\r\n typeAheadModelUrl: null,\r\n typeAheadServiceUrl: null\r\n };\r\n\r\n var option = $.extend({}, defaults, option);\r\n var viewModelJs = JSON.parse(option.initialJsonData); \r\n var viewModel = ko.mapping.fromJS(viewModelJs);\r\n //force reit filter in services to have ServiceFilters ParentName \r\n for(var i = 0;i 0){\r\n filter.ParentName('ServiceFilters');\r\n break;\r\n }\r\n }\r\n var guidEmpty = '00000000-0000-0000-0000-000000000000';\r\n var keyWordIDKey = 'KEYWORD';\r\n var $scrollDefaultPosition = $('#results-top')\r\n var defaultScrollTop = $scrollDefaultPosition.offset().top\r\n var typeAheadTimer;\r\n var pageContent = $(this);\r\n var lastChangedType = '';\r\n viewModel.HasSearchRun = ko.observable(false);\r\n viewModel.IsSearchRunning = ko.observable(false);\r\n viewModel.IsSelectAll = ko.observable(false);\r\n viewModel.IsClearAll = ko.observable(false);\r\n viewModel.ScrollPositionUpdate = ko.observable(false);\r\n viewModel.HasPendingUpdates = ko.observable(false);\r\n viewModel.SelectedFilters = ko.observableArray();\r\n viewModel.TypeAheadResultGroup = ko.observableArray();\r\n viewModel.SearchBoxFocus = ko.observable(false);\r\n viewModel.KeywordSearching = ko.observable(false);\r\n viewModel.SearchBoxFocusThrottled = ko.computed(viewModel.SearchBoxFocus).extend({ throttle: 100 });\r\n viewModel.SubmissionFlag = ko.observable(false);\r\n\r\n //on init, if a search is already executing let's scroll to results\r\n if (window.location.search.indexOf('letter') > -1 || window.location.search.indexOf('keyword') > -1) {\r\n var scrollPosition = defaultScrollTop;\r\n $(\"html, body\").animate({ scrollTop: scrollPosition }, \"slow\");\r\n }\r\n\r\n // Populate Results & Grid Data\r\n\r\n viewModel.LoadDataFromServer = function () {\r\n viewModel.IsSearchRunning(true);\r\n var viewModelToSend = GetRequestObject(viewModel.SearchFilters);\r\n\r\n $.ajax({\r\n url: option.serviceUrl,\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n data: ko.mapping.toJSON(viewModelToSend),\r\n cache: false,\r\n success: function (data) {\r\n var results = ko.observableArray();\r\n var resultsUpcoming = ko.observableArray();\r\n if (viewModel.SearchFilters.Skip() == 0) {\r\n viewModel.ResultCount(0);\r\n viewModel.GridData.removeAll();\r\n }\r\n ko.mapping.fromJS(data.GridData, {}, results);\r\n ko.utils.arrayForEach(results(), function (item) {\r\n viewModel.GridData.push(item);\r\n });\r\n\r\n viewModel.ResultCount(data.ResultCount);\r\n viewModel.HasMoreResults(data.HasMoreResults);\r\n viewModel.SearchFilters.KeywordFilter(viewModel.DecodeHtmlInput(data.SearchFilters.KeywordFilter));\r\n viewModel.SearchFilters.ReloadFilters(data.SearchFilters.ReloadFilters);\r\n viewModel.SetSelectedFilters();\r\n viewModel.HasPendingUpdates(false);\r\n viewModel.IsSearchRunning(false);\r\n },\r\n error: function (xhr, textStatus, errorThrown) {\r\n console.log(xhr);\r\n console.log(\"textStatus : \" + textStatus);\r\n console.log(\"errorThrown : \" + errorThrown);\r\n }\r\n });\r\n };\r\n\r\n viewModel.PopulateResults = function () {\r\n var currentState = History.getState();\r\n var qs = History.getState().data['qs'];\r\n var qsParms = !!qs ? parseQueryString(qs) : {};\r\n var currentSkip = viewModel.GridData().length;\r\n var newSkip = 0;\r\n\r\n if (!!qsParms.skip && qsParms.skip > 0) {\r\n newSkip = parseInt(qsParms.skip);\r\n }\r\n var projectedTotal = newSkip + viewModel.SearchFilters.Take();\r\n if (projectedTotal < currentSkip && newSkip != 0) {\r\n // This is here for a back button after a page scroll\r\n viewModel.IsSearchRunning(true);\r\n viewModel.HasMoreResults(true);\r\n viewModel.HasSearchRun(true);\r\n viewModel.SearchFilters.Skip(newSkip);\r\n while (viewModel.GridData().length > projectedTotal) {\r\n var popped = viewModel.GridData.pop();\r\n }\r\n viewModel.IsSearchRunning(false);\r\n } else {\r\n var existingFiltersTypeFilters = new Array();\r\n\r\n viewModel.SearchFilters.ClearAllSearchFilters();\r\n var hasFilters = false;\r\n var reloadFilters = false;\r\n\r\n if (!!qsParms.reload && qsParms.reload.length > 0) {\r\n reloadFilters = (qsParms.reload == \"true\");\r\n }\r\n\r\n viewModel.SearchFilters.ReloadFilters(reloadFilters);\r\n if (!!qsParms.keyword && qsParms.keyword.length > 0) {\r\n viewModel.SearchFilters.KeywordFilter(qsParms.keyword);\r\n hasFilters = true;\r\n }\r\n\r\n viewModel.SearchFilters.Skip(newSkip);\r\n if (!!qsParms.services && qsParms.services.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n if (qsParms.services.indexOf(item.ID()) >= 0 ) {\r\n if(!(item.ID() === '0a774288-0858-454b-af7c-1614bd4680df' && lastChangedType === 'IndustryFilters')){\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n if (qsParms.services.indexOf(item.ID()) >= 0) {\r\n if(!(item.ID() === '0a774288-0858-454b-af7c-1614bd4680df' && lastChangedType === 'ServiceFilters')){\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.office && qsParms.office.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n if (qsParms.office.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.school && qsParms.school.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.SchoolFilters(), function (item) {\r\n if (qsParms.school.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.level && qsParms.level.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n if (qsParms.level.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.baradmission && qsParms.baradmission.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.BarAdmissionFilters(), function (item) {\r\n if (qsParms.baradmission.indexOf(item.ID()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n if (!!qsParms.letter && qsParms.letter.length > 0) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n if (qsParms.letter.indexOf(item.Name()) >= 0) {\r\n item.IsSelected(true);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n\r\n // Sort\r\n var sort = \"\";\r\n if (!!qsParms.sort && qsParms.sort !== \"\") {\r\n sort = qsParms.sort;\r\n viewModel.SearchFilters.SortField(sort);\r\n }\r\n\r\n if (!viewModel.ScrollPositionUpdate()) {\r\n viewModel.LoadDataFromServer();\r\n viewModel.HasSearchRun(hasFilters);\r\n }\r\n }\r\n\r\n // Reposition by scroll position\r\n var scrollPosition = 0;\r\n if (!!qsParms.scroll && qsParms.scroll.length > 0) {\r\n scrollPosition = parseInt(qsParms.scroll);\r\n }\r\n $(\"html, body\").animate({ scrollTop: scrollPosition }, \"slow\");\r\n return;\r\n };\r\n\r\n viewModel.LoadFromParameters = function () {\r\n viewModel.PopulateResults();\r\n };\r\n\r\n viewModel.Sort = function (sortField) {\r\n if (sortField === \"position\") {\r\n viewModel.SearchFilters.SortField(\"Position\");\r\n } else {\r\n viewModel.SearchFilters.SortField(\"LastName\");\r\n }\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n window.onstatechange = function () {\r\n viewModel.PopulateResults();\r\n };\r\n\r\n // Pagination\r\n\r\n viewModel.LoadNextPage = function () {\r\n viewModel.SearchFilters.Skip(viewModel.GridData().length);\r\n var qs = viewModel.QueryString();\r\n viewModel.ScrollPositionUpdate(false);\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n };\r\n\r\n // Query string handling\r\n\r\n viewModel.QueryString = function (forceScrollPosition) {\r\n var queryString = \"\";\r\n var selectedItems = new Array();\r\n\r\n if (viewModel.SearchFilters.KeywordFilter() != null && viewModel.SearchFilters.KeywordFilter().length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"keyword=\" + encodeURIComponent(viewModel.SearchFilters.KeywordFilter());\r\n }\r\n\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"services=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"office=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.SchoolFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"school=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"level=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.BarAdmissionFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.ID());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"baradmission=\" + selectedItems.join();\r\n }\r\n\r\n selectedItems = new Array();\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n selectedItems.push(item.Name());\r\n }\r\n });\r\n if (selectedItems.length > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"letter=\" + selectedItems.join();\r\n }\r\n\r\n if (viewModel.SearchFilters.Skip() > 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"skip=\" + viewModel.SearchFilters.Skip();\r\n }\r\n\r\n if (viewModel.SearchFilters.SortField() !== 0) {\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"sort=\" + viewModel.SearchFilters.SortField();\r\n }\r\n\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n queryString += \"reload=\" + viewModel.SearchFilters.ReloadFilters();\r\n\r\n queryString += (queryString != \"\" ? \"&\" : \"?\");\r\n if (!!forceScrollPosition && forceScrollPosition > 0) {\r\n queryString += \"scroll=\" + forceScrollPosition;\r\n } else {\r\n queryString += \"scroll=\" + $(window).scrollTop();\r\n }\r\n return queryString;\r\n };\r\n\r\n // Searching\r\n\r\n // Run search by pushing new state\r\n viewModel.Search = function () {\r\n var windowPosition = (viewModel.HasSelectedFilters()) ? defaultScrollTop : 1;\r\n\r\n if (viewModel.HasPendingUpdates() == false) {\r\n return;\r\n }\r\n\r\n viewModel.SearchFilters.Skip(0);\r\n var qs = viewModel.QueryString(windowPosition);\r\n viewModel.ScrollPositionUpdate(false);\r\n History.pushState({ qs: qs }, History.options.initialTitle, qs);\r\n };\r\n\r\n viewModel.KeywordSearch = function () {\r\n viewModel.SearchFilters.ClearLetterFilter();\r\n viewModel.SubmissionFlag(true);\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n $('.text-input').blur();\r\n };\r\n\r\n viewModel.LetterSearch = function (letter) {\r\n viewModel.SearchFilters.ClearLetterFilter();\r\n viewModel.SearchFilters.ClearSearchFilter('KeywordFilter');\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n if (item.Name() === letter) {\r\n item.IsSelected(true);\r\n }\r\n });\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n // Filters\r\n\r\n viewModel.HasSelectedFilters = function () {\r\n if (viewModel.SearchFilters.KeywordFilter() != null && viewModel.SearchFilters.KeywordFilter().length > 0) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.SchoolFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.BarAdmissionFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n var hasItem = ko.utils.arrayFirst(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n return (item.IsSelected() == true);\r\n });\r\n if (hasItem != null) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n viewModel.SearchFilters.ClearAllSearchFilters = function (callBack) {\r\n viewModel.SearchFilters.KeywordFilter('');\r\n viewModel.SearchFilters.ClearAdvancedSearchFilters(callBack);\r\n };\r\n\r\n viewModel.SearchFilters.ClearLetterFilter = function () {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n };\r\n\r\n viewModel.SearchFilters.ClearAdvancedSearchFilters = function (callBack) {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.SchoolFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.BarAdmissionFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n\r\n viewModel.SearchFilters.ClearLetterFilter();\r\n\r\n if (!!callBack && $.isFunction(callBack)) {\r\n callBack();\r\n }\r\n };\r\n\r\n viewModel.SearchFilters.ClearSearchFilter = function (parentName) {\r\n if (parentName === \"KeywordFilter\") {\r\n viewModel.SearchFilters.KeywordFilter('');\r\n } else if (parentName === \"LetterFilters\") {\r\n viewModel.SearchFilters.ClearLetterFilter();\r\n } else if (parentName === \"IndustryFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"ServiceFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"OfficeFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"SchoolFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.SchoolFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"LevelFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n } else if (parentName === \"BarAdmissionFilters\") {\r\n ko.utils.arrayForEach(viewModel.SearchFilters.BarAdmissionFilters(), function (item) {\r\n item.IsSelected(false);\r\n });\r\n };\r\n }\r\n\r\n viewModel.SetSelectedFilters = function () {\r\n viewModel.SelectedFilters.removeAll();\r\n if (viewModel.SearchFilters.KeywordFilter() != null && viewModel.SearchFilters.KeywordFilter().length > 0) {\r\n var newItem = {\r\n ID: ko.observable(keyWordIDKey),\r\n IsEnabled: ko.observable(true),\r\n IsSelected: ko.observable(false),\r\n Name: ko.observable(viewModel.SearchFilters.KeywordFilter()),\r\n Label: ko.observable(option.keyWordLabel),\r\n Url: ko.observable('#0'),\r\n ParentName: ko.observable(\"KeywordFilter\")\r\n };\r\n newItem.ClearFilter = function () {\r\n viewModel.SearchFilters.KeywordFilter('');\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n viewModel.SelectedFilters.push(newItem);\r\n }\r\n ko.utils.arrayForEach(viewModel.SearchFilters.ServiceFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n //force parent name\r\n item.ParentName('ServiceFilters')\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.IndustryFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.OfficeFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.SchoolFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LevelFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.BarAdmissionFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n ko.utils.arrayForEach(viewModel.SearchFilters.LetterFilters(), function (item) {\r\n if (item.IsSelected() == true) {\r\n viewModel.SelectedFilters.push(item);\r\n }\r\n });\r\n };\r\n\r\n viewModel.ClearSearch = function () {\r\n viewModel.SearchFilters.ClearAllSearchFilters();\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n viewModel.ClearFilter = function (parentName) {\r\n viewModel.SearchFilters.ClearSearchFilter(parentName);\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n viewModel.ResetDropdowns = function () {\r\n var dropdowns = $('.header-filters-list .header-filter-dropdown');\r\n var currentValues = dropdowns.find('span');\r\n var firstValues = dropdowns.find('li.drop-down-item.default > a');\r\n\r\n if (currentValues.length === firstValues.length) {\r\n for (i = 0; i < firstValues.length; i++) {\r\n currentValues[i].innerHTML = firstValues[i].innerHTML;\r\n }\r\n }\r\n };\r\n\r\n viewModel.ResetDropdown = function (parentName, id) {\r\n if (parentName === \"KeywordFilter\") {\r\n\r\n } else if (parentName == \"LetterFilters\") {\r\n\r\n } else {\r\n var dropdowns = $('.header-filters-list .' + parentName.toLowerCase());\r\n var currentValue = dropdowns.find('span')[0];\r\n var firstValue = dropdowns.find('li.drop-down-item.default > a')[0];\r\n //Reset the is-selected classes;\r\n var dropDownName = parentName.toLowerCase();\r\n\r\n $(\".\" + dropDownName).find(\".is-selected\").each(function () {\r\n $(this).removeClass(\"is-selected\");\r\n });\r\n currentValue.innerHTML = firstValue.innerHTML;\r\n }\r\n }\r\n\r\n viewModel.SetSelectedFilter = function (obj) {\r\n viewModel.SearchFilters.ClearSearchFilter(obj.ParentName());\r\n if(obj.ID() === '0a774288-0858-454b-af7c-1614bd4680df')\r\n lastChangedType = obj.ParentName();\r\n obj.IsSelected(true);\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n }\r\n\r\n // String utilities\r\n viewModel.DecodeHtmlInput = function (encodedString) {\r\n var textArea = document.createElement('textarea');\r\n textArea.innerHTML = encodedString;\r\n return textArea.value != null && textArea.value != \"null\" ? textArea.value : \"\";\r\n };\r\n\r\n viewModel.GetFilterName = function (filter) {\r\n if (filter.ParentName() !== \"KeywordFilter\") {\r\n return filter.Name();\r\n } else {\r\n return '\"' + filter.Name() + '\"';\r\n }\r\n };\r\n\r\n // Typeahead\r\n\r\n $.ajax({\r\n url: option.typeAheadModelUrl,\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n async: false,\r\n success: function (data) {\r\n ko.mapping.fromJS(data, {}, viewModel.TypeAheadResultGroup);\r\n },\r\n error: function (xhr, textStatus, errorThrown) {\r\n console.log(xhr);\r\n console.log(\"textStatus : \" + textStatus);\r\n console.log(\"errorThrown : \" + errorThrown);\r\n }\r\n });\r\n\r\n viewModel.LoadTypeAheadDataFromServer = function () {\r\n viewModel.IsSearchRunning(true);\r\n var searchTerm = viewModel.SearchFilters.KeywordFilter();\r\n $.ajax({\r\n url: option.typeAheadServiceUrl + \"?query=\" + encodeURIComponent(viewModel.SearchFilters.KeywordFilter()),\r\n type: \"POST\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n cache: false,\r\n success: function (data) {\r\n if (viewModel.SubmissionFlag() === false) {\r\n var cleanFilter = searchTerm.toLowerCase().replace(/[^a-zA-Z0-9 :]/g, \"\")\r\n var findArray = cleanFilter.split(/,| /);\r\n findArray = $.grep(findArray, function (n) { return (n); });\r\n\r\n //each category\r\n var preservedCaseKeywords = [];\r\n var keywordIndex = 0;\r\n ko.utils.arrayForEach(data, function (item) {\r\n //each result item\r\n keywordIndex = 0;\r\n ko.utils.arrayForEach(item.Results, function (childItem) {\r\n childItem.DisplayMatched = childItem.Name;\r\n //each keyword to highlight in the title\r\n ko.utils.arrayForEach(findArray, function (searchItem) {\r\n if (searchItem.length > 1) {\r\n var regEx = new RegExp('(' + searchItem + ')', \"i\");\r\n while(regEx.test(childItem.DisplayMatched)) {\r\n preservedCaseKeywords.push(regEx.exec(childItem.DisplayMatched)[0]);\r\n childItem.DisplayMatched = childItem.DisplayMatched.replace(regEx, \"###_\" + keywordIndex + \"_###\");\r\n keywordIndex++;\r\n }\r\n }\r\n });\r\n });\r\n \r\n keywordIndex = 0;\r\n var containsPlaceholder = new RegExp('(###_)', \"i\");\r\n //to prevent searching for strings contained in the html match getting double-nested, replace them all after\r\n ko.utils.arrayForEach(item.Results, function (childItem) {\r\n ko.utils.arrayForEach(findArray, function (searchItem) {\r\n if (searchItem.length > 1) {\r\n while(containsPlaceholder.test(childItem.DisplayMatched)) {\r\n var originalCase = preservedCaseKeywords.shift();\r\n var regEx = new RegExp('(' + \"###_\" + keywordIndex + \"_###\" + ')', \"i\");\r\n childItem.DisplayMatched = childItem.DisplayMatched.replace(regEx, \"\" + originalCase + \"\");\r\n keywordIndex++;\r\n }\r\n }\r\n });\r\n });\r\n });\r\n ko.mapping.fromJS(data, {}, viewModel.TypeAheadResultGroup);\r\n viewModel.IsSearchRunning(false);\r\n }\r\n },\r\n error: function (xhr, textStatus, errorThrown) {\r\n console.log(xhr);\r\n console.log(\"textStatus : \" + textStatus);\r\n console.log(\"errorThrown : \" + errorThrown);\r\n }\r\n });\r\n };\r\n\r\n viewModel.TypeAheadSelect = function (suggestion) {\r\n viewModel.SearchFilters.KeywordFilter(suggestion);\r\n viewModel.HasPendingUpdates(true);\r\n viewModel.Search();\r\n };\r\n\r\n ko.bindingHandlers.bindTypeAheadKeyUp = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var options = valueAccessor();\r\n var allBindings = allBindingsAccessor();\r\n var observable = options.observable;\r\n\r\n $(element).keyup(function (event) {\r\n var $this = $(this);\r\n var val = $this.val();\r\n\r\n var keycode = (event.keyCode ? event.keyCode : event.which);\r\n\r\n if (keycode != '13') {\r\n viewModel.KeywordSearching(true);\r\n viewModel.SubmissionFlag(false);\r\n } else {\r\n viewModel.SubmissionFlag(true);\r\n }\r\n\r\n if (!!val && val.length >= 3 && keycode !== '13') {\r\n clearTimeout(typeAheadTimer);\r\n typeAheadTimer = setTimeout(viewModel.LoadTypeAheadDataFromServer, 100);\r\n } else {\r\n viewModel.TypeAheadResultGroup.removeAll();\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n };\r\n\r\n // Apply and load data\r\n viewModel.SetSelectedFilters();\r\n ko.applyBindings(viewModel, pageContent.get(0));\r\n\r\n if (viewModel.SelectedFilters().length > 0) {\r\n viewModel.HasSearchRun(true);\r\n viewModel.IsSelectAll(false);\r\n viewModel.IsClearAll(false);\r\n } else {\r\n viewModel.IsSelectAll(true);\r\n viewModel.IsClearAll(false);\r\n }\r\n\r\n // Events\r\n\r\n $(\".letter-filter\").on(\"click\", function (event) {\r\n event.preventDefault();\r\n var context = ko.contextFor(this);\r\n viewModel.LetterSearch(context.$data.Name());\r\n });\r\n};"]}