PageSourceSearch

https://www.gcsaa.org/Frontend-Assembly/Telerik.Sitefinity.Fronten…/Search-box.js?v=LTUyNTc3NTAyNA%3d%3d

js gcsaa.org collected 2026-10-02 05:17:00 UTC 8,057 bytes, 195 lines download raw bytes

1(function ($) {
2    var init = function () {
3        var searchBoxIdFields = $('[data-sf-role="searchTextBoxId"]');
4
5        for (var i = 0; i < searchBoxIdFields.length; i++) {
6            var searchBoxIdField = $(searchBoxIdFields[i]);
7            var controlServerData = {
8                resultsUrl: searchBoxIdField.siblings('[data-sf-role="resultsUrl"]').first().val(),
9                indexCatalogue: searchBoxIdField.siblings('[data-sf-role="indexCatalogue"]').first().val(),
10                disableSuggestions: $.parseJSON(searchBoxIdField.siblings('[data-sf-role="disableSuggestions"]').first().val()),
11                minSuggestionLength: searchBoxIdField.siblings('[data-sf-role="minSuggestionLength"]').first().val(),
12                suggestionFields: searchBoxIdField.siblings('[data-sf-role="suggestionFields"]').first().val(),
13                language: searchBoxIdField.siblings('[data-sf-role="language"]').first().val(),
14                siteId: searchBoxIdField.siblings('[data-sf-role="siteId"]').first().val(),
15                suggestionsRoute: searchBoxIdField.siblings('[data-sf-role="suggestionsRoute"]').first().val(),
16                searchTextBoxSelector: searchBoxIdField.val(),
17                searchButtonSelector: searchBoxIdField.siblings('[data-sf-role="searchButtonId"]').first().val(),
18                scoringSettingsSelector: searchBoxIdField.siblings('[data-sf-role="scoringSettings"]').first().val(),
19                resultsForAllSites: searchBoxIdField.siblings('[data-sf-role="searchInAllSitesInTheIndex"]').first().val(),
20            };
21            featherSearchBoxWidget(controlServerData);
22        }
23
24        function featherSearchBoxWidget(serverData) {
25            var searchTextBox = $(serverData.searchTextBoxSelector),
26                searchButton = $(serverData.searchButtonSelector);
27
28            searchButton.click(navigateToResults);
29            searchTextBox.keypress(keypressHandler);
30
31            /* Initialization */
32            if (!serverData.disableSuggestions) {
33                searchTextBox.keyup(keyupHandler);
34
35                try {
36                    searchTextBox.autocomplete({
37                        source: [],
38                        messages:
39                        {
40                            noResults: '',
41                            results: function () { }
42                        },
43                        select: function (event, ui) {
44                            searchTextBox.val(ui.item.value);
45                            navigateToResults(event);
46                        },
47                    }).autocomplete("widget").addClass("sf-autocomplete");
48                } catch (e) {
49                    // Fixes jQuery bug, causing IE7 to throw error "script3 member not found".
50                    // The try/catch can be removed when the bug is fixed.
51                }
52            }
53
54            /* Event handlers */
55            function keypressHandler(e) {
56                if (!e)
57                    e = window.event;
58
59                var keyCode = null;
60                if (e.keyCode) {
61                    keyCode = e.keyCode;
62                }
63                else {
64                    keyCode = e.charCode;
65                }
66
67                if (keyCode == 13) {
68                    navigateToResults(e);
69                }
70            }
71
72            function toAscii(str) {
73                return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
74            }
75
76            function suggestionsSuccessHandler(result) {
77                var dataSource = result.Suggestions;
78
79                searchTextBox.autocomplete({
80                    minLength: 0,
81                    source: function (request, response) {
82                        var term = toAscii(request.term.toLowerCase());
83                        response(dataSource.filter(function (item) {
84                            return toAscii(item.toLowerCase()).indexOf(term) !== -1;
85                        }));
86                    }
87                });
88
89                searchTextBox.autocomplete("search", searchTextBox.val().trim());
90            }
91
92            function keyupHandler(e) {
93                if (e.keyCode != 38 &&  // up arrow
94                    e.keyCode != 40 && // down arrow
95                    e.keyCode != 27) { // esc
96
97                    var request = {};
98                    var searchText = searchTextBox.val().trim();
99                    if (searchText.length >= serverData.minSuggestionLength) {
100                        request.IndexName = serverData.indexCatalogue;
101                        request.SuggestionFields = serverData.suggestionFields;
102                        request.Text = searchText;
103                        request.Language = serverData.language;
104                        request.SiteId = serverData.siteId;
105                        if (serverData.resultsForAllSites) {
106                            request.ResultsForAllSites = serverData.resultsForAllSites;
107                        }
108
109                        if (serverData.scoringSettingsSelector) {
110
111                            request.ScoringInfo = serverData.scoringSettingsSelector;
112                        }
113
114                        $.ajax({
115                            type: "GET",
116                            url: serverData.suggestionsRoute,
117                            dataType: 'json',
118                            data: request,
119                            success: suggestionsSuccessHandler
120                        });
121                    }
122                }
123            }
124
125            /* Helper methods */
126            function navigateToResults(e) {
127                if (!e)
128                    e = window.event;
129
130                if (e.stopPropagation) {
131                    e.stopPropagation();
132                }
133                else {
134                    e.cancelBubble = true;
135                }
136                if (e.preventDefault) {
137                    e.preventDefault();
138                }
139                else {
140                    e.returnValue = false;
141                }
142
143                var query = searchTextBox.val();
144
145                if (query && query.trim() && serverData.indexCatalogue) {
146                    sendSentence();
147                    window.location = getLocation();
148                }
149            }
150
151            function getLocation() {
152                var query = searchTextBox.val().trim();
153
154                var separator = (serverData.resultsUrl.indexOf("?") == -1) ? "?" : "&";
155
156                var catalogueParam = separator + "indexCatalogue=" + encodeURIComponent(serverData.indexCatalogue);
157                var searchQueryParam = "&searchQuery=" + encodeURIComponent(query);
158
159                var url = serverData.resultsUrl + catalogueParam + searchQueryParam;
160
161                if (serverData.scoringSettingsSelector) {
162                    url = url + "&scoringInfo=" + serverData.scoringSettingsSelector;
163                }
164
165                if (serverData.resultsForAllSites) {
166                    url = url + "&resultsForAllSites=" + serverData.resultsForAllSites;
167                }
168
169                return url;
170            }
171
172            function sendSentence() {
173                if (window.DataIntelligenceSubmitScript) {
174                    DataIntelligenceSubmitScript._client.fetchClient.sendInteraction({
175                        P: "Search for",
176                        O: searchTextBox.val(),
177                        OM: {
178                            PageUrl: location.href
179                        }
180                    });
181                }
182            }
183        }
184    };
185
186    if (window.personalizationManager) {
187        window.personalizationManager.addPersonalizedContentLoaded(function () {
188            init();
189        });
190    } else {
191        document.addEventListener('DOMContentLoaded', function () {
192            init();
193        });
194    }
195}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.