PageSourceSearch

https://inckl.or.kr/lib/js/script.function.js?v=20240619

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

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.