PageSourceSearch

https://difa.or.kr/common/js/ComUtil.js?v=2026107222142

js difa.or.kr collected 2026-10-07 13:20:14 UTC 63,186 bytes, 2,175 lines download raw bytes

1/**********************************************************************************
2 *    Program ID   : ComUtil.js
3 *    Description  : Utility Method정의
4 **********************************************************************************
5 
6/**
7 * 입력값이 NULL인지 체크
8
9 */
10function isNull(input) {
11    if (input.value == null || input.value == "") {
12        return true;
13    }
14    return false;
15}
16
17/**
18 * 입력값에 스페이스 이외의 의미있는 값이 있는지 체크
19
20 * ex) if (isEmpty(form.keyword)) {
21 *         alert("검색조건을 입력하세요.");
22 *     }
23 */
24function isEmpty(input) {
25    if (input.value == null || input.value.replace(/ /gi,"") == "") {
26        return true;
27    }
28    return false;
29}
30
31/**
32 * 입력값에 특정 문자(chars)가 있는지 체크
33 * 특정 문자를 허용하지 않으려 할 때 사용
34 * ex) if (containsChars(form.name,"!,*&^%$#@~;")) {
35 *         alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
36 *     }
37 */
38function containsChars(input,chars) {
39    for (var inx = 0; inx < input.value.length; inx++) {
40       if (chars.indexOf(input.value.charAt(inx)) != -1)
41           return true;
42    }
43    return false;
44}
45
46/**
47 * 입력값이 특정 문자(chars)만으로 되어있는지 체크
48
49 * 특정 문자만 허용하려 할 때 사용
50 * ex) if (!containsCharsOnly(form.blood,"ABO")) {
51 *         alert("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다.");
52 *     }
53 */
54function containsCharsOnly(input,chars) {
55    for (var inx = 0; inx < input.value.length; inx++) {
56       if (chars.indexOf(input.value.charAt(inx)) == -1)
57           return false;
58    }
59    return true;
60}
61/********************************************************************
62*  Function Name : isNumCk3
63*  Description   : 숫자 만
64*  Output Data   : event.returnValue=false
65*  +숫자만 입력 가능 (Back Space Key , Delete key , Number pad key 가능)
66********************************************************************/
67function isChkDate()
68{
69    if((event.keyCode>57||event.keyCode<45)) event.returnValue=false
70} 
71/**
72 * 입력값이 알파벳인지 체크
73
74 * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
75 * 자주 쓰이는 경우에는 var chars 변수를 
76 * global 변수로 선언하고 사용하도록 한다.
77 * ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
78 *     var lowercase = "abcdefghijklmnopqrstuvwxyz"; 
79 *     var number    = "0123456789";
80 *     function isAlphaNum(input) {
81 *         var chars = uppercase + lowercase + number;
82 *         return containsCharsOnly(input,chars);
83 *     }
84 */
85function isAlphabet(input) {
86    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
87    return containsCharsOnly(input,chars);
88}
89
90/**
91 * 입력값이 알파벳 대문자인지 체크
92
93 */
94function isUpperCase(input) {
95    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
96    return containsCharsOnly(input,chars);
97}
98
99/**
100 * 입력값이 알파벳 소문자인지 체크
101 */
102function isLowerCase(input) {
103    var chars = "abcdefghijklmnopqrstuvwxyz";
104    return containsCharsOnly(input,chars);
105}
106
107/**
108 * 입력값에 숫자만 있는지 체크
109
110 */
111function isNumber(input) {
112    var chars = "0123456789";
113    return containsCharsOnly(input,chars);
114}
115
116/**
117 * 입력값이 알파벳,숫자로 되어있는지 체크
118
119 */
120function isAlphaNum(input) {
121    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
122    return containsCharsOnly(input,chars);
123}
124
125/**
126 * 입력값이 숫자,대시(-)로 되어있는지 체크
127 */
128function isNumDash(input) {
129    var chars = "-0123456789";
130    return containsCharsOnly(input,chars);
131}
132
133/**
134 * 입력값이 숫자,콤마(,)로 되어있는지 체크
135
136 */
137function isNumComma(input) {
138    var chars = ",0123456789";
139    return containsCharsOnly(input,chars);
140}
141
142/**
143 * 입력값이 숫자,쉼표(,),콤마(.)로 되어있는지 체크
144
145 */
146function isNumDigit(input) {
147    var chars = ".,0123456789";
148    return containsCharsOnly(input,chars);
149}
150
151/**
152 * 입력값이 사용자가 정의한 포맷 형식인지 체크
153
154 * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
155 */
156function isValidFormat(input,format) {
157    if (input.value.search(format) != -1) {
158        return true; //올바른 포맷 형식
159    }
160    return false;
161}
162
163/**
164 * 입력값이 이메일 형식인지 체크
165 * ex) if (!isValidEmail(form.email)) {
166 *         alert("올바른 이메일 주소가 아닙니다.");
167 *     }
168 */
169function isValidEmail(input) {
170//    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;
171    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
172    return isValidFormat(input,format);
173}
174
175/**
176 * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
177 */
178function isValidPhone(input) {
179    var format = /^(\d+)-(\d+)-(\d+)$/;
180    return isValidFormat(input,format);
181}
182/**
183 * 입력값이 날짜 형식(숫자4자리-숫자2자리-숫자2자리)인지 체크
184 */
185function isValidDate(input) {
186    var format = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
187    return isValidFormat(input,format);
188}
189/**
190 * 입력값의 바이트 길이를 리턴
191
192 * ex) if (getByteLength(form.title) > 100) {
193 *         alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
194 *     }
195 * Author : Wonyoung Lee
196 */
197function getByteLength(input) {
198    var byteLength = 0;
199    for (var inx = 0; inx < input.value.length; inx++) {
200        var oneChar = escape(input.value.charAt(inx));
201        if ( oneChar.length == 1 ) {
202            byteLength ++;
203        } else if (oneChar.indexOf("%u") != -1) {
204            byteLength += 2;
205        } else if (oneChar.indexOf("%") != -1) {
206            byteLength += oneChar.length/3;
207        }
208    }
209    return byteLength;
210}
211
212function CheckStrLen(maxlen,obj)
213{
214 var temp; //들어오는 문자값...
215 var msglen;
216 msglen = maxlen*2;
217 
218 l = obj.value.length;
219 tmpstr = "" ;
220
221 if (l == 0)  
222  //document.formx.remain.value = maxlen*2;
223	a=1;//글자수표시없을때 임시
224 else 
225 {
226  for(k=0;k<l;k++)
227  {
228   temp = obj.value.charAt(k);
229
230   if (escape(temp).length > 4)
231    msglen -= 2;
232   else
233    msglen--;
234  
235   if(msglen < 0) 
236   {
237    alert("총 영문 "+(maxlen*2)+"자 한글 " + maxlen + "자 까지 입력하실 수 있습니다.");
238    obj.value = tmpstr;
239    break;
240   }
241   else 
242   {
243    //document.formx.remain.value = msglen;
244	a=1;//글자수표시없을때 임시
245    tmpstr += temp;
246   }
247  }
248 }
249}
250
251// 2008.01.12 kth 추가 : 글자수 체크 함수 (return 값 )
252function checklen(fform,maxlength) {
253	var msgtext, msglen;
254	msgtext = fform.value;
255	var i=0,l=0;
256	var temp,lastl;
257
258
259	//길이를 구한다.
260	while(i < msgtext.length)
261	{
262		temp = msgtext.charAt(i);
263		if (escape(temp).length > 4)
264			l+=2;
265		else if (temp!='\r')
266			l++;
267		// OverFlow
268		if(l>maxlength)
269		{
270			alert("허용 길이 이상의 글을 쓰셨습니다.\n한글 "+ parseInt(maxlength/3) +"자, 영문"+ maxlength +"자까지만 쓰실 수 있습니다.");
271			temp = fform.value.substr(0,i);
272			fform.value = temp;
273			l = lastl;
274			return false;
275			//break;
276		}
277		lastl = l;
278		i++;
279	}
280	return true;
281}
282
283/**
284 * 선택된 라디오버튼이 있는지 체크
285
286 */
287function hasCheckedRadio(input) {
288    if (input.length > 1) {
289        for (var inx = 0; inx < input.length; inx++) {
290            if (input[inx].checked) return true;
291        }
292    } else {
293        if (input.checked) return true;
294    }
295    return false;
296}
297
298/**
299 * 선택된 체크박스가 있는지 체크
300
301 */
302function hasCheckedBox(input) {
303    return hasCheckedRadio(input);
304}
305
306
307/********************************************************************
308*  Function Name    : CreateTR()
309*  Description      : 화면상의 Table에 TR을 새롭게 추가하는 Script
310*  Input Data       : tbl - table의 ID							ex> value = abc -> <table id='abc' width=''....>
311*					  tdHtml - td 마다 추가되는 HTML Script		* 반드시 배열의 형태로 전달해야 합니다. 
312*					  tdCls	 - td 마다 사용되는 ClassName		* 반드시 배열의 형태로 전달해야 합니다. 
313*					  tdAlign - td 마다의 정렬 방법				* 반드시 배열의 형태로 전달해야 합니다. 
314*					  position - 붙일려는 위치. 없을때는 자동으로 최종 Tr로 붙여진다.
315*  Output Data      : 
316*  사용되는 Function : 
317*  예제 : 에너지 관리 -> 가스 적용 단가
318*		  /asp/energy/init/gas_price_janbi.asp 내의 addRow 함수.
319/********************************************************************/
320function CreateTR(tbl, tdHtml, tdCls, tdAlign, position) {
321	var pos = 0;
322	var grp = document.getElementById(tbl);
323	var grpCnt = grp.rows.length;
324	var obj;
325
326	pos = (position == null)?grpCnt:position;
327
328	grp.insertRow(pos);
329	for (var i=0; i<tdHtml.length; i++) {
330		grp.rows(pos).insertCell(i);
331		obj = grp.rows(pos).cells(i);
332		obj.className = tdCls[i];
333		obj.align = tdAlign[i];
334		obj.innerHTML = tdHtml[i];
335		obj.focus();
336	}
337}
338
339function DeleteTR(tbl) {
340  document.getElementById(tbl).deleteRow(document.getElementById(tbl).clickedRowIndex);
341}
342
343
344/********************************************************************
345*  Function Name    : xReplace()
346*  Description      : 정규식으로 문자 치환.
347*  Input Data       : input - 대상 String.
348*					  e - 찾으려는 문자.
349*					  k	- 바꾸려는 문자.
350*  Output Data      : String
351*  사용되는 Function : 
352/********************************************************************/
353function xReplace(input,e,k) {
354	var tmp = String(input);
355//	return tmp.replace(/e/gi,k);
356	return tmp.replace(new RegExp(e,"ig"), k);
357}
358
359
360/********************************************************************
361*  Function Name    : objReplace()
362*  Description      : 정규식으로 문자 치환.
363*  Input Data       : input - 대상 Object.
364*					  e - 찾으려는 문자.
365*					  k	- 바꾸려는 문자.
366*  Output Data      : 
367*  사용되는 Function : xReplace();
368/********************************************************************/
369function objReplace(input,e,k) {
370	var tmp= String(input.value);
371	input.value = xReplace(tmp,e,k);
372}
373
374/********************************************************************
375*  Function Name    : removeComma()
376*  Description      : String에서 "," -> "" 로 치환.
377*  Input Data       : input - 대상 String.
378*  Output Data      : String
379*  사용되는 Function : xReplace();
380/********************************************************************/
381function removeComma(input) {
382	return xReplace(input,",","");
383}
384
385/********************************************************************
386*  Function Name    : objRemoveComma()
387*  Description      : Object의 Value 에서 "," -> "" 로 치환.
388*  Input Data       : input - 대상 String.
389*  Output Data      : 
390*  사용되는 Function : xReplace();
391/********************************************************************/
392function objRemoveComma(input) {
393	input.value = xReplace(input.value,",","");
394	input.select();
395}
396
397/********************************************************************
398*  Function Name    : setComma()
399*  Description      : String의 3자리 마다 "," 표시.
400*  Input Data       : str - 대상 String.
401*  Output Data      : 
402*  사용되는 Function : 
403/********************************************************************/
404function setComma(str) {
405    var result = "";
406    var tail = "";
407    var sign = "";
408    var flag = false;
409
410    if(str == "") return result;
411
412    // 0이하 '-'정수인 경우를 위해.
413    if (str.substring(0,1)=='-') {
414        sign = str.substring(0,1);
415        str = str.substring(1);
416    }
417
418    var pts = str.lastIndexOf(".");
419
420    if(pts > 0) { // 부동소수점인 경우
421        tail = str.substring(pts);
422        str = str.substring(0, pts);
423    }
424
425    var len = str.length;
426    var quota = parseInt(len / 3); // 몫
427    var remainder = len % 3; // 나머지
428
429    var buffer = str.substr(0, remainder); // 첫번째 값
430
431    for(var i = 0; i < quota; i++) {
432        if(buffer != "")
433            buffer = buffer + ',';
434
435        buffer = buffer + str.substr(remainder + i * 3, 3);
436    }
437
438    if(pts > 0)
439        result = sign + buffer + tail; // 소수점이 있으면
440    else
441        result = sign + buffer;
442
443    return result; // 결과 값 출력
444}
445
446/********************************************************************
447*  Function Name    : objSetComma()
448*  Description      : Object의 Value 에서 3자리마다 "," 표시
449*  Input Data       : input - 대상 String.
450*  Output Data      : 
451*  사용되는 Function : setComma();
452/********************************************************************/
453function objSetComma(input) {
454	//alert('1');
455	input.value = setComma(input.value);
456}
457
458/************************************************************************
459*  Function Name : loadingHide() +
460*  Description   : Loading Image 
461*  Input Data    : None
462*  Output Data   : None
463*************************************************************************/
464function loadingHide(){
465//	if (top.window.frames['efm_main'] == undefined)
466//		top.window.document.all.hidepage.style.visibility = "hidden";
467//	else 
468//	    top.window.frames['efm_main'].document.all.hidepage.style.visibility = "hidden";
469	if (top.efm_main == undefined)
470		top.window.document.all.hidepage.style.visibility = "hidden";
471	else 
472	    top.efm_main.document.all.hidepage.style.visibility = "hidden";
473}
474
475/************************************************************************
476*  Function Name : loadingShow() +
477*  Description   : Loading Open
478*  Input Data    : None
479*  Output Data   : None
480*************************************************************************/
481function loadingShow(){
482//	if (top.window.frames['efm_main'] == undefined)
483//		top.window.document.all.hidepage.style.visibility = "visible";
484//	else 
485//	    top.window.frames['efm_main'].document.all.hidepage.style.visibility = "visible";
486	if (top.efm_main == undefined)
487		top.window.document.all.hidepage.style.visibility = "visible";
488	else 
489	    top.efm_main.document.all.hidepage.style.visibility = "visible";
490}
491
492/************************************************************************
493*  Function Name : insertHTML() +
494*  Description   : target Window의 obj에 val를 입력하는 함수.
495*  Input Data    : String target		ex> insertHTML('parent','navi','<img src=blank.gif>');
496*				   String obj
497*				   String val
498*  Output Data   : None
499*************************************************************************/
500function insertHTML(target, obj, val) {
501	if (target != "") 
502		eval(target).eval(obj).innerHTML=val;
503	else 
504		eval(obj).innerHTML=val;
505}
506
507/********************************************************************************
508*  Function Name : pageChangeNavigator()+
509*  Description  :  page들이 list로 출력
510*  Output Data   :  no
511*  Input Data    :  forms : form의 이름.
512        page: 현재의 page
513 *********************************************************************************/
514function pageChangeNavigator(frm, page, action, target) {
515    frm.move_page.value = page;
516    frm.action=action;
517    if(target!=null || target!=""){
518        frm.target=target;
519    }
520	  loadingShow();
521    frm.submit();
522}
523
524
525/********************************************************************
526*  Function Name : isNumCk2
527*  Description   : 숫자 의외의 키보드 안눌러짐
528*  Input Data    :
529*  Output Data   : event.returnValue=false
530*  숫자, -, ., 입력만 입력 가능 .
531********************************************************************/
532function isNumCk2()
533{
534    if(!(event.keyCode == 47)){
535        if ((event.keyCode<45)||(event.keyCode>57))
536            event.returnValue=false;
537    }else {
538        event.returnValue=false
539    }
540}
541
542/********************************************************************
543*  Function Name : isNumCk3
544*  Description   : 숫자 만
545*  Output Data   : event.returnValue=false
546*  +숫자만 입력 가능 (Back Space Key , Delete key , Number pad key 가능)
547********************************************************************/
548function isNumCk3()
549{
550    if((event.keyCode>57||event.keyCode<48)) event.returnValue=false
551}
552
553
554/********************************************************************
555*  Function Name : onlyNum
556*  Description   : 숫자 만
557*  Output Data   : event.returnValue=false
558*  +숫자만 입력 가능 
559********************************************************************/
560function onlyNum(objtext1)
561{
562	var inText = objtext1.value;
563	var ret;
564
565	for (var i = 0; i < inText.length; i++) 
566	{
567		ret = inText.charCodeAt(i);
568		if (!((ret > 47) && (ret < 58)))  
569		{
570			alert("숫자만 입력하세요.\nPlease enter only numbers.");
571			objtext1.value = "";
572			//objtext1.value = 0;
573			objtext1.focus();
574			return false;
575		}
576	}
577	return true;
578}
579
580
581/********************************************************************
582*  Function Name : TonlyNum
583*  Description   : 숫자 만
584*  Output Data   : event.returnValue=false
585*  +숫자만 입력 가능 
586********************************************************************/
587function TonlyNum(objtext1)
588{
589	var inText = objtext1.value;
590	var ret;
591
592	for (var i = 0; i < inText.length; i++) 
593	{
594		ret = inText.charCodeAt(i);
595		if (!((ret > 47) && (ret < 58)))  
596		{
597			alert("숫자만을 입력하세요");
598			objtext1.value = "1";
599			objtext1.focus();
600			return false;
601		}
602	}
603	return true;
604}
605
606
607/********************************************************************
608*  Function Name : onlyNum2
609*  Description   : 숫자와 '-'만가능
610*  Output Data   : event.returnValue=false
611*  +숫자만 입력 가능 
612********************************************************************/
613function onlyNum2(objtext1)
614{
615	var inText = objtext1.value;
616	var ret;
617
618	var repeatRegex = /(\d)\1{3,}/; 
619	if (repeatRegex.test(inText)) {
620		alert("같은 숫자가 4번 이상 연속될 수 없습니다.");
621		objtext1.value='';
622		return false;
623	}
624
625	for (var i = 0; i < inText.length; i++) 
626	{
627		ret = inText.charCodeAt(i);
628		if (!((ret > 47) && (ret < 58)))  
629		{
630		    if(ret!=45){
631			    alert("숫자와 '-'만을 입력하세요");
632			    objtext1.value = "";
633			    objtext1.focus();
634			    return false;
635			}
636		}
637	}
638	return true;
639}
640/********************************************************************
641상단 숫자키 와 오른쪽 키패드 그리고 아래 키를 허용 함.
642←(백스패이스) = 8
643TAB = 9
644  END = 35
645HOME =36 
646← = 37
647→  = 39
648INSERT = 45
649DELETE = 46
650NUMLOCK = 144
651
652* <input type="text" style="ime-mode:disabled" >    // 이 스타일은 외국어 입력 못하게 함(영어를 제외한 한국어 포함 - -);
653 ********************************************************************/
654function onlyNum3(){
655	var key = event.keyCode;
656	if(!(key==8||key==9||key==13||key==46||key==144||(key>=48&&key<=57)||key==110||key==190)){
657		alert('숫자만 입력 가능합니다');		
658		event.returnValue = false;
659	}
660}
661
662/************************************************************************
663*  Function Name : setDot() +
664*  Description   :
665*  Input Data    : String   i_str  => 정수, 또는 실수.
666                   int      i_dot  => 소수이하의 원하는 자리수 (자리가 모자랄경우 '0'을 추가한다.
667*  Output Data   : 소수이하의 연산 결과값.
668*************************************************************************/
669function setDot(i_str, i_dot) {
670
671
672    var i_Comma  = 0;
672     // 소수 위 수와 소수 이하의 자리를 잘라서 할당하는 배열 함수
673    var strInt  = '';
674    var strDot  = '';      // 정수 부 와 소수 부로 할당하는 변수
675
676	if (i_str.length < 1) return i_str;
677
678    // 정수부와 소수부로 나누는 조건식
679    // 소수부가 없을때는 빈값으로 할당한다.
680    if (i_str.lastIndexOf(".") > 0) {
681        i_Comma = i_str.split(".");
682        strInt = i_Comma[0];
683        strDot = i_Comma[1];
684    } else {
685        strInt = i_str;
686        strDot = "";
687    }
688    // 소수부의 원하는 자리까지 자르거나 '0'으로 셋팅하는 조건식.
689    if (strDot.length >= 2) {
690        strDot = strDot.substr(0, i_dot);
691    } else {
692        for (var z=0; z<=eval(i_dot-strDot.length); z++)
693            strDot+=String(0);
694    }
695    // 결과값을 반환한다.
696    return strInt + "." + strDot;
697}
698
699/************************************************************************
700*  Function Name : objSetDot() +
701*  Description   :
702*  Input Data    : Object   input => Form의 입력객체.
703                   int      i_dot  => 소수이하의 원하는 자리수 (자리가 모자랄경우 '0'을 추가한다.
704*  Output Data   : 소수이하의 연산 결과값.
705*************************************************************************/
706function objSetDot(input, i_dot) {
707	input.value = setDot(input.value, i_dot);
708}
709
710/************************************************************************
711*  Function Name : setDouble() +
712*  Description   : 소수 이하의 원하는 자리까지 반올림 또는 버림을 할 수 있다.
713*  Input Data    : String   val  => 정수, 또는 실수.
714                   Stirng   func => 반올림을 원하면 'round'
715                   int      dot  => 소수이하의 원하는 자리수 (자리가 모자랄경우 '0'을 추가한다.
716*  Output Data   : 소수이하의 연산 결과값.
717*************************************************************************/
718function setDouble(val, func, dot){
719    if (val == Infinity || val == 0) return '0';
720
721    var temp = val;
722
723	if (func == 'round')
724		temp = Math.round(temp * Math.pow(10, dot)) / Math.pow(10, dot);
725	else
726		temp = Math.floor(temp * Math.pow(10, dot)) / Math.pow(10, dot);
727
728    if (val != 0 && temp==0) {
729        temp = setDouble(val, func, dot+1);
730        if (dot > 5) {
731            temp = "0.0000";
732        }
733    }
734
735    return setDot(String(temp),dot); // 결과 값 출력
736}
737
738var nowDay = new Date(); 
739flagYear = nowDay.getFullYear();
740flagMon = nowDay.getMonth() + 1;
741flagDay = nowDay.getDay();
742flagDate= nowDay.getDate();
743/************************************************************************
744*  Function Name : printYear() +
745*  Description   :
746*  Input Data    : String	year => 년도
747*  Output Data   : 1901년부터 금년까지 년도만 option string 으로 반환.
748*************************************************************************/
749function printYear(year) {
750	if (year == null || year == "")
751		year = "";
752
753	for (i = flagYear; i >= 1990; i--) {
754		if (i == year) 
755			document.write("<option value=\""+i+"\" selected>"+i+"</option>");
756		else
757			document.write("<option value=\""+i+"\">"+i+"</option>");
758	}
759}
760function printYear2(year,syear) {
761	if (year == null || year == "")
762		year = flagYear;
763
764	for (i = flagYear; i >= syear; i--) {
765		if (i == year) 
766			document.write("<option value=\""+i+"\" selected>"+i+"</option>");
767		else
768			document.write("<option value=\""+i+"\">"+i+"</option>");
769	}
770}
771/************************************************************************
772*  Function Name : printMonth() +
773*  Description   :
774*  Input Data    : String	mon => 년도
775*  Output Data   : 1월 부터 12월 까지 option string으로 반환.
776*************************************************************************/
777function printMonth(mon) {
778	var temp = "";
779	if (mon == null || mon == "")
780		mon = flagMon;
781		
782	for (i = 1; i <= 12; i++) {
783		if (i < 10) temp = "0" + i;
784		else temp = i;
785
786		if (i == mon) 
787			document.write("<option value=\""+temp+"\" selected>"+i+"</option>");
788		else
789			document.write("<option value=\""+temp+"\">"+i+"</option>");
790	}
791}
792/************************************************************************
793*  Function Name : printDate() +
794*  Description   :
795*  Input Data    : String	date => 날짜
796*  Output Data   : 1일 부터 31일 까지 option string으로 반환.
797*************************************************************************/
798function printDate(date) {
799	var temp = "";
800	if (date == null || date == "")
801		date = flagDate;
802		
803	for (i = 1; i <= 31; i++) {
804		if (i < 10) temp = "0" + i;
805		else temp = i;
806
807		if (i == date) 
808			document.write("<option value=\""+temp+"\" selected>"+i+"</option>");
809		else
810			document.write("<option value=\""+temp+"\">"+i+"</option>");
811	}
812}
813
814/************************************************************************
815*  Function Name : NewWindow() +
816*  Description   :
817*  Input Data    : String	mypage => page url
818*				   String	myname => popup browser 이름
819*				   int		w	   => popup 넓이
820*				   int		h	   => popup 높이
821*				   int		t	   => x좌표
822*				   int		l	   => y좌표
823*				   String	scroll => 스크롤 유무. (no / yes)
824*				   String	resize => Resize 가능 유무 (no / yes)
825*				   String   menu   => 메뉴 유무 (no / yes)
826*  Output Data   : Input Parameter로 Popup을 띄운다.
827*************************************************************************/
828var win= null;
829function NewWindow(mypage,myname,w,h,t,l,scroll,resize,menu){
830  var wint, winl;
831  if (t == 0 || t== null)
832	wint = (screen.height-h)/2;
833  else
834	wint = t;
835
836  if (l == 0 || l== null)
837	winl = (screen.width-w)/2;
838  else
839	winl = l;
840
841  var settings  ='height='+h+',';
842      settings +='width='+w+',';
843      settings +='top='+wint+',';
844      settings +='left='+winl+',';
845      settings +='scrollbars='+scroll+',';
846      settings +='resizable='+resize+',';
847  if (menu != null) settings +='menubar='+menu+',';
848
849  win = window.open(mypage,myname,settings);
850  if(parseInt(navigator.appVersion) >= 4){win.focus();}
851}
852
853/************************************************************************
854*  Function Name : NewModalWindow() +
855*  Description   :
856*  Input Data    : String	mypage => page url
857*				   String	myname => popup browser 이름
858*				   int		w	   => popup 넓이
859*				   int		h	   => popup 높이
860*				   String	scroll => 스크롤 유무. (no / yes)
861*				   String	resize => Resize 가능 유무 (no / yes)
862*  Output Data   : Input Parameter로 Modal Popup을 띄운다.
863*************************************************************************/
864function NewModalWindow(mypage, myname, w, h, t, l, scroll, resize){
865  var wint, winl;
866  if (t == 0 || t== null)
867	wint = (screen.height-h)/2;
868  else
869	wint = t;
870
871  if (l == 0 || l== null)
872	winl = (screen.width-w)/2;
873  else
874	winl = l;
875
876  var settings  ='dialogHeight:'+h+'px;'
877      +'dialogWidth:'+w+'px;'
878      +'dialogTop:'+wint+'px;'
879      +'dialogLeft:'+winl+'px;'
880      +'scroll:'+scroll+';'
881      +'resizable:'+resize+';'
882      +'status:0;help:0;';
883  win = showModalDialog(mypage, myname, settings);
884  return win;
885}
886
887var mouseX, mouseY
888function CheckMouseWhere(e) {
889	if (top.document.layers) {
890		mouseX = e.x;
891		mouseY = e.y;
892	} else if (top.document.all) {
893		mouseX = event.clientX;
894		mouseY = event.clientY;
895	} else if (top.document.getElementById)  {
896		mouseX = e.x;
897		mouseY = e.y;
898	}
899}
900/********************************************************************
901*  Function Name    : objRemoveDash()
902*  Description      : Object의 Value 에서 "/" -> "" 로 치환.
903*  Input Data       : input - 대상 String.
904*  Output Data      : 
905*  사용되는 Function : xReplace();
906/********************************************************************/
907function objRemoveDash(input) {
908	input.value = xReplace(input.value,"/","");
909	input.select();
910}
911
912/********************************************************************
913*  Function Name    : setDash()
914*  Description      : String의 5번째자리 "/"표시 7번째자리 "/" 추가표시.
915*  Input Data       : str - 대상 String.
916*  Output Data      : 
917*  사용되는 Function : 
918/********************************************************************/
919function setDash(str) {
920    var result = "";
921    var tail = "";
922    var sign = "";
923    var flag = false;
924
925    if(str == "") return result;
926	var len = str.length;
927	result = str.substr(0, 4)+"/"+str.substr(4, 2)+"/"+str.substr(6,2)
928
929    return result; // 결과 값 출력
930}
931
932/********************************************************************
933*  Function Name    : objSetDash()
934*  Description      : String의 5번째자리 "/"표시 6번째자리 "/" 추가표시.
935*  Input Data       : input - 대상 String.
936*  Output Data      : 
937*  사용되는 Function : setComma();
938/********************************************************************/
939function objSetDash(input) {
940	//alert('1');
941	input.value = setDash(input.value);
942}
943
944
945
946
947/********************************************************************
948*  Function Name    : objRemoveTime()
949*  Description      : Object의 Value 에서 ":" 와 "-" -> "" 로 치환.
950*  Input Data       : input - 대상 String.
951*  Output Data      : 
952*  사용되는 Function : xReplace();
953/********************************************************************/
954function objRemoveTime(input) {
955	var retemp = "";
956	retemp = xReplace(input.value,":","");
957	input.value = xReplace(retemp,"-","");
958	input.select();
959}
960
961/********************************************************************
962*  Function Name    : setTime()
963*  Description      : String의 10:00-11:00 형태표현
964*  Input Data       : str - 대상 String.
965*  Output Data      : 
966*  사용되는 Function : 
967/********************************************************************/
968function setTime(str) {
969    var result = ":-:";
970    var tail = "";
971    var sign = "";
972    var flag = false;
973
974    if(str == "") return result;
975	var len = str.length;
976	result = str.substr(0, 2)+":"+str.substr(2, 2)+"-"+str.substr(4,2)+":"+str.substr(6,2);
977
978    return result; // 결과 값 출력
979}
980
981/********************************************************************
982*  Function Name    : objSetTime()
983*  Description      : String의 10:00-11:00 형태표현
984*  Input Data       : input - 대상 String.
985*  Output Data      : 
986*  사용되는 Function : setComma();
987/********************************************************************/
988function objSetTime(input) {
989	//alert('1');
990	input.value = setTime(input.value);
991}
992
993//단독시간인 경우 (ex) 10:00
994function objSetTime_only(input) {
995	//alert('1');
996	var str;
997	if(input.value.length==4){
998		str = input.value.substr(0, 2)+":"+input.value.substr(2, 2);
999	}else if(input.value.length>4){
1000		str = input.value.substr(0, 2)+":"+input.value.substr(2, 2);
1001	}else{
1002		str = input.value
1003	}
1004	input.value = str ;
1005}
1006/**
1007 * 주민등록 번호 체크
1008
1009 */
1010function rrn(field1,field2)
1011{
1012	if(field1.value.length!=0 && field2.value.length!=0)
1013	{
1014		if(field1.value.length!=6)
1015		{
1016			alert("주민등록번호가 옳지 않습니다!");
1017			field1.value="";
1018			field1.focus();
1019			return false;
1020		}
1021		for(var i=0;i<6;i++)
1022		{
1023			var AChar=field1.value.charAt(i);
1024			if(AChar < "0" || AChar > "9")
1025			{
1026				alert("주민등록번호가 옳지 않습니다!");
1027				field1.value="";
1028				field1.focus();
1029				return false;
1030				break;
1031				}
1032		}
1033		if(field2.value.length!=7)
1034		{
1035			alert("주민등록번호가 옳지 않습니다!");
1036			field2.value="";
1037			field2.focus();
1038			return false;
1039		}
1040		for(var i=0;i<7;i++)
1041		{
1042			var AChar=field2.value.charAt(i);
1043			if(AChar < "0" || AChar > "9")
1044			{
1045				alert("주민등록번호가 옳지 않습니다!");
1046				field2.value="";
1047				field2.focus();
1048				return false;
1049				break;
1050			}
1051		}
1052
1053		var mon=field1.value.substring(2,4);
1054		var day=field1.value.substring(4);
1055		var sex=field2.value.substring(0,1);
1056
1057		if((mon < "01") || (mon > "12")) {
1058			alert ("주민등록번호가 옳지 않습니다!")
1059			field1.value="";
1060			field1.focus();
1061			return false;
1062		}
1063		if((day < "01") || (day > "31")) {
1064			alert ("주민등록번호가 옳지 않습니다!")
1065			field1.value="";
1066			field1.focus();
1067			return false;
1068		}
1069		if((sex < "1") || (sex > "2")) {
1070			alert ("주민등록번호가 옳지 않습니다!")
1071			field2.value="";
1072			field2.focus();
1073			return false;
1074		}
1075	
1076		r11=field1.value.substring(0,1);
1077		r12=field1.value.substring(1,2);
1078		r13=field1.value.substring(2,3);
1079		r14=field1.value.substring(3,4);
1080		r15=field1.value.substring(4,5);
1081		r16=field1.value.substring(5,6);
1082		
1083		r21=field2.value.substring(0,1);
1084		r22=field2.value.substring(1,2);
1085		r23=field2.value.substring(2,3);
1086		r24=field2.value.substring(3,4);
1087		r25=field2.value.substring(4,5);
1088		r26=field2.value.substring(5,6);
1089		r27=field2.value.substring(6,7);
1090	
1091		var total = r11*2 + r12*3 + r13*4 + r14*5 + r15*6 + r16*7 + r21*8 + r22*9 + r23*2 + r24*3 + r25*4 + r26*5;
1092		var result= (11- (total % 11)) % 10;
1093
1094		if (result != r27) {
1095			alert("주민등록번호가 옳지 않습니다!");
1096			field1.value="";
1097			field2.value="";
1098			field1.focus();
1099			return false;
1100		}
1101	}
1102	return true;
1103}
1104
1105
1106//사업자번호 체크
1107function chkComNo(obj) {
1108	if (obj.value.length == 10) {
1109		var calStr1 = "13713713", biVal = 0,tmpCal;
1110		var calLast = obj.value.substring(9,10);
1111
1112		for (i=0; i < 8; i++) {
1113			biVal = biVal + (parseFloat(obj.value.substring(i,i+1)) * 
1114			parseFloat(calStr1.substring(i,i+1))) % 10;
1115		}
1116		tmpCal = parseFloat(obj.value.substring(8,9)) * 5 + "0";
1117		chkVal = parseFloat(tmpCal.substring(0,1)) + parseFloat(tmpCal.substring(1,2));
1118		chkDigit = (10 - (biVal + chkVal) % 10) % 10;
1119		if (calLast != chkDigit) {
1120			return false;
1121		}
1122	}
1123	return true
1124}
1125
1126//사업자번호 체크2
1127function chk_vend(a)
1128{
1129	var strNumb = a.value;
1130	if (strNumb.length != 10)
1131     {
1132        alert("사업자등록번호가 잘못되었습니다.");
1133        return false;
1134     }
1135        
1136		sumMod  =   0;
1137		sumMod  +=  parseInt(strNumb.substring(0,1));
1138		sumMod  +=  parseInt(strNumb.substring(1,2)) * 3 % 10;
1139		sumMod  +=  parseInt(strNumb.substring(2,3)) * 7 % 10;
1140		sumMod  +=  parseInt(strNumb.substring(3,4)) * 1 % 10;
1141		sumMod  +=  parseInt(strNumb.substring(4,5)) * 3 % 10;
1142		sumMod  +=  parseInt(strNumb.substring(5,6)) * 7 % 10;
1143		sumMod  +=  parseInt(strNumb.substring(6,7)) * 1 % 10;
1144		sumMod  +=  parseInt(strNumb.substring(7,8)) * 3 % 10;
1145		sumMod  +=  Math.floor(parseInt(strNumb.substring(8,9)) * 5 / 10);
1146		sumMod  +=  parseInt(strNumb.substring(8,9)) * 5 % 10;
1147		sumMod  +=  parseInt(strNumb.substring(9,10));
1148        
1149        if (sumMod % 10 !=  0)
1150        {
1151		  alert("사업자등록번호가 잘못되었습니다.");
1152		  return false;
1153        }
1154        return  true;
1155}
1156
1157
1158
1159/**
1160 * 외국인등록 번호 체크
1161 */
1162function fgn_no_chksum(reg_no) {
1163    var sum = 0;
1164    var odd = 0;
1165    
1166    buf = new Array(13);
1167    for (i = 0; i < 13; i++) buf[i] = parseInt(reg_no.charAt(i));
1168    odd = buf[7]*10 + buf[8];
1169    
1170    if (odd%2 != 0) {
1171      return false;
1172    }
1173
1174    if ((buf[11] != 6)&&(buf[11] != 7)&&(buf[11] != 8)&&(buf[11] != 9)) {
1175      return false;
1176    }
1177     
1178    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
1179    for (i = 0, sum = 0; i < 12; i++) sum += (buf[i] *= multipliers[i]);
1180
1181
1182    sum=11-(sum%11);
1183    
1184    if (sum>=10) sum-=10;
1185
1186    sum += 2;
1187
1188    if (sum>=10) sum-=10;
1189
1190    if ( sum != buf[12]) {
1191        return false;
1192    }
1193    else {
1194        return true;
1195    }
1196}
1197
1198function fgn_no(field1,field2){
1199        var fgn_reg_no = field1.value + field2.value;
1200
1201		if (fgn_reg_no == ''){
1202		  alert('외국인등록번호를 입력하십시오.');
1203		  return false;
1204		}
1205
1206		if (fgn_reg_no.length != 13) {
1207		  alert('외국인등록번호 자리수가 맞지 않습니다.');
1208		  return false;
1209		}
1210		
1211        if ((fgn_reg_no.charAt(6) == "5") || (fgn_reg_no.charAt(6) == "6"))
1212        {
1213           birthYear = "19";
1214        }
1215        else if ((fgn_reg_no.charAt(6) == "7") || (fgn_reg_no.charAt(6) == "8"))
1216        {
1217           birthYear = "20";
1218        }
1219        else if ((fgn_reg_no.charAt(6) == "9") || (fgn_reg_no.charAt(6) == "0"))
1220        {
1221           birthYear = "18";
1222        }
1223        else
1224        {
1225          alert("외국인 등록번호에 오류가 있습니다. 다시 확인하십시오.");
1226		  field1.value =""; 
1227		  field2.value=""; 
1228		  field1.focus(); 
1229		  return ; 
1230        }        
1231		birthYear += fgn_reg_no.substr(0, 2);
1232		birthMonth = fgn_reg_no.substr(2, 2) - 1;
1233		birthDate = fgn_reg_no.substr(4, 2);
1234		birth = new Date(birthYear, birthMonth, birthDate);
1235        
1236        if ( birth.getYear() % 100 != fgn_reg_no.substr(0, 2) ||
1237             birth.getMonth() != birthMonth ||
1238             birth.getDate() != birthDate) {
1239          alert('생년월일에 오류가 있습니다. 다시 확인하십시오.');
1240          return false;
1241        }
1242        
1243        if (fgn_no_chksum(fgn_reg_no) == false){
1244        
1245            alert('외국인등록번호에 오류가 있습니다. 다시 확인하십시오.');
1246            return false;
1247        }
1248        else {
1249            return true;
1250        }
1251    
1252}
1253/********************************************************************
1254*  Function Name    : CalTime()
1255*  Description      : 작업시간 20분 : 0.2  
1256*                     작업시간 1시간 : 1  
1257*                     작업시간 1시간 20분 : 1.2 의 시간 계산.
1258*  Input Data       : hm - 대상 String.
1259*  Output Data      : 
1260*  사용되는 Function : setDot(); , setDouble();
1261/********************************************************************/
1262function CalTime(hm) {
1263  var ll_left;
1264  var ll_right;
1265  var ll_tot = 0;
1266  var digitTime;
1267  
1268  if (hm.indexOf(".") < 0) return;
1269  
1270  digitTime = hm.split(".");
1271  ll_left = setDot(digitTime[0],2);
1272  ll_right = setDouble(eval(digitTime[1]) / 60,"",2);
1273  ll_tot = eval(ll_left) + eval(ll_right);
1274  return ll_tot;  
1275}
1276
1277/********************************************************************
1278*  Function Name    : CalTime()
1279*  Description      : 작업시간 20분 : 0.2  
1280*                     작업시간 1시간 : 1  
1281*                     작업시간 1시간 20분 : 1.2 의 시간 계산.
1282*  Input Data       : str - 원본날짜값
1283*					: tp  - 날짜분리기호
1284*  Output Data      : 예) tp='-' 일경우 '20050105' -> '2005-01-05'
1285*  사용되는 Function : 
1286/********************************************************************/
1287function f_formatDate8to10(str,tp){
1288	var rst = "";
1289	if(str!=null && str!=false){
1290		if(str.length==8){
1291			rst = str.substr(0,4) + tp + str.substr(4,2) + tp + str.substr(6,2);
1292		}
1293	} 
1294	return rst;
1295}
1296
1297/********************************************************************
1298*  Function Name    : CalTime()
1299*  Description      : 작업시간 20분 : 0.2  
1300*                     작업시간 1시간 : 1  
1301*                     작업시간 1시간 20분 : 1.2 의 시간 계산.
1302*  Input Data       : str - 원본날짜값
1303*					: tp  - 날짜분리기호
1304*  Output Data      : 예) tp='-' 일경우 '2005-01-05' -> '20050105'
1305*  사용되는 Function : setDot(); , setDouble();
1306/********************************************************************/
1307function f_formatDate10to8(str,tp){
1308	var temp;
1309	var rst = "";
1310	if(str!=null && str!=false){
1311		if(str.length==10){
1312			temp = str.split(tp);
1313			rst = temp[0]+temp[1]+temp[2];
1314		}
1315	} 
1316	return rst;
1317}
1318
1319
1320/********************************************************************
1321*  Function Name    : FieldChk(uid, start, end)
1322*  Description      : 아이디, 비밀번호 체크=>영문소문자, 숫자만 가능하게.
1323*  Input Data       : uid - 입력데이터
1324*					: start - 입력문자열 최소크기
1325					: end - 입력문자열 최대크기
1326*  Output Data      : false, true
1327*  사용되는 Function : 
1328/********************************************************************/
1329function FieldChk(uid, start, end) {
1330	if(uid.length < start || uid.length > end) {
1331		return false;
1332	}
1333
1334	for(var i = 0; i < uid.length; i++) {
1335		var chr = uid.substr(i,1);
1336    if((chr < '0' || chr > '9') && (chr < 'a' || chr > 'z') && (chr < 'A' || chr > 'Z') && (chr!='@') && (chr!='!')){
1337			return false;
1338		}
1339	}
1340	return true;   
1341}
1342
1343
1344/********************************************************************
1345*  Function Name    : addItem(srcObj, targetObj)
1346*  Description      : srcObj select박스에서 targetObj select박스로 item 추가
1347*  Input Data       : srcObj - 원본 object
1348*					: targetObj - 타겟 object
1349*  Output Data      : 
1350*  사용되는 Function : 
1351/********************************************************************/
1352function addItem(srcObj,targetObj){
1353	if(srcObj.selectedIndex==-1)
1354		return;
1355	else if(srcObj.selectedIndex==0){
1356		srcObj.selectedIndex = -1;
1357	}else{
1358		targetObj=eval(targetObj);
1359		var pSel = srcObj.options[srcObj.selectedIndex].value;
1360		for(j=0;j<targetObj.length; j++){
1361			if(targetObj.options[j].value==pSel){
1362				alert("["+srcObj.options[srcObj.selectedIndex].text+"]는 이미 추가된 제조사코드입니다.");
1363				return;
1364				break;
1365			}
1366		}
1367		var addOpt = document.createElement('OPTION');
1368		addOpt.text= srcObj.options[srcObj.selectedIndex].text;
1369		addOpt.value=srcObj.options[srcObj.selectedIndex].value;
1370		targetObj.options.add(addOpt);
1371
1372	}
1373}
1374/********************************************************************
1375*  Function Name    : removeItem(srcObj)
1376*  Description      : srcObj select박스에서 item 삭제
1377*  Input Data       : srcObj - 원본 object
1378*					: 
1379*  Output Data      : 
1380*  사용되는 Function : 
1381/********************************************************************/
1382function removeItem(srcObj){
1383	if(srcObj.selectedIndex==-1)
1384		return;
1385	else if(srcObj.selectedIndex==0){
1386		srcObj.selectedIndex = -1;
1387	}else{
1388		srcObj.remove(srcObj.selectedIndex);
1389	}
1390}
1391
1392function imgRsize(img, rW, rH){
1393        var iW = img.width;
1394        var iH = img.height;
1395
1396
1397        var g = new Array;
1398        if(iW < rW && iH < rH) { // 가로세로가 축소할 값보다 작을 경우
1399                g[0] =  iW;
1400                g[1] =  iH;
1401        } else {
1402                if(img.width > img.height) { // 원크기 가로가 세로보다 크면
1403
1404                        g[0] = rW;
1405                        g[1] = Math.ceil(img.height * rW / img.width);
1406                } else if(img.width <= img.height) { //원크기의 세로가 가로보다 크면
1407                        g[0] = Math.ceil(img.width * rH / img.height);
1408                        g[1] = rH;
1409                } else {
1410                        g[0] = rW;
1411                        g[1] = rH;
1412                }
1413                if(g[0] > rW) { // 구해진 가로값이 축소 가로보다 크면
1414
1415                        g[0] = rW;
1416                        g[1] = Math.ceil(img.height * rW / img.width);
1417                }
1418                if(g[1] > rH) { // 구해진 세로값이 축소 세로값가로보다 크면
1419                        g[0] = Math.ceil(img.width * rH / img.height);
1420                        g[1] = rH;
1421                }
1422        }
1423        g[2] = img.width; // 원사이즈 가로
1424        g[3] = img.height; // 원사이즈 세로
1425        return g;
1426}
1427			
1428
1429// 오브젝트의 위치 찾기
1430function getRealOffsetTop(o) { return o ? o.offsetTop + getRealOffsetTop(o.offsetParent) : 0; }
1431function getRealOffsetLeft(o) { return o ? o.offsetLeft + getRealOffsetLeft(o.offsetParent) : 0; }
1432
1433//-------- 파일 체크 시작 -----------------------------
1434//파일의 확장자를 가져옮
1435function getFileExtension( filePath )
1436{
1437    var lastIndex = -1;
1438    lastIndex = filePath.lastIndexOf('.');
1439    var extension = "";
1440
1441	if ( lastIndex != -1 )
1442	{
1443	    extension = filePath.substring( lastIndex+1, filePath.len );
1444	} else {
1445	    extension = "";
1446	}
1447    return extension;
1448}
1449//파일을 선택 후 포커스 이동시 호출
1450function fileCheck(AllowedExt, maxFileSize, value )
1451{
1452
1453    var src = getFileExtension(value);
1454    if (src == "") {
1455        alert('올바른 파일을 입력하세요');
1456        return false;
1457    } else if ( (AllowedExt.indexOf(src.toLowerCase()) < 0) ) {
1458        alert('허용되지 않는 파일입니다.');
1459        return false;
1460    }
1461
1462    LoadImg(maxFileSize, value);
1463
1464}
1465function LoadImg(maxFileSize, value)
1466{
1467    var imgInfo = new Image();
1468    imgInfo.onload = img_Load(maxFileSize);
1469    imgInfo.src = value;
1470}
1471function img_Load(maxFileSize)
1472{
1473    var imgSrc, imgWidth, imgHeight, imgFileSize;
1474    imgSrc = this.src;
1475   // imgWidth = this.width;
1476   // imgHeight = this.height;
1477    imgFileSize = this.fileSize;
1478/*
1479    if (imgSrc == "" || imgWidth <= 0 || imgHeight <= 0)
1480    {
1481        alert('그림파일을 가져올 수 없습니다.');
1482        return;
1483    } 
1484*/
1485    if (imgSrc == "")
1486    {
1487        alert('파일을 가져올 수 없습니다.');
1488        return false;
1489    } 
1490
1491    if (imgFileSize > maxFileSize)
1492    {
1493        alert('선택하신 파일은 허용 최대크기인 ' + maxFileSize/1024 + ' KB 를 초과하였습니다.');
1494        return false;
1495    } 
1496    //이미지 사이즈 저장 
1497   // document.all.imgWidth.value = imgWidth;
1498   // document.all.imgHeight.value = imgHeight;
1499}
1500//---- 파일체크 끝 ---------------------------------------------------------------
1501
1502
1503var OldElement="1";
1504function toggle(iObject){
1505     targetElement = document.getElementById(iObject);
1506     if (targetElement.style.display == "none") {
1507	 	if (OldElement != "1") {
1508		 	OldElement.style.display = "none"
1509		}
1510        targetElement.style.display = "";
1511		OldElement = targetElement;
1512     } else {
1513	 	targetElement.style.display = "none";
1514	 }
1515}
1516
1517// 플래쉬에서 호출하는 함수 시작 --------------
1518function flashAlert(msg, type){
1519	//parent.thisMovie("cartFlash").reload();
1520	thisMovie("mainMap").alert(msg, type);
1521}
1522
1523function thisMovie(movieName) {
1524    if (navigator.appName.indexOf("Microsoft") != -1) {
1525        return window[movieName];
1526    }
1527    else {
1528        return document[movieName];
1529    }
1530}
1531
1532function flashStoreDetail(pCode) {
1533	location.href="/toulestore/store_detail.asp?fsStore="+pCode;
1534}
1535
1536function flashStoreReg(pCode) {
1537	
1538	if (LoginStatusCheck("state") == ""){
1539		flashAlert("회원으로 로그인 하십시오.", 3);
1540	//	location.href="/member/login.asp";
1541	} else {
1542		var msg = ScrapAdd("/common/asp/lib/scrap_store_add.asp?fsStore="+pCode);
1543		if (msg == "OK"){
1544			flashAlert("단골매장으로 등록 하였습니다.", 1);
1545		} else {
1546			flashAlert(msg+"에러!", 1);
1547		}
1548	}
1549}
1550
1551function flashStoreGoLogin(pKeyword) {
1552		location.href="/member/login.asp";
1553}
1554
1555function flashProductGoLogin(pKeyword) {
1556		location.href="/member/login.asp";
1557}
1558
1559function flashProductDetail(pCode) {
1560	location.href="/toulegoods/toulegoods_detail.asp?fsProdNum="+pCode;
1561}
1562
1563function flashProductReg(pCode) {
1564	
1565	if (LoginStatusCheck("state") == ""){
1566		flashAlert("회원으로 로그인 하십시오.", 3);
1567	//	location.href="/member/login.asp";
1568	} else {
1569		var msg = ScrapAdd("/common/asp/lib/scrap_product_add.asp?fsProdNum="+pCode);
1570		if (msg == "OK"){
1571			flashAlert("관심제품으로 등록 하였습니다.", 1);
1572		} else {
1573			flashAlert(msg+"에러!", 1);
1574		}
1575	}
1576}
1577
1578
1579function num_format(num) {
1580   var num_str = num.toString();
1581   var result = '';
1582
1583   for(var i=0; i<num_str.length; i++) {
1584      var tmp = num_str.length-(i+1);
1585      if(i%3==0 && i!=0) result = ',' + result;
1586      result = num_str.charAt(tmp) + result;
1587   }
1588
1589   return result;
1590}
1591
1592
1593
1594
1595
1596// 영역 프린트 
1597function goPrint(objid) { 
1598	var Obj = document.getElementById(objid);
1599	if (Obj) {
1600		var W = Obj.offsetWidth;        //screen.availWidth; 
1601		var H = Obj.offsetHeight;        //screen.availHeight;
1602		
1603		var pf = document.frames("printFrame");
1604		var targObj = pf.document.getElementById("printArea");
1605		targObj.innerHTML = Obj.innerHTML;
1606		pf.focus();
1607		window.print();
1608	}
1609} 
1610
1611/// 쿠키제어 관련 함수------------------------------------
1612function getCookieVal(offset) {
1613	var endstr = document.cookie.indexOf (";", offset);
1614	if (endstr == -1) endstr = document.cookie.length;
1615	return unescape(document.cookie.substring(offset, endstr));
1616}
1617
1618function GetCookie(name) {
1619	var arg = name + "=";
1620	var alen = arg.length;
1621	var clen = document.cookie.length;
1622	var i = 0;
1623	while (i < clen) {
1624		var j = i + alen;
1625		if (document.cookie.substring(i, j) == arg) return getCookieVal (j);
1626		i = document.cookie.indexOf(" ", i) + 1;
1627		if (i == 0) break;
1628	}
1629	return null;
1630}
1631function SetCookie(name, value, expires){
1632	var argv = SetCookie.arguments;
1633	var argc = SetCookie.arguments.length;
1634	var expires = (2 < argc) ? argv[2] : null;
1635	var path = (3 < argc) ? argv[3] : null;
1636	var domain = (4 < argc) ? argv[4] : null;
1637	var secure = (5 < argc) ? argv[5] : false;
1638	document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + 
1639	path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
1640}
1641function clearCookie(name) {
1642	var expire_date = new Date();
1643	//어제 날짜를 쿠키 소멸 날짜로 설정한다.
1644	expire_date.setDate(expire_date.getDate() - 1)
1645	document.cookie = name + "= " + "; expires=" + expire_date.toGMTString() + "; path=/"
1646}
1647
1648
1649// 폼의 object를 찾아 maxlength와 같을 경우 다음 포커스로 이동합니다.
1650function moveFocus()
1651{
1652	// 좌우 화살표나 탭, 역탭이면 무시..
1653	if (event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 9 || event.keyCode == 16) return;
1654
1655	var src = event.srcElement;
1656	if (src.value.length == src.maxLength)
1657	{
1658		var obj = getNextObject(src);
1659		try
1660		{
1661			obj.focus();
1662			obj.select();
1663		}
1664		catch(e){}
1665	}
1666}
1667
1668
1669//maxlength 만큼 옮기면 다음으로 이동하기....
1670function nextFocus(sFormName,sNow,sNext)
1671{
1672	var sForm = 'document.'+ sFormName +'.'
1673	var oNow = eval(sForm + sNow);
1674
1675	if (typeof oNow == 'object')
1676	{
1677		if ( oNow.value.length == oNow.maxLength)
1678		{
1679			var oNext = eval(sForm + sNext);
1680
1681			if ((typeof oNext) == 'object')
1682				oNext.focus();
1683		}
1684	}
1685}
1686
1687
1688
1689function getNextObject(obj)
1690{
1691	var f = document.forms[0];
1692	for(var i = 0; i < f.length; i++)
1693	{
1694		var item = f[i];
1695		if (obj == item)
1696		{
1697			try
1698			{
1699				return f[i+1];
1700			}
1701			catch(e) {}
1702		}
1703	}
1704}
1705
1706
1707
1708//전체 선택/해제
1709 function selectAll(){
1710	 /*
1711	var c = $('#checkAll').attr('checked');
1712	$('input[name=chkid]').attr('checked',c);
1713 */
1714	var c = $('#checkAll').prop('checked');
1715	$('input[name=chkid]').prop('checked',c);
1716 }
1717
1718
1719 //선택된 값 보기
1720 function getSelectVal(){
1721	var idlist = [];
1722	var itemstr ="";
1723	$('input[name=chkid]:checked').each(function(){idlist.push(this.value)});
1724 
1725	$.each(idlist,function(index, item){
1726	itemstr += item + ',';
1727  });
1728
1729	var item = itemstr;
1730
1731	if ( item != "" )
1732	{
1733		if (delCheck(item)){
1734			return;
1735		}
1736	}
1737
1738}	
1739
1740
1741/************************************************************
1742예) radioValueRtn(form.name)
1743라디오 버튼에서 선택한 것의 밸류값을 리턴한다
1744선택한것이 없다면 "" 공백을 리턴한다.
1745************************************************************/
1746function radioValueRtn(name){
1747	if(name){
1748		if(!name.length) {
1749			if(name.checked) {
1750				return name.value;
1751			}
1752		} else {
1753			for(var i=0;i<name.length;i++) {
1754				if(name[i].checked) {
1755					return name[i].value;
1756				}
1757			}
1758		}
1759	}
1760	return "";
1761
1762}
1763
1764
1765// 필드 검사
1766function check_field(fld, msg) 
1767{
1768	if ((fld.value = trim(fld.value)) == "") 			   
1769		error_field(fld, msg);
1770	else
1771		clear_field(fld);
1772	return;
1773}
1774
1775
1776// 필드 오류 표시
1777function error_field(fld, msg) 
1778{
1779	if (msg != "")
1780		errmsg += msg + "\n";
1781	if (!errfld) errfld = fld;
1782	fld.style.background = "#BDDEF7";
1783}
1784
1785
1786// 필드를 깨끗하게
1787function clear_field(fld) 
1788{
1789	fld.style.background = "#FFFFFF";
1790}
1791
1792
1793function trim(s)
1794{
1795  var t = "";
1796  var from_pos = to_pos = 0;
1797
1798   for (i=0; i<s.length; i++)
1799	{
1800	  if (s.charAt(i) == ' ')
1801	 	continue;
1802	  else 
1803	  {
1804		from_pos = i;
1805		break;
1806	  }
1807	}
1808
1809	for (i=s.length; i>=0; i--)
1810	{
1811	  if (s.charAt(i-1) == ' ')
1812		continue;
1813	  else 
1814	  {
1815		to_pos = i;
1816		break;
1817	  }
1818	}	
1819
1820	t = s.substring(from_pos, to_pos);
1821	//alert(from_pos + ',' + to_pos + ',' + t+'.');
1822	return t;
1823}
1824
1825
1826// 자바스크립트로 PHP의 number_format 흉내를 냄
1827// 숫자에 , 를 출력
1828function number_format(data) 
1829{
1830  var tmp = '';
1831  var number = '';
1832  var cutlen = 3;
1833  var comma = ',';
1834  var i;
1835   
1836  len = data.length;
1837  mod = (len % cutlen);
1838  k = cutlen - mod;
1839   for (i=0; i<data.length; i++) 
1840	{
1841	  number = number + data.charAt(i);
1842		
1843	  if (i < data.length - 1) 
1844	  {
1845	    k++;
1846		if ((k % cutlen) == 0) 
1847		{
1848		  number = number + comma;
1849		  k = 0;
1850		}
1851	  }
1852	}
1853	return number;
1854}
1855
1856
1857// , 를 없앤다.
1858function no_comma(data)
1859{
1860	var tmp = '';
1861	var comma = ',';
1862	var i;
1863
1864	for (i=0; i<data.length; i++)
1865	{
1866		if (data.charAt(i) != comma)
1867			tmp += data.charAt(i);
1868	}
1869	return tmp;
1870}
1871
1872
1873// 적립금계산시..
1874function formatNum(inNum){						//FormatNumber(inNum,0)        16자리까지 연산가능
1875    var delimeter = ',';                        // 분리 표시자
1876    var splitNum = 3;                           // 분리 자리수
1877    var inNum = inNum+'';                       // convert (int --> str)
1878    var len = inNum.length;                     // 전체 길이
1879    var outNum = '';                            // 출력문자
1880    var aLen = parseInt((len-1)/splitNum);      // 분리개수
1881
1882    for(i=0;i<aLen;i++){
1883      outNum = delimeter+inNum.substring(len-((i+1)*splitNum),len-(i*splitNum))+outNum;
1884    }
1885      outNum = inNum.substring(0,len-(aLen*splitNum))+outNum; 
1886    return outNum;
1887  }
1888
1889
1890//유효한 날짜 체크
1891function checkDate(yy, mm, dd)
1892{
1893	dateErr = 0;
1894	var lastDay = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
1895	if ((yy % 4 == 0 && yy % 100 != 0) || (yy % 400 == 0)) {
1896		lastDay[1] = 29;
1897	}
1898	if (lastDay[mm - 1] < dd) {
1899		dateErr = 1;
1900	}
1901	return dateErr;
1902}
1903
1904
1905
1906function imgRsize(img, rW, rH){
1907
1908        var iW = img.width;
1909        var iH = img.height;
1910
1911
1912        var g = new Array;
1913        if(iW < rW && iH < rH) { // 가로세로가 축소할 값보다 작을 경우
1914                g[0] =  iW;
1915                g[1] =  iH;
1916        } else {
1917                if(img.width > img.height) { // 원크기 가로가 세로보다 크면
1918
1919                        g[0] = rW;
1920                        g[1] = Math.ceil(img.height * rW / img.width);
1921                } else if(img.width <= img.height) { //원크기의 세로가 가로보다 크면
1922                        g[0] = Math.ceil(img.width * rH / img.height);
1923                        g[1] = rH;
1924                } else {
1925                        g[0] = rW;
1926                        g[1] = rH;
1927                }
1928                if(g[0] > rW) { // 구해진 가로값이 축소 가로보다 크면
1929
1930                        g[0] = rW;
1931                        g[1] = Math.ceil(img.height * rW / img.width);
1932                }
1933                if(g[1] > rH) { // 구해진 세로값이 축소 세로값가로보다 크면
1934                        g[0] = Math.ceil(img.width * rH / img.height);
1935                        g[1] = rH;
1936                }
1937        }
1938        g[2] = img.width; // 원사이즈 가로
1939        g[3] = img.height; // 원사이즈 세로
1940        return g;
1941}
1942			
1943function gg(img, ww, hh, aL){
1944        var tt = imgRsize(img, ww, hh);
1945        if(img.width == 0 || img.height == 0){
1946        	imgRsize(img, 600, 151)
1947        }
1948        if(img.width > ww || img.height > hh || img.width == 0 || img.height == 0){ // 가로나 세로크기가 제한크기보다 크면
1949        	
1950            img.width = tt[0]; // 크기조정
1951            img.height = tt[1];
1952            img.alt = '클릭하시면 원본이미지를 보실수있습니다.';
1953            if(aL){ // 자동링크 on
1954                    img.onclick = function(){
1955                        wT = Math.ceil((screen.width - tt[2])/2.6); // 클라이언트 중앙에 이미지위치.
1956                        wL = Math.ceil((screen.height - tt[3])/2.6);
1957                        mm = window.open("", 'viewOrig', 'scrollbars=yes,width='+tt[2]+',height='+tt[3]+',top='+wT+',left='+wL);
1958						mm.document.open()
1959						mm.document.write("<body style='margin:0px;cursor:pointer'><img src="+img.src+" alt='클릭하시면 창이 닫힙니다.' border='0' onclick='self.close();'></body>")
1960                        //mm.document.body.onmousedown = function(){ mm.close();}
1961                        mm.document.title = '미래자동차';
1962						mm.document.close()
1963					/*
1964                   	    var doc = mm.document.open();
1965                        doc.body.style.margin = 0; // 마진제거
1966                        doc.body.style.cursor = "hand";
1967                        var previewimg = doc.createElement("img");
1968                        previewimg.src = img.src;                  
1969                        doc.body.appendChild(previewimg);
1970                        doc.body.onmousedown = function(){ mm.close();}
1971                        doc.title = 'Visang';
1972					*/
1973                    }
1974                    img.style.cursor = "pointer";
1975            }
1976            
1977        } else {
1978        	
1979            img.onclick = function(){}
1980        }
1981}
1982
1983
1984
1985//페이지 내 검색
1986function OnSearch_Comm(formName, menu, subchk) {
1987//	alert(window.location.hostname + window.location.pathname );
1988	//hostname
1989//alert(formName);
1990	var form = eval("document."+formName);
1991	formName.action = "http://"+window.location.hostname + window.location.pathname+"?menu="+menu+"&subchk="+subchk;
1992	form.submit();
1993}
1994
1995
1996
1997
1998
1999//comma add
2000function comma(num){
2001
2002    var len, point, str;  
2003       
2004    num = num + "";  
2005    point = num.length % 3 ;
2006    len = num.length;  
2007   
2008    str = num.substring(0, point);  
2009    while (point < len) {  
2010        if (str != "") str += ",";  
2011        str += num.substring(point, point + 3);  
2012        point += 3;  
2013    }  
2014     
2015    return str;
2016 
2017}
2018
2019//콤마제거
2020function no_comma(data)
2021{
2022	var tmp = '';
2023	var comma = ',';
2024	var i;
2025
2026	for (i=0; i<data.length; i++)
2027	{
2028		if (data.charAt(i) != comma)
2029			tmp += data.charAt(i);
2030	}
2031	return tmp;
2032}
2033
2034
2035
2036
2037function refresh_insta_token(site, expires_chk, token) {
2038
2039		var refresh_token	= '';
2040		//console.log(expires_chk);
2041		if (expires_chk == 'expires_out') {
2042
2043			$.ajax({
2044				type: "GET",
2045				dataType: "json",
2046				//cache: false,
2047				async: false,
2048				url: "https://graph.instagram.com/refresh_access_token?access_token=" + token + "&grant_type=ig_refresh_token",
2049				success: function(response) {
2050					//console.log('refresh_log:'+response.access_token);
2051					refresh_token = response.access_token;
2052				},
2053				error :function(){
2054					console.log("refresh_log:ERROR")
2055				}
2056			});
2057//console.log( refresh_token)
2058			if (refresh_token != undefined && refresh_token != '') {
2059				//console.log('/schedule/_sns_date_chk.html?mode=refresh_token&site='+site+'&refresh_token='+refresh_token);
2060				$.ajax({
2061					url: '/common/asp/_sns_date_chk.asp', //url
2062					type: 'POST', //post,get,등..전송방식
2063					dataType: 'xml',//데이타 타입
2064					data: 'mode=refresh_token&site='+site+'&refresh_token='+refresh_token,
2065					async: false,
2066					error: function(){// 실패시 실행함수
2067						//console.log('실패');
2068					},
2069					success: function(response){// 성공시 실행 함수
2070						console.log('token refresh succeed');
2071						//console.log( $(response).find("result").text() )
2072					}
2073				});
2074			}
2075		}
2076
2077
2078
2079}
2080
2081
2082
2083
2084/*
2085* form input,select, texarea등 등록 여부 체크
2086*/
2087function board_Chk_func(required_name) {
2088
2089	var obj = document.theForm;
2090
2091	var required_Cnt = required_name.split(',');
2092
2093	for (var i = 0; i < required_Cnt.length; i++ )
2094	{
2095		var tmp=required_Cnt[i].replace(/]/gi,'').split('[');
2096		var arrName = eval("obj."+tmp[2]);		//name 배열
2097
2098		if (tmp[1] == "text" || tmp[1] == "file") {		//textbox체크
2099			if (tmp[1] == "file") {
2100				if (obj.mode.value=='reg') {
2101					if( arrName.value == "") {
2102						alert(tmp[3] + "을(를) 선택해주세요");
2103						arrName.focus();
2104						return false;
2105					}
2106				}
2107			} else {
2108				if( arrName.value == "") {
2109					alert(tmp[3] + "을(를) 입력해주세요");
2110					arrName.focus();
2111					return false;
2112				}
2113			}
2114		} else if (tmp[1] == 'checkbox' || tmp[1] == 'radio') {	//radio 혹은 checkbox 선택 및 갯수 체크
2115/*
2116console.log(tmp[1])
2117console.log(tmp[2]);
2118console.log(tmp.length );
2119return;
2120*/
2121			if (tmp.length == 4) {				//최소 선택 갯수가 없으면
2122				if ($(":"+tmp[1]+"[name="+tmp[2]+"]:checked").length < 1 ) {
2123					alert(tmp[3] + "을(를) 선택해주세요");
2124					if (arrName.length == undefined) {		//box가 한개 밖에 없을경우 focus 이동 
2125						arrName.focus();
2126					} else {
2127						arrName[0].focus();
2128					}
2129
2130					//arrName[0].focus();
2131					return false;
2132				}
2133			} else if (tmp.length == 5) {		//최소 선택 갯수 배열이 있으면
2134
2135				if (tmp[4] == "0") {	//최소 선택 갯수가 0이면(radio버튼이 하나면)
2136					
2137					if ($(":"+tmp[1]+"[name="+tmp[2]+"]").is(":checked")==true) {
2138						alert(tmp[3] + "을(를) 선택해주세요");
2139						arrName.focus();
2140						return false;
2141					}
2142				} else { //최소 선택 갯수가 있으면
2143
2144					if ($(":"+tmp[1]+"[name="+tmp[2]+"]:checked").length < tmp[4]) {
2145						alert(tmp[3] + "을(를) "+tmp[4]+" 개 이상 선택해주세요");
2146
2147						if (arrName.length == undefined) {		//box가 한개 밖에 없을경우 focus 이동 
2148							arrName.focus();
2149						} else {
2150							arrName[0].focus();
2151						}
2152						//arrName[0].focus();
2153						return false;
2154					}
2155				}
2156			}
2157		} else if (tmp[1] == 'textarea' ) {	//textarea 글자 수 체크
2158
2159			if (tmp.length == 4) {				//글자수 제한 갯수가 없으면(입력 체크만 진행)
2160				if(arrName.value.length < 1) {
2161					alert(tmp[3] + "을(를) 입력해주세요");
2162					arrName.focus();
2163					return false;
2164				}
2165			} else if (tmp.length == 5) {		//글자수 제한 갯수가 있으면(글자수 제한 진행)
2166				return txtNumber_Check(arrName, tmp[4] ) 
2167				return false;
2168			}
2169
2170		}
2171
2172	}
2173
2174
2175}

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.