PageSourceSearch

https://www.cabarruscounty.us/Telerik.Web.UI.WebResource.axd?_TSM_…e443-f2ef-457b-94fb-857d92f72782%3a8e1d32bf

js cabarruscounty.us collected 2026-09-27 20:55:42 UTC 10,071 bytes, 264 lines download raw bytes

1/* START OpenCities.CustomControls.LanguageSelector.Language.js */
2var langCookies;
3
4function getToolbarLanguageItem(element) {
5    return $(element).closest(".toolbar-item.toolbar-language");
6}
7
8function syncDropdownAriaSelection($selectedLink) {
9    var $item = $selectedLink && $selectedLink.length
10        ? getToolbarLanguageItem($selectedLink)
11        : $();
12    var $button = $item.length
13        ? $item.find(".toolbar-button-language")
14        : $(".toolbar-button-language");
15    var $options = $item.length
16        ? getDropdownOptions($item)
17        : getDropdownOptions(getToolbarLanguageItem($button));
18    $options.attr("aria-selected", "false");
19
20    if (!$selectedLink || $selectedLink.length === 0) {
21        $button.removeAttr("aria-activedescendant");
22        return;
23    }
24
25    $selectedLink.attr("aria-selected", "true");
26    var selectedOptionId = $selectedLink.attr("id");
27    if (selectedOptionId) {
28        $button.attr("aria-activedescendant", selectedOptionId);
29    }
30}
31
32function getDropdownOptions($toolbarItem) {
33    if (!$toolbarItem || !$toolbarItem.length) {
34        return $();
35    }
36    return $toolbarItem.find(".toolbar-language-drop-down a[role='option']");
37}
38
39function focusDropdownOptionByIndex(index, $toolbarItem) {
40    var $options = getDropdownOptions($toolbarItem);
41    if ($options.length === 0) {
42        return;
43    }
44
45    if (index < 0) {
46        index = $options.length - 1;
47    }
48    if (index >= $options.length) {
49        index = 0;
50    }
51
52    var $option = $options.eq(index);
53    syncDropdownAriaSelection($option);
54    $option.focus();
55
56    var optionElement = $option.get(0);
57    if (optionElement && optionElement.scrollIntoView) {
58        optionElement.scrollIntoView({ block: "nearest" });
59    }
60}
61
62function getOptionIndexFromElement(element, $toolbarItem) {
63    var $option = $(element).closest("a[role='option']");
64    if ($option.length === 0) {
65        return -1;
66    }
67
68    var optionNodes = getDropdownOptions($toolbarItem).get();
69    return optionNodes.indexOf($option[0]);
70}
71
72function closeLanguageDropdownAndFocusButton(context) {
73    var $item = context ? getToolbarLanguageItem(context) : $(".toolbar-item.toolbar-language").first();
74    var $button = $item.find(".toolbar-button-language");
75    if ($button.attr("aria-expanded") === "true") {
76        $button.trigger("click");
77    }
78    $button.removeAttr("aria-activedescendant");
79    $button.focus();
80}
81
82function getCurrentLanguageOption($container, selector) {
83    var currentLanguageOption = $container.find(selector).filter(function () {
84        var language = $(this).attr("data-translate-to").toLowerCase();
85        var userSelectedLang = OpenCities.Settings.Application.LanguageSettings.UserLanguage.toLowerCase();
86        return language == userSelectedLang || language.startsWith(userSelectedLang) || userSelectedLang.startsWith(language);
87    });
88
89    if (currentLanguageOption && currentLanguageOption.length > 0) {
90        return currentLanguageOption.first();
91    }
92
93    return $();
94}
95
96function getOptionDisplayText($option) {
97    return $option.clone().children("span.visuallyhidden").remove().end().text();
98}
99
100function updateUserSelectedLanguageText() {
101    $(".toolbar-item.toolbar-language").each(function () {
102        var $item = $(this);
103        var $button = $item.find(".toolbar-button-language");
104        var $currentLanguage = getCurrentLanguageOption($item, ".toolbar-language-drop-down a[role='option']");
105
106        if ($currentLanguage.length) {
107            var languageText = getOptionDisplayText($currentLanguage);
108            $button.find(".current-language").text(languageText);
109            if ($button.find(".current-language").next(".visuallyhidden").length === 0) {
110                $button.find(".current-language").after("<span class=\"visuallyhidden\"> is your current preferred language.</span>");
111            }
112
113            $currentLanguage.closest("li").remove();
114            $button.removeAttr("aria-activedescendant");
115
116            if (getDropdownOptions($item).length === 0) {
117                $button.prop("disabled", true);
118                $button.find("i").remove();
119                $button.find(".toolbar-language-globe-icon").remove();
120                $item.find(".toolbar-language-drop-down").remove();
121            }
122        }
123
124        var $currentLanguageLink = getCurrentLanguageOption($item, ".toolbar-language-links a");
125        if ($currentLanguageLink.length) {
126            $currentLanguageLink.find("span.visuallyhidden").remove();
127            var languageCode = $currentLanguageLink.attr("data-translate-to");
128            var languageText = $currentLanguageLink.text();
129            var currentLanguagelink = $item.find(".toolbar-language-links").find(".lang-" + languageCode);
130            var currentLanguageSpan = $("<span class=\"lang-item current-language\"></span>");
131            currentLanguageSpan.addClass("lang-" + languageCode);
132            currentLanguageSpan.attr("lang", currentLanguagelink.attr("lang"));
133            currentLanguageSpan.append(languageText + "<span class=\"visuallyhidden\"> is your current preferred language.</span>");
134            currentLanguagelink.replaceWith(currentLanguageSpan);
135        }
136    });
137}
138
139function googleTranslateElementInit() {
140    var pageLang = OpenCities.Settings.Application.LanguageSettings.PageLanguage;
141    if (pageLang !== 'zh-CN' && pageLang !== 'zh-TW') {
142        pageLang = pageLang.split('-')[0];
143    }
144    var userLang = OpenCities.Settings.Application.LanguageSettings.UserLanguage;
145    if (userLang !== 'zh-CN' && userLang !== 'zh-TW') {
146        userLang = userLang.split('-')[0];
147    }
148    var alwaysRun = OpenCities.Settings.Application.LanguageSettings.Always;
149    var runTranslate = true;
150    if (!alwaysRun) {
151        runTranslate = false;
152        var checkLang = $('html').attr('lang').split('-')[0];
153        $("*[lang]").each(function () {
154            var newLang = $(this).attr('lang').split('-')[0];
155            if (checkLang !== newLang) {
156                runTranslate = true;
157                return false;
158            }
159        });
160    }
161    if (!runTranslate) {
162        return;
163    }
164    new google.translate.TranslateElement(
165        {
166            pageLanguage: pageLang,
167            includedLanguages: userLang,
168            layout: google.translate.TranslateElement.FloatPosition.TOP_LEFT, multilanguagePage: true
169        },
170        'google_translate_element');
171    $('.toolbar-language .current-language').addClass('google-translate-language');
172    // Update match height after google translate runs
173    setTimeout(function () { $.fn.matchHeight._update(); }, 2000);
174}
175
176$(function () {
177    $(document).on("click", ".toolbar-language-drop-down a[role='option']", function () {
178        syncDropdownAriaSelection($(this));
179    });
180
181    $(document).on("keydown", ".toolbar-button-language", function (e) {
182        var key = e.key || { 38: "ArrowUp", 40: "ArrowDown", 27: "Escape" }[e.keyCode];
183        if (key !== "ArrowDown" && key !== "ArrowUp" && key !== "Escape") {
184            return;
185        }
186
187        if (key === "Escape") {
188            e.preventDefault();
189            closeLanguageDropdownAndFocusButton(this);
190            return;
191        }
192
193        e.preventDefault();
194        var $button = $(this);
195        var $item = getToolbarLanguageItem($button);
196        if ($button.attr("aria-expanded") !== "true") {
197            $button.trigger("click");
198        }
199
200        var $opts = getDropdownOptions($item);
201        var startIndex = key === "ArrowUp" ? $opts.length - 1 : 0;
202        setTimeout(function () {
203            focusDropdownOptionByIndex(startIndex, $item);
204        }, 0);
205    });
206
207    $(document).on("keydown", ".toolbar-language-drop-down a[role='option']", function (e) {
208        var key = e.key || { 38: "ArrowUp", 40: "ArrowDown", 27: "Escape", 36: "Home", 35: "End", 32: " " }[e.keyCode];
209        var $item = getToolbarLanguageItem(this);
210        if (key === "ArrowDown" || key === "ArrowUp") {
211            e.preventDefault();
212            var currentIndex = getOptionIndexFromElement(this, $item);
213            if (currentIndex < 0) {
214                focusDropdownOptionByIndex(0, $item);
215                return;
216            }
217            focusDropdownOptionByIndex(currentIndex + (key === "ArrowDown" ? 1 : -1), $item);
218            return;
219        }
220
221        if (key === "Home") {
222            e.preventDefault();
223            focusDropdownOptionByIndex(0, $item);
224            return;
225        }
226
227        if (key === "End") {
228            e.preventDefault();
229            var $opts = getDropdownOptions($item);
230            focusDropdownOptionByIndex($opts.length - 1, $item);
231            return;
232        }
233
234        if (key === "Escape") {
235            e.preventDefault();
236            closeLanguageDropdownAndFocusButton(this);
237            return;
238        }
239
240        if (key === " ") {
241            e.preventDefault();
242            window.location.href = $(this).attr("href");
243        }
244    });
245
246    updateUserSelectedLanguageText();
247    if (OpenCities.Settings.Application.LanguageSettings.InjectGoogleTranslate) {
248        var script = document.createElement('script');
249        script.src = "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit";
250        document.head.appendChild(script);
251    }
252});
253/* END OpenCities.CustomControls.LanguageSelector.Language.js */
254if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
255(function() {
256    function loadHandler() {
257        var hf = window.__TsmHiddenField;
258        if (!hf) return;
259        if (!hf._RSM_init) { hf._RSM_init = true; hf.value = ''; }
260        hf.value += ';;OpenCities.CustomControls:en-GB:8875e443-f2ef-457b-94fb-857d92f72782:8e1d32bf';
261        Sys.Application.remove_load(loadHandler);
262    };
263    Sys.Application.add_load(loadHandler);
264})();

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.