﻿///////////////////////////////////////////////////////////////////////////////
// 목  적 : 프로그램내에서 공통적으로 사용가능한 스크립트 함수 모음
//
// 조  건 : 1. html(jsp,asp)문서에 아래처럼 스크립트화일을 지정한다.
//              예: <SCRIPT SRC="common.js" LANGUAGE="JavaScript"></SCRIPT>
//                  <SCRIPT SRC="init.js" LANGUAGE="JavaScript"></SCRIPT>
//          2. 함수 호출 방법
//              예: 1) 리턴변수 = 함수명(오브젝트)
//                     var ret = isBlank(document.forms[0].text1);
//                  2) 오브젝트.메쏘드명 = 함수명

//                     오브젝트.메쏘드명
//                     document.forms[0].text1.isBlank = isBlank;
//                     document.forms[0].isBlank();
///////////////////////////////////////////////////////////////////////////////


// 공백체크
function CheckSpaces(strValue) 
{
	var flag=true;
	
	if (strValue!="") {
		for (var i=0; i < strValue.length; i++) {
			if (strValue.charAt(i) != " ") {
				flag=false;
				break;
			}
		}
	}
	return flag;
} 
//입력 유무 체크
function isBlank()
{
    var args = isBlank.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }

    var re = /^\s+$/;
    var data = theObj.value;
    if(data == null) return true;
    var len = data.length;

    if (len == 0 || re.test(data)) {
        theObj.value = "";
        return true;
    }
    return false;
}
//입력 유무 체크
function isBlankVal()
{
    var args = isBlankVal.arguments;
    var data;
    if (args.length == 0) {
        data = this.value;
    } else {
        data = args[0];
    }

    var re = /^\s+$/;
    if(data == null) return true;
    var len = data.length;

    if (len == 0 || re.test(data)) {
        return true;
    }
    return false;
}
//숫자 체크(0 - 9)
function isNum()
{
    var args = isNum.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }

    var re = /^\d+$/;
    var data = theObj.value;
    var check = re.test(data);

    if (check || data == "") return true;
    return false;
}

//숫자 체크 체크
function isNumVal()
{
    var args = isNumVal.arguments;
    var data ;
    if (args.length == 0) {
        data = this.value;
    } else {
        data = args[0];
    }

    var re = /^\d+$/;
    var check = re.test(data);

    if (check || data == "") return true;
    return false;
}

function isNum1(evt)
{      
    var charCode = (evt.which) ? evt.which : event.keyCode;
  // alert(charCode);
    if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 95 || charCode > 105) && charCode != 37 && charCode != 39  && charCode != 46) 
        event.returnValue=false;
}

//숫자(음수포함) 체크
function isInt()
{
    var args = isInt.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }

    var re = /^(\-)?[0-9]+$/;
    var data = theObj.value;
    var check = re.test(data);

    if (check || data == "") return true;
    return false;
}

//숫자(음수포함,소수포함) 체크
function isFloat()
{
    var args = isFloat.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }

    var re = /^(\+|-)?\d+\.?\d*$/;
    var data = theObj.value;
    var check = re.test(data);

    if (check || data == "") return true;
    return false;
}

function isYYYY()
{
  var args = isYYYY.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }
    
    var data = intValue(theObj);
      
      if(date>2999 || data<1999) return false;
      
    var check = re.test(data);

    if (check || data == "") return true;
    return false;

}
//날짜 체크
function isDate()
{
    var args = isDate.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }
    var data = theObj.value.replace(/(\.|\/|-|:)/g,"");
    var aDaysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    if ( isBlank(theObj) ) return true;
    
    if ( data.length == 6 ){
         var yyyy = data.substring(0,4);
         var mm = data.substring(4,6);
        
         if( yyyy < 1900 || yyyy>2999){                 		
        	    return false;
            }            
			if(mm <= 0 || mm >= 13 )
			{	
        	    return false;
			}
			return true;
      }
    
    
    
    if ( data.length != 8 ) return false;
    if ( /\D/.test(data.substr(0,4)) ||
         /\D/.test(data.substr(4,2)) ||
         /\D/.test(data.substr(7,2)) )
        return false;

    iYear = eval(data.substr(0,4));
    iMonth = eval(data.substr(4,2));
    iDay = eval(data.substr(6,2));

    var iDaysInMonth = (iMonth != 2)? aDaysInMonth[iMonth-1] : ((iYear%4 == 0 && iYear%100 != 0 || iYear % 400 == 0)? 29 : 28);

    if( (iDay != null && iMonth != null && iYear != null && iMonth < 13 && iMonth > 0 && iDay > 0 && iDay <= iDaysInMonth) == false ) return false;

    return true;
}
//날짜 체크
function isDateValue(val)
{
    
    var data = val.replace(/(\.|\/|-|:)/g,"");
    var aDaysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    if ( val == "" ) return false;
    
    if ( data.length == 6 ){
         var yyyy = data.substring(0,4);
         var mm = data.substring(4,6);
        
         if( yyyy < 1900 || yyyy>2999){                 		
        	    return false;
            }            
			if(mm <= 0 || mm >= 13 )
			{	
        	    return false;
			}
			return true;
      }
    
    
    
    if ( data.length != 8 ) return false;
    if ( /\D/.test(data.substr(0,4)) ||
         /\D/.test(data.substr(4,2)) ||
         /\D/.test(data.substr(7,2)) )
        return false;

    iYear = eval(data.substr(0,4));
    iMonth = eval(data.substr(4,2));
    iDay = eval(data.substr(6,2));

    var iDaysInMonth = (iMonth != 2)? aDaysInMonth[iMonth-1] : ((iYear%4 == 0 && iYear%100 != 0 || iYear % 400 == 0)? 29 : 28);

    if( (iDay != null && iMonth != null && iYear != null && iMonth < 13 && iMonth > 0 && iDay > 0 && iDay <= iDaysInMonth) == false ) return false;

    return true;
}

function isDateMMDD()
{
    var args = isDateMMDD.arguments;
    if (args.length == 0) {
        theObj = this;
    } else { 
        theObj = args[0];
    }
    var data = theObj.value.replace(/(\.|\/|-|:)/g,"");
    var aDaysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

    if ( isBlank(theObj) ) return true;
    if ( data.length != 4 ) return false;
    if ( /\D/.test(data.substr(0,2)) ||
         /\D/.test(data.substr(2,2)) )
        return false;

    iYear = "1970";
    iMonth = eval(data.substr(0,2));
    iDay = eval(data.substr(2,2));

    var iDaysInMonth = (iMonth != 2)? aDaysInMonth[iMonth-1] : ((iYear%4 == 0 && iYear%100 != 0 || iYear % 400 == 0)? 29 : 28);

    if( (iDay != null && iMonth != null && iMonth < 13 && iMonth > 0 && iDay > 0 && iDay <= iDaysInMonth) == false ) return false;

    return true;
}

function isTimeHHMM()
{
    var args = isTimeHHMM.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }
    var data = theObj.value.replace(/(\.|\/|-|:)/g,"");

    if ( isBlank(theObj) ) return true;
    if ( data.length != 4 ) return false;
    if ( /\D/.test(data.substr(0,2)) ||
         /\D/.test(data.substr(2,2)) )
        return false;

    iHour = eval(data.substr(0,2));
    iMinute = eval(data.substr(2,2));

    if( (iHour != null && iMinute != null && iHour < 25 && iHour >= 0 && iMinute >= 0 && iMinute <= 59) == false ) return false;

    return true;
}

//메일주소 체크
function isMail()
{
    var args = isMail.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    if ( isBlank(theObj) ) return true;
    var data = theObj.value;

    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    return (!r1.test(data) && r2.test(data));
}
//메일주소 체크
function isMailVal(data)
{
    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    return (!r1.test(data) && r2.test(data));
}
//주민번호 체크
function isJumin(){
    var args = isJumin.arguments;
   
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];
    
    if ( isBlank(theObj) ) return true;
    var data = clear(theObj.value);
    var total = 0;
    var temp = new Array(13);

    for(var i = 1; i <= 13; i++)
        temp[i] = data.charAt(i-1);

    for(var i = 1; i <= 12; i++) {
        k = i + 1;
        if(k >= 10)
            k = k % 10 + 2;
        total += (temp[i] * k);
    }

    var mm = temp[3] + temp[4];
    var dd = temp[5] + temp[6];
    var totalmod = total % 11;
    var chd = 11 - totalmod;

    if(chd >= 10)
        chd = chd - 10;
    if(chd == temp[13] && mm < '13' && dd < '32' && (temp[7] == '1' || temp[7] == '2'||temp[7] == '3' || temp[7] == '4'))
        return true;
    else{       
       return id_fno_chk(data)       
    }
        return false;
}

// 주민등록번호   : 520905 - 1001810
// 외국인등록번호 : 520905 - 5100287
// 재외국인 번호 체크
function CheckFgnNo(res_no,obj) 
{
	var strRegNo = res_no

	if (id_fno_chk(strRegNo) == false) {
		alert( "외국인등록번호를 정상적인 체계에 맞게 입력하십시요." );
		obj.focus();
		return false;
	}

	return true;
}

function id_fno_chk(strRegNo)
{
 
	var sum=0;
	var odd=0;
	
	fgnno = strRegNo;
	
	buf = new Array(13);
	
	for(i=0; i<13; i++) { buf[i]=parseInt(fgnno.charAt(i)); }
	odd = buf[7]*10 + buf[8];
	
	if(odd%2 != 0) { return false; }
	if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {
		return false;
	}
	
	multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
	
	for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); }
	sum = 11 - (sum%11);
	
	if(sum >= 10) { sum -= 10; }
	sum += 2;
	if(sum >= 10) { sum -= 10; }
	if(sum != buf[12]) { 		
        return false 
    }
	
	return true;
}

//사업자 등록번호 체크
function isComp() {
    var args = isComp.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    var data = clear(theObj.value);
    if ( isBlank(theObj) ) return true;
    if(data.substr(0,5) == "99999" || data.substr(0,4) == "9998") return true;

    var comp = new Array(9);
    var stnd = new Array(8);
    var strStnd = '137137135';

    for(var i=0; i<10; i++) comp[i]=data.substring(i,i+1);
    for(var i=0; i<9; i++)  stnd[i]=strStnd.substring(i,i+1);

    for(var sum=0,i=0;i<9;i++) sum += comp[i] * stnd[i];

    sum = sum + parseInt((data.substring(8, 9) * 5) / 10);

    var mod =  10 - (sum % 10);

    if(mod>=10) mod-=10;
    if(mod == comp[9])  return true;

    return false;
}

//전화번호 체크
function isTel() {
    var args = isTel.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }
    var data = clear(theObj.value);

    if( isBlank(theObj) ) return true;
    if(data.substr(0,1) != "0" && data.length > 8) return false;

    if(data.length <= 8) {
        if(data.length == 8)
            theObj.setAttribute("mask","9999-9999");
        else
            theObj.setAttribute("mask","999-9999");
    } else {
        if(data.substr(0,2) == "02") {
            if(data.length == 9)
                theObj.setAttribute("mask","99-999-9999");
            else
                theObj.setAttribute("mask","99-9999-9999");
        } else {
            if(data.length == 10)
                theObj.setAttribute("mask","999-999-9999");
            else
                theObj.setAttribute("mask","999-9999-9999");
        }
    }
    theObj.iType = TYPE_MASK;
    var ret = isValid(theObj);
    theObj.removeAttribute("mask");
    return ret;
}

//체크박스,라디오버튼의 선택 유무 체크
function isChecked() {
    var multiFlag;

    var args = isChecked.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }

    if(!theObj) return false;

    len = theObj.length;

    if (theObj.length == null) {
        multiFlag = false;
    } else {
        multiFlag = true;
    }

    if(!multiFlag) {
        if (theObj.checked) {
            return true;
        }
    } else {
        for (i = 0; i < theObj.length; i++) {
            if (theObj[i].checked) {
                return true;
            }
        }
    }

    return false;
}

//입력값 길이 체크
function isLength()
{

      var args = isLength.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    var data = theObj.value;
    var len = theObj.getAttribute("MAXLENGTH");

    if(!len) return true;

    var ch;
    var cnt = 0;

    for( i = 0; i < data.length; i++ ){
        ch = data.charCodeAt(i);
        if (ch >= 12593) {
            cnt+=2;
        } else {
            cnt++;
        }
    }

    if (len < cnt) return false;

    return true;
}

//입력값 길이 체크
function isCorrectLength()
{
    var args = isCorrectLength.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    var data = theObj.value;
    var len = theObj.getAttribute("LENGTH");
    var required = theObj.getAttribute("Required");
    
      
    if(!len) return true;
    
 

    var ch;
    var cnt = 0;

    for( i = 0; i < data.length; i++ ){
        ch = data.charCodeAt(i);
        if (ch >= 12593) {
            cnt+=2;
        } else {
            cnt++;
        }
    }

    if (len == cnt) return true;

    return false;
}

//iType에 따른 입력값이 유효한지 체크
function isValid()
{
    var args = isValid.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];
         
       
       

    var data = theObj.value;
    var sFilter = "";

    switch(theObj.iType) {
        case TYPE_MASK :           
            var mask = theObj.getAttribute("mask");
            
            if(mask) {
                var sFilter = mask.replace(/(\$|\^|\*|\s|\(|\)|\+|\.|\/|\?|\\|\{|\}|\||\[|\]|\-|:)/g,"\\$1");
                sFilter = sFilter.replace(/9/g ,"\\d");
                sFilter = sFilter.replace(/a/g,"[a-z]");
                sFilter = sFilter.replace(/A/g,"[A-Z]");
                sFilter = sFilter.replace(/x/g,"[a-zA-Z0-9]");
            }
            break;
        case TYPE_MONEY :
          break;
        case TYPE_NUMBER :   
            
        
            var nMode = theObj.getAttribute("number");                                                
            
              if(nMode == "" || nMode=='true'){               
                return true;
                }
            if( nMode != null ) {    
				
	             var minus = -1;				             
				 minus = data.indexOf("-");
     
                 if(minus == 0){
                      data = data.substring(1);
                  }
                  
                var FirstNum = nMode.substring(1,nMode.indexOf(","));  //전체크기
                var LastNum = nMode.substring(nMode.indexOf(",")+1, nMode.indexOf(")")); //소수자리수

                var IntNum = eval(FirstNum) - eval(LastNum); // 정수자리수..
                if(data.indexOf(".") != -1)
                    sFilter = "\\d{1," + IntNum + "}\\.\\d{0," + LastNum + "}";
                else
                    sFilter = "\\d{1," + IntNum + "}";
            } else {
                sFilter = "[0-9]{0,}";
            }
                        
            break;
        default :
            if(theObj.getAttribute("filter"))
                sFilter = theObj.getAttribute("filter") + "{0,}";
    }

    if(isBlank(theObj) || !sFilter) return true;
    var re = new RegExp("^" + sFilter + "$");
    if(!re.test(data)) return false;

    return true;
}

//주어진 mask대로 입력값을 format시킨다

function toFormat()
{
    var args = toFormat.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];
        
    if(isBlank(theObj)) return;

    var mask = theObj.getAttribute("mask");

    if(theObj.iType == TYPE_MONEY)
        toMoney(theObj);
    else if(theObj.iType == TYPE_TEL)
        toTel(theObj);
    else if(mask) {
        var sStr = theObj.value.replace( /(\$|\^|\*|\s|\(|\)|\+|\.|\/|\?|\\|\{|\}|\||\[|\]|-|:)/g,"" );
        var tStr = "";
        var j = 0;

        for(var i = 0; i < sStr.length; i++){
            tStr += sStr.charAt(i);
            j++;
            if (j < mask.length && "$^*s()+./?\\{}|[]-:".indexOf(mask.charAt(j)) != -1 ) tStr += mask.charAt(j++);
        }        
        theObj.value = tStr;
       
       if(theObj.iType== TYPE_DATE){       
         if(theObj.value.length == 8){
            theObj.value = theObj.value.substring(0,7);          
         }
       }
       
       
    }
}

//포맷 제거
function toUnformat()
{
    var args = toUnformat.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    switch(theObj.iType){
        case TYPE_MONEY :
            theObj.value = theObj.value.replace(/(\,)/g,"");
            break;
        case TYPE_DATE :            
        case TYPE_MMDD :
        case TYPE_HHMM :
            theObj.value = theObj.value.replace(/(\.|\-|\/|\:)/g,"");
            break;
        case TYPE_JUMIN :
            theObj.value = theObj.value.replace(/\-/g,"");
            break;
        case TYPE_COMP :
            theObj.value = theObj.value.replace(/\-/g,"");
            break;
        case TYPE_TEL :
            theObj.value = theObj.value.replace(/\(|\)|\-/g,"");
            break;            
        case TYPE_MASK :
            theObj.value = theObj.value.replace(/(\$|\^|\*|\s|\(|\)|\+|\.|\/|\?|\\|\{|\}|\||\[|\]|\-|:)/g,"");
            break;
        case TYPE_JUMIN :            
            theObj.value = theObj.value.replace("-","");
            break;
    }
}

//금액으로 변환

function toMoney()
{
    var args = toMoney.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    var minus = false;
    if(theObj.value.indexOf("-") != -1)
        minus = true;

    var sMoney = theObj.value.replace(/(,|-)/g,"");
    var tMoney = "";
    var len = sMoney.length;

    if ( sMoney.length <= 3 ) return sMoney;

    for(i = 0; i < len; i++){
        if(i != 0 && ( i % 3 == len % 3) ) tMoney += ",";
        if(i < len ) tMoney += sMoney.charAt(i);
    }
    if(minus) tMoney = "-" + tMoney;

    theObj.value = tMoney;
}

//전화번호로 변환

function toTel()
{
    var args = toTel.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    var sTel = theObj.value.replace(/(\(|\)|-)/g,"");

    if(sTel.length <= 2) return sTel;

    var seoul = false;
    if(sTel.substr(0,2) == "02")
        seoul = true;

    var tTel = "";
    var mask = "";
    var j = 0;
    var len = sTel.length;

    if(len <= 8) {
        if(len == 8)
            mask = "9999-9999";
        else
            mask = "999-9999";
    } else {
        if(seoul) {
            if(sTel.length == 9)
                mask = "99-999-9999";
            else
                mask = "99-9999-9999";
        } else {
            if(sTel.length == 10)
                mask = "999-999-9999";
            else
                mask = "999-9999-9999";
        }
    }

    for(var i = 0; i < len; i++){
        tTel += sTel.charAt(i);
        j++;
        if (j < mask.length && "$^()-:".indexOf(mask.charAt(j)) != -1 ) tTel += mask.charAt(j++);
    }

    theObj.value = tTel;
}

//특수문자 없애기

function clear(data)
{
    data = data.replace(/(\$|\^|\*|\s|\(|\)|\+|\.|\/|\?|\\|\{|\}|\||\[|\]|-|:|,)/g,"");
    return data;
}

// checkbox 모두 선택
function allCheck(fldName) {
    oChk = document.getElementsByName(fldName);
    for( var i = 0; i < oChk.length; i++) {
        oChk(i).checked = true;
    }
    return;
}

// checkbox 모두 선택 해제
function allCancel(fldName) {
    oChk = document.getElementsByName(fldName);
    for( var i = 0; i < oChk.length; i++) {
        oChk(i).checked = false;
    }
    return;
}

//페이지 이동
function go_page(frm,tgt,loc) {
    if(tgt == "" || tgt == null) {
        frm.target = "_self";
    } else {
        frm.target = tgt;
    }
    frm.method = "post";
    frm.action = loc;
    frm.submit();
}

//입력필드 체크후 페이지 이동
function do_action(frm,tgt,loc) {
    if(tgt == "" || tgt == null) {
        frm.target = "_self";
    } else {
        frm.target = tgt;
    }
    frm.method = "post";
    frm.action = loc;
    frm.onsubmit();
}

//이전,다음 페이지 이동
function move_page(frm,page,loc,tgt) {
    var find = false;
    var frame = "hiddenFrm";

    for(var i = 0; i < 3; i++) {
        frame = "parent." + frame;
        if(eval(frame)) {
            eval("hfrm = " + frame + ".document.forms[0];");
            find = true;
            break;
        }
    }
    if(tgt != null) {
        frm.CurPage.value = page;
        go_page(frm,tgt,loc);
    } else if(find) {
        if(!hfrm.CurPage)
            hfrm.innerHTML += "<INPUT TYPE=text NAME=CurPage>";
        hfrm.CurPage.value = page;
        go_page(hfrm,'downFrm',loc);
    } else {
        frm.CurPage.value = page;
        go_page(frm,"",loc);
    }
}

//윈도우 오픈
function openWin(loc,name,width,height,left,top)
{
    var args = openWin.arguments;

    if(args.length < 3) {
        width = screen.availWidth / 3;
        height = screen.availHeight / 3;
    }
    left = (screen.availWidth - width)/2;
    top = (screen.availHeight - height)/2;

    var status = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=" + width + ",height=" + height + ",top=" + top + ",left=" + left;
    openw = window.open(loc,name,status);
    openw.focus();
}

//오브젝트 바탕색 바꾸기

function setBgColor(obj,color) {
    for(var i = 0; i < obj.cells.length; i++)
        obj.cells(i).style.backgroundColor = color;
}

//블링크 효과 주기
function setBlink() {
    var objBlink = document.all.tags("BLINK")
    for (var i=0; i < objBlink.length; i++)
        objBlink[i].style.visibility = objBlink[i].style.visibility == "" ? "hidden" : "";
}

//Hidden 프레임에 검색조건 값 저장하기 (hfrm)
function setData() {
    var args = setData.arguments;
    var frm = document.forms(0);
    if(args.length == 0)
        var hfrm = parent.parent.frames("hiddenFrm").document.forms(0);
    else
        var hfrm = args[0];

    var iElements = frm.elements.length;
    for(var i = 0; i < iElements; i++) {
        if(frm.elements(i).name == "") continue;

        var val = null;
        if(frm.elements(i).type == "button") continue;
        if(frm.elements(i).type == "option") continue;
        switch(frm.elements(i).type) {
            case "radio"    :
            case "checkbox" :
                if(frm.elements(i).checked)
                    val = frm.elements(i).value;
                break;
            default         :
                toUnformat(frm.elements(i));
                val = frm.elements(i).value;
        }

        if(val != null) {
            if(hfrm.elements(frm.elements(i).name))
                hfrm.elements(frm.elements(i).name).value = val;
            else
                hfrm.innerHTML += "<INPUT TYPE=text NAME=" + frm.elements(i).name + " VALUE='" + val + "'>";
        }
    }
}

//Hidden 프레이메 저장된 검색조건 값 가져오기 (loc,hfrm)
function getData() {
    var args = getData.arguments;
    var frm = document.forms(0);

    var loc = args[0];
    if(args.length == 2)
        var hfrm = args[1];
    else
        var hfrm = parent.parent.frames("hiddenFrm").document.forms(0);

    if(!hfrm) return;

    var iElements = hfrm.elements.length;
    for(var i = 0; i < iElements; i++) {
        if(frm.elements(hfrm.elements(i).name)) {
            var typ = frm.elements(hfrm.elements(i).name).type;
            switch(typ) {
                case "radio"    :
                case "checkbox" :
                    var objs = document.getElementsByName(hfrm.elements(i).name);
                    for(var j = 0; j < objs.length; j++) {
                        if(objs(j).value == hfrm.elements(i).value) {
                            objs(j).checked = true;
                            if(typ == "radio")
                                break;
                        }
                    }
                    break;
                case "select-one" :
                    if(hfrm.elements(i).value == "")
                        break;
                default          :
                    frm.elements(hfrm.elements(i).name).value = hfrm.elements(i).value;
            }
        }
    }

    if(hfrm.SearchYN && hfrm.SearchYN.value == "Y" && loc != null && loc != "")
        go_page(hfrm,'downFrm',loc);
}

//폼 안에 있는 모든 Element 들을 가져온다

function getFormData() {
    var iElements = document.forms[0].elements;
    var str = "";
    for(var i = 0; i < iElements.length; i++) {
        if(iElements(i).type != "text" && iElements(i).type != "textarea" &&
           iElements(i).type != "checkbox" && iElements(i).type != "radio" &&
           iElements(i).type != "select-one" && iElements(i).type != "hidden"
         ) continue;
         if(iElements(i).type == "checkbox" || iElements(i).type == "radio")
            if(!iElements(i).checked) continue;

        toUnformat(iElements(i));
        str += "<INPUT TYPE=hidden NAME='" + iElements(i).name + "' VALUE='" + iElements(i).value + "'>";
    }
    return str;
}

//키 입력 완료시 다음 폼으로 커서 이동(onKeyup)
function moveTab(thisObj,nextObj) {
    var len = thisObj.getAttribute("MAXLENGTH");
    if(len) {
        if(thisObj.value.length == parseInt(len)) {
            nextObj.focus() ;
            return;
        }
    }
}

//쿠키 값 저장하기

//  var expire = new Date();
//  expire.setHours(expire.getHours() + 7 * 24); //일주일

function setCookie(name, value, expire, path) {
    document.cookie = name + "=" + escape(value) + "; " + ((path == null)? "" : ("path=" + path + "; ")) + ((expire == null) ? "" : ("expires=" + expire.toGMTString()));
}

//쿠키 값 가져오기

function getCookie(Name) {
    var search = Name + "=";
    if(document.cookie.length > 0) {
        offset = document.cookie.indexOf(search);
        if(offset != -1) {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if(end == -1)
                end = document.cookie.length;
            return unescape(document.cookie.substring(offset, end));
        }
    }
    return "";
}

//********************풍선도움말 스크립트***********************
// 사용방법
// 1. 아래의 DIV 태그를 BODY 안에 아무곳에 삽입한다.
//    <DIV ID="helpText" STYLE="position:absolute;background-color:FFFFDD;border-color:black;border-width:10;visibility:show;top:-100px;z-index:+100;overflow-Y:auto" ONMOUSEOVER="overdiv=1;" ONMOUSEOUT="overdiv=0;setTimeout('hideLayer()',1000);"></DIV>
// 2. 마우스가 위치했을때 도움말을 보이고자 하는 곳에 아래의 함수를 삽입한다.
//    예) <A HREF="#" onMouseover="popLayer('<%=내용%>')">제목</A>
//        <TD onMouseover="popLayer('<%=내용%>')">제목</TD>
//*****************************************************************
overdiv = 0;
//도움말 보이기

function popLayer(str) {
    x = event.clientX - 15;
    y = event.clientY - 15;
    w = document.body.clientWidth / 3;
    h = document.body.clientHeight / 3;

    x = (x + w > 1024) ? x - w + 30: x;
    y = (y + h > 768 - 180) ? y - h + 30: y;

    oHelp = document.getElementById("helpText");
    oHelp.style.left = x;
    oHelp.style.top = y;
    oHelp.style.width = w;
    oHelp.style.height = h;

    pad = "0";
    bord = "1 bordercolor=black";
    desc = "<table width=100% height=100% cellspacing=0 cellpadding="+pad+" border="+bord+"  bgcolor=000000><tr><td>\n"
         + "<table cellspacing=0 cellpadding=3 border=0 width=100% height=100%><tr><td bgcolor=ffffdd valign=top>\n"
         + "<font style=font-size:9pt;>" + str + "</font>"
         + "\n</td></tr></table>\n"
         + "</td></tr></table>";

    oHelp.innerHTML = desc;
}

//도움말 숨기기

function hideLayer(){
    if (overdiv == 0) {
        document.getElementById("helpText").style.top = "-500";
    }
}

//시간이 긴 작업 요청시 메세지
/***********************************
<div id=idWait style="visibility: hidden; position: absolute; left: 0px; top: 0px; width: 0px; height: 0px; text-align: center; background-color: lightyellow; color: darkred; border: thin inset threedface; padding: 10pt">
  <b>잠시만 기다려주세요. <br> 자료를 전송중...</b>
</div>
SpoolStatus(true);  //메세지 보이게

SpoolStatus(false); //메세지 안 보이게

setTimeout("SpoolStatus(false)",5000);  //5초후 메세지 없애기

***********************************/
function SpoolStatus(start,width,height) {
    if ( start ) {
        if(width == null) {
            width = document.body.clientWidth/4;
            height = document.body.clientHeight/5;
        }
        idWait.style.pixelWidth = width;
        idWait.style.pixelHeight = height;
        idWait.style.pixelLeft = (document.body.clientWidth - width)/2;
        idWait.style.pixelTop = (document.body.clientHeight - height)/2;
        idWait.style.visibility = "visible";
    } else {
        idWait.style.visibility = "hidden";
    }
}

/*******************************************
  이미지 로딩 관리

*******************************************/
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


/*******************************************
  Div Tag 안에 anchor Tag 생성

*******************************************/
var sColDELIMITER = "^";
var sRowDELIMITER = "|";
	
// objDiv : DIV Tag Object		
// info : FileName (sColDELIMITER) FilePath (sColDELIMITER) FileDesc 
function fn_SetDivLink(objDiv, info )
{
	var item;
	var arrFileInfos;
	var arrFileInfo;
	var sHTML="";
	var sSource = info;
	
	try
	{
		item = objDiv;
		arrFileInfos = sSource.split(sRowDELIMITER);
		
		for(var i=0; i< arrFileInfos.length; i++)
		{
			arrFileInfo = arrFileInfos[i].split(sColDELIMITER);
			sHTML += fn_MakeAnchorTag(arrFileInfo);
		}
		
		item.innerHTML = sHTML;
		
		var strValue = item.innerHTML;

	}
	catch(exception)
	{
		alert('SetDivLink : ' + exception.description);
	}
}

// arrInfo( 0:FileName 1:FilePath 2:FileDesc )
function fn_MakeAnchorTag(arrInfo)
{
	var arrValue = arrInfo;
	var sHTMLTag="";
	var strFileDownPath ="/filedown/";
	
	//File Path
	if(arrValue[1] != null)
	{
		sHTMLTag += "<a href='" + strFileDownPath + arrValue[1];
	
		//File Description	
		if(arrValue[2] != null)
			sHTMLTag += "' title='" + arrValue[2] + "'  target ='x'>";
		else
			sHTMLTag += "' target ='x'>";
		
		//File Name	
		if(arrValue[0] != null)
			sHTMLTag += arrValue[0] + "</a><br>";
		else
			sHTMLTag += "</a><br>";
	}
		
	return sHTMLTag;
}

/*******************************************
  파일 첨부 팝업창 호출
  qsAttachedSeq : 쿼리스트링으로 사용할 String값
*******************************************/
function fn_OpenAttachFileP(qsAttachedSeq)
{
	try
	{
		//var strURL = "http://localhost:82/Common/FileUpload/FileAttachP.aspx";
		var strURL = "/Common/FileUpload/FileAttachP.aspx";
		var strQuery = "?AttachedSeq=";
		var sWidth = '700px';
		var sHeight = '300px';
		var strOption = "dialogWidth:" + sWidth 
						+ ";dialogHeight:" + sHeight + ";scroll:no;status:no;";
						
		if(qsAttachedSeq != 'undefinded' )
			strQuery += qsAttachedSeq;
			
		
		window.showModalDialog(strURL + strQuery, window.document, strOption);
	}
	catch(exception)
	{
		alert("fn_OpenAttachFileP : " + exception.description);
	}
}


/*******************************************
  공통 팝업창 호출
  qsAttachedSeq : 쿼리스트링으로 사용할 String값
*******************************************/
function fn_OpenPopUp(pageId, queryStrings)
{
	try
	{
		var strURL = "";
		//var strURL = "http://localhost:82/Common/FileUpload/FileAttachP.aspx";
		
		if( pageId == "CO_SendMail")
			strURL = "../Common/Email/CO_SendMail.aspx";
		else
			strURL = "../Common/PopUp/" + pageId + ".aspx";
			
		var strQuery = "?Params=" + queryStrings;
		var sWidth = '640px';
		var sHeight = '345px';
		
		if(pageId == "CO_DEPTLISTP")
		{
			sHeight = '365px';
			sWidth = '680px';
		}
		else if(pageId == "CO_SendMail")
		{
			sHeight = '507px';
		}
		else if(pageId == "CO_SETACCESSRIGHT")
		{
			sHeight = '332px';
		}
		else if(pageId == "RealatedAccuse")
		{
			sHeight = '403px';
		}
		else if(pageId == "CO_UPDATEHIST")
		{
			sHeight = '335px';
		}
		else if( pageId == "CO_SETACCESSRIGHT_M")
		{
			sHeight = '671px';
			sWidth = '730px';
		}
		else if( pageId == "Card/gsck_card_f039")
		{
			sHeight = '455px';
			sWidth = '600px';
		}
		else if( pageId == "Nanuum/gsck_nanu_f002")
		{
			sHeight = '246px';
			sWidth = '380px';
		}
		else if( pageId == "Customer/gsck_cust_f011")
		{
			sHeight = '285px';
			sWidth = '385px';
		}
			
		var strOption = "dialogWidth:" + sWidth 
						+ ";dialogHeight:" + sHeight + ";scroll:no;status:no;";
	    var arr = new Array();
	    
	     if( pageId == "Nanuum/gsck_nanu_f002")
	     {
	        window.showModalDialog(strURL + strQuery, arr, strOption);
	           document.location.reload();
	     }
	     else
	     {		    
		    window.showModalDialog(strURL + strQuery, arr, strOption);
		    return arr;
		}
	}
	catch(exception)
	{
		alert("fn_OpenPopUp : " + exception.description);
	}
}


/*
' Sub ID		: fgn_no_chksum
' Description	: 외국인 주민번호 Sum Check
' @Param		: reg_no		- 주민번호
' Return		: true or false
**/

function fn_ForeignNoCheck(reg_no) {
    var sum = 0;
    var odd = 0;
    
    buf = new Array(13);
    for (i = 0; i < 13; i++) buf[i] = parseInt(reg_no.charAt(i));

    odd = buf[7]*10 + buf[8];
    
    if (odd%2 != 0) {
      return false;
    }

    if ((buf[11] != 6)&&(buf[11] != 7)&&(buf[11] != 8)&&(buf[11] != 9)) {
      return false;
    }
    	
    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
    for (i = 0, sum = 0; i < 12; i++) sum += (buf[i] *= multipliers[i]);


    sum=11-(sum%11);
    
    if (sum>=10) sum-=10;

    sum += 2;

    if (sum>=10) sum-=10;

    if ( sum != buf[12]) {
        return false;
    }
    else {
        return true;
    }
}
/*
' Sub ID		: isAlpabatNum
' Description	: 해당 문자열이 알파벳과 숫자로만 이루어 졌는지 체크
' @Param		: obj - 체크하고 싶은 문자열
' Return		: true or false
**/
function isAlpabatNum(obj) {

	var str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
	for (i=0; i < obj.length; i++) {
        if (str.indexOf(obj.substring(i,i+1))<0) {			 	
			return false;
		}
       
	}

	return true;
}
//한글,영문,특수기호 체크
function input_check(check_string) { 
            var char_ASCII = check_string.charCodeAt(check_string.length-1); 
             
            //숫자 
            if (char_ASCII >= 48 && char_ASCII <= 57 ) 
                    return 1; 
            //영어 
            else if ((char_ASCII>=65 && char_ASCII<=90) 
                            || (char_ASCII>=97 && char_ASCII<=122)) 
                    return 2; 
            //특수기호 
            else if ((char_ASCII>=33 && char_ASCII<=47) 
                            || (char_ASCII>=58 && char_ASCII<=64) 
                            || (char_ASCII>=91 && char_ASCII<=96) 
                            || (char_ASCII>=123 && char_ASCII<=126)) 
                    return 4; 
            //한글 
            else if ((char_ASCII >= 12592) || (char_ASCII <= 12687)) 
                    return 3; 
            else  
                    return 0; 
    } 
    
    
function checkPhoneNo(no1, no2, no3){
      if (no1=='' || no2=='' || no3=='')

        {

                return false;

        }else{

                var no_len = no1.length + no2.length + no3.length;

                if( !(no1=="02" || no1=="031" || no1=="032" || no1=="033" || no1=="041" || no1=="042" || no1=="043" || no1=="051" || no1=="052" || no1=="053"

                          || no1=="054" || no1=="055" || no1=="060" || no1=="061" || no1=="062" || no1=="063" || no1=="064" || no1=="080" || no1=="011" || no1=="016"

                          || no1=="017" || no1=="018" || no1=="019" || no1=="010" || no1=="070" || no1=="0502" || no1=="0505" || no1=="0506" || no1=="0130" || no1=="0303")

                        )

                {

                        return false;

                }else{

                        if (no1=="02"){

                                if (no_len<9 || no_len>10)

                                {

                                        return false;

                                }else{

                                        return true;

                                }

                        }else if (no1=="0502" || no1=="0505" ||  no1=="0506" || no1=="0130" || no1=="0303"){

                                if (no_len<11 || no_len>12)

                                {

                                        return false;

                                }else{

                                        return true;

                                }

                        }else if (no_len<10 || no_len>11){

                                return false;

                        }

                }

        }

        return true;


}

/// <summary>
/// 사용자 아이디 유효성 체크
/// 2008.06.25 조재영(인포젠)
/// </summary>
function setUserID_ValidationCheck(objID)
{
    var objWebId = document.getElementById(objID);

    //▩▩▩ check whether input value is included space or not
    if(objWebId.value == ""){
        alert("아이디를 입력해주세요.");
        objWebId.select();
        return false;
    }

    //▩▩▩ 아이디 가운데 빈 공간이 없도록 체크한다.
    var retVal = checkSpace(objWebId.value);
    if(retVal) {
        alert("아이디에 공백은 사용할 수 없습니다.");
        objWebId.select();
        return false;
    }

    //▩▩▩ 아이디는 숫자로만 생성 불가능합니다.	
    if(objWebId.value.match(/\d+/g) == objWebId.value) {
        alert("아이디는 숫자로만 생성이 불가능합니다.");
        objWebId.select();
        return false;
    }

     //▩▩▩ 길이와 허용 문자를 체크한다.
     var isID = /^[A-Za-z0-9]{4,20}$/;
     if(!isID.test(objWebId.value))
     {
        alert("아이디는 4~20자의 영문과 숫자만 사용할 수 있습니다. 특수문자와 한글은 사용할 수 없습니다.");
        objWebId.select();
        return false;
     }

     return true;
}

/// <summary>
/// 사용자 아이디 길이 및 특수문자 체크
/// 2008.06.25 조재영(인포젠)
/// </summary>
function setUserID_OhterChar(objID)
{
    var objWebId = document.getElementById(objID);

    //▩▩▩ 길이와 허용 문자를 체크한다.
    var isID = /^[A-Za-z0-9]{4,20}$/;
    if(!isID.test(objWebId.value))
    {
        alert("아이디는 4~20자의 영문과 숫자만 사용할 수 있습니다. 특수문자와 한글은 사용할 수 없습니다.");
        objWebId.select();
        return false;
    }

    return true;
}

/// <summary>
/// space 가 있으면 true, 없으면 false
/// 2008.06.25 조재영(인포젠)
/// </summary>
function checkSpace(objID)
{
    if(objID.search(/\s/) != -1)
    {
        return true;
    }
    else
    {
        return false;
    }
}

/// <summary>
/// 사용자 패스워드 유효성 체크
/// 2008.06.25 조재영(인포젠)
/// <param name="objUserID">사용자 아이디</param>
/// <param name="objUserPassWord">사용자 패스워드</param>
/// <param name="objUserPassWordRe">사용자 패스워드 확인</param>
/// <param name="objUserResidentNo">사용자 주민등록번호</param>
/// </summary>
function setUserPassWord_ValidationCheck(objUserID, objUserPassWord, objUserPassWordRe, objUserResidentNo)
{
    var objWebId        = document.getElementById(objUserID);
    var objWebPw        = document.getElementById(objUserPassWord);
    var objWebPwRe      = document.getElementById(objUserPassWordRe);

    if(/^[A-Za-z0-9`\-=\\\[\];',\./~!@#\$%\^&\*\(\)_\+|\{\}:"<>\?]{6,16}$/.test(objWebPw.value) == false)
    {
        alert("개인정보보호차원에서 비밀번호를\n문자, 숫자 조합으로 6~16자리로 입력해주세요.");
        objWebPw.focus();
        objWebPw.select();
        return false;
    }

    if(objWebPw.value.match(/\d+/g) == objWebPw.value)
    {
        alert("개인정보보호차원에서 비밀번호를 문자, 숫자 조합으로 입력해주세요.");
        objWebPw.focus();
        objWebPw.select();
        return false;
    }

    if(objWebId.value == objWebPw.value)
    {
        alert("비밀번호는 아이디와 같을 수 없습니다.");
        objWebPw.focus();
        objWebPw.select();
        return false;
    }

    //oooooo-ooooooo 유형의 주민번호
    var p_jumin1 = objUserResidentNo.substring(0, 6);
    var p_jumin2 = objUserResidentNo.substring(7, 14);

    if(objWebPw.value.indexOf(p_jumin1) != -1)
    {
        alert('비밀번호는 주민번호 앞자리와 동일하게 사용할 수 없습니다.');
        objWebPw.focus();
        objWebPw.select();
        return false;
    }
 
    var cnt = 0;
    var temp = "";

    for(i=0;i<p_jumin2.length;i++)
    {
        temp_id = p_jumin2.charAt(i);

        for(j=0;j<objWebPw.value.length;j++)
        {
            if(cnt >0)
            {
                j = tmp_pass_no + 1;
            }

            if(temp == "r")
            {
                j = 0;
                temp = "";
            }

            temp_pass = objWebPw.value.charAt(j);

            if(temp_id == temp_pass)
            {
                cnt = cnt + 1;
                tmp_pass_no = j;
                break;
            }
            else if(cnt > 0 && j > 0)
            {
                temp = "r";
                cnt = 0;
            }
            else
            {
                cnt = 0;
            }
        }

        if(cnt > 2) break;
    }

    if(cnt > 2)
    {
        alert("비밀번호가 주민번호 뒷자리의 연속된 3자 이상과 동일할 수 없습니다.");
        objWebPw.focus();
        objWebPw.select();
        return false;
    }

    var cnt2 = 1;
    var cnt3 = 1;
    var temp_p;
    var temp_pass1;
    var temp_pass2; 
    var next_pass;

    for(i=0;i<objWebPw.value.length;i++)
    {
        temp_pass1 = objWebPw.value.charAt(i);
        next_pass = (parseInt(temp_pass1.charCodeAt(0))) + 1;
        temp_p = objWebPw.value.charAt(i + 1);
        temp_pass2 = (parseInt(temp_p.charCodeAt(0)));

        if(temp_pass2 == next_pass)
        {
            cnt2 = cnt2 + 1;
        }
        else
        {
            cnt2 = 1;
        }

        if(temp_pass1 == temp_p)
        {
            cnt3 = cnt3 + 1;
        }
        else
        {
            cnt3 = 1;
        }

        if(cnt2 > 2)
        {
            break;
        }

        if(cnt3 > 2)
        {
            break;
        }
    }

    if(cnt2 > 2)
    {
        alert("비밀번호에 연속된 문자나 순차적인 숫자를 3개이상 사용해서는 안됩니다.");
        objWebPw.focus();
        objWebPw.select();
        return false;
    }

    if(cnt3 > 2)
    {
        alert("비밀번호에 반복된 문자/숫자를 3개이상 사용해서는 안됩니다.");
        objWebPw.focus();
        objWebPw.select();
        return false;
    }

    if(objWebPwRe != null && objWebPwRe != "undefined")
    {
        if(objWebPw.value != objWebPwRe.value)
        {
            alert("입력하신 비밀번호와 비밀번호확인이 일치하지 않습니다.");
            objWebPwRe.focus();
            objWebPwRe.select();
            return false;
        }
    }

    return true;
}