PageSourceSearch

https://irds.itp.or.kr/lib/js/script.function.js

js itp.or.kr collected 2026-10-04 19:14:21 UTC 15,626 bytes, 387 lines download raw bytes

1//Validation
2var getFieldValue = function(field) {
3	var fieldValue = null;
4	if (field!=null) {
5		if (typeof field=="object") {
6			if (field.jquery!=undefined) {
7				fieldValue = field.val();
8			} else {
9				fieldValue = field.value;
10				if (typeof fieldValue=="undefined") {
11					fieldValue = field[0].value;
12				}
13			}
14		} else if (typeof field=="string") {
15			fieldValue = getFieldValue(document.getElementById(field));
16			if (fieldValue==null) {
17				fieldValue = getFieldValue(document.getElementsByName(field));
18			}
19		}
20	}
21
22	return fieldValue;
23}
24
25var getFieldCheck = function(field) {
26	var fieldChecked = null;
27	if (field!=null) {
28		if (typeof field=="object") {
29			if (field.jquery!=undefined) {
30				fieldChecked = field.is(":checked");
31			} else {
32				fieldChecked = field.checked;
33				if (typeof fieldChecked=="undefined") {
34					field.forEach(function(v, k){
35						fieldChecked = fieldChecked || getFieldCheck(v);
36					});
37				}
38			}
39		} else if (typeof field=="string") {
40			fieldChecked = getFieldCheck(document.getElementById(field));
41			if (fieldChecked==null) {
42				fieldChecked = getFieldCheck(document.getElementsByName(field));
43			}
44		}
45	}
46
47	return fieldChecked;
48}
49
50// cookies
51var setCookie = function(name, value, expiredays) {
52	var todayDate = new Date();
53	todayDate.setDate(todayDate.getDate() + expiredays);
54	document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";";
55}
56
57var getCookie = function(name) {
58	var nameOfCookie = name + "=";
59	var x = 0;
60	while(x <= document.cookie.length) {
61		var y = (x + nameOfCookie.length);
62		if(document.cookie.substring(x, y) == nameOfCookie) {
63			if ((endOfCookie=document.cookie.indexOf(";", y)) == -1) {
64				endOfCookie = document.cookie.length;
65			}
66			return unescape(document.cookie.substring(y, endOfCookie));
67		}
68		x = document.cookie.indexOf(" ", x) + 1;
69		if(x == 0) {
70			break;
71		}
72	}
73	return "";
74}
75
76var delCookie = function(name) {
77	var date = new Date();
78	document.cookie = name + "= " + "; expires=" + date.toUTCString() + "; path=/";
79}
80
81// text 타입의 element strip
82var form_strip = function(f) {
83	var elList = f.getElementsByTagName("input");
84	for (i=0;i<elList.length;i++ ){
85		if (elList[i].type.toLowerCase() == "text" || elList[i].type.toLowerCase() == "textarea"){
86			elList[i].value = elList[i].value.strip();
87		}
88	}
89}
90
91
92// window 띄우기
93var open_popup = function(URL, name, sizeWidth, sizeHeight, posTop, posLeft) {
94	if (!chk_number(sizeWidth)) {
95		alert("창의 너비를 지정해주세요.");
96		return null;
97	} else if (!chk_number(sizeHeight)) {
98		alert("창의 높이를 지정해주세요.");
99		return null;
100	} else
101
102	if (chk_number(posTop)) {
103		posTop = 0;
104	} else
105	if (chk_number(posLeft)) {
106		posLeft = 0;
107	}
108
109	var arr_feature = [
110			"location=0"
111		,	"toolbar=no"
112		,	"width="+sizeWidth
113		,	"height="+sizeHeight
114		,	"top="+posTop
115		,	"left="+posLeft
116		,	"directories=no"
117		,	"status=no"
118		,	"scrollbars=Yes"
119		,	"resizable=no"
120		,	"menubar=no"
121		,	"border=0"
122	];
123
124	var win = open_popup2(URL, name, arr_feature.join(","));
125	win.focus();
126
127	return win;
128}
129
130// 기본 팝업창
131var open_popup2 = function(url,name,features) {
132	return window.open(url, name, features);
133}
134
135// SNS 공유
136var snsLinker = function(sns) {
137	var url = "";
138	var title = getFieldValue('sns_title');
139	var link  = document.location;
140
141	switch(sns) {
142		case "facebook" :
143			url = "http://www.facebook.com/sharer.php?u="+encodeURIComponent(link)+"&t="+encodeURIComponent(title);
144			layout = "width=645px, height=370px";
145			break;
146		case "twitter" :
147			url = "http://twitter.com/home?status="+encodeURIComponent(title)+" : "+encodeURIComponent(link);
148			layout = "width=750px, height=250px";
149			break;
150		case "google_plus" :
151			url = "https://plus.google.com/share?url="+encodeURIComponent(link)+"&t="+encodeURIComponent(title);
152			layout = "width=1000px, height=450px";
153			break;
154		case "band":
155			url = "http://www.band.us/plugin/share?body="+encodeURIComponent(title)+encodeURIComponent("\n")+encodeURIComponent(link);
156			layout = "width=550px, height=580px, location=no, resizable=yes, status=no, scrollbars=no, personalbar=no, toolbar=no, menubar=no";
157			break;
158		case "kakaostory":
159			url = "https://story.kakao.com/share?url="+encodeURIComponent(link);
160			layout = "width=600px, height=460px, location=no, resizable=yes, status=no, scrollbars=no, personalbar=no, toolbar=no, menubar=no";
161			break;
162
163	}
164
165	var retPop = open_popup2(url, 'sns', layout);
166	if(retPop == null){
167		alert("팝업 차단을 사용안함으로 설정해주시기 바랍니다." );
168	}
169}
170
171// php에서 urlencode한 문자열을 urldecode 처리해주는 함수
172var urldecode = function(str) {
173   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
174}
175
176
177// 다음 주소 API 호출 함수
178// zip_field1				:	첫번째 주소영역 우편번호 필드 ID
179// basic_addr_field1	:	첫번째 주소영역 기본주소 필드 ID
180// detail_addr_field1	:	첫번째 주소영역 상세주소 필드 ID
181// zip_field2				:	두번째 주소영역 우편번호 필드 ID
182// basic_addr_field2	:	두번째 주소영역 기본주소 필드 ID
183// detail_addr_field2	:	두번째 주소영역 상세주소 필드 ID
184// guide_field				:	주소 사용안함 선택시 안내할 예상주소 정보가 들어갈 영역 ID
185// addr_type				:	사용할 주소 형식(1:도로명 주소만, 2:지번 주소만, 3:도로명 주소 + 지번 주소)
186// useLang				:	사용할 언어(ko:국문, en:영문) - 생략시 국문
187var openDaumPostcode = function(zip_field1, basic_addr_field1, detail_addr_field1, addr_type, useLang, zip_field2, basic_addr_field2, detail_addr_field2, guide_field) {
188	if(useLang == undefined)		useLang	=	"ko";				// 사용할 언어 생략시 기본 국문으로
189	if(addr_type == undefined)	addr_type	=	1;					// 사용할 주소형식 생략시 기본 도로명 주소만으로
190
191	new kakao.Postcode({
192		oncomplete: function(data) {
193			// 도로명 주소의 노출 규칙에 따라 주소를 조합한다.
194			// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
195			var fullRoadAddr			=	data.roadAddress;					// 국문 도로명 주소 변수
196			var fullRoadAddrEng	=	data.roadAddressEnglish;		// 영문 도로명 주소 변수
197			var fullJibunAddr			=	data.jibunAddress;					// 국문 지번 주소 변수
198			var fullJibunAddrEng	=	data.jibunAddressEnglish;		// 영문 지번 주소 변수
199			var extraRoadAddr		=	'';											// 도로명 조합형 주소 변수
200
201			// 법정동명이 있을 경우 추가한다. (법정리는 제외)
202			// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
203			if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
204				extraRoadAddr += data.bname;
205			}
206			// 건물명이 있고, 공동주택일 경우 추가한다.
207			if(data.buildingName !== '' && data.apartment === 'Y'){
208				extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
209			}
210			// 도로명, 지번 조합형 주소가 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
211			if(extraRoadAddr !== ''){
212				extraRoadAddr = ' (' + extraRoadAddr + ')';
213			}
214			// 도로명, 지번 주소의 유무에 따라 해당 조합형 주소를 추가한다.
215			if(fullRoadAddr !== '') {
216				fullRoadAddr += extraRoadAddr;
217			}
218
219			//----------------------------------------------------------------
220			// 우편번호와 주소 정보를 해당 필드에 넣는다.
221			//----------------------------------------------------------------
222			if(useLang == "ko") {													// 국문 주소정보를 요청한 경우
223				switch(addr_type) {
224					case 1:																// 도로명 주소만 요청한 경우
225						$("#"+zip_field1).val(data.zonecode);					// 도로명 주소파트 우편번호 정보 할당
226						$("#"+basic_addr_field1).val(fullRoadAddr);			// 도로명 주소파트 기본주소 정보 할당
227
228						if(detail_addr_field1 == "") {								// 도로명 주소파트 상세주소 필드가 없는 경우
229							$("#"+basic_addr_field1).focus();					// 도로명 주소파트 기본주소 필드에 포커스
230						} else {															// 도로명 주소파트 상세주소 필드가 있는 경우
231							$("#"+detail_addr_field1).focus();					// 도로명 주소파트 상세주소 필드에 포커스
232						}
233						break;
234					case 2:																// 지번 주소만 요청한 경우
235						$("#"+zip_field1).val(data.zonecode);					// 지번 주소파트 우편번호 정보 할당
236						$("#"+basic_addr_field1).val(fullJibunAddr);			// 지번 주소파트 기본주소 정보 할당
237
238						if(detail_addr_field1 == "") {								// 지번 주소파트 상세주소 필드가 없는 경우
239							$("#"+basic_addr_field1).focus();					// 지번 주소파트 기본주소 필드에 포커스
240						} else {															// 지번 주소파트 상세주소 필드가 있는 경우
241							$("#"+detail_addr_field1).focus();					// 지번 주소파트 상세주소 필드에 포커스
242						}
243					case 3:																// 도로명 주소 + 지번 주소를 요청한 경우
244						$("#"+zip_field1).val(data.zonecode);					// 도로명 주소파트 우편번호 정보 할당
245						$("#"+basic_addr_field1).val(fullRoadAddr);			// 도로명 주소파트 기본주소 정보 할당
246						$("#"+zip_field2).val(data.zonecode);					// 지번 주소파트 우편번호 정보 할당
247						$("#"+basic_addr_field2).val(fullJibunAddr);			// 지번 주소파트 기본주소 정보 할당
248
249						if(detail_addr_field1 == "") {								// 도로명 주소파트 상세주소 필드가 없는 경우
250							$("#"+basic_addr_field1).focus();					// 도로명 주소파트 기본주소 필드에 포커스
251						} else {															// 도로명 주소파트 상세주소 필드가 있는 경우
252							$("#"+detail_addr_field1).focus();					// 도로명 주소파트 상세주소 필드에 포커스
253						}
254						break;
255				}
256
257				if(guide_field != "") {
258					// 사용자가 '선택 안함'을 클릭한 경우, 예상 주소라는 표시를 해준다.
259					if(data.autoRoadAddress) {
260						var expRoadAddr = data.autoRoadAddress + extraRoadAddr;
261						$("#"+guide_field).html('(예상 도로명 주소 : ' + expRoadAddr + ')');				// 예상되는 도로명 주소에 조합형 주소를 추가한다.
262					} else if(data.autoJibunAddress) {
263						var expJibunAddr = data.autoJibunAddress;
264						$("#"+guide_field).html('(예상 지번 주소 : ' + expJibunAddr + ')');					// 예상되는 지번 주소에 조합형 주소를 추가한다.
265					} else {
266						$("#"+guide_field).html('');
267					}
268				}
269			} else {																				// 영문 주소정보를 요청한 경우
270				switch(addr_type) {
271					case 1:																		// 도로명 주소만 요청한 경우
272						$("#"+zip_field1).val(data.zonecode);					// 도로명 주소파트 우편번호 정보 할당
273						$("#"+basic_addr_field1).val(fullRoadAddrEng);				// 도로명 주소파트 기본주소 정보 할당
274
275						if(detail_addr_field1 == "") {										// 도로명 주소파트 상세주소 필드가 없는 경우
276							$("#"+basic_addr_field1).focus();							// 도로명 주소파트 기본주소 필드에 포커스
277						} else {																	// 도로명 주소파트 상세주소 필드가 있는 경우
278							$("#"+detail_addr_field1).focus();							// 도로명 주소파트 상세주소 필드에 포커스
279						}
280						break;
281					case 2:																		// 지번 주소만 요청한 경우
282						$("#"+zip_field2).val(data.zonecode);					// 지번 주소파트 우편번호 정보 할당
283						$("#"+basic_addr_field2).val(fullJibunAddrEng);			// 지번 주소파트 기본주소 정보 할당
284
285						if(detail_addr_field2 == "") {										// 지번 주소파트 상세주소 필드가 없는 경우
286							$("#"+basic_addr_field2).focus();							// 지번 주소파트 기본주소 필드에 포커스
287						} else {																	// 지번 주소파트 상세주소 필드가 있는 경우
288							$("#"+detail_addr_field2).focus();							// 지번 주소파트 상세주소 필드에 포커스
289						}
290					case 3:																		// 도로명 주소 + 지번 주소를 요청한 경우
291						$("#"+zip_field1).val(data.zonecode);					// 도로명 주소파트 우편번호 정보 할당
292						$("#"+basic_addr_field1).val(fullRoadAddrEng);				// 도로명 주소파트 기본주소 정보 할당
293						$("#"+zip_field2).val(data.zonecode);					// 지번 주소파트 우편번호 정보 할당
294						$("#"+basic_addr_field2).val(fullJibunAddrEng);			// 지번 주소파트 기본주소 정보 할당
295
296						if(detail_addr_field1 == "") {										// 도로명 주소파트 상세주소 필드가 없는 경우
297							$("#"+basic_addr_field1).focus();							// 도로명 주소파트 기본주소 필드에 포커스
298						} else {																	// 도로명 주소파트 상세주소 필드가 있는 경우
299							$("#"+detail_addr_field1).focus();							// 도로명 주소파트 상세주소 필드에 포커스
300						}
301						break;
302				}
303
304				if(guide_field != "") {
305					// 사용자가 '선택 안함'을 클릭한 경우, 예상 주소라는 표시를 해준다.
306					if(data.autoRoadAddressEnglish) {
307						$("#"+guide_field).html('(Estimated street name address: ' + data.autoRoadAddressEnglish + ')');				// 예상되는 도로명 주소에 조합형 주소를 추가한다.
308					} else if(data.autoJibunAddressEnglish) {
309						$("#"+guide_field).html('(Estimated jibun address: ' + data.autoJibunAddressEnglish + ')');							// 예상되는 지번 주소에 조합형 주소를 추가한다.
310					} else {
311						$("#"+guide_field).html('');
312					}
313				}
314			}
315		},
316	}).open();
317}
318
319var copyValueMapToForm = function(form, mapKVs) {
320	form.find("input, select, textarea").each(function(index, obj) {
321		$.each(mapKVs, function(key, value) {
322			if (obj.name == key) {
323				obj.value = value;
324			}
325		});
326	});
327}
328
329//Form Submit 중복 방지
330var prevent_data = null;
331var prevent_period = 10;
332var fnPrevent_check = function() {
333	//중복 방지 예방 시간 - 단위(초)
334	var current_date = new Date();
335	var chk_pass = false;
336
337	if (prevent_data!=null) {
338		var prev_time = Math.floor(prevent_data.getTime() /1000);
339		var now_time = Math.floor(current_date.getTime() /1000);
340
341		var gap_time = (now_time -prev_time);
342
343		if ( gap_time>prevent_period ) {
344			prevent_data = current_date;
345			chk_pass = true;
346
347		} else {
348			alert( (prevent_period -gap_time) +" 초 후 다시 시도해주세요.");
349			chk_pass = false;
350
351		}
352
353	} else {
354		prevent_data = current_date;
355		chk_pass = true;
356	}
357
358	if (chk_pass) {
359		fnLoading_show();
360	}
361
362	return chk_pass;
363}
364var fnPrevent_init = function() {
365	//중복방지 시간 초기화
366	prevent_data = null;
367
368	//로딩바 지우기
369	fnLoading_hide();
370}
371
372//로딩페이지
373var fnLoading_show = function() {
374	var div = $("<div />",{
375			"id" : "viewLoading"
376	})
377	var div_loader = $("<div />", {
378			"class" : "lds-spinner"
379		,	"html" : "<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>"
380	});
381	div.append(div_loader);
382
383	$("body").append(div);
384}
385var fnLoading_hide = function() {
386	$("#viewLoading").remove();
387}

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.