PageSourceSearch

https://www.iaai.or.kr/module/js/class.helper.js

js iaai.or.kr collected 2026-10-09 04:46:08 UTC 30,326 bytes, 943 lines download raw bytes

1var clsJsHelper = function(language){
2	var obj;
3
4	this.returnMsgType = "alert";
5	this.returnMsg = "";
6	this.msgByteCheck = true;
7
8	if (typeof language == "undefined") {
9		language = "kor";
10	}
11
12	var msg_data;
13	this.setMsgByteCheck = function(check_state) {
14		if (check_state) {
15			msg_data = {
16				"msg_basic": "{0} 입력해 주세요.",
17				"msg_select": "{0} 선택해 주세요.",
18				"msg_checked": "{0} 선택해 주세요.",
19				"msg_do_not_space": "{0} 공백을 입력할 수 없습니다.",
20				"msg_do_not_start_space": "{0} 공백으로 시작할 수 없습니다.",
21				"msg_check_mail_exp": "정확한 메일 형식이 아닙니다.\n{0} 다시 입력해 주세요.",
22				"msg_check_mail_hanmail": "{0} 한메일은 사용하실 수 없습니다.\n다른 이메일 주소를 입력해 주세요.",
23				"msg_check_specialword": "{0} 특수문자는 사용하실 수 없습니다.",
24				"msg_check_number": "{0} 숫자만 입력하실 수 있습니다.",
25				"msg_check_number_hyphen": "{0} 숫자와 - 만 입력하실 수 있습니다.",
26				"msg_kor_check_input_min_length": "{0} 한글 {2}자, 영문/숫자 {1}자 이상 입력해 주세요.",
27				"msg_kor_check_input_max_length": "{0} 한글 {2}자, 영문/숫자 {1}자 이하로 입력해 주세요.",
28				"msg_eng_check_input_min_length": "{0} 영문 또는 숫자 {1}자 이상 입력해 주세요.",
29				"msg_eng_check_input_max_length": "{0} 영문 또는 숫자 {1}자 이하로 입력해 주세요.",
30				"msg_onlyeng_check_input_min_length": "{0} 영문 {1}자 이상 입력해 주세요.",
31				"msg_onlyeng_check_input_max_length": "{0} 영문 {1}자 이하로 입력해 주세요.",
32				"msg_onlynum_check_input_min_length": "{0} 숫자 {1}자 이상 입력해 주세요.",
33				"msg_onlynum_check_input_max_length": "{0} 숫자 {1}자 이하로 입력해 주세요.",
34				"msg_onlynumhyphen_check_input_min_length": "{0} 숫자 또는 - {1}자 이상 입력해 주세요.",
35				"msg_onlynumhyphen_check_input_max_length": "{0} 숫자 또는 - {1}자 이하로 입력해 주세요."
36			}
37
38			this.msgByteCheck = true;
39		} else {
40			msg_data = {
41				"msg_basic": "{0} 입력해 주세요.",
42				"msg_select": "{0} 선택해 주세요.",
43				"msg_checked": "{0} 선택해 주세요.",
44				"msg_do_not_space": "{0} 공백을 입력할 수 없습니다.",
45				"msg_do_not_start_space": "{0} 공백으로 시작할 수 없습니다.",
46				"msg_check_mail_exp": "정확한 메일 형식이 아닙니다.\n{0} 다시 입력해 주세요.",
47				"msg_check_mail_hanmail": "{0} 한메일은 사용하실 수 없습니다.\n다른 이메일 주소를 입력해 주세요.",
48				"msg_check_specialword": "{0} 특수문자는 사용하실 수 없습니다.",
49				"msg_check_number": "{0} 숫자만 입력하실 수 있습니다.",
50				"msg_check_number_hyphen": "{0} 숫자와 - 만 입력하실 수 있습니다.",
51				"msg_kor_check_input_min_length": "{0} 한글 {1}자 이상 입력해 주세요.",
52				"msg_kor_check_input_max_length": "{0} 한글 {1}자 이하로 입력해 주세요.",
53				"msg_eng_check_input_min_length": "{0} 영문 {1}자 이상 입력해 주세요.",
54				"msg_eng_check_input_max_length": "{0} 영문 {1}자 이하로 입력해 주세요.",
55				"msg_onlyeng_check_input_min_length": "{0} 영문1 {1}자 이상 입력해 주세요.",
56				"msg_onlyeng_check_input_max_length": "{0} 영문 {1}자 이하로 입력해 주세요.",
57				"msg_onlynum_check_input_min_length": "{0} 숫자 {1}자 이상 입력해 주세요.",
58				"msg_onlynum_check_input_max_length": "{0} 숫자 {1}자 이하로 입력해 주세요.",
59				"msg_onlynumhyphen_check_input_min_length": "{0} 숫자 또는 - {1}자 이상 입력해 주세요.",
60				"msg_onlynumhyphen_check_input_max_length": "{0} 숫자 또는 - {1}자 이하로 입력해 주세요."
61			}
62
63			this.msgByteCheck = false;
64		}
65	}
66	this.setMsgByteCheck(true);
67
68	//object 반환
69	this.returnObject = function(obj_name) {
70		if (typeof obj_name == "object") {
71			return obj_name;
72		} else {
73			return document.getElementById(obj_name);
74		}
75	}
76
77	//object 값 반환
78	this.objVal = function(obj_name) {
79		var this_val;
80		if (typeof obj_name == "object") {
81			this_val = obj_name.val();
82		} else {
83			this_val = $("#"+obj_name).val();
84		}
85
86		return this_val;
87	}
88
89	//object 포커스 이동
90	this.objFocus = function(obj_name) {
91		var this_val;
92		if (typeof obj_name == "object") {
93			obj_name.focus();
94		} else {
95			$("#"+obj_name).focus();
96		}
97	}
98
99	//입력값 체크
100	this.checkVal = function(obj_name, msg, space) {
101		obj = this.returnObject(obj_name);
102		if (!this.checkNull(obj.value, msg)) {
103			this.focusObj(obj);
104			return false;
105		}
106
107		if (space == "Y") {
108			if (!this.checkSpace(obj.value, msg)) {
109				obj.value = "";
110				this.focusObj(obj);
111				return false;
112			}
113		}
114
115		return true;
116	}
117
118	//셀렉트 체크
119	this.checkSelect = function(obj_name, msg) {
120		obj = this.returnObject(obj_name);
121		if (!this.checkNullSelect(obj.value, msg)) {
122			this.focusObj(obj);
123			return false;
124		}
125
126		return true;
127	}
128
129	//라디오 체크
130	this.checkRadiobox = function(obj_name, msg) {
131		obj = $(":radio[name="+obj_name+"]");
132		if ($(":radio[name="+obj_name+"]:checked").length == 0) {
133			if (language == "kor"){
134				if (this.returnMsgType == "layer") {
135					this.returnMsg = formatingMsg(msg_data.msg_checked, postpositionalWord(msg, "을", "를"));
136				} else {
137					alert(formatingMsg(msg_data.msg_checked, postpositionalWord(msg, "을", "를")));
138				}
139			} else if (language == "eng"){
140				if (this.returnMsgType == "layer") {
141					this.returnMsg = msg;
142				} else {
143					alert(msg);
144				}
145			} else {
146				alert("언어를 추가해주세요.");
147			}
148
149			obj.eq(0).focus();
150			return false;
151		}
152
153		return true;
154	}
155
156	//체크박스 체크
157	this.checkCheckbox = function(obj_name, msg) {
158		obj = $(":checkbox[name="+obj_name+"]");
159		if ($(":checkbox[name="+obj_name+"]:checked").length == 0) {
160			if (language == "kor"){
161				if (this.returnMsgType == "layer") {
162					this.returnMsg = formatingMsg(msg_data.msg_checked, postpositionalWord(msg, "을", "를"));
163				} else {
164					alert(formatingMsg(msg_data.msg_checked, postpositionalWord(msg, "을", "를")));
165				}
166			} else if (language == "eng"){
167				if (this.returnMsgType == "layer") {
168					this.returnMsg = msg;
169				} else {
170					alert(msg);
171				}
172			} else {
173				alert("언어를 추가해주세요.");
174			}
175
176			obj.eq(0).focus();
177			return false;
178		}
179
180		return true;
181	}
182
183	//입력값 null or 공백체크(입력값없음)
184	this.checkNull = function(val, msg) {
185		if (val.indexOf(" ") == 0) {
186			if (language == "kor") {
187				if (this.returnMsgType == "layer") {
188					this.returnMsg = formatingMsg(msg_data.msg_do_not_start_space, postpositionalWord(msg, "은", "는"));
189				} else {
190					alert(formatingMsg(msg_data.msg_do_not_start_space, postpositionalWord(msg, "은", "는")));
191				}
192			} else if (language == "eng") {
193				if (this.returnMsgType == "layer") {
194					this.returnMsg = msg + " (Can not begin with a blank character.)";
195				} else {
196					alert(msg + "\n\n(Can not begin with a blank character.)");
197				}
198			} else {
199				alert("언어를 추가해주세요.");
200			}
201
202			return false;
203		}
204
205		var tmp_val = val.replace( /^\s+|\s+$/g, "" );
206		if (tmp_val == ""){
207			if (language == "kor") {
208				if (this.returnMsgType == "layer") {
209					this.returnMsg = formatingMsg(msg_data.msg_basic, postpositionalWord(msg, "을", "를"));
210				} else {
211					alert(formatingMsg(msg_data.msg_basic, postpositionalWord(msg, "을", "를")));
212				}
213			} else if (language == "eng") {
214				if (this.returnMsgType == "layer") {
215					this.returnMsg = msg;
216				} else {
217					alert(msg);
218				}
219			} else {
220				alert("언어를 추가해주세요.");
221			}
222
223			return false;
224		}
225
226		return true;
227	}
228
229	//입력값 null or 공백체크(입력값없음) 셀렉트 박스
230	this.checkNullSelect = function(val, msg) {
231		var tmp_val = val.replace( /^\s+|\s+$/g, "" );
232		if (tmp_val == "") {
233
234			if (language == "kor"){
235				if (this.returnMsgType == "layer") {
236					this.returnMsg = formatingMsg(msg_data.msg_select, postpositionalWord(msg, "을", "를"));
237				} else {
238					alert(formatingMsg(msg_data.msg_select, postpositionalWord(msg, "을", "를")));
239				}
240			} else if (language == "eng"){
241				if (this.returnMsgType == "layer") {
242					this.returnMsg = msg;
243				} else {
244					alert(msg);
245				}
246			} else {
247				alert("언어를 추가해주세요.");
248			}
249
250			return false;
251		}
252		return true;
253	}
254
255	//입력값에 공백이 들어갔는지 체크
256	this.checkSpace = function(val, msg) {
257		for (var i = 0 ; i < val.length ;i++ ) {
258			if (val.charAt(i) == ' ') {
259				if (language == "kor") {
260					if (this.returnMsgType == "layer") {
261						this.returnMsg = formatingMsg(msg_data.msg_do_not_space, postpositionalWord(msg, "은", "는"));
262					} else {
263						alert(formatingMsg(msg_data.msg_do_not_space, postpositionalWord(msg, "은", "는")));
264					}
265				} else if (language == "eng") {
266					if (this.returnMsgType == "layer") {
267						this.returnMsg = msg + " (You can not type spaces.)";
268					} else {
269						alert(msg + "\n\n(You can not type spaces.)");
270					}
271				} else {
272					alert("언어를 추가해주세요.");
273				}
274
275				return false;
276			}
277		}
278
279		return true;
280	}
281
282	//입력값 길이체크
283	this.checkLen = function(obj_name, nlen, mlen, msg, types) {
284		obj = this.returnObject(obj_name);
285
286		//Default : KOR
287		var max_msg = msg_data.msg_kor_check_input_max_length;
288		var min_msg = msg_data.msg_kor_check_input_min_length;
289
290		if (types) {
291			if (types.toUpperCase() == "KO") {
292				max_msg = msg_data.msg_kor_check_input_max_length;
293				min_msg = msg_data.msg_kor_check_input_min_length;
294			} else if (types.toUpperCase() == "EN") {
295				max_msg = msg_data.msg_eng_check_input_max_length;
296				min_msg = msg_data.msg_eng_check_input_min_length;
297			} else if (types.toUpperCase() == "OE") {
298				max_msg = msg_data.msg_onlyeng_check_input_max_length;
299				min_msg = msg_data.msg_onlyeng_check_input_min_length;
300			} else if (types.toUpperCase() == "ON") {
301				max_msg = msg_data.msg_onlynum_check_input_max_length;
302				min_msg = msg_data.msg_onlynum_check_input_min_length;
303			} else if (types.toUpperCase() == "N-") {
304				max_msg = msg_data.msg_onlynumhyphen_check_input_max_length;
305				min_msg = msg_data.msg_onlynumhyphen_check_input_min_length;
306			}
307		}
308
309		//한글이외 체크
310		if (types && types.toUpperCase() != "KO") {
311			//한글입력금지체크
312			if (isHangeul(obj.value)) {
313				if (language == "kor") {
314					if (this.returnMsgType == "layer") {
315						this.returnMsg = postpositionalWord(msg, "은", "는") + " 한글은 입력이 불가능합니다.";
316					} else {
317						alert(postpositionalWord(msg, "은", "는") + " 한글은 입력이 불가능합니다.");
318					}
319				} else if (language == "eng") {
320					if (this.returnMsgType == "layer") {
321						this.returnMsg = "Korean is impossible to enter";
322					} else {
323						alert("Korean is impossible to enter");
324					}
325				} else {
326					alert("언어를 추가해주세요.");
327				}
328
329				obj.value = "";
330				this.focusObj(obj);
331
332				return false;
333			}
334
335			//영문만입력체크
336			if (types.toUpperCase() == "OE") {
337				if (!isOnlyEng(obj.value)) {
338					if (language == "kor") {
339						if (this.returnMsgType == "layer") {
340							this.returnMsg = postpositionalWord(msg, "은", "는") + " 영문만 입력이 가능합니다.";
341						} else {
342							alert(postpositionalWord(msg, "은", "는") + " 영문만 입력이 가능합니다.");
343						}
344					} else if (language == "eng") {
345						if (this.returnMsgType == "layer") {
346							this.returnMsg = "Please enter only english.";
347						} else {
348							alert("Please enter only english.");
349						}
350					} else {
351						alert("언어를 추가해주세요.");
352					}
353
354					obj.value = "";
355					this.focusObj(obj);
356
357					return false;
358				}
359			}
360
361			//숫자만입력체크
362			if (types.toUpperCase() == "ON") {
363				if (!isOnlyNum(obj.value)) {
364					if (language == "kor") {
365						if (this.returnMsgType == "layer") {
366							this.returnMsg =  postpositionalWord(msg, "은", "는") + " 숫자만 입력이 가능합니다.";
367						} else {
368							alert(postpositionalWord(msg, "은", "는") + " 숫자만 입력이 가능합니다.");
369						}
370					} else if (language == "eng") {
371						if (this.returnMsgType == "layer") {
372							this.returnMsg = "Please enter only numbers.";
373						} else {
374							alert("Please enter only numbers.");
375						}
376					} else {
377						alert("언어를 추가해주세요.");
378					}
379
380					obj.value = "";
381					this.focusObj(obj);
382
383					return false;
384				}
385			}
386
387			//숫자,하이픈(-) 입력체크
388			if (types.toUpperCase() == "N-") {
389				if (!/[0-9-]/.test(obj.value) || obj.value.indexOf("-") == -1) {
390					if (language == "kor") {
391						if (this.returnMsgType == "layer") {
392							this.returnMsg = postpositionalWord(msg, "은", "는") + " 숫자와 하이픈(-) 조합으로 입력해주세요.";
393						} else {
394							alert(postpositionalWord(msg, "은", "는") + " 숫자와 하이픈(-) 조합으로 입력해주세요.");
395						}
396					} else if (language == "eng") {
397						if (this.returnMsgType == "layer") {
398							this.returnMsg = "Please enter only numbers And hyphen.";
399						} else {
400							alert("Please enter only numbers And hyphen.");
401						}
402					} else {
403						alert("언어를 추가해주세요.");
404					}
405
406					obj.value = "";
407					this.focusObj(obj);
408
409					return false;
410				}
411			}
412		}
413
414		//자리수 체크
415		var this_length = 0; //입력값의 현재 길이값
416		var obj_value = obj.value;
417		if (types.toUpperCase() == "ON") obj_value = String(obj_value.replace(/[^0-9]/g,''));
418
419		for (var i = 0;i < obj_value.length; i++) {
420			var tmp = obj_value.charAt(i);
421
422			//요청에 의한변경 | 바이트상관없이 무조건 글자수 기준 | 김세화팀장 | 2019-01-07
423			if (this.msgByteCheck) {
424				if (escape(tmp).length > 4) {
425					this_length = this_length + 2;
426				} else {
427					this_length++;
428				}
429			} else {
430				this_length++;
431			}
432		}
433
434		if (this_length < nlen) {
435			if (language == "kor") {
436				if (this.returnMsgType == "layer") {
437					if (this.msgByteCheck) {
438						this.returnMsg = formatingMsg(min_msg, postpositionalWord(msg, "은", "는"), nlen, parseInt(nlen/2));
439					} else {
440						this.returnMsg = formatingMsg(min_msg, postpositionalWord(msg, "은", "는"), nlen, nlen);
441					}
442				} else {
443					if (this.msgByteCheck) {
444						alert(formatingMsg(min_msg, postpositionalWord(msg, "은", "는"), nlen, parseInt(nlen/2)));
445					} else {
446						alert(formatingMsg(min_msg, postpositionalWord(msg, "은", "는"), nlen, nlen));
447					}
448				}
449			} else if (language == "eng") {
450				if (this.returnMsgType == "layer") {
451					this.returnMsg = msg + " (Please enter at least " + nlen + " characters or more.)";
452				} else {
453					alert(msg + "\n\n(Please enter at least " + nlen + " characters or more.)");
454				}
455			} else {
456				alert("언어를 추가해주세요.");
457			}
458
459			this.focusObj(obj);
460
461			return false;
462		}
463
464		if (this_length > mlen) {
465			if (language == "kor") {
466				if (this.returnMsgType == "layer") {
467					if (this.msgByteCheck) {
468						this.returnMsg = formatingMsg(max_msg, postpositionalWord(msg, "은", "는"), mlen, parseInt(mlen/2));
469					} else {
470						this.returnMsg = formatingMsg(max_msg, postpositionalWord(msg, "은", "는"), mlen, mlen);
471					}
472				} else {
473					if (this.msgByteCheck) {
474						alert(formatingMsg(max_msg, postpositionalWord(msg, "은", "는"), mlen, parseInt(mlen/2)));
475					} else {
476						alert(formatingMsg(max_msg, postpositionalWord(msg, "은", "는"), mlen, mlen));
477					}
478				}
479			} else if (language == "eng") {
480				if (this.returnMsgType == "layer") {
481					this.returnMsg = msg + "\n\n(Please enter a maximum of " + mlen + " characters.)";
482				} else {
483					alert(msg + "\n\n(Please enter a maximum of " + mlen + " characters.)");
484				}
485			} else {
486				alert("언어를 추가해주세요.");
487			}
488
489			this.focusObj(obj);
490
491			return false;
492		}
493
494		return true;
495	}
496
497	//입력값과 길이 동시 체크
498	this.checkValNLen = function(obj_name, nlen, mlen, msg, space, types) {
499
500		if (!this.checkVal(obj_name, msg, space)) {
501			return false;
502		}
503
504		if (!this.checkLen(obj_name, nlen, mlen, msg, types)) {
505			return false;
506		}
507
508		return true;
509	}
510
511	//숫자값만 입력해야하는 경우
512	this.checkNumber = function(obj_name, msg) {
513		obj = this.returnObject(obj_name);
514
515		if (obj.value.match(/^-?[0-9]+$/gi) == null) {
516			if (language == "kor") {
517				if (this.returnMsgType == "layer") {
518					this.returnMsg = formatingMsg(msg_data.msg_check_number, postpositionalWord(msg, "은", "는"));
519				} else {
520					alert(formatingMsg(msg_data.msg_check_number, postpositionalWord(msg, "은", "는")));
521				}
522			} else if (language == "eng") {
523				if (this.returnMsgType == "layer") {
524					this.returnMsg = msg + " (You can only enter numbers.)";
525				} else {
526					alert(msg + "\n\n(You can only enter numbers.)");
527				}
528			} else {
529				alert("언어를 추가해주세요.");
530			}
531
532			obj.value = "";
533			this.focusObj(obj);
534
535			return false;
536		}
537
538		return true;
539	}
540
541	//숫자값과 - 만 입력해야하는 경우 [전화번호, 사업자 번호등]
542	this.checkNumHyphen = function(obj_name, msg) {
543		obj = this.returnObject(obj_name);
544		if (obj.value.match(/^[0-9-]+$/gi) == null) {
545			if (language == "kor") {
546				if (this.returnMsgType == "layer") {
547					this.returnMsg = formatingMsg(msg_data.msg_check_number_hyphen, postpositionalWord(msg, "은", "는"));
548				} else {
549					alert(formatingMsg(msg_data.msg_check_number_hyphen, postpositionalWord(msg, "은", "는")));
550				}
551			} else if (language == "eng") {
552				if (this.returnMsgType == "layer") {
553					this.returnMsg = msg + " (Numbers and - you can enter only.)";
554				} else {
555					alert(msg + "\n\n(Numbers and - you can enter only.)");
556				}
557			} else {
558				alert("언어를 추가해주세요.");
559			}
560
561			obj.value = "";
562			this.focusObj(obj);
563
564			return false;
565		}
566
567		return true;
568	}
569
570	//이메일체크
571	var mailExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/;
572
573	//이메일 입력폼이 1개일때
574	this.checkEmail = function(obj_name, msg) {
575
576		if (!this.checkVal(obj_name, msg, "Y")) {
577			return false;
578		}
579
580		obj = this.returnObject(obj_name);
581
582		if (!mailExp.test(obj.value)) {
583			if (language == "kor"){
584				if (this.returnMsgType == "layer") {
585					this.returnMsg = formatingMsg(msg_data.msg_check_mail_exp, postpositionalWord(msg, "을", "를"));
586				} else {
587					alert(formatingMsg(msg_data.msg_check_mail_exp, postpositionalWord(msg, "을", "를")));
588				}
589			} else if (language == "eng") {
590				if (this.returnMsgType == "layer") {
591					this.returnMsg = "Invalid email address.Please enter a correct email address.";
592				} else {
593					alert("Invalid email address.\nPlease enter a correct email address.");
594				}
595			} else {
596				alert("언어를 추가해주세요.");
597			}
598
599			obj.value= "";
600			this.focusObj(obj);
601
602			return false;
603		}
604
605		return true;
606	}
607
608	//이메일값을 받을때
609	this.checkEmail2 = function(obj_name, val, msg) {
610		//obj_name는 이메일 값이 아닐때 포커스가 갈 input
611		obj = this.returnObject(obj_name);
612
613		if (!mailExp.test(val)) {
614			if (language == "kor"){
615				if (this.returnMsgType == "layer") {
616					this.returnMsg = formatingMsg(msg_data.msg_check_mail_exp, postpositionalWord(msg, "을", "를"));
617				} else {
618					alert(formatingMsg(msg_data.msg_check_mail_exp, postpositionalWord(msg, "을", "를")));
619				}
620			} else if (language == "eng") {
621				if (this.returnMsgType == "layer") {
622					this.returnMsg = "Invalid email address.Please enter a correct email address.";
623				} else {
624					alert("Invalid email address.\nPlease enter a correct email address.");
625				}
626			} else {
627				alert("언어를 추가해주세요.");
628			}
629
630			this.focusObj(obj);
631
632			return false;
633		}
634
635		return true;
636	}
637
638	//아이디, 비밀번호 보안성검사 정규식
639	var passwordExp = /([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/;	//영문,숫자,특수문자의 조합 확인
640	var regChk1 = /[a-z]/;				//적어도 한개의 a-z 확인
641	var regChk2 = /[A-Z]/;				//적어도 한개의 A-Z 확인
642	var regChk3 = /[0-9]/;				//적어도 한개의 0-9 확인
643	var regChk4 = /[!@$%^&*_~\-\(\)]/i;	//비밀번호 특수문자 확인
644	var regChk5 = /[_-]/i;				//아이디 특수문자 확인
645
646
647	//아이디 보안체크
648	this.idSecurityCheck = function (obj_name, msg){
649		if (!this.checkVal(obj_name, msg, "Y")) {
650			return false;
651		}
652
653		var obj = this.returnObject(obj_name);
654		var val = obj.value;
655
656		var passCheck1 = 0; //영소문자입력 카운트
657		var passCheck2 = 0; //영문대문자입력 카운트
658		var passCheck3 = 0; //숫자입력 카운트
659		var passCheck5 = 0; //특수문자입력 카운트
660
661		for (i=0; i<val.length; i++) {
662			valueCharAt = val.charAt(i);
663
664			if (regChk1.test(valueCharAt)) passCheck1++;
665			if (regChk3.test(valueCharAt)) passCheck3++;
666
667			//첫번째 글짜 영문자 체크
668			if (i==0 && !regChk1.test(valueCharAt)) {
669				if (language == "kor") {
670					if (this.returnMsgType == "layer") {
671						this.returnMsg = "첫문장은 영문자로 입력해주세요.";
672					} else {
673						alert("첫문장은 영문자로 입력해주세요.");
674					}
675				} else if (language == "eng") {
676					if (this.returnMsgType == "layer") {
677						this.returnMsg = "Please enter the first sentence in English.";
678					} else {
679						alert("Please enter the first sentence in English.");
680					}
681				} else {
682					alert("언어를 추가해주세요.");
683				}
684
685				this.focusObj(obj);
686				return false;
687			}
688
689			//특수문자 체크
690			if (/[^a-z0-9]/gi.test(valueCharAt)) {
691				if (!regChk5.test(valueCharAt)) {
692					if (language == "kor") {
693						if (this.returnMsgType == "layer") {
694							this.returnMsg = "특수문자는 `_ -´ 만 사용 가능합니다.";
695						} else {
696							alert("특수문자는 `_ -´ 만 사용 가능합니다.");
697						}
698					} else if (language == "eng") {
699						if (this.returnMsgType == "layer") {
700							this.returnMsg = "Special character can only be used in `_ -´.";
701						} else {
702							alert("Special character can only be used in `_ -´.");
703						}
704					} else {
705						alert("언어를 추가해주세요.");
706					}
707
708					this.focusObj(obj);
709					return false;
710				}
711			}
712
713			//영문 대문자 체크
714			if (regChk2.test(valueCharAt)) {
715				if (language == "kor") {
716					if (this.returnMsgType == "layer") {
717						this.returnMsg = "영문 소문자만 입력해주세요.";
718					} else {
719						alert("영문 소문자만 입력해주세요.");
720					}
721				} else if (language == "eng") {
722					if (this.returnMsgType == "layer") {
723						this.returnMsg = "Please enter lowercase English characters only.";
724					} else {
725						alert("Please enter lowercase English characters only.");
726					}
727				} else {
728					alert("언어를 추가해주세요.");
729				}
730
731				this.focusObj(obj);
732				return false;
733			}
734		}
735
736		/*
737		if (passCheck1==0 && passCheck3==0) {
738			if (language == "kor") {
739				if (this.returnMsgType == "layer") {
740					this.returnMsg = "영문 소문자, 숫자는 한글자 이상 입력해주세요.";
741				} else {
742					alert("영문 소문자, 숫자는 한글자 이상 입력해주세요.");
743				}
744			} else if (language == "eng") {
745				if (this.returnMsgType == "layer") {
746					this.returnMsg = "Please enter at least one lowercase English character or number.";
747				} else {
748					alert("Please enter at least one lowercase English character or number.");
749				}
750			} else {
751				alert("언어를 추가해주세요.");
752			}
753
754			this.focusObj(obj);
755			return false;
756		}
757		*/
758
759		return true;
760	}
761
762	//비밀번호 보안체크
763	this.pwdSecurityCheck = function(obj_name, msg){
764		if (!this.checkVal(obj_name, msg, "Y")) {
765			return false;
766		}
767
768		var obj = this.returnObject(obj_name);
769		var val = obj.value;
770
771		var passCheck1 = 0; //영소문자입력 카운트
772		var passCheck2 = 0; //영문대문자입력 카운트
773		var passCheck3 = 0; //숫자입력 카운트
774		var passCheck4 = 0; //특수문자입력 카운트
775
776		for (i=0; i<val.length; i++) {
777			valueCharAt = val.charAt(i);
778
779			if (regChk1.test(valueCharAt)) passCheck1++;
780			if (regChk2.test(valueCharAt)) passCheck2++;
781			if (regChk3.test(valueCharAt)) passCheck3++;
782
783			//특수문자 체크
784			if (/[^a-zA-Z0-9]/gi.test(valueCharAt)) {
785				if (!regChk4.test(valueCharAt)) {
786					if (language == "kor") {
787						if (this.returnMsgType == "layer") {
788							this.returnMsg = "특수문자는 `! @ $ % ^ & * _ ~ - ( )´ 만 사용 가능합니다.";
789						} else {
790							alert("특수문자는 `! @ $ % ^ & * _ ~ - ( )´ 만 사용 가능합니다.");
791						}
792					} else if (language == "eng") {
793						if (this.returnMsgType == "layer") {
794							this.returnMsg = "Special character can only be used in `! @ $ % ^ & * _ ~ - ( )´.";
795						} else {
796							alert("Special character can only be used in `! @ $ % ^ & * _ ~ - ( )´.");
797						}
798					} else {
799						alert("언어를 추가해주세요.");
800					}
801
802					this.focusObj(obj);
803					return false;
804				} else {
805					passCheck4++;
806				}
807			}
808		}
809
810		if ((passCheck1==0 && passCheck2==0) || (passCheck3==0 && passCheck4==0)) {
811			if (language == "kor") {
812				if (this.returnMsgType == "layer") {
813					this.returnMsg = "영문 + 숫자 또는 특수문자 조합으로 입력해주세요.";
814				} else {
815					alert("영문 + 숫자 또는 특수문자 조합으로 입력해주세요.");
816				}
817			} else if (language == "eng") {
818				if (this.returnMsgType == "layer") {
819					this.returnMsg = "Please enter in alphabet + number combination.";
820				} else {
821					alert("Please enter in alphabet + number combination.");
822				}
823			} else {
824				alert("언어를 추가해주세요.");
825			}
826
827			this.focusObj(obj);
828
829			return false;
830		}
831
832		return true;
833	}
834
835	//포커스 에디터등 display:none 인경우 에러가 나는걸 방지위해
836	this.focusObj = function(obj) {
837		try {
838			if (this.returnMsgType == "layer") {
839			} else {
840				obj.focus();
841			}
842		} catch(e){
843			//
844		}
845	}
846
847	//메세지 생성
848	function formatingMsg(msg_form)	{
849		var tmp_word = ''
850		if (arguments.length > 1) {
851			for (var msg_i = 0; msg_i < arguments.length; msg_i++) {
852				msg_form = msg_form.replace(new RegExp("\\{" + msg_i + "\\}", "gi"), arguments[msg_i + 1]);
853			}
854		}
855
856		return msg_form;
857	}
858
859	//한글 조사 체크
860	function postpositionalWord(msg, postpositional_word_1, postpositional_word_2) {
861		if (language != "" && language != "kor") {
862			return msg;
863		}
864
865		var check_word = '가갸거겨고교구규그기개걔게계과괘궈궤괴귀긔까꺄꺼껴꼬꾜꾸뀨끄끼깨꺠께꼐꽈꽤꿔꿰꾀뀌끠나냐너녀노뇨누뉴느니내냬네녜놔놰눠눼뇌뉘다댜더뎌도됴두듀드디대댸데뎨돠돼둬뒈되뒤듸따땨떠뗘또뚀뚜뜌뜨띠때떄떼뗴똬뙈뚸뛔뙤뛰띄라랴러려로료루류르리래럐레례롸뢔뤄뤠뢰뤼마먀머며모묘무뮤므미매먜메몌뫄뫠뭐뭬뫼뮈믜바뱌버벼보뵤부뷰브비배뱨베볘봐봬붜붸뵈뷔븨빠뺘뻐뼈뽀뾰뿌쀼쁘삐빼뺴뻬뼤뽜뽸뿨쀄뾔쀠사샤서셔소쇼수슈스시새섀세셰솨쇄숴쉐쇠쉬싀싸쌰써쎠쏘쑈쑤쓔쓰씨쌔썌쎄쎼쏴쐐쒀쒜쐬쒸씌아야어여오요우유으이의애얘에예와왜워웨외위자쟈저져조죠주쥬즈지재쟤제졔좌좨줘줴죄쥐즤짜쨔쩌쪄쪼쬬쭈쮸쯔찌째쨰쩨쪠쫘쫴쭤쮀쬐쮜쯰차챠처쳐초쵸추츄츠치채챼체쳬촤쵀춰췌최취카캬커켜코쿄쿠큐크키캐컈케켸콰쾌쿼퀘쾨퀴킈타탸터텨토툐투튜트티태턔테톄톼퇘퉈퉤퇴튀틔파퍄퍼펴포표푸퓨프피패퍠페폐퐈퐤풔풰푀퓌하햐허혀호효후휴흐히해햬헤혜화홰훠훼회휘희';
866		var check_word_flag = true;
867
868		for (var word_i = 0;word_i < check_word.length ; word_i++) {
869			if (check_word.charAt(word_i) == msg.charAt(msg.length-1)) {
870				check_word_flag = false;
871				break;
872			}
873		}
874
875		if (check_word_flag) {
876			return msg + postpositional_word_1;
877		} else {
878			return msg + postpositional_word_2;
879		}
880	}
881
882	// 섹션 존재 검증
883	this.validateSection = function (sectionSel, requiredSel, msg, excludeClass) {
884
885		const hasValue = el => {
886			const $el = $(el);
887			const type = ($el.attr("type") || "").toLowerCase();
888			if (type === "checkbox" || type === "radio") return $el.prop("checked");
889			return $el.val() && $el.val() !== "0";
890		};
891
892		let $targets = $(sectionSel).find("input, select, textarea");
893
894		// 🔹 제외 class가 있으면 제외
895		if (excludeClass) {
896			$targets = $targets.not("." + excludeClass);
897		}
898
899		const hasSectionValue = $targets.filter((_, el) => hasValue(el)).length > 0;
900		if (!hasSectionValue) return true;
901
902		const hasRequiredValue = $(requiredSel)
903			.filter((_, el) => hasValue(el)).length > 0;
904
905		if (!hasRequiredValue) {
906			alert(msg);
907			$(requiredSel).first().focus();
908			return false;
909		}
910
911		return true;
912	};
913
914		
915	//필드 간 짝(pair) 규칙 검증
916	this.validateArrayPair = function (selectorA, selectorB, msg) {
917
918		const $A = $(selectorA);
919		const $B = $(selectorB);
920		const len = Math.max($A.length, $B.length);
921
922		for (let i = 0; i < len; i++) {
923
924			const $a = $A.eq(i);
925			const $b = $B.eq(i);
926
927			const hasA = !!$a.val();
928			const hasB = !!$b.val();
929
930			// 한쪽만 입력된 경우
931			if (hasA !== hasB) {
932				alert(msg);
933				(hasA ? $b : $a).focus();
934				return false;
935			}
936		}
937
938		return true;
939	};
940
941
942
943}

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.