PageSourceSearch

https://www.camponline.com/Frontend-Assembly/Telerik.Sitefinity.Fr…/Search-box.js?v=MTUuMS44MzAwLjA%3d

js camponline.com collected 2026-09-29 05:13:11 UTC 7,885 bytes, 188 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 suggestionsSuccessHandler(result, args) {
73                var dataSource = result.Suggestions;
74                searchTextBox.autocomplete('option', 'source', dataSource);
75
76                searchTextBox.autocomplete("search", searchTextBox.val().trim());
77            }
78
79            function keyupHandler(e) {
80                if (e.keyCode != 38 &&  // up arrow
81                    e.keyCode != 40 && // down arrow
82                    e.keyCode != 27) { // esc
83                    // When the auto complete menu is shown, only this event is detected
84                    if (e.keyCode == 13) {
85                        // when enter is pressed
86                        navigateToResults(e);
87                    }
88
89                    var request = {};
90                    var searchText = searchTextBox.val().trim();
91                    if (searchText.length >= serverData.minSuggestionLength) {
92                        request.IndexName = serverData.indexCatalogue;
93                        request.SuggestionFields = serverData.suggestionFields;
94                        request.Text = searchText;
95                        request.Language = serverData.language;
96                        request.SiteId = serverData.siteId;
97                        if (serverData.resultsForAllSites) {
98                            request.ResultsForAllSites = serverData.resultsForAllSites;
99                        }
100
101                        if (serverData.scoringSettingsSelector) {
102
103                            request.ScoringInfo = serverData.scoringSettingsSelector;
104                        }
105
106                        $.ajax({
107                            type: "GET",
108                            url: serverData.suggestionsRoute,
109                            dataType: 'json',
110                            data: request,
111                            success: suggestionsSuccessHandler
112                        });
113                    }
114                }
115            }
116
117            /* Helper methods */
118            function navigateToResults(e) {
119                if (!e)
120                    e = window.event;
121
122                if (e.stopPropagation) {
123                    e.stopPropagation();
124                }
125                else {
126                    e.cancelBubble = true;
127                }
128                if (e.preventDefault) {
129                    e.preventDefault();
130                }
131                else {
132                    e.returnValue = false;
133                }
134
135                var query = searchTextBox.val();
136
137                if (query && query.trim() && serverData.indexCatalogue) {
138                    sendSentence();
139                    window.location = getLocation();
140                }
141            }
142
143            function getLocation() {
144                var query = searchTextBox.val().trim();
145
146                var separator = (serverData.resultsUrl.indexOf("?") == -1) ? "?" : "&";
147
148                var catalogueParam = separator + "indexCatalogue=" + encodeURIComponent(serverData.indexCatalogue);
149                var searchQueryParam = "&searchQuery=" + encodeURIComponent(query);
150
151                var url = serverData.resultsUrl + catalogueParam + searchQueryParam;
152
153                if (serverData.scoringSettingsSelector) {
154                    url = url + "&scoringInfo=" + serverData.scoringSettingsSelector;
155                }
156
157                if (serverData.resultsForAllSites) {
158                    url = url + "&resultsForAllSites=" + serverData.resultsForAllSites;
159                }
160
161                return url;
162            }
163
164            function sendSentence() {
165                if (window.DataIntelligenceSubmitScript) {
166                    DataIntelligenceSubmitScript._client.sentenceClient.writeSentence({
167                        predicate: "Search for",
168                        object: searchTextBox.val(),
169                        objectMetadata: [{
170                            'K': 'PageUrl',
171                            'V': location.href
172                        }]
173                    });
174                }
175            }
176        }
177    };
178
179    if (window.personalizationManager) {
180        window.personalizationManager.addPersonalizedContentLoaded(function () {
181            init();
182        });
183    } else {
184        document.addEventListener('DOMContentLoaded', function () {
185            init();
186        });
187    }
188}(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.