PageSourceSearch

https://www.campuscook.co.kr/theme/6/js/ui.js

js campuscook.co.kr collected 2026-10-06 03:32:23 UTC 9,444 bytes, 278 lines download raw bytes

1$(document).ready(function(e) {
2	var checkBrowser = function() {
3		var agt = navigator.userAgent.toLowerCase();
4		if (agt.indexOf("chrome") != -1) return 'Chrome'; 
5		if (agt.indexOf("opera") != -1) return 'Opera'; 
6		if (agt.indexOf("staroffice") != -1) return 'Star Office'; 
7		if (agt.indexOf("webtv") != -1) return 'WebTV'; 
8		if (agt.indexOf("beonex") != -1) return 'Beonex'; 
9		if (agt.indexOf("chimera") != -1) return 'Chimera'; 
10		if (agt.indexOf("netpositive") != -1) return 'NetPositive'; 
11		if (agt.indexOf("phoenix") != -1) return 'Phoenix'; 
12		if (agt.indexOf("firefox") != -1) return 'Firefox'; 
13		if (agt.indexOf("safari") != -1) return 'Safari'; 
14		if (agt.indexOf("skipstone") != -1) return 'SkipStone'; 
15		if (agt.indexOf("msie") != -1) return 'Internet Explorer'; 
16		if (agt.indexOf("netscape") != -1) return 'Netscape'; 
17		if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla'; 
18	}
19
20	function onCheckDevice() {
21		var isMoble = (/(iphone|ipod|ipad|android|blackberry|windows ce|palm|symbian)/i.test(navigator.userAgent)) ? "mobile" : "pc";
22		$("body").addClass(isMoble);
23
24		var deviceAgent = navigator.userAgent.toLowerCase();
25		var agentIndex = deviceAgent.indexOf('android');
26
27		if(agentIndex != -1) {
28			var androidversion = parseFloat(deviceAgent.match(/android\s+([\d\.]+)/)[1]);
29
30			$("body").addClass("android");
31
32			// favicon();
33
34			if(androidversion < 4.1) {
35				$("body").addClass("android_old android_ics");
36			}
37			else if(androidversion < 4.3) {
38				$("body").addClass("android_old android_oldjb");
39			}
40			else if(androidversion < 4.4) {
41				$("body").addClass("android_old android_jb");
42			}
43			else if(androidversion < 5) {
44				$("body").addClass("android_old android_kk");
45			}
46			else if(androidversion < 6) {
47				$("body").addClass("android_old");
48			}
49			
50			if(checkBrowser() == 'Firefox' 
51				|| checkBrowser() == 'Mozilla') {
52				$("body").removeClass("android_ics android_oldjb android_jb android_kk");
53			}
54			else if(checkBrowser() == "Chrome") {
55				var chromeVersion = parseInt(deviceAgent.substring(deviceAgent.indexOf("chrome") + ("chrome").length + 1));
56				
57				if(chromeVersion > 40) {
58					$("body").removeClass("android_old android_ics android_oldjb android_jb android_kk");
59				}
60				else {
61					$("body").removeClass("android_ics android_oldjb android_jb android_kk");
62				}
63			}
64		}
65		else if(deviceAgent.match(/msie 8/) != null || deviceAgent.match(/msie 7/) != null) {
66			$("body").addClass("old_ie");
67		}
68		else if(deviceAgent.match(/iphone|ipod|ipad/) != null) {
69			$("body").addClass("ios");
70		}
71	}
72
73	onCheckDevice();
74
75	// css check
76	window.checkSupported = function(property) {
77		return property in document.body.style;
78	}
79
80	
81	// dropdown list
82	var dropList = (function() {
83		function init() {
84			var time = 150;
85
86			// dropdown list
87			$(document).on("change", ".dropLst .hidradio", function(evt) {
88				var groupName = $(this).attr("name");
89				var radios = $(".hidradio[name=" + groupName + "]");
90				var checked = radios.filter(function() { return $(this).prop("checked") === true; });
91				var text = $(checked).parents("label").find(".value").text();
92				var list = $(checked).parents(".dlst").eq(0);
93
94				$(list).find("label").removeClass("on");
95				$(checked).parents("label").eq(0).addClass("on");
96
97				if($(list).siblings(".txt").find(".val").length > 0) {
98					$(list).siblings(".txt").find(".val").text(text);
99				}
100				else {
101					$(list).siblings(".txt").text(text);
102				}
103
104				$(list).siblings(".txt").removeClass("on");
105				$(checked).parents(".dlst").slideUp(time);
106			}).on("click", ".dropLst > a", function(evt) {
107				evt.preventDefault();
108				
109				var label = $(this);
110				var target = $(this).parents(".dropLst").eq(0);
111				var list = $(this).siblings(".dlst");
112				var openList = $(".dropLst").filter(function() { return $(this).find(".dlst").css("display") != "none" && $(this) != target });
113
114				$(openList).find(".dlst").stop().slideUp(time);
115				$(target).find(" > a").removeClass("on").addClass("active");
116
117				$(list).stop().slideToggle(time, function() {
118					if($(this).css("display") != "none") $(label).addClass("on");
119					else $(label).removeClass("on");
120
121					$(label).removeClass("active");
122				});
123			}).on("click", ".dropLst li a", function(evt) {
124				var value = $(this).text();
125
126				$(this).parents(".dlst").eq(0).stop().slideUp(time, function() {
127					if($(this).siblings(".txt").find(".val").length > 0) {
128						$(this).siblings(".txt").find(".val").text(value);
129					}
130					else {
131						$(this).siblings(".txt").text(value);
132					}
133
134					$(this).siblings(".txt").focus();
135				});
136
137				$(".dropLst > a").removeClass("on");
138
139				$(this).parents(".dlst").eq(0).find("li a").removeClass("on");
140				$(this).addClass("on");
141			}).on("keyup", ".dropLst > a", function(evt) {
142				var keyCode = evt.keyCode;
143
144				var target = $(this).parents(".dropLst").eq(0);
145				var list = $(this).siblings(".dlst");
146				var chkRadio = $(this).siblings(".dlst").find(".hidradio:checked");
147				var hoverRadio = $(list).find(".hover");
148				var idx = -1;
149
150				if(hoverRadio.length < 1) idx = (chkRadio.parents("li").eq(0).index() > -1) ? chkRadio.parents("li").eq(0).index() : 0;
151				else idx = hoverRadio.parents("li").eq(0).index();
152
153				var openList = $(list).filter(function() { return $(this).css("display") != "none" });
154				if(openList.length < 1) return false;
155
156				if(keyCode == 13) {
157					$(list).find("li").find(".hover").find(".hidradio").prop("checked", true).trigger("change");
158					$(list).find("label").removeClass("hover");
159				} 
160				else if(keyCode == 38 || keyCode == 37) {
161					$(list).find("label").removeClass("hover");
162
163					if(idx == 0) $(list).find("li").eq($(list).find("li").length - 1).find("label").addClass("hover");
164					else $(list).find("li").eq(idx - 1).find("label").addClass("hover");
165				}
166				else if(keyCode == 40 || keyCode == 39) {
167					$(list).find("label").removeClass("hover");
168					
169					if(idx == ($(list).find("li").length - 1)) $(list).find("li").eq(0).find("label").addClass("hover");
170					else $(list).find("li").eq(idx + 1).find("label").addClass("hover");
171				}
172			}).on("focus", ".dropLst .dlst label", function(evt) {
173				$(this).on("keyup", addEnterKeyEvent);
174			}).on("blur", "label", function(evt) {
175				$(this).off("keyup", addEnterKeyEvent);
176			}).on("click touchstart", function(evt) {
177				var evt = evt ? evt : event;
178				var target = null;
179
180				if (evt.srcElement) target = evt.srcElement;
181				else if (evt.target) target = evt.target;
182
183				var openList = $(".dropLst").filter(function() { return $(this).find(".dlst").css("display") != "none" });
184				var activeList = $(".dropLst").filter(function() { return $(this).find(".txt").hasClass("on") === true });
185				if($(target).parents(".dropLst").eq(0).length < 1) {
186					$(openList).find(".dlst").slideUp(time);
187					$(".dropLst > a").removeClass("on").removeClass("active");
188				}
189				else if(activeList.length > 0) {
190					if(evt.type == "click") {
191						activeList.find(".txt").removeClass("on").removeClass("active");
192					}
193				}
194			});
195
196			function addEnterKeyEvent(evt) {
197				var keyCode = evt.keyCode;
198				if(keyCode == 13) {
199					$(this).children(".hidradio").prop("checked", true).trigger("change");
200					$(this).parents(".dropLst").eq(0).find(".txt").focus();
201				}
202			}
203
204			// init dropdown list value
205			$(".dropLst").each(function(i) {
206				var groupName = $(this).find(".hidradio").eq(0).attr("name");
207				var radios = $(".hidradio[name=" + groupName + "]");
208				var checked = $(radios).filter(function() { return $(this).prop("checked") === true; });
209				var list = $(this).find(".dlst");
210				var text = null;
211
212				if(radios.length > 0 && checked.length > 0) {
213					text = (checked.length > 0) ? $(checked).parents("label").find(".value").text() : radios.eq(0).siblings(".value").text();
214	
215					$(list).find("label").removeClass("on").attr("tabindex", 0);
216					$(list).find("label input").attr("tabindex", -1);
217					if (checked.length > 0) {
218						$(checked).parents("label").eq(0).addClass("on");
219					}
220					else {
221						radios.eq(0).parents("label").eq(0).addClass("on");
222					}
223				}
224				else {
225					text = (list.find(".value.on").length > 0) ? list.find(".value.on").text() : (($(this).find(".txt .val").length > 0) ? $(this).find(".txt .val").text() : $(this).find(".txt").text());
226				}				
227
228				if($(list).siblings(".txt").find(".val").length > 0) {
229					$(list).siblings(".txt").find(".val").text(text);
230				}
231				else {
232					$(list).siblings(".txt").text(text);
233				}
234			});
235		}
236
237		return {
238			init : init
239		};
240	}());
241
242	dropList.init();
243
244});
245
246
247//셀렉트박스
248$(document).ready(function(){
249	const label = document.querySelectorAll('.label');
250	label.forEach(function(lb){
251		lb.addEventListener('click', e => {
252			let optionList = lb.nextElementSibling;
253			let optionItems = optionList.querySelectorAll('.optionItem');
254			clickLabel(lb, optionItems);
255		})
256	});
257	const clickLabel = (lb, optionItems) => {
258		if(lb.parentNode.classList.contains('active')) {
259			lb.parentNode.classList.remove('active');
260			optionItems.forEach((opt) => {
261				opt.removeEventListener('click', () => {
262					handleSelect(lb, opt)
263				})
264			})
265		} else {
266			lb.parentNode.classList.add('active');
267			optionItems.forEach((opt) => {
268				opt.addEventListener('click', () => {
269					handleSelect(lb, opt)
270				})
271			})
272		}
273	}
274	const handleSelect = (label, item) => {
275		label.innerHTML = item.textContent;
276		label.parentNode.classList.remove('active');
277	}
278});

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.