PageSourceSearch

https://www.ncpc.org.sg/assets/js/left-nav-interaction.js

js ncpc.org.sg collected 2026-09-25 23:57:24 UTC 3,479 bytes, 81 lines download raw bytes

1initSecondLevelNavInteraction();
2
3function initSecondLevelNavInteraction() {
4	var secondLevelNavHeaderArray = document.querySelectorAll("li.third-level-nav-header");
5	for (var index = 0; index < secondLevelNavHeaderArray.length; index++) {
6		function secondLevelNavClosure() {
7			var closureIndex = index;
8			function toggleSecondLevelNavDiv() {
9				// Get the icon of the third-level-nav-header
10				const secondLevelDiv = document.getElementsByClassName("third-level-nav-div")[closureIndex];
11
12				function show(idx) {
13					const secondLevelNavIcon = secondLevelNavHeaderArray[idx].getElementsByTagName("I")[0];
14					const secondLevelDiv = document.getElementsByClassName("third-level-nav-div")[idx];
15					secondLevelNavIcon.classList.remove("sgds-icon-chevron-down");
16					secondLevelNavIcon.classList.add("sgds-icon-chevron-up");
17					secondLevelDiv.classList.remove("is-hidden");
18				}
19				function hide(idx) {
20					const secondLevelNavIcon = secondLevelNavHeaderArray[idx].getElementsByTagName("I")[0];
21					const secondLevelDiv = document.getElementsByClassName("third-level-nav-div")[idx];
22					secondLevelDiv.classList.add("is-hidden");
23					secondLevelNavIcon.classList.remove("sgds-icon-chevron-up");
24					secondLevelNavIcon.classList.add("sgds-icon-chevron-down");
25				}
26
27				if (secondLevelDiv.classList.contains("is-hidden")) {
28					show(closureIndex);
29					for (var index2 = 0; index2 < secondLevelNavHeaderArray.length; index2++) {
30						if (index2 == closureIndex) continue;
31						hide(index2);
32					}
33				} else {
34					hide(closureIndex);
35				}
36			}
37			return toggleSecondLevelNavDiv;
38		}
39		secondLevelNavHeaderArray[index].addEventListener("click", secondLevelNavClosure());
40	}
41
42	var secondLevelNavHeaderMobileArray = document.querySelectorAll("a.third-level-nav-header-mobile");
43
44	for (var index = 0; index < secondLevelNavHeaderMobileArray.length; index++) {
45		function secondLevelNavMobileClosure() {
46			var closureIndex = index;
47			function toggleSecondLevelNavMobileDiv() {
48				const secondLevelMobileDiv = document.getElementsByClassName("third-level-nav-div-mobile")[closureIndex];
49
50				function show(idx) {
51					const secondLevelNavMobileIcon = secondLevelNavHeaderMobileArray[idx].getElementsByTagName("I")[0];
52					const secondLevelMobileDiv = document.getElementsByClassName("third-level-nav-div-mobile")[idx];
53					secondLevelNavMobileIcon.classList.remove("sgds-icon-chevron-down");
54					secondLevelNavMobileIcon.classList.add("sgds-icon-chevron-up");
55					secondLevelMobileDiv.classList.remove("is-hidden");
56				}
57				function hide(idx){
58					const secondLevelNavMobileIcon = secondLevelNavHeaderMobileArray[idx].getElementsByTagName("I")[0];
59					const secondLevelMobileDiv = document.getElementsByClassName("third-level-nav-div-mobile")[idx];
60					secondLevelMobileDiv.classList.add("is-hidden");
61					secondLevelNavMobileIcon.classList.remove("sgds-icon-chevron-up");
62					secondLevelNavMobileIcon.classList.add("sgds-icon-chevron-down");
63				}
64
65				if (secondLevelMobileDiv.classList.contains("is-hidden")) {
66					show(closureIndex);
67
68					for (var index2 = 0; index2 < secondLevelNavHeaderMobileArray.length; index2++) {
69						// Hide all other dropdowns except selected one
70						if (index2 == closureIndex) continue;
71						hide(index2);
72					}
73				} else {
74					hide(closureIndex);
75				}
76			}
77			return toggleSecondLevelNavMobileDiv;
78		}
79		secondLevelNavHeaderMobileArray[index].addEventListener("click", secondLevelNavMobileClosure());
80	}
81}

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.