PageSourceSearch

https://www.gwangbok.kr/ISAF/Libs/js/frmCheck.js

js gwangbok.kr collected 2026-10-09 22:41:12 UTC 31,944 bytes, 1,047 lines download raw bytes

1/********************************************************************
2*
3* Form 관련 스크립트 함수 모음
4*
5*******************************************************************/
6
7/* 폼 검증  함수
8**************************************************************************************************************/
9function checkForm(f){
10	var fLen = f.elements.length;
11	var fObj; // 폼 요소
12	var fTyp; // 폼 요소 Type
13	var fVal; // 폼 요소 Value
14	var fMsg; // 경고 메시지 속성
15	var fNum; // 숫자만 입력 속성
16	var fMax; // 최대 길이 지정
17	var fMin; // 최소 길이 지정
18	var fMxN; // 최대값 지정
19	var fMnN; // 최소값 지정
20	var fMal; // 메일 FORMAT
21	for(i=0;i<fLen;i++){
22		fObj = f.elements[i];
23		fTyp = toUpperCase(fObj.type);
24		fVal = fObj.value;
25		fMsg = fObj.getAttribute("msg"); // 경고 메시지
26		fNum = fObj.getAttribute("chknum"); // 숫자만 기입 가능하도록
27		fMax = fObj.getAttribute("maxlen"); // 최대 입력byte 제한
28		fMin = fObj.getAttribute("minlen"); // 최소 입력byte 제한
29		fMxN = fObj.getAttribute("maxnum"); // 최대 숫자 제한
30		fMnN = fObj.getAttribute("minnum"); // 최소 숫자 제한
31		fRrn = fObj.getAttribute("chkrrn"); // 주민등록번호 체크
32		fBrn = fObj.getAttribute("chkbrn"); // 사업자등록번호 체크
33		fFrn = fObj.getAttribute("chkfrn"); // 외국인등록번호 체크
34		fMal = fObj.getAttribute("chkmail"); // 이메일 체크
35
36		if(fMsg != null && (fTyp == "TEXT" || fTyp == "HIDDEN" || fTyp == "TEXTAREA" || fTyp == "PASSWORD") && fVal.replace(/ /gi,"") == ""){
37			alert(fMsg + " 입력해 주세요");
38			if(fTyp != "HIDDEN"){fObj.focus();}
39			return false;
40		}
41		if(fMsg != null && (fTyp == "SELECT-ONE" || fTyp == "SELECT-MULTIPLE") && fVal ==""){
42			alert(fMsg + " 선택해 주세요");
43			fObj.focus(); return false;
44		}
45		if(fMsg != null && (fTyp == "RADIO" || fTyp == "CHECKBOX") && checkChecked(fObj) == false){
46			alert(fMsg + " 선택해 주세요");
47			fObj.focus(); return false;
48		}
49		if(fNum != null && isNaN(fVal)){
50			alert("숫자로만 입력해 주세요");
51			fObj.focus(); return false;
52		}
53		if(fMin != null && fMin > getLen(fVal)){
54			alert("입력된 글자의 byte가 "+fMin+"byte보다 커야합니다.");
55			fObj.focus(); return false;
56		}
57		if(fMax != null && fMax < getLen(fVal)){
58			alert("입력된 글자의 byte가 "+fMax+"byte보다 작아야합니다.\n(영문 "+fMax+"자, 한글 "+Math.floor(fMax/2)+"자 까지 가능합니다.)");
59			fObj.focus(); return false;
60		}
61		if(fMxN != null && parseInt(fMxN) < parseInt(fVal)){
62			alert("입력된 숫자는 "+fMxN+"보다 작아야합니다.");
63			fObj.focus(); return false;
64		}
65		if(fMnN != null && parseInt(fMnN) > parseInt(fVal)){
66			alert("입력된 숫자는 "+fMnN+"보다 커야합니다.");
67			fObj.focus(); return false;
68		}
69		if(fRrn != null && checkRRN(fVal) == false && fVal != ""){
70			alert("주민등록번호가 올바르지 않습니다");
71			fObj.focus(); return false;
72		}
73		if(fBrn != null && checkBRN(fVal) == false && fVal != ""){
74			alert("사업자등록번호가 올바르지 않습니다");
75			fObj.focus(); return false;
76		}
77		if(fFrn != null && checkFRN(fVal) == false && fVal != ""){
78			alert("외국인등록번호가 올바르지 않습니다");
79			fObj.focus(); return false;
80		}
81		if(fMal != null && checkEmail(fVal) == false && fVal != ""){
82			alert("이메일 주소가 올바르지 않습니다");
83			fObj.focus(); return false;
84		}
85	}
86	return true;
87}
88
89function checkForm_new(f){
90	var fLen = f.elements.length;
91	var fObj; // 폼 요소
92	var fTyp; // 폼 요소 Type
93	var fVal; // 폼 요소 Value
94	var fMsg; // 경고 메시지 속성
95	var fNum; // 숫자만 입력 속성
96	var fMax; // 최대 길이 지정
97	var fMin; // 최소 길이 지정
98	var fMxN; // 최대값 지정
99	var fMnN; // 최소값 지정
100	var fMal; // 메일 FORMAT
101
102	for(i=0;i<fLen;i++){
103		fObj = f.elements[i];
104		fTyp = toUpperCase(fObj.type);
105		fVal = fObj.value;
106		fMsg = fObj.getAttribute("msg"); // 경고 메시지
107		fNum = fObj.getAttribute("chknum"); // 숫자만 기입 가능하도록
108		fMax = fObj.getAttribute("maxlen"); // 최대 입력byte 제한
109		fMin = fObj.getAttribute("minlen"); // 최소 입력byte 제한
110		fMxN = fObj.getAttribute("maxnum"); // 최대 숫자 제한
111		fMnN = fObj.getAttribute("minnum"); // 최소 숫자 제한
112		fRrn = fObj.getAttribute("chkrrn"); // 주민등록번호 체크
113		fBrn = fObj.getAttribute("chkbrn"); // 사업자등록번호 체크
114		fFrn = fObj.getAttribute("chkfrn"); // 외국인등록번호 체크
115		fMal = fObj.getAttribute("chkmail"); // 이메일 체크
116
117		if(fMsg != null && (fTyp == "TEXT" || fTyp == "HIDDEN" || fTyp == "TEXTAREA" || fTyp == "PASSWORD") && fVal.replace(/ /gi,"") == ""){
118			alert(fMsg + " 입력해 주세요");
119			return false;
120		}
121		if(fMsg != null && (fTyp == "SELECT-ONE" || fTyp == "SELECT-MULTIPLE") && fVal ==""){
122			alert(fMsg + " 선택해 주세요");
123			fObj.focus(); return false;
124		}
125		if(fMsg != null && (fTyp == "RADIO" || fTyp == "CHECKBOX") && checkChecked(fObj) == false){
126			alert(fMsg + " 선택해 주세요");
127			fObj.focus(); return false;
128		}
129		if(fNum != null && isNaN(fVal)){
130			alert("숫자로만 입력해 주세요");
131			fObj.focus(); return false;
132		}
133		if(fMin != null && fMin > getLen(fVal)){
134			alert("입력된 글자의 byte가 "+fMin+"byte보다 커야합니다.");
135			fObj.focus(); return false;
136		}
137		if(fMax != null && fMax < getLen(fVal)){
138			alert("입력된 글자의 byte가 "+fMax+"byte보다 작아야합니다.\n(영문 "+fMax+"자, 한글 "+Math.floor(fMax/2)+"자 까지 가능합니다.)");
139			fObj.focus(); return false;
140		}
141		if(fMxN != null && parseInt(fMxN) < parseInt(fVal)){
142			alert("입력된 숫자는 "+fMxN+"보다 작아야합니다.");
143			fObj.focus(); return false;
144		}
145		if(fMnN != null && parseInt(fMnN) > parseInt(fVal)){
146			alert("입력된 숫자는 "+fMnN+"보다 커야합니다.");
147			fObj.focus(); return false;
148		}
149		if(fRrn != null && checkRRN(fVal) == false && fVal != ""){
150			alert("주민등록번호가 올바르지 않습니다");
151			fObj.focus(); return false;
152		}
153		if(fBrn != null && checkBRN(fVal) == false && fVal != ""){
154			alert("사업자등록번호가 올바르지 않습니다");
155			fObj.focus(); return false;
156		}
157		if(fFrn != null && checkFRN(fVal) == false && fVal != ""){
158			alert("외국인등록번호가 올바르지 않습니다");
159			fObj.focus(); return false;
160		}
161		if(fMal != null && checkEmail(fVal) == false && fVal != ""){
162			alert("이메일 주소가 올바르지 않습니다");
163			fObj.focus(); return false;
164		}
165	}
166	return true;
167}
168
169// 배열 요소일 경우 checked 된것이 있는지 확인
170function checkChecked(obj){
171	var fname = obj.form.name;
172	var objnm = obj.name;
173	var oElem = eval(fname+"."+objnm);
174	var ret = false;
175
176	if(typeof(oElem.length) == "undefined"){
177		if(oElem.checked){
178			ret = true;
179		}
180	} else{
181		for(var i=0;i<oElem.length;i++){
182			if(oElem[i].checked){
183				ret = true;
184			}
185		}
186	}
187	return ret;
188}
189
190/* 유효성 체크
191**************************************************************************************************************/
192
193// 주민등록번호 유효성 체크(Resident Registration number)
194function checkRRN(rrn){
195	// 주민번호의 형태와 7번째 자리(성별) 유효성 검사
196	fmt = /^\d{6}-[1234]\d{6}$/;
197	if(!fmt.test(rrn)){
198		return false;
199	}
200
201	// 날짜 유효성 검사
202	birthYear =(rrn.charAt(7) <= "2") ? "19" : "20";
203	birthYear += rrn.substr(0, 2);
204	birthMonth = rrn.substr(2, 2) - 1;
205	birthDate = rrn.substr(4, 2);
206	birth = new Date(birthYear, birthMonth, birthDate);
207
208	if( birth.getYear() % 100 != rrn.substr(0, 2) || birth.getMonth() != birthMonth || birth.getDate() != birthDate){
209		return false;
210	}
211
212	// Check Sum 코드의 유효성 검사
213	buf = new Array(13);
214	for(i = 0; i < 6; i++) buf[i] = parseInt(rrn.charAt(i));
215	for(i = 6; i < 13; i++) buf[i] = parseInt(rrn.charAt(i + 1));
216
217	multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
218	for(i = 0, sum = 0; i < 12; i++) sum +=(buf[i] *= multipliers[i]);
219
220	if((11 -(sum % 11)) % 10 != buf[12]){
221		return false;
222	}
223	return true;
224}
225
226// 사업자등록번호 유효성 체크(Business Registration Number)
227function checkBRN(brn){
228	var sum = 0;
229	var getlist =new Array(10);
230	var chkvalue =new Array("1","3","7","1","3","7","1","3","5");
231	for(var i=0; i<10; i++){ getlist[i] = brn.substring(i, i+1); }
232	for(var i=0; i<9; i++){ sum += getlist[i]*chkvalue[i]; }
233	sum = sum + parseInt((getlist[8]*5)/10);
234	sidliy = sum % 10;
235	sidchk = 0;
236	if(sidliy != 0){ sidchk = 10 - sidliy; }
237	else { sidchk = 0; }
238	if(sidchk != getlist[9]){ return false; }
239	return true;
240}
241
242// 외국인등록번호 유효성 체크(Foreign Registration Number)
243function checkFRN(frn){
244	var sum=0;
245	var odd=0;
246	buf = new Array(13);
247	for(i=0; i<13; i++){ buf[i]=parseInt(frn.charAt(i)); }
248	odd = buf[7]*10 + buf[8];
249	if(odd%2 != 0){ return false; }
250	if((buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ){
251		return false;
252	}
253	multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
254	for(i=0, sum=0; i<12; i++){ sum += (buf[i] *= multipliers[i]); }
255	sum = 11 - (sum%11);
256	if(sum >= 10){ sum -= 10; }
257	sum += 2;
258	if(sum >= 10){ sum -= 10; }
259	if(sum != buf[12]){ return false }
260	return true;
261}
262
263// 이메일 유효성 체크
264function checkEmail(str){
265	var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
266	if(str.search(reg) != -1){
267		return true;
268	}
269	return false;
270}
271
272/* 한글/영문/숫자 입력제한 함수 (지정된 것 제외하고 나머지는 무시)
273**************************************************************************************************************/
274// 숫자입력제어
275function pub_chkKeyPress(chkType){
276	// delete control key 와 상하좌우 허용함.
277	// Delete = 46, BackSpace=8 , Tab=9 , left-right=37-40 Enter = 13 
278
279	if( ((event.keyCode>=37)&&(event.keyCode<=40))||((event.keyCode>=8)&&(event.keyCode<=9))||(event.keyCode==46) ) {
280		return true;
281	}
282// 숫자만 입력
283	if(chkType==1){
284		if( ( (event.keyCode>=48)&&(event.keyCode<=57) ) || ( (event.keyCode>=96)&&(event.keyCode<=105) ) ) 
285		{
286			return true;
287		}	
288		else
289		{
290			event.returnValue=false;
291			return false;
292		} 
293	}
294// 숫자,, 만 입력
295	if(chkType==3){
296		if( ( (event.keyCode>=48)&&(event.keyCode<=57) ) || ( (event.keyCode>=96)&&(event.keyCode<=105) ) || ((event.keyCode >= 188)&&(event.keyCode <= 188))) 
297		{
298			return true;
299		}	
300		else
301		{
302			event.returnValue=false;
303			return false;
304		} 
305	}
306// 숫자,- 만 입력
307	if(chkType==4){
308		if( ( (event.keyCode>=48)&&(event.keyCode<=57) ) || ( (event.keyCode>=96)&&(event.keyCode<=105) ) || ((event.keyCode >= 189)&&(event.keyCode <= 189)) || ((event.keyCode >= 109)&&(event.keyCode <= 109))) 
309		{
310			return true;
311		}	
312		else
313		{
314			event.returnValue=false;
315			return false;
316		} 
317	}
318}
319
320// 한글만 입력
321function chkHan(this_s,type){
322	temp_value = this_s.value.toString();
323	regexp = '';
324	repexp = '';
325	switch(type){
326		case 'c': regexp = /[^ㄱ-ㅎ가-힣]/g;break;
327		case 's': regexp = /[^ㄱ-ㅎ가-힣\s]/g;break;
328		case '':	regexp = /[^가-힣]/g; break;
329		default : regexp = /[^ㄱ-ㅎ가-힣\s]/g;
330	}
331	if(regexp.test(temp_value)){
332		temp_value = temp_value.replace(regexp,repexp);
333		this_s.value = temp_value;
334	}
335}
336/*
337type
338-> 'c' : 초성 포함
339-> 's' : 초성 포함 + 공백 포함
340-> '' : 초성, 공백 무시
341
342사용예)
343초성, 공백 무시
344onkeyup = "chkHan(this, '');"
345초성 포함
346onkeyup = "chkHan(this, 'c');"
347초성, 공백 포함
348onkeyup = "chkHan(this, 's');"
349*/
350
351// 숫자만 입력받기
352function chkNum(this_s,type){
353	temp_value = this_s.value.toString();
354	regexp = /[^-\.0-9]/g;
355	repexp = '';
356	temp_value = temp_value.replace(regexp,repexp);
357	regexp = '';
358	repexp = '';
359	switch(type){
360		case 'int':	 regexp = /[^0-9]/g; break;
361		case 'float':regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break;
362		case '-int':	regexp = /^(-?)([0-9]*)([^0-9]*)([0-9]*)([^0-9]*)/;break;
363		case '-float':regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break;
364		default : regexp = /[^0-9]/g; break;
365	}
366	switch(type){
367		case 'int':repexp = '';break;
368		case 'float':repexp = '$2$3$5';break;
369		case '-int':	repexp = '$1$2$4';break;
370		case '-float':repexp = '$1$2$3$5'; break;
371		default : regexp = /[^0-9]/g; break;
372	}
373	temp_value = temp_value.replace(regexp,repexp);
374	this_s.value = temp_value;
375}
376/*
377type
378-> '', 'int' : 양의 정수
379-> 'float' : 양의 실수
380-> '-int' : 음의 정수 포함
381-> '-int' : 음의 실수 포함
382
383사용예)
384양의 정수만
385onkeyup = "chkNum(this, '');"
386양의 실수만
387onkeyup = "chkNum(this, 'float');"
388정수만
389onkeyup = "chkNum(this, '-int');"
390실수만
391onkeyup = "chkNum(this, '-float');"
392*/
393
394// 영어만 입력받기  (대소문자)
395function chkEng(this_s,type){
396	temp_value = this_s.value.toString();
397	regexp = '';
398	repexp = '';
399	switch(type){
400		case 'small':regexp = /[^a-z]/g;break;
401		case 'big':regexp = /[^A-Z]/g;break;
402		case 'all':regexp = /[^a-z]/i;break;
403		default :regexp = /[^a-z]/i;break;
404	}
405	temp_value = temp_value.replace(regexp,repexp);
406	this_s.value = temp_value;
407}
408/*
409type
410-> '', 'all' : 모두
411-> 'small' : 소문자
412-> 'big' : 대문자
413
414사용예)
415모두
416onkeyup = "chkEng(this, '');"
417소문자만
418onkeyup = "chkEng(this, 'small');"
419대문자만
420onkeyup = "chkEng(this, 'big');"
421*/
422
423// 영어와 숫자만 입력받기
424function chkNumEng(this_s){
425	temp_value = this_s.value.toString();
426	regexp = /[^0-9a-zA-Z]/g;
427	repexp = '';
428	temp_value = temp_value.replace(regexp,repexp);
429	this_s.value = temp_value;
430}
431/*
432사용예)
433onkeyup = "chkNumEng(this);"
434*/
435
436// 영어와 숫자, 언더바만 입력받기
437function chkNumEngUbar(this_s){
438	temp_value = this_s.value.toString();
439	regexp = /[^0-9a-zA-Z_]/g;
440	repexp = '';
441	temp_value = temp_value.replace(regexp,repexp);
442	this_s.value = temp_value;
443}
444/*
445사용예)
446onkeyup = "chkNumEngUbar(this);"
447*/
448
449//ID 영문+숫자만 입력체크
450function Check_ID(input) {
451  var err_cnt=0
452  for (var i = 0; i < input.length; i++) {
453      var val = input.charAt(i);
454      if (!((val >= "0" && val <= "9") || (val >= "a" && val <= "z") || (val >= "A" && val <= "Z"))) err_cnt ++;
455  }
456  if (err_cnt == 0 ) {
457     return true;
458  } else {
459     return false;
460  }
461}
462function input_email(domain){
463	email = document.getElementsByName('email[]')
464	if(domain){
465		email[1].value = domain;
466	}
467	else{
468		email[1].value = "";
469		email[1].focus();
470	}
471}
472
473function PWD_check(ObjUserPassword){
474  // 비밀번호(패스워드) 유효성 체크 (문자, 숫자, 특수문자의 조합으로 6~16자리)
475  //if(ObjUserPassword.value != objUserPasswordRe.value)
476  //{
477  //  alert("입력하신 비밀번호와 비밀번호확인이 일치하지 않습니다");
478  //  return false;
479  //}
480 
481//  if(ObjUserPassword.length<6 || ObjUserPassword.length>20) {
482//    alert("비밀번호는 영문,숫자,특수문자 조합으로 사용하여 6~20자까지입니다.");
483//    return false;
484//  }
485// 
486//  if(!ObjUserPassword.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)) {
487//    alert("비밀번호는 영문,숫자,특수문자 조합으로 사용하여 6~20자까지입니다.");
488//    return false;
489//  }
490
491  if(ObjUserPassword.length<6 || ObjUserPassword.length>20) {
492    alert("비밀번호는 영문,숫자 조합으로 사용하여 6~20자 사이로 입력하세요.");
493    return false;
494  }
495 
496  if(!ObjUserPassword.match(/([a-z].*[0-9])|([0-9].*[a-z])/)) {
497    alert("비밀번호는 영문,숫자 조합으로 사용하여 6~20자 사이로 입력하세요.");
498    return false;
499  }
500 
501  //if(ObjUserID.value.indexOf(ObjUserPassword) > -1) {
502  //  alert("비밀번호에 아이디를 사용할 수 없습니다.");
503  //  return false;
504  //}
505 
506  var SamePass_0 = 0; //동일문자 카운트
507  var SamePass_1 = 0; //연속성(+) 카운드
508  var SamePass_2 = 0; //연속성(-) 카운드
509 
510  for(var i=0; i < ObjUserPassword.length; i++) {
511    var chr_pass_0 = ObjUserPassword.charAt(i);
512    var chr_pass_1 = ObjUserPassword.charAt(i+1);
513    
514    //동일문자 카운트
515    if(chr_pass_0 == chr_pass_1) {
516      SamePass_0 = SamePass_0 + 1
517    }
518    
519    var chr_pass_2 = ObjUserPassword.charAt(i+2);
520
521    //연속성(+) 카운드
522    if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == 1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == 1) {
523      SamePass_1 = SamePass_1 + 1
524    }
525    
526    //연속성(-) 카운드
527    if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == -1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == -1) {
528      SamePass_2 = SamePass_2 + 1
529    }
530  }
531  if(SamePass_0 > 1) {
532    alert("동일문자를 3번 이상 사용할 수 없습니다.");
533    return false;
534  }
535 
536  if(SamePass_1 > 1 || SamePass_2 > 1 ) {
537    alert("연속된 문자열(123 또는 321, abc, cba 등)을\n 3자 이상 사용 할 수 없습니다.");
538    return false;
539  }
540  return true;
541}
542
543function comma(v){ 
544	var num = v.value;
545	if (v.value.length >= 4){
546		re = /^$|,/g; 
547		num = num.replace(re, ""); 
548		fl="" 
549		if(isNaN(num)) { alert("문자는 사용할 수 없습니다.");return 0} 
550		if(num==0) return num 
551		if(num<0){ 
552			num=num*(-1) 
553			fl="-" 
554		}else{
555			num=num*1;
556		} 
557		num = new String(num) 
558		temp="" 
559		co=3 
560		num_len=num.length 
561		while (num_len>0){ 
562			num_len=num_len-co 
563			if(num_len<0){
564				co=num_len+co;
565				num_len=0;
566			} 
567			temp=","+num.substr(num_len,co)+temp 
568		}
569		v.value =  fl+temp.substr(1);
570	}
571}
572
573function number_format(numstr) {
574  var numstr = String(numstr);
575  var re0 = /(\d+)(\d{3})($|\..*)/;
576  if (re0.test(numstr))
577	return numstr.replace(
578	  re0,
579	  function(str,p1,p2,p3) { return number_format(p1) + "," + p2 + p3; }
580	);
581  else
582	return numstr;
583}
584
585/* 기타함수
586**************************************************************************************************************/
587
588// 폼에 해당하는 컨트롤들의 기본값 쉽게 셋팅해 주기
589function initForm(f){
590	var nLen; // form 요소의 갯수
591	var ival; // 각 요소의 default value 값 즉! 초기화하고자 하는값
592	var fTyp; // form 요소의 타입(select, radio, checkbox...)
593
594	for(var i = 0; i < f.elements.length; i++){
595		fTyp = toUpperCase(f.elements[i].type);
596		ival = f.elements[i].ival;
597
598		if(ival && fTyp == "SELECT-ONE"){
599			nLen = f.elements[i].options.length;
600			for(var j = 0; j < nLen; j++){
601				if(f.elements[i].options[j].value == ival)
602					f.elements[i].options[j].selected = true;
603			}
604		}
605		if(fTyp == "SELECT-MULTIPLE"){
606			nLen = f.elements[i].options.length;
607			for(var j = 0; j < nLen; j++){
608				if(f.elements[i].options[j].value == f.elements[i].options[j].ival)
609					f.elements[i].options[j].selected = true;
610			}
611		}
612		if(ival &&(fTyp == "RADIO" || fTyp == "CHECKBOX")){
613			if(f.elements[i].value == ival)
614				f.elements[i].checked = true;
615		}
616	}
617	return true;
618}
619
620// 문자 길이 반환(영문 1byte, 한글 2byte 계산)
621function getLen(str){
622	var strLen = str.length;
623	var cnt = 0;
624
625	for(k=0; k<strLen; k++){
626		var temp = str.charAt(k);
627		if(escape(temp).length > 4)
628			cnt += 2;
629		else if(temp != '\r')
630			cnt++;
631	}
632	return cnt;
633}
634
635// 바이트로 입력제한(초과분 자동삭제)
636function cutByte(f, maxByte){
637	var str = new String(f.value);
638	var strLen = str.length;
639	var strByte = getLen(str);
640	var cnt = 0;
641
642	if(strByte > maxByte){
643		var overByte = strByte-maxByte;
644		alert("내용을 "+maxByte+"byte 이상 입력하실 수 없습니다.\n입력하신 내용 중 초과 "+overByte+"byte는 자동 삭제 됩니다.");
645	}
646
647	for(k=0; k<strLen; k++){
648		if(cnt < maxByte){
649			var temp = str.charAt(k);
650			if(escape(temp).length > 4)
651				cnt += 2;
652			else if(temp != '\r')
653				cnt++;
654		}else{
655			str = str.substring(0, k);
656			if((maxByte%2) == 1){
657				strLen = str.length-1;
658				if(escape(str.charAt(strLen)).length > 4){
659					str = str.substring(0,strLen);
660				}
661			}
662			f.value = str;
663			break;
664		}
665	}
666}
667
668// 대문자 변환 ex) toUpperCase(문자)
669function toUpperCase(str){
670	var ret;
671	str != null ? ret = str.toUpperCase() : ret = "";
672	return ret;
673}
674
675// 포커스 변경
676function moveFocus(num,fromform,toform){
677	var str = fromform.value.length;
678	if(str == num) toform.focus();
679}
680
681// 이메일선택입력
682function inputDomain(f, domain){
683	if(domain){
684		f.email2.value = domain;
685	}else{
686		f.email2.value = "";
687		f.email2.focus();
688	}
689}
690
691// 파일폼 직접입력 제한
692function filePretect(){
693	alert("찾아보기를 이용해 주세요.");
694	event.returnValue = false;
695}
696
697//체크박스 전체선택
698function AllChk() {
699
700	if($("#chk").prop("checked") == true) {
701
702		for(var i = 0; i < document.ListForm.elements.length; i++) {
703			document.ListForm.elements[i].checked = true;
704		}
705	}else {
706		for(var i = 0; i < document.ListForm.elements.length; i++) {
707				document.ListForm.elements[i].checked = false;
708		}
709	}
710}
711
712//체크박스 전체선택
713function AllChk_sub() {
714	if($("#chk2").prop("checked") == true) {
715		for(var i = 0; i < document.ListForm2.elements.length; i++) {
716			document.ListForm2.elements[i].checked = true;
717		}
718	}else {
719		for(var i = 0; i < document.ListForm2.elements.length; i++) {
720				document.ListForm2.elements[i].checked = false;
721		}
722	}
723}
724
725//체크박스 전체선택
726function AllChk_sub2() {
727	if($("#chk3").prop("checked") == true) {
728		for(var i = 0; i < document.ListForm3.elements.length; i++) {
729			document.ListForm3.elements[i].checked = true;
730		}
731	}else {
732		for(var i = 0; i < document.ListForm3.elements.length; i++) {
733				document.ListForm3.elements[i].checked = false;
734		}
735	}
736}
737
738/* 지정된 체크박스 모두 체크
739**************************************************************************************************************/
740function AllChk2(frm, type){
741	var chk_obj = document.getElementsByName(type);
742	if(frm.allchk.checked == true){
743		for(var i=0; i<chk_obj.length; i++){
744			chk_obj[i].checked = true;
745		}
746	}else{
747		for(var i=0; i<chk_obj.length; i++){
748			chk_obj[i].checked = false;
749		}
750	}
751}
752
753//날짜 스크립트
754function wr_date(s_u, e_u, per){
755	var st_date = document.getElementsByName(s_u);
756	var en_date = document.getElementsByName(e_u);
757	var newDay=mydate=new Date();
758	var year=mydate.getYear()
759	var month=mydate.getMonth()+1
760	var day=mydate.getDate()
761
762	if (month<10) month="0"+month;
763	if (day<10) day="0"+day;
764
765
766	newDay.setDate(mydate.getDate()-per); 
767	var se_year=newDay.getYear()
768	var se_month=newDay.getMonth()+1
769	var se_day=newDay.getDate()
770
771	if (se_month<10) se_month="0"+se_month;
772	if (se_day<10) se_day="0"+se_day;
773
774	st_date[0].value=se_year+"-"+se_month+"-"+se_day;
775	en_date[0].value=year+"-"+month+"-"+day;
776}
777
778function clr_txt(na){
779	var cl_name = document.getElementsByName(na);
780	cl_name[0].value="";
781}
782
783// 현재 이벤트객체 Index 가져오기 ##################################################
784function getDisObjIdx(obj) {
785	var i = 0;
786	var result = 0;
787
788	var arrTag = document.getElementsByTagName('*');
789
790	if (obj.sourceIndex) {
791		while (arrTag[i].sourceIndex < obj.sourceIndex) {
792			if (arrTag[i].id == obj.id) ++result;
793			++i;
794		}
795	}
796	else if (obj.compareDocumentPosition) {
797		while ((arrTag[i].compareDocumentPosition(obj) & 6) - 3 > 0) {
798			if (arrTag[i].id == obj.id) ++result;
799			++i;
800		}
801	}
802
803	return result;
804}
805
806/* 숫자세자리마다 콤마 찍기
807**************************************************************************************************************/
808function commify(n) {
809	var reg = /(^[+-]?\d+)(\d{3})/;		// 정규식
810	n += '';							// 숫자를 문자열로 변환
811
812	while (reg.test(n))
813		n = n.replace(reg, '$1'+','+'$2');
814
815	return n;
816}
817
818/* 삭제 함수
819**************************************************************************************************************/
820function do_delete(url, txt){
821	var c = confirm(txt);
822	if (c){
823		doquery.location.href=url;
824		//location.href=url
825	}
826}
827
828function change_bg(num){
829	var num = parseInt(num);
830	$('#list_tr tr').slice(0).removeClass("tbrow_sel");
831	$('#list_tr tr').slice(0).addClass("tbrow");
832
833	$('#list_tr tr').slice(num, num+1).removeClass("tbrow");
834	$('#list_tr tr').slice(num, num+1).addClass("tbrow_sel");
835}
836
837function change_bg_sub(num){
838	var num = parseInt(num);
839	$('#list_tr_sub tr').slice(0).removeClass("tbrow_sel");
840	$('#list_tr_sub tr').slice(0).addClass("tbrow");
841
842	$('#list_tr_sub tr').slice(num, num+1).removeClass("tbrow");
843	$('#list_tr_sub tr').slice(num, num+1).addClass("tbrow_sel");
844}
845
846function change_bg3(num){
847	var num = parseInt(num);
848	$('#list_tr3 tr').slice(0).removeClass("tbrow_sel");
849	$('#list_tr3 tr').slice(0).addClass("tbrow");
850
851	$('#list_tr3 tr').slice(num, num+1).removeClass("tbrow");
852	$('#list_tr3 tr').slice(num, num+1).addClass("tbrow_sel");
853}
854
855function change_sel(num){
856	var num = parseInt(num);
857	var cls_name = $('#list_tr tr:eq('+num+')').attr("class");
858	if (cls_name=="tbrow"){
859		$('#list_tr tr:eq('+num+')').attr("class", "tbrow_selC");
860		$('#list_tr .Tno_border:eq('+num+')').attr("checked", true);
861	}else{
862		$('#list_tr tr:eq('+num+')').attr("class", "tbrow");
863		$('#list_tr .Tno_border:eq('+num+')').attr("checked", false);
864	}
865
866}
867
868function Tb_addRow(Tid, Trow){
869	$("#"+Tid).append($("#"+Trow).val());
870}
871
872function Tb_delRow(obj){
873	$(obj).parent().parent().remove();
874}
875
876function goTwitter(msg,url) {
877	var href = "http://twitter.com/home?status=" + encodeURIComponent(msg) + " " + encodeURIComponent(url);
878	var a = window.open(href, 'twitter', '');
879	if ( a ) {
880		a.focus();
881	}
882}
883function goMe2Day(msg,url,tag) {
884	var href = "http://me2day.net/posts/new?new_post[body]=" + encodeURIComponent(msg) + " " + encodeURIComponent(url) + "&new_post[tags]=" + encodeURIComponent(tag);
885	var a = window.open(href, 'me2Day', '');
886	if ( a ) {
887		a.focus();
888	}
889}
890function goFaceBook(msg,url) {
891	var href = "http://www.facebook.com/sharer.php?u=" + url + "&t=" + encodeURIComponent(msg);
892	var a = window.open(href, 'facebook', '');
893	if ( a ) {
894		a.focus();
895	}
896}
897function goCyWorld(msg, url) {
898	var link = "http://csp.cyworld.com/bi/bi_recommend_pop.php?title="+encodeURIComponent(msg);
899	link += "&url="+encodeURIComponent(url);
900	link += "&thumbnail="+encodeURIComponent("{sc_img[0]}");
901	link += "&summary="+encodeURIComponent("");
902	window.open(link,"sns",'width=700,height=600,resizable=yes,scrollbars=yes,status=0');
903
904}
905/*
906function goYozmDaum(prefix,link,parameter) {
907	var href = "http://yozm.daum.net/api/popup/prePost?link=" + encodeURIComponent(link) + "&prefix=" + encodeURIComponent(prefix) + "&parameter=" + encodeURIComponent(parameter);
908	var a = window.open(href, 'yozmSend', 'width=466, height=356');
909	if ( a ) {
910		a.focus();
911	}
912	//sourceid=54&
913}
914*/
915function goYozmDaum(msg,url) {
916	var href = "http://yozm.daum.net/api/popup/post?prefix=" + encodeURIComponent(msg) + "&meta=&key=&imgurl=&crossdomain=0&callback=&link=" + encodeURIComponent(url);
917	var a = window.open(href, 'yozmSend', 'width=466, height=356');
918	if ( a ) {
919		a.focus();
920	}
921	//sourceid=54&
922}
923
924function pop_calendar(form, field){
925	window.open("/dev/pop_calendar.php?form="+form+"&field="+field, "calendar", "width=184,height=158");
926}
927
928function goSubmitBasic(f) {
929	// 폼 검증 함수 실행
930	if(!checkForm(f)){
931		return false;
932	}
933}
934
935function Mcash_list(u){
936	window.open("../pop/pop_cash.php?uid="+u, "CASH_LIST", "width=880px, height=600px, scrollbars=yes");
937}
938
939function Mpoint_list(u){
940	window.open("../pop/pop_point.php?uid="+u, "POINT_LIST", "width=880px, height=600px, scrollbars=yes");
941}
942
943function shipping_pop_view(u){
944	window.open("../../mypage/pop_shipping_order.php?snum="+u, "SHIPPING_ORDERS", "width=820,height=900, scrollbars=yes");
945}
946
947function shipping_pop_v(u){
948	window.open("../../mypage/pop_shipping_orderV.php?unum="+u, "SHIPPING_ORDERSV", "width=830,height=900, scrollbars=yes");
949}
950
951function shipping_return_app(u){
952	window.open("../pop/pop_shipping_return.php?unum="+u, "SHIPPING_RETURNApp", "width=830,height=650, scrollbars=yes");
953}
954
955function sendSns(sns, url, txt)
956{
957    var o;
958    var _url = encodeURIComponent(url);
959    var _txt = encodeURIComponent(txt);
960    var _br  = encodeURIComponent('\r\n');
961 
962    switch(sns)
963    {
964        case 'facebook':
965            o = {
966                method:'popup',
967                url:'http://www.facebook.com/sharer/sharer.php?u=' + _url
968            };
969            break;
970 
971        case 'twitter':
972            o = {
973                method:'popup',
974                url:'http://twitter.com/intent/tweet?text=' + _txt + '&url=' + _url
975            };
976            break;
977 
978        case 'me2day':
979            o = {
980                method:'popup',
981                url:'http://me2day.net/posts/new?new_post[body]=' + _txt + _br + _url + '&new_post[tags]=epiloum'
982            };
983            break;
984 
985        case 'kakaotalk':
986            o = {
987                method:'web2app',
988                param:'sendurl?msg=' + _txt + '&url=' + _url + '&type=link&apiver=2.0.1&appver=2.0&appid=dev.epiloum.net&appname=' + encodeURIComponent('Epiloum 개발노트'),
989                a_store:'itms-apps://itunes.apple.com/app/id362057947?mt=8',
990                g_store:'market://details?id=com.kakao.talk',
991                a_proto:'kakaolink://',
992                g_proto:'scheme=kakaolink;package=com.kakao.talk'
993            };
994            break;
995 
996        case 'kakaostory':
997            o = {
998                method:'web2app',
999                param:'posting?post=' + _txt + _br + _url + '&apiver=1.0&appver=2.0&appid=dev.epiloum.net&appname=' + encodeURIComponent('Epiloum 개발노트'),
1000                a_store:'itms-apps://itunes.apple.com/app/id486244601?mt=8',
1001                g_store:'market://details?id=com.kakao.story',
1002                a_proto:'storylink://',
1003                g_proto:'scheme=kakaolink;package=com.kakao.story'
1004            };
1005            break;
1006 
1007        case 'band':
1008            o = {
1009                method:'web2app',
1010                param:'create/post?text=' + _txt + _br + _url,
1011                a_store:'itms-apps://itunes.apple.com/app/id542613198?mt=8',
1012                g_store:'market://details?id=com.nhn.android.band',
1013                a_proto:'bandapp://',
1014                g_proto:'scheme=bandapp;package=com.nhn.android.band'
1015            };
1016            break;
1017 
1018        default:
1019            alert('지원하지 않는 SNS입니다.');
1020            return false;
1021    }
1022 
1023    switch(o.method)
1024    {
1025        case 'popup':
1026            window.open(o.url);
1027            break;
1028 
1029        case 'web2app':
1030            if(navigator.userAgent.match(/android/i))
1031            {
1032                // Android
1033                setTimeout(function(){ location.href = 'intent://' + o.param + '#Intent;' + o.g_proto + ';end'}, 100);
1034            }
1035            else if(navigator.userAgent.match(/(iphone)|(ipod)|(ipad)/i))
1036            {
1037                // Apple
1038                setTimeout(function(){ location.href = o.a_store; }, 200);          
1039                setTimeout(function(){ location.href = o.a_proto + o.param }, 100);
1040            }
1041            else
1042            {
1043                alert('이 기능은 모바일에서만 사용할 수 있습니다.');
1044            }
1045            break;
1046    }
1047}

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.