{"version":3,"sources":["../../../../../Foundation/JavascriptCommon/code/scripts/common/urlUtils.js","LearningLibrarySearchResults/searchCount.js","../../../../../Foundation/JavascriptCommon/code/scripts/common/formUtils.js","LearningLibrarySearchResults/learningLibrarySearchResults.js","SearchKeywords/searchKeywords.js","SearchKeywords/main.js"],"names":["define","parseQueryParamsFromUrl","url","window","location","search","query","decomposeUrl","indexOf","substring","match","urlParams","decode","s","decodeURI","decodeURIComponent","exec","path","hash","putParamIntoUrl","paramName","paramValue","urlComp","encodeURIComponent","getParamFromUrl","pushParamIntoLink","domElement","$","attr","href","params","p","toLowerCase","newSearchString","param","newHref","history","pushState","replaceState","popParamFromLink","retVal","displayCountResults","count","keyword","tagsInfo","length","html","data","replace","generateTagSpans","tags","tagSpans","i","tagInfo","TagGroupName","TagText","TagId","tagSpanClick","element","id","hasClass","val","trigger","parent","remove","clearInvalidFeedback","formId","startsWith","removeClass","empty","displayInvalidFeedback","invalidFields","forEach","fieldMessage","field","FieldName","addClass","siblings","append","MessageText","collectFormData","disabledFields","find","prop","serializedData","serializeArray","formData","name","value","each","index","populateFormWithData","type","undefined","toString","disableFields","enableFields","initializeFloatingLabels","useToken","token","__RequestVerificationToken","urlUtils","searchCount","formUtils","getSearchResults","topics","contentTypes","pageNumber","scrollToTop","queryParams","setParametersOnResultsComponent","searchParams","getSearchParams","setSearchParamsIntoUrl","setUrlWithoutPageLoading","firstLoad","refreshSearchCountComponent","Keyword","refreshFacetsCount","HandlePagingText","lastSearch","placeholdersDiv","clone","prepend","css","get","scrollIntoView","ajax","dataType","success","show","hide","error","jq","status","errorThrown","complete","text","resultFacets","facet","facetTextElement","Name","Count","getTagInfoObjects","queryParam","parameterValues","split","label","push","Tags","ContentTypes","pathname","PageNumber","document","title","htmlEncode","htmlDecode","isEmptyObject","contenttypes","mustHaveAnyTopicString","mustHaveAnyTopic","productSupportContentOnlyString","productSupportContentOnly","PageSize","Topics","NumberOfTilesPerRow","MustHaveAnyTopic","ProductSupportContentOnly","page","parseInt","goToPage","learningLibrarySearchResults","init","off","on","keywordInputChanged","searchIconClick","executeSearch","event","key","navigateTo","require","searchKeywords"],"mappings":"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","file":"SearchKeywords.js","sourcesContent":["define('common/urlUtils',[\r\n],\r\n function () {\r\n\r\n // Takes the url and parses the query string parameters out of it.\r\n // Returns the parameters and their string values as object { paramName1: value1, paramName2: value2, ...},\r\n // or an empty object in case there are no parameters in url.\r\n function parseQueryParamsFromUrl(url) {\r\n url = url ? url : window.location.search; // default url parameter if not set\r\n // take just the query search part of url (lose the leading question mark)\r\n var query = decomposeUrl(url).search;\r\n if (query.indexOf(\"?\") >= 0) query = query.substring(query.indexOf(\"?\") + 1);\r\n var urlParams = {},\r\n match,\r\n search = /([^&=]+)=?([^&]*)/g,\r\n decode = function (s) { return decodeURI(decodeURIComponent(s)); };\r\n\r\n while (match = search.exec(query))\r\n urlParams[decode(match[1])] = decode(match[2]);\r\n\r\n return urlParams;\r\n }\r\n\r\n // Takes the url, decomposes it into three components: path, search, hash,\r\n // and returns those three components in an object.\r\n // When searching for hash string which is directly after path (without search parameters) we're ignoring '#/'.\r\n // That is not a hash, that is Angular routing and it's actually part of the path.\r\n function decomposeUrl(url) {\r\n var path = '';\r\n var search = '';\r\n var hash = '';\r\n if (url.indexOf('?') >= 0) {\r\n // there is search string already in the url\r\n path = url.substring(0, url.indexOf('?'));\r\n search = url.substring(url.indexOf('?'));\r\n if (search.indexOf('#') >= 0) {\r\n // there is also a hash string in the url\r\n hash = search.substring(search.indexOf('#'));\r\n search = search.substring(0, search.indexOf('#'));\r\n }\r\n } else if (url.indexOf('#') >= 0 && url.indexOf('#') != url.indexOf('#/')) {\r\n // no search string, but there is hash string\r\n path = url.substring(0, url.indexOf('#'));\r\n hash = url.substring(url.indexOf('#'));\r\n } else {\r\n // no search string, no hash string\r\n path = url ? url : '';\r\n }\r\n return {\r\n path: path, // path also includes the protocol and hostname (if they existed in the given url)\r\n search: search,\r\n hash: hash\r\n }\r\n }\r\n\r\n // Adds a new query string parameter into the given url.\r\n // Returns the newly constructed url.\r\n function putParamIntoUrl(paramName, paramValue, url) {\r\n // first we'll split the url into 3 components\r\n var urlComp = decomposeUrl(url);\r\n // add the new query string parameter into search string\r\n urlComp.search = (urlComp.search ? urlComp.search + '&' : '?') + paramName + '=' + encodeURIComponent(paramValue);\r\n // return the new url\r\n return urlComp.path + urlComp.search + urlComp.hash;\r\n }\r\n\r\n // Reads the specified query string parameter from a given url.\r\n // Returns the value of that parameter (a string value). \r\n function getParamFromUrl(paramName, url) {\r\n return parseQueryParamsFromUrl(url)[paramName];\r\n }\r\n\r\n // Modifies the given DOM element's href property, or the current page's URL (if\r\n // no domElement has been given) by adding new query string parameter with the\r\n // given value. \r\n function pushParamIntoLink(paramName, paramValue, domElement) {\r\n var url;\r\n if (domElement) url = $(domElement).attr('href'); // url from DOM element\r\n else url = window.location.href; // current page url\r\n\r\n var params = parseQueryParamsFromUrl(url);\r\n\r\n // making sure that we find the parameter no matter how it's written (case insensitive)\r\n for (var p in params) {\r\n if (p.toLowerCase() === paramName.toLowerCase()) {\r\n paramName = p;\r\n break;\r\n }\r\n }\r\n\r\n params[paramName] = paramValue; // update (or add) the parameter\r\n var newSearchString = $.param(params); // and construct a new search string.\r\n\r\n var urlComp = decomposeUrl(url);\r\n if (domElement) {\r\n // set new href property on DOM element\r\n var newHref = urlComp.path + (newSearchString ? ('?' + newSearchString) : '') + urlComp.hash;\r\n $(domElement).attr('href', newHref);\r\n } else {\r\n if (history && history.pushState) { // because some older browsers (IE 9 or older) don't support this\r\n // for other pages put new URL to browser's address bar using window.history\r\n history.replaceState(\r\n null,\r\n null,\r\n urlComp.path +\r\n (newSearchString ? ('?' + newSearchString) : '') +\r\n urlComp.hash\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Reads the query string parameter from the domElement's href property, or from\r\n // the current page's URL (if no domElement has been given). Removes the parameter\r\n // from the URL and puts new URL into the domElement's href property, or into the\r\n // browser's address bar.\r\n // Returns the value of that parameter (a string value).\r\n function popParamFromLink(paramName, domElement) {\r\n var url;\r\n if (domElement) url = $(domElement).attr('href'); // url from DOM element\r\n else url = window.location.href; // current page url\r\n\r\n var params = parseQueryParamsFromUrl(url);\r\n var retVal;\r\n\r\n // making sure that we find the parameter no matter how it's written (case insensitive)\r\n for (var p in params) {\r\n if (p.toLowerCase() === paramName.toLowerCase()) {\r\n paramName = p;\r\n break;\r\n }\r\n }\r\n\r\n if (params[paramName]) {\r\n // the requested parameter exists in the url\r\n retVal = params[paramName]; // Its value will be returned from the function.\r\n delete params[paramName]; // Remove the parameter from the array,\r\n var newSearchString = $.param(params); // and construct a new search string.\r\n var urlComp = decomposeUrl(url);\r\n if (domElement) {\r\n // set new href property on DOM element\r\n var newHref = urlComp.path + (newSearchString ? ('?' + newSearchString) : '') + urlComp.hash;\r\n $(domElement).attr('href', newHref);\r\n } else {\r\n if (history && history.pushState) { // because some older browsers (IE 9 or older) don't support this\r\n // for other pages put new URL to browser's address bar using window.history\r\n history.replaceState(\r\n null,\r\n null,\r\n urlComp.path +\r\n (newSearchString ? ('?' + newSearchString) : '') +\r\n urlComp.hash\r\n );\r\n }\r\n }\r\n }\r\n return retVal;\r\n }\r\n\r\n\r\n return {\r\n parseQueryParamsFromUrl: parseQueryParamsFromUrl,\r\n decomposeUrl: decomposeUrl,\r\n putParamIntoUrl: putParamIntoUrl,\r\n getParamFromUrl: getParamFromUrl,\r\n pushParamIntoLink: pushParamIntoLink,\r\n popParamFromLink: popParamFromLink\r\n }\r\n });\r\n\n","define('LearningLibrarySearchResults/searchCount',[ \r\n],\r\n function () {\r\n \r\n function displayCountResults(count, keyword, tagsInfo) { \r\n if (!$(\"#searchCount\").length) return;\r\n if (count)\r\n $(\"#searchCount\").html($(\"#searchCountComponent\").data(\"resultsCountText\").replace(\"{count}\", count));\r\n if (keyword)\r\n $(\"#searchKeywordTag\").html($(\"#searchCountComponent\").data(\"resultsKeywordText\").replace(\"{keywords}\", generateTagSpans(keyword, null)));\r\n else\r\n $(\"#searchKeywordTag\").html(\"\"); \r\n if (tagsInfo && tagsInfo.length > 0)\r\n $(\"#searchTags\").html($(\"#searchCountComponent\").data(\"resultsTagsText\").replace(\"{tags}\", generateTagSpans(null, tagsInfo)));\r\n else\r\n $(\"#searchTags\").html(\"\");\r\n }\r\n\r\n tagSpanClick = function (element) { \r\n var id = $(element).data(\"value\"); \r\n if ($(element).hasClass(\"remove-keyboard-span\")) {\r\n $(\"#searchkeywordstxt\").val(\"\");\r\n $(\"#searchkeywordicon\").trigger(\"click\"); \r\n }\r\n else if ($(element).hasClass(\"remove-tag-span\")) { \r\n $(\"#\" + id).trigger(\"click\"); \r\n } \r\n\r\n $(element).parent().remove();\r\n }\r\n\r\n function generateTagSpans(keyword, tags) { \r\n var tagSpans = \"\";\r\n if (keyword) {\r\n tagSpans = '' + keyword + '';\r\n }\r\n if (tags) {\r\n for (var i = 0; i < tags.length; i++) {\r\n var tagInfo = tags[i];\r\n tagSpans += '' + tagInfo.TagGroupName + ': ' + tagInfo.TagText + '';\r\n }\r\n }\r\n\r\n return tagSpans;\r\n }\r\n\r\n return {\r\n displayCountResults: displayCountResults\r\n };\r\n});\r\n\n","define('common/formUtils',[\r\n],\r\n function () {\r\n\r\n // Clears and deactivates all invalid feedback text on form fields\r\n function clearInvalidFeedback(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .is-invalid\").removeClass(\"is-invalid\");\r\n $(formId + \" .invalid-feedback\").empty();\r\n }\r\n\r\n // Fills in and activates invalid feedback text on form fields\r\n function displayInvalidFeedback(invalidFields, formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n if (invalidFields) {\r\n invalidFields.forEach(function (fieldMessage) {\r\n var field = $(formId + \" [name='\" + fieldMessage.FieldName + \"']\");\r\n field.addClass(\"is-invalid\");\r\n field.siblings(\".invalid-feedback\").append(fieldMessage.MessageText);\r\n });\r\n }\r\n }\r\n\r\n // Collects the data from all form fields and returns them as object,\r\n // using \"name\" attribute values from form fields as object property names.\r\n function collectFormData(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n // the serializeArray() jQuery method doesn't take the values from disabled fields, so first I'll\r\n // temporarily enable all disabled fields, and then disable them again\r\n var disabledFields = $(formId).find(\":input:disabled\").prop(\"disabled\", false);\r\n var serializedData = $(formId).serializeArray();\r\n disabledFields.prop(\"disabled\", true);\r\n var formData = {};\r\n serializedData.forEach(function (data) {\r\n formData[data.name] = data.value;\r\n });\r\n // serializeArray does not return anything for unchecked checkboxes, so we'll add them now with value false\r\n $(formId + \" input[type='checkbox']:not(:checked)\").each(function (index, element) {\r\n formData[element.name] = false;\r\n });\r\n // serializeArray returns \"on\" for checked checkboxes, so we'll set them to true now\r\n $(formId + \" input[type='checkbox']:checked\").each(function (index, element) {\r\n formData[element.name] = true;\r\n });\r\n return formData;\r\n }\r\n\r\n // Goes through all input elements on the form and fills them with data from the\r\n // given object, matching \"name\" attribute of the input element with object property name.\r\n function populateFormWithData(formId, data) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").each(function (index, element) { \r\n if (element.type === \"radio\" ||\r\n element.type === \"checkbox\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).prop(\"checked\", $(element).val().toString() === data[element.name].toString());\r\n }\r\n else if (element.type === \"text\" ||\r\n element.type === \"email\" ||\r\n element.type === \"tel\" ||\r\n element.type === \"password\" ||\r\n element.type === \"textarea\" ||\r\n element.type === \"select-one\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).val(data[element.name]);\r\n else\r\n $(element).val(null);\r\n }\r\n });\r\n }\r\n\r\n function disableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", true);\r\n }\r\n\r\n function enableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", false);\r\n }\r\n\r\n function initializeFloatingLabels(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .floating-label-container\").each(function (index, element) {\r\n var inputElement = $(element).find(\":input\")[0];\r\n if (inputElement.value) $(element).addClass(\"active\");\r\n else $(element).removeClass(\"active\");\r\n });\r\n }\r\n\r\n //adds the form token to the object for use with [ValidateAntiforgeryToken] attribute\r\n function useToken(data) { \r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n data.__RequestVerificationToken = token;\r\n }\r\n\r\n return {\r\n clearInvalidFeedback: clearInvalidFeedback,\r\n displayInvalidFeedback: displayInvalidFeedback,\r\n collectFormData: collectFormData,\r\n populateFormWithData: populateFormWithData,\r\n disableFields: disableFields,\r\n enableFields: enableFields,\r\n initializeFloatingLabels: initializeFloatingLabels,\r\n useToken: useToken\r\n };\r\n });\r\n\n","define('LearningLibrarySearchResults/learningLibrarySearchResults',[\r\n \"common/urlUtils\", \r\n \"LearningLibrarySearchResults/searchCount\",\r\n \"common/formUtils\"\r\n],\r\n function (urlUtils, searchCount, formUtils) {\r\n\r\n var lastSearch;\r\n var firstLoad = true;\r\n\r\n function getSearchResults(keyword, topics, tags, contentTypes, pageNumber, tagsInfo, scrollToTop) { \r\n var queryParams = urlUtils.parseQueryParamsFromUrl();\r\n setParametersOnResultsComponent(queryParams, keyword, topics, tags, contentTypes);\r\n var searchParams = getSearchParams(queryParams, pageNumber); \r\n var setSearchParamsIntoUrl = $(\"#search-results-container\").data(\"putSearchParametersIntoUrl\");\r\n setUrlWithoutPageLoading(searchParams, queryParams, setSearchParamsIntoUrl);\r\n if (firstLoad) {\r\n firstLoad = false;\r\n refreshSearchCountComponent(searchParams.Keyword, tagsInfo, searchParams);\r\n refreshFacetsCount();\r\n HandlePagingText();\r\n return;\r\n }\r\n \r\n lastSearch = searchParams; \r\n var placeholdersDiv = $(\".placeholders\").clone(); \r\n $(\"#search-results\").find('div:not(\".search-paging\")').remove();\r\n $(\"#search-results\").prepend(placeholdersDiv); \r\n $(\"#search-results .placeholders\").css(\"display\", \"\"); \r\n if (scrollToTop)\r\n $(\"#content\").get(0).scrollIntoView(); \r\n formUtils.useToken(searchParams);\r\n \r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/customapi/LearningLibrary/LearningLibraryAjaxSearchResults\",\r\n dataType: \"text\",\r\n data: searchParams,\r\n success: function (data) { \r\n if (lastSearch !== searchParams) {\r\n return;\r\n } \r\n $(\"#search-results\").html(data); \r\n refreshSearchCountComponent(searchParams.Keyword, tagsInfo, searchParams);\r\n refreshFacetsCount();\r\n //if (scrollToTop)\r\n // $(\"#content\").get(0).scrollIntoView(); \r\n var hasResults = $(\"#hdnSearchHasResults\").val();\r\n if (hasResults == \"False\")\r\n $(\".no-results\").show();\r\n else\r\n $(\".no-results\").hide();\r\n HandlePagingText();\r\n },\r\n error: function (jq, status, errorThrown) {\r\n if (lastSearch !== searchParams) {\r\n return;\r\n }\r\n },\r\n complete: function () { \r\n if (lastSearch !== searchParams) {\r\n return;\r\n }\r\n $(\"#search-results .placeholders\").hide(); \r\n }\r\n });\r\n }\r\n\r\n function refreshFacetsCount() { \r\n $('span[id^=\"span_\"]').each(function (index, element) { \r\n $(element).text(\"\"); \r\n }); \r\n\r\n if (resultFacets) {\r\n for (var i = 0; i < resultFacets.length; i++) {\r\n var facet = resultFacets[i];\r\n var facetTextElement = $(\"#span_\" + facet.Name); \r\n if (facetTextElement.length) {\r\n if (facet.Count != 0)\r\n facetTextElement.text(\" (\" + facet.Count + \")\");\r\n else\r\n facetTextElement.text(\"\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getTagInfoObjects(queryParam, tagsInfo) {\r\n if (queryParam) {\r\n const urlParamSeparator = \"|\";\r\n var parameterValues = queryParam.split(urlParamSeparator); \r\n for (var i = 0; i < parameterValues.length; i++) {\r\n $(\"#\" + parameterValues[i]).prop(\"checked\", true); \r\n var spantextElement = $(\"#spantext_\" + parameterValues[i]);\r\n if (spantextElement.length) {\r\n var label = $(\"#spantext_\" + parameterValues[i]).text();\r\n tagsInfo.push({ \"TagId\": $(\"#\" + parameterValues[i]).val(), \"TagGroupName\": $(\"#\" + parameterValues[i]).attr(\"title\"), \"TagText\": label });\r\n }\r\n }\r\n }\r\n }\r\n\r\n function refreshSearchCountComponent(keyword, tagsInfo, searchParams) { \r\n if (tagsInfo == null || tagsInfo == undefined) {\r\n tagsInfo = [];\r\n if (searchParams.Tags)\r\n getTagInfoObjects(searchParams.Tags, tagsInfo);\r\n if (searchParams.ContentTypes)\r\n getTagInfoObjects(searchParams.ContentTypes, tagsInfo); \r\n }\r\n searchCount.displayCountResults($(\"#hdnTotalResults\").val(), keyword, tagsInfo);\r\n }\r\n\r\n function setUrlWithoutPageLoading(searchParams, queryParams, setSearchParamsIntoUrl) { \r\n var url = window.location.pathname;\r\n if (setSearchParamsIntoUrl == \"True\") {\r\n if (searchParams.Keyword)\r\n url = urlUtils.putParamIntoUrl(\"keyword\", searchParams.Keyword, url);\r\n //to remove topics from url comment this\r\n //if (searchParams.Topics)\r\n // url = urlUtils.putParamIntoUrl(\"topics\", searchParams.Topics, url); \r\n if (searchParams.Tags)\r\n url = urlUtils.putParamIntoUrl(\"tags\", searchParams.Tags, url);\r\n if (searchParams.ContentTypes) { \r\n if (searchParams.ContentTypes != $(\"#search-results-container\").data(\"predefinedContentTypes\"))\r\n url = urlUtils.putParamIntoUrl(\"contenttypes\", searchParams.ContentTypes, url); \r\n }\r\n }\r\n\r\n if (searchParams.PageNumber) \r\n url = urlUtils.putParamIntoUrl(\"page\", (searchParams.PageNumber + 1).toString(), url);\r\n \r\n history.replaceState(\"\", document.title, url);\r\n }\r\n\r\n function HandlePagingText() {\r\n $(\"#paging-first\").text($(\"#search-results-container\").data(\"pagingFirst\"));\r\n $(\"#paging-previous\").text($(\"#search-results-container\").data(\"pagingPrevious\"));\r\n $(\"#paging-next\").text($(\"#search-results-container\").data(\"pagingNext\"));\r\n $(\"#paging-last\").text($(\"#search-results-container\").data(\"pagingLast\"));\r\n }\r\n\r\n function htmlEncode(value) {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n return $('
').text(value).html();\r\n }\r\n\r\n function htmlDecode(value) {\r\n return $('
').html(value).text();\r\n }\r\n\r\n function setParametersOnResultsComponent(queryParams, keyword, topics, tags, contentTypes) { \r\n if (queryParams) {\r\n if (!$.isEmptyObject(queryParams)) {\r\n if (queryParams.keyword)\r\n $(\"#search-results-container\").data(\"keyword\", htmlEncode(queryParams.keyword)); \r\n if (queryParams.topics)\r\n $(\"#search-results-container\").data(\"topics\", queryParams.topics);\r\n if (queryParams.tags)\r\n $(\"#search-results-container\").data(\"tags\", queryParams.tags);\r\n if (queryParams.contenttypes)\r\n $(\"#search-results-container\").data(\"contentTypes\", queryParams.contenttypes);\r\n }\r\n }\r\n \r\n if (keyword != null)\r\n $(\"#search-results-container\").data(\"keyword\", htmlEncode(keyword));\r\n if (topics != null)\r\n $(\"#search-results-container\").data(\"topics\", topics);\r\n if (tags != null)\r\n $(\"#search-results-container\").data(\"tags\", tags);\r\n if (contentTypes != null)\r\n $(\"#search-results-container\").data(\"contentTypes\", contentTypes);\r\n }\r\n\r\n function getSearchParams(queryParams, pageNumber) { \r\n var mustHaveAnyTopicString = $(\"#search-results-container\").data(\"mustHaveAnyTopic\");\r\n var mustHaveAnyTopic = false;\r\n if (mustHaveAnyTopicString && mustHaveAnyTopicString == \"True\")\r\n mustHaveAnyTopic = true;\r\n\r\n var productSupportContentOnlyString = $(\"#search-results-container\").data(\"productSupportContentOnly\");\r\n var productSupportContentOnly = false;\r\n if (productSupportContentOnlyString && productSupportContentOnlyString == \"True\")\r\n productSupportContentOnly = true;\r\n\r\n var searchParams = {\r\n \"Keyword\": htmlDecode($(\"#search-results-container\").data(\"keyword\")),\r\n \"PageSize\": $(\"#search-results-container\").data(\"pageSize\"),\r\n \"Topics\": $(\"#search-results-container\").data(\"topics\"),\r\n \"Tags\": $(\"#search-results-container\").data(\"tags\"),\r\n \"ContentTypes\": $(\"#search-results-container\").data(\"contentTypes\"),\r\n \"NumberOfTilesPerRow\": $(\"#search-results-container\").data(\"numberOfTilesInRow\"),\r\n \"MustHaveAnyTopic\": mustHaveAnyTopic,\r\n \"ProductSupportContentOnly\": productSupportContentOnly\r\n };\r\n\r\n if (queryParams.page)\r\n searchParams.PageNumber = parseInt(queryParams.page) -1;\r\n if (pageNumber != null && pageNumber != undefined)\r\n searchParams.PageNumber = pageNumber; \r\n if (!searchParams.ContentTypes)\r\n searchParams.ContentTypes = $(\"#search-results-container\").data(\"predefinedContentTypes\");\r\n\r\n return searchParams;\r\n }\r\n\r\n goToPage = function (pageNumber) {\r\n getSearchResults(null, null, null, null, pageNumber, null, true);\r\n }\r\n\r\n return {\r\n getSearchResults: getSearchResults\r\n };\r\n});\r\n\n","define('SearchKeywords/searchKeywords',[\r\n \"LearningLibrarySearchResults/learningLibrarySearchResults\"\r\n],\r\nfunction (learningLibrarySearchResults) {\r\n \r\n function init() { \r\n $(\"#searchkeywordstxt\").off(\"keyup\").on(\"keyup\", keywordInputChanged); \r\n $(\"#searchkeywordicon\").off(\"click\").on(\"click\", searchIconClick);\r\n }\r\n\r\n function searchIconClick() {\r\n executeSearch();\r\n }\r\n\r\n function keywordInputChanged(event) {\r\n if (event.key === \"Enter\")\r\n executeSearch(); \r\n }\r\n\r\n function executeSearch() { \r\n var navigateTo = $(\"#searchkeywordstxt\").data(\"navigateTo\");\r\n if (navigateTo) {\r\n window.location.href = navigateTo + \"?keyword=\" + $(\"#searchkeywordstxt\").val();\r\n return;\r\n }\r\n\r\n learningLibrarySearchResults.getSearchResults($(\"#searchkeywordstxt\").val(), null, null, null, 0);\r\n }\r\n \r\n return {\r\n init: init \r\n };\r\n});\r\n\n","require([\r\n \"SearchKeywords/searchKeywords\"\r\n],\r\n function (searchKeywords) { \r\n searchKeywords.init();\r\n });\r\n\ndefine(\"SearchKeywords/main\", function(){});\n\n"]}