/************************************** 
* 기능: 공통 라이브러리 
* 작성일: 2002-07-04 
* 작성자: 거친마루 
* 수정: 하근호 
* 2차수정 : 트론™ 
* 2차수정일 : 2002-09-09
* 3차수정 : 이동철
* 3차수정일 : 2002-12-24
***************************************
* 꼭 FORM에 name을 정의해 준다!!
* <FORM name="form1" onSubmit="return chkForm(this)">
* input tag에 대한 설명 
* <input 
*	type="text" //체크할 형식 
*	name="id" //넘어갈이름 
*	hname="아이디" //경고창에 나타낼 문자열 
*	option="regId" //어떤 정규식으로 처리할지 선언 
*	required //꼭 체크를 원하는 항목에 설정 
* > 
***************************************/


function chkForm(f)
{ 
       var i,currEl;

       for(i = 0; i < f.elements.length; i++){ 
              currEl = f.elements[i]; 
              //필수 항목을 체크한다.  
              if (currEl.getAttribute("required") != null)
              { 
                     if(currEl.type.toUpperCase() == "TEXT" || currEl.tagName.toUpperCase() == "SELECT" || currEl.tagName.toUpperCase() == "TEXTAREA" ||currEl.type.toUpperCase() == "PASSWORD")
                     { 
                            if(!chkText(currEl,currEl.hname)) return false; 

                     } else if(currEl.type.toUpperCase() == "CHECKBOX"){ 
                            if(!chkCheckbox(f, currEl,currEl.hname)) return false; 

                     } else if(currEl.type.toUpperCase() == "RADIO"){ 
                            if(!chkRadio(f, currEl,currEl.hname)) return false; 

                     }
              }
              // 입력 페턴을 체크한다.
              if(currEl.getAttribute("option") != null && currEl.value.length > 0){ 
                     if(!chkPatten(currEl,currEl.option,currEl.hname)) return false; 
              } 
              // 길이제한을 체크한다.
              if(currEl.getAttribute("lengthchk") != null && currEl.value.length > 0){ 
                     if(!chkLength(currEl,currEl.lengthchk,currEl.hname)) return false; 
              } 
       }
} 

function chkPatten(field,patten,name)
{ 
       var regNum =/^[0-9]+$/; 
       var regPhone =/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/; 
       var regMail =/^[_a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/; 
       var regDomain =/^[.a-zA-Z0-9-]+.[a-zA-Z]+$/; 
       var regAlpha =/^[a-zA-Z]+$/; 
       var regHost =/^[a-zA-Z-]+$/; 
       var regHangul =/[가-힣]/; 
       var regHangulEng =/[가-힣a-zA-Z]/; 
       var regHangulOnly =/^[가-힣]*$/; 
       var regId = /^[a-zA-Z]{1}[a-zA-Z0-9_-]{3,15}$/; 
       var regPwd = /^[a-zA-Z0-9_-]{4,15}$/; 
       var regDate =/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/; 

       patten = eval(patten); 
       if(!patten.test(field.value)){ 
              alert(name + "\n\n항목의 형식이 올바르지 않습니다."); 
              field.focus(); 
              return false; 
       } 
       return true; 
}
//-- 문자열 길이 검사
function getLength(str) {
       return (str.length + (escape(str) + "/%u").match(/%u/g).length-1);
}
function chkLength(field,length,name)
{
       if(getLength(field.value) > length){ 
              alert(name + "\n\n글자제한 영문,숫자 "+length+"자 , 한글 "+(length*2)+"자 이하 입력제한 입니다."); 
              field.focus(); 
              return false; 
       } 
       return true; 
}

function chkText(field, name)
{ 
       if(field.value.length < 1){ 
              alert(name); 
              field.focus(); 
              return false; 
       } 
       return true; 
}

function chkCheckbox(form, field, name)
{
       fieldname = eval(form.name+'.'+field.name);
       if (!fieldname.checked){
              alert(name); 
              field.focus(); 
              return false; 
       }
       return true; 
}

function chkRadio(form, field, name)
{
       fieldname = eval(form.name+'.'+field.name);
       for (i=0;i<fieldname.length;i++) {
              if (fieldname[i].checked)
                     return true; 
       }
       alert(name); 
       field.focus(); 
       return false; 
} 
/*
 * 폼검사기 끝
*/

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function popUp(theUrl,etc) { 

var imgwin = window.open(theUrl,'WIN',etc); 
imgwin.focus(); 
} 

function popUpCenter(theUrl,w,h) { 
var height = screen.height; 
var width = screen.width; 
var leftpos = width / 2 - 150; 
var toppos = height / 2 - 100; 
//var url = 'viewer.html?pic='+encode(what); 
var imgwin = window.open(theUrl,'WIN','scrollbars=auto,status=no,toolbar=no,resizable=1,location=no,menu=no,width='+w+',height='+h+',left=' + leftpos + ',top=' + toppos); 
imgwin.focus(); 
} 

function getParams() { 
var idx = document.URL.indexOf('?'); 
var params = new Array(); 
if (idx != -1) { 
var pairs = document.URL.substring(idx+1, document.URL.length).split('&'); 
for (var i=0; i<pairs.length; i++) { 
nameVal = pairs[i].split('='); 
params[nameVal[0]] = nameVal[1]; 
   } 
} 
return params; 
} 
params = getParams(); 


function PopUp(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


/**************************************
* 파일명: lib.rollover.js
* 기능: 이미지 롤오버 자동화 라이브러리
* 작성일: 2002-11-05
* 작성자: 거친마루
* 수정 : lainTT(2003-03-11)
***************************************/

var imgBuff = new Array();    // 롤오버 이미지를 저장하기 위한 버퍼

/** 
* String _makeTempID()
* 이미지의 임시 아이디로 쓰일 난수 이름을 발생시켜줌
* 
* @return String
*/
function _makeTempID() {
    return "IMG" + Math.ceil(Math.random() * 10000000);
}

/** 
* void doOver()
* 이미지에 롤오버될때의 이벤트 핸들러
*/
function doOver() {
    var id_temp = this.id;
    this.src = imgBuff[id_temp]["over"].src;
}

/** 
* void doOut()
* 이미지에서 롤아웃될때의 이벤트 핸들러
*/
function doOut() {
    var id_temp = this.id;
    this.src = imgBuff[id_temp]["origin"].src;
}

/** 
* void doClick()
* 이미지를 클릭할때의 이벤트 핸들러
*/
function doClick() {
    var id_temp = this.id;
    if(!imgBuff[id_temp]["select"]) return;

    if(this.getAttribute("toggle") != null) {
        this.onmouseover = (this.onmouseover) ? '' : doOver;
        this.onmouseout  = (this.onmouseover)  ? '' : doOut;
        this.src = (this.onmouseover) ? imgBuff[id_temp]["over"].src : imgBuff[id_temp]["select"].src;
    } else if(this.getAttribute("group") != null) {
        var same = this.getAttribute("group");
        var imgs = document.getElementsByTagName("img");
        for(var i=0; i<imgs.length; i++) {
            if(imgs[i].getAttribute("group") == same) {
                imgs[i].onmouseover = doOver;
                imgs[i].onmouseout = doOut;
                imgs[i].src = imgBuff[imgs[i].id]["origin"].src;
            }
        }
        this.onmouseover = '';
        this.onmouseout  = '';
        this.src = imgBuff[id_temp]["select"].src;
    } else {
        this.onmouseover = '';
        this.onmouseout  = '';
        this.src = imgBuff[id_temp]["select"].src;
    }
}

/** 
* void init_rollover()
* 이미지 롤오버를 위한 준비
*/
function init_rollover() {
    var img;
    var imgs = document.getElementsByTagName("img");
    for (var i=0; i<imgs.length; i++) {
        if (!imgs[i].id) imgs[i].id = _makeTempID();
        if (imgs[i].getAttribute("default") != null && imgs[i].getAttribute("oversrc"))  {
            imgBuff[imgs[i].id] = new Array();
            imgBuff[imgs[i].id]["origin"] = new Image();
            imgBuff[imgs[i].id]["origin"].src = imgs[i].src;
            imgBuff[imgs[i].id]["over"] = new Image();
            imgBuff[imgs[i].id]["over"].src = imgs[i].getAttribute("oversrc");
            imgBuff[imgs[i].id]["select"] = new Image();
            imgBuff[imgs[i].id]["select"].src = imgs[i].getAttribute("selsrc");
            imgs[i].src = imgs[i].getAttribute("selsrc");

            imgs[i].onmouseover = '';
            imgs[i].onmouseout  = '';
            imgs[i].onclick = doClick;
        } else if (imgs[i].getAttribute("oversrc")) {
            imgBuff[imgs[i].id] = new Array();
            imgBuff[imgs[i].id]["origin"] = new Image();
            imgBuff[imgs[i].id]["origin"].src = imgs[i].src;
            imgBuff[imgs[i].id]["over"] = new Image();
            imgBuff[imgs[i].id]["over"].src = imgs[i].getAttribute("oversrc");
            if(imgs[i].getAttribute("selsrc")) {
                imgBuff[imgs[i].id]["select"] = new Image();
                imgBuff[imgs[i].id]["select"].src = imgs[i].getAttribute("selsrc");
            }

            imgs[i].onmouseover = doOver;
            imgs[i].onmouseout = doOut;
            if(imgs[i].getAttribute("selsrc")) imgs[i].onclick = doClick;
        }
    }
    var imgs = document.getElementsByTagName("input");
    for (var i=0; i<imgs.length; i++) {
        if (!imgs[i].id) imgs[i].id = _makeTempID();
        if (imgs[i].getAttribute("default") != null && imgs[i].getAttribute("oversrc"))  {
            imgBuff[imgs[i].id] = new Array();
            imgBuff[imgs[i].id]["origin"] = new Image();
            imgBuff[imgs[i].id]["origin"].src = imgs[i].src;
            imgBuff[imgs[i].id]["over"] = new Image();
            imgBuff[imgs[i].id]["over"].src = imgs[i].getAttribute("oversrc");
            imgBuff[imgs[i].id]["select"] = new Image();
            imgBuff[imgs[i].id]["select"].src = imgs[i].getAttribute("selsrc");
            imgs[i].src = imgs[i].getAttribute("selsrc");

            imgs[i].onmouseover = '';
            imgs[i].onmouseout  = '';
            imgs[i].onclick = doClick;
        } else if (imgs[i].getAttribute("oversrc")) {
            if (!imgs[i].id) imgs[i].id = _makeTempID();
            imgBuff[imgs[i].id] = new Array();
            imgBuff[imgs[i].id]["origin"] = new Image();
            imgBuff[imgs[i].id]["origin"].src = imgs[i].src;
            imgBuff[imgs[i].id]["over"] = new Image();
            imgBuff[imgs[i].id]["over"].src = imgs[i].getAttribute("oversrc");
            if(imgs[i].getAttribute("selsrc")) {
                imgBuff[imgs[i].id]["select"] = new Image();
                imgBuff[imgs[i].id]["select"].src = imgs[i].getAttribute("selsrc");
            }

            imgs[i].onmouseover = doOver;
            imgs[i].onmouseout = doOut;
            if(imgs[i].getAttribute("selsrc")) imgs[i].onclick = doClick;
        }
    }
} 

// checkbox 모두 선택하기 함수
CheckboxFlag=false;

function CheckAllForCheckbox(ElementName){

    var EleSize=ElementName.length;
    var i=0;

    if(!CheckboxFlag){

        if(!EleSize){

            ElementName.checked=true;

        }else{

            for(i;EleSize>i;++i){

                ElementName[i].checked=true;

            }

        }

        CheckboxFlag=true;

    }else{

        if(!EleSize){

            ElementName.checked=false;

        }else{

            for(i;EleSize>i;++i){

                ElementName[i].checked=false;

            }

        }

        CheckboxFlag=false;

    }

}

// 샐랙트박스 모두 선택하기 함수
SelectboxFlag=false;

function CheckAllForSelectbox(ElementName){

    var EleSize=ElementName.options.length;
    var i=0;

    

    if(!SelectboxFlag){

        for(i;EleSize>i;++i){

            ElementName.options[i].selected=true;
            SelectboxFlag=true;

        }

    }else{

        for(i;EleSize>i;++i){

            ElementName.options[i].selected=false;
            SelectboxFlag=false;

        }

    }

}

// 재외국인 번호 체크
function check_fgnno(fgnno) {
        var sum=0;
        var odd=0;
        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 check_juminno(juminno) {
        if(juminno=="" || juminno==null || juminno.length!=13) {
                alert("주민등록번호를 적어주세요.");
                return false;
        }
        var jumin1 = juminno.substr(0,6);
        var jumin2 = juminno.substr(6,7);
        var yy           = jumin1.substr(0,2);        // 년도
        var mm     = jumin1.substr(2,2);        // 월
        var dd     = jumin1.substr(4,2);        // 일
        var genda  = jumin2.substr(0,1);        // 성별
        var msg, ss, cc;

        // 숫자가 아닌 것을 입력한 경우
        if (!isNumeric(jumin1)) {
                alert("주민등록번호 앞자리를 숫자로 입력하세요.");
                return false;
        }
        // 길이가 6이 아닌 경우
        if (jumin1.length != 6) {
                alert("주민등록번호 앞자리를 다시 입력하세요.");
                return false;
        }
        // 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사
        if (yy < "00" || yy > "99" ||
                mm < "01" || mm > "12" ||
                dd < "01" || dd > "31") {
                alert("주민등록번호 앞자리를 다시 입력하세요.");
                return false;
        }
        // 숫자가 아닌 것을 입력한 경우
        if (!isNumeric(jumin2)) {
                alert("주민등록번호 뒷자리를 숫자로 입력하세요.");
                return false;
        }
        // 길이가 7이 아닌 경우
        if (jumin2.length != 7) {
                alert("주민등록번호 뒷자리를 다시 입력하세요.");
                return false;
        }
        // 성별부분이 1 ~ 4 가 아닌 경우
        if (genda < "1" || genda > "4") {
                alert("주민등록번호 뒷자리를 다시 입력하세요.");
                return false;
        }
        // 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대
        cc = (genda == "1" || genda == "2") ? "19" : "20";
        // 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
        if (isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false) {
                alert("주민등록번호 앞자리를 다시 입력하세요.");
                return false;
        }
        // Check Digit 검사
        if (!isSSN(jumin1, jumin2)) {
                alert("입력한 주민등록번호를 검토한 후, 다시 입력하세요.");
                return false;
        }
        return true;
}

// 사업자등록번호 체크
function check_busino(vencod) {
        var sum = 0;
        var getlist =new Array(10);
        var chkvalue =new Array("1","3","7","1","3","7","1","3","5");
        for(var i=0; i<10; i++) { getlist[i] = vencod.substring(i, i+1); }
        for(var i=0; i<9; i++) { sum += getlist[i]*chkvalue[i]; }
        sum = sum + parseInt((getlist[8]*5)/10);
        sidliy = sum % 10;
        sidchk = 0;
        if(sidliy != 0) { sidchk = 10 - sidliy; }
        else { sidchk = 0; }
        if(sidchk != getlist[9]) { return false; }
        return true;
}


function isYYYYMMDD(y, m, d) {
        switch (m) {
        case 2:        // 2월의 경우
                if (d > 29) return false;
                if (d == 29) {
                        // 2월 29의 경우 당해가 윤년인지를 확인
                        if ((y % 4 != 0) || (y % 100 == 0) && (y % 400 != 0))
                                return false;
                }
                break;
        case 4:        // 작은 달의 경우
        case 6:
        case 9:
        case 11:
                if (d == 31) return false;
        }
        // 큰 달의 경우
        return true;
}
function isNumeric(s) {
        for (i=0; i<s.length; i++) {
                c = s.substr(i, 1);
                if (c < "0" || c > "9") return false;
        }
        return true;
}
function isLeapYear(y) {
        if (y < 100)
        y = y + 1900;
        if ( (y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0) ) {
                return true;
        } else {
                return false;
        }
}
function getNumberOfDate(yy, mm) {
        month = new Array(29,31,28,31,30,31,30,31,31,30,31,30,31);
        if (mm == 2 && isLeapYear(yy)) mm = 0;
        return month[mm];
}
function isSSN(s1, s2) {
        n = 2;
        sum = 0;
        for (i=0; i<s1.length; i++)
                sum += parseInt(s1.substr(i, 1)) * n++;
        for (i=0; i<s2.length-1; i++) {
                sum += parseInt(s2.substr(i, 1)) * n++;
                if (n == 10) n = 2;
        }
        c = 11 - sum % 11;
        if (c == 11) c = 1;
        if (c == 10) c = 0;
        if (c != parseInt(s2.substr(6, 1))) return false;
        else return true;
}
