﻿   /*******************************************************************
        설명 : 3자리 콤마 없애기 
        파라메터
                obj : Value
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function formatNum(num) {
        var str = String(num);
        	if(str=="")str=0;
        	str = str.replace(",","");
        	str = parseInt(str,10)
        return str;
    }
       
   /*******************************************************************
        설명 : 3자리 콤마 .
        파라메터
                obj : Value
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function formatNumber(num) {
        var str = String(num);
        var re  = /(-?[0-9]+)([0-9]{3})/;
        while(re.test(str)){
        	str = str.replace(re,"$1,$2");
        }
        return str;
    }
    
    /*******************************************************************
        설명 : Item 선택후 위쪽 이동.
        파라메터
                obj : Select Name
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function upItem(selList) {
        var tmpValue, tmpText
        var selectIndex = selList.selectedIndex;

        if (selectIndex > 0)
        {
            tmpValue = selList[selectIndex -1].value;
            tmpText  = selList[selectIndex -1].text;
            selList[selectIndex-1].value = selList[selectIndex].value;
            selList[selectIndex-1].text  = selList[selectIndex].text;
            selList[selectIndex].value   = tmpValue;
            selList[selectIndex].text    = tmpText;

            selList.selectedIndex        = selectIndex-1;
        }
    }

     /*******************************************************************
        설명 : Item 선택후 아래쪽 이동.
        파라메터
                obj : Select Name
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function downItem(selList) {
        var tmpValue, tmpText
        var selectIndex = selList.selectedIndex;

        if (selectIndex < (selList.length - 1)  && selectIndex != -1)
        {
            tmpValue = selList[selectIndex +1].value;
            tmpText  = selList[selectIndex +1].text;
            selList[selectIndex+1].value = selList[selectIndex].value;
            selList[selectIndex+1].text  = selList[selectIndex].text;
            selList[selectIndex].value   = tmpValue;
            selList[selectIndex].text    = tmpText;

            selList.selectedIndex        = selectIndex+1;
        }
    }
    /*******************************************************************
        설명 : SelectBox의 모든 Item을 삭제한다.
                (정확하게는 마지막 Item을 제외하고)
        파라메터
                obj : Select Name
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function removeAllSelect(obj){
        //var length = obj.length;        //반드시 이렇게, length가 줄어들기 때문에 그렇게 해야 한다.
        for(var i=0 ; i < obj.length ; i++)
            obj[0] = null;
    }

    /*******************************************************************
        설명 : SelectBox의 Item을 생성한다.
                (정확하게는 마지막 Item을 제외하고)
        파라메터
                obj : Select Name
                index : 생성할 index값
                name : option Name
                val : option Value
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function makeSelect(obj, index, name, val){
        obj[index] = new Option(name, val);
        obj.selectedIndex = index;
    }


    /*******************************************************************
        설명 : SelectBox의 임의의 Item을 삭제한다.
                (정확하게는 마지막 Item을 제외하고)
        파라메터
                obj : Select Name
                index : 삭제할 Index값
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function removeSelect(obj, index){
        obj[index] = null;
    }

    /*******************************************************************
        설명 : select박스에 해당 text가 있는지 확인
        파라메터
                obj : Select Name
                text : 존재하는지 확인하고자 하는 문자열
        반환값 : boolean
        작성자 : 박한나
    *******************************************************************/
    function existSelect(obj, text){

        for(var i=0; i<obj.length;i++){
            if(obj.options[i].text == text){
                return true;
            }
        }

        return false;
    }

    /*******************************************************************
        설명 : select박스에 해당 value가 있는지 확인
        파라메터
                obj : Select Name
                val : 존재하는지 확인하고자 하는 select value
        반환값 : boolean
        작성자 : 박한나
    *******************************************************************/
    function existSelectValue(obj, val){

        for(var i=0; i<obj.length;i++){
            if(obj.options[i].value == val){
                return true;
            }
        }

        return false;
    }

    /*******************************************************************
        설명 : 문자열이 빈문자열이면 0을 채워넣는다.
               또한 "01" 또는 "000033"처럼 0이나 연속된 0으로
               시작되는 문자열의 0을 제외시킨다.
        파라메터
                str : 문자열
        반환값 : 문자열
        작성자 : 박한나
    *******************************************************************/
    function toInteger(str)    {
        if(str == "")
            return "0";
        else
            return delZero(str);
    }

    /*******************************************************************
        설명 :  재귀함수 사용함
                toInteger함수는 이함수를 호출한다.
               "01" 또는 "000033"처럼 0이나 연속된 0으로
               시작되는 문자열의 0을 제외시킨다.
        파라메터
                str : 문자열
        반환값 : 문자열
        작성자 : 박한나
    *******************************************************************/
    function delZero(str){
        if((str.length > 1) && (str.substr(0, 1) == "0"))
            return delZero(str.substr(1));
        else
            return str;
    }

    /*******************************************************************
        설명 : 한자리 숫자일경우 앞에 "0"을 삽입한다.
        파라메터 : 문자열
        반환값 : 문자열
        작성자 : 박한나
    *******************************************************************/
    function addZero(str){
        if(str.length == 1)
            return "0" + str;
        else
            return str;
    }

    /*******************************************************************
        설명 : 텍스트박스나 텍스트에어리어에 입력되었나 체크하는 함수
        파라메터
                obj : 텍스트박스 Name
                msg : 오류 메시지
        반환값 : 입력 되지 않으면 false 반환
        작성자 : 박한나
    *******************************************************************/
    function isNull(obj, msg){

        if(trim(obj.value) == "")
        {
            alert(msg + " 입력하십시오.");
            obj.focus();
            return true;
        }
        return false;

    }
    /*******************************************************************
        설명 : 텍스트박스나 텍스트에어리어에 입력되었나 체크하는 함수
        파라메터
                obj : 텍스트박스 Name
                msg : 오류 메시지
        반환값 : 입력 되지 않으면 false 반환
        작성자 : 박한나
    *******************************************************************/
    function isNullNF(obj, msg){
        if(trim(obj.value) == "")
        {
            alert(msg + " 입력하십시오.");
            return true;
        }
        return false;

    }

    /*******************************************************************
        설명 : select 박스가 선택되었나 체크하는 함수
        (첫번째가 선택되었으면 선택되지 않았다고 간주함)
        파라메터
                obj : select Name
                msg : 오류메시지
        반환값 : 선택되지 않으면 false 반환
        작성자 : 박한나
    *******************************************************************/
    function isSelected(obj, msg){
        if(obj.selectedIndex == 0)
        {
            alert(msg + " 선택하십시오.");
            obj.focus();
            return false;
        }
        return true;
    }

    /*******************************************************************
        설명 :체크박스나 라디오버튼에 체크되었나 확인하는 함수
        파라메터
                obj : checkbox(radio) Name
        반환값 : 체크되지 않으면 false 반환
        작성자 : 박한나
    *******************************************************************/
    function isChecked(obj, msg){

        //만약 obj가 하나도 없을 경우 리턴
        if(obj == undefined) return false;

        var count = 0;  //체크된 갯수
        //같은 name의 체크박스(라디오버튼)이 여러개 있을때..

        if(obj.length > 1){
            for(var i=0 ; i<obj.length ; i++){
                if(obj[i].checked)
                    count++;
            }
            if(count <= 0){
                alert(msg + " 선택하십시오.");
                obj[0].focus();
                return false;
            }
        }else{      //같은 name의 체크박스(라디오버튼)이 1개 있을때...
            if(!obj.checked){
                alert(msg + " 선택하십시오.");
                obj.focus();
                return false;
            }
        }
        return true;
    }
    /*******************************************************************
        설명 :체크박스나 라디오버튼에 체크되었나 확인하는 함수
        파라메터
                obj : checkbox(radio) Name
        반환값 : 체크되지 않으면 false 반환
        작성자 : 박한나
    *******************************************************************/
    function isCheckedNonMsg(obj){

        //만약 obj가 하나도 없을 경우 리턴
        if(obj == undefined) return false;

        var count = 0;  //체크된 갯수
        //같은 name의 체크박스(라디오버튼)이 여러개 있을때..

        if(obj.length > 1){
            for(var i=0 ; i<obj.length ; i++){
                if(obj[i].checked)
                    count++;
            }
            if(count <= 0){
                obj[0].focus();
                return false;
            }
        }else{      //같은 name의 체크박스(라디오버튼)이 1개 있을때...
            if(!obj.checked){
                obj.focus();
                return false;
            }
        }
        return true;
    }

    /*******************************************************************
        설명 :체크박스을 모두 체크하는 함수
        파라메터
                obj : checkbox(radio) Name
        작성자 : 박한나
    *******************************************************************/
    function CheckAll(obj, val){
        //만약 obj가 하나도 없을 경우 리턴
        if(obj == undefined) return;

        var length = obj.length;

        if(obj.length > 1){
            for(var i=0 ; i<length ; i++)
                obj[i].checked = val;
        }else{        //체크박스가 한개일때
            obj.checked = val;
        }

    }


    /*******************************************************************
        설명 : 왼쪽 Trim 함수
        파라메터
                str : 문자열
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function ltrim(str) {
            var s = new String(str);

            if (s.substr(0,1) == " ")
                    return ltrim(s.substr(1));
            else
                    return s;
    }

    /*******************************************************************
        설명 : 오른쪽 Trim 함수
        파라메터
                str : 문자열
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function rtrim(str) {
            var s = new String(str);
            if(s.substr(s.length-1,1) == " ")
                    return rtrim(s.substring(0, s.length-1))
            else
                    return s;
    }

    /*******************************************************************
        설명 : 양쪽 Trim 함수
        파라메터
                str : 문자열
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function trim(str) {
            return ltrim(rtrim(str));
    }



    /*******************************************************************
        설명 : 숫자인지 체크
        파라메터
                str : 문자열
        반환값 : 없음
        작성자 : 박한나
    *******************************************************************/
    function isNumeral(str){
        for(var i=0; i<str.length; i++) {
            var uniCode = str.charCodeAt(i);

            if(!(uniCode >= 48 && uniCode <= 57))
                return false;
        }

        return true;
    }

    /*******************************************************************
    *    설명 :영문인지 체크한다.
    *
    *    작성자 : 박한나
    *    작성날짜 : 2002.06.26
    ********************************************************************/
    function isAlphabet(str){
        for(var i=0; i<str.length; i++) {
            var uniCode = str.charCodeAt(i);

            if(!(uniCode >= 97 && uniCode <= 122))
                return false;
        }

        return true;
    }

     /*******************************************************************
    *    설명 : 파일업로드시 파일명이 한글로 구성되어 있는지 체크
    *    작성자 : 박한나
    *    작성날짜 : 2004.01.13
    ********************************************************************/
    function isFileup(str){

        var index = str.lastIndexOf("\\");
        if (index == -1) return false;

        str = str.substr(index+1);

        for(var i=0; i<str.length; i++) {
            var uniCode = str.charCodeAt(i);

            if(!(uniCode >= 00 && uniCode <= 255))
                return false;
        }

        return true;
    }

    /*******************************************************************
    *    설명 :영문이거나 숫자인지 체크한다.
    *            그러나 문자열이 빈문자열인지는 체크하지 않는다.
    *    작성자 : 박한나
    *    작성날짜 : 2002.06.26
    ********************************************************************/
    function isNumOrCharater(strChar){
        var numCount = 0;
        var charCount = 0;

        for(var i=0; i<strChar.length; i++) {
            var uniCode = strChar.charCodeAt(i);

            if(uniCode >= 48 && uniCode <= 57)    numCount++; //숫자이면

            else if(uniCode >= 97 && uniCode <= 122)    charCount++;//문자이면

            else{    //그외 특수문자이거나 한글인 인경우
                return false;
            }
        }

        if(numCount == 0 && charCount == 0){
            return false;
        }

        return true;
    }

    /*******************************************************************
    *    설명 :영문이거나 숫자인지 체크한다.
    *            그러나 문자열이 빈문자열인지는 체크하지 않는다.
    *    작성자 : 박한나
    *    작성날짜 : 2002.06.26
    ********************************************************************/
    function isNumOrChar(strChar){
        var numCount = 0;
        var charCount = 0;

        for(var i=0; i<strChar.length; i++) {
            var uniCode = strChar.charCodeAt(i);

            if(uniCode >= 48 && uniCode <= 57)    numCount++; //숫자이면

            else if(uniCode >= 65 && uniCode <= 90)    charCount++;//문자이면

            else if(uniCode >= 97 && uniCode <= 122)    charCount++;//문자이면

            else{    //그외 특수문자이거나 한글인 인경우
                return false;
            }
        }

        if(numCount == 0 && charCount == 0){
            return false;
        }

        return true;
    }

    /*******************************************************************
    *    설명 :영문이거나 숫자인지 체크한다.
    *            그러나 문자열이 빈문자열인지는 체크하지 않는다.
    *    작성자 : 박한나
    *    작성날짜 : 2002.06.26
    ********************************************************************/
    function getByte(strChar){
        var byte = 0;

        for(var i=0; i<strChar.length; i++) {
            var uniCode = strChar.charCodeAt(i);

            if(uniCode <= 127 )    byte++; //1byte
            else byte = byte + 2
         }

         return byte;
    }

    /******************************************************************
    * 설명 : 이메일 형식인지 체크한다.(정규표현식 사용함)
    * 작성날짜 : 2002.06.26
    *******************************************************************/
    function checkEmail(strChar){

        var isEmail1    = /^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;
        var isEmail2    = /^.*@[^_]*$/;


        return(isEmail1.test(strChar) && isEmail2.test(strChar));
    }





    /*******************************************************************
    *    설명 : 숫자를 해당 자리만큼 입력했는지 체크한다.
    *    작성자 : 박한나
    *    작성날짜 : 2002.06.26
    ********************************************************************/
    function checkNumericInput(obj,name,len){
        if (!isNumeral(obj.value)) {
            alert(name + " 숫자로 입력해주십시오.");
            obj.focus();
            return false;
        }
        if (obj.value.length != len) {
            alert(name + " " + len + "자리로 입력해주십시오.");
            obj.focus();
            return false;
        }
        return true;
    }


    /*******************************************************************
    *    설명 : 이미지를 지정된 사이즈로 맞추기
    *    작성자 : 박한나
    *    작성날짜 : 2002.06.26
    ********************************************************************/
    function setImageSize(minWidth, minHeight, obj){

        var width = obj.width;
        var height = obj.height;

        var rateWidth;
        var rateHeight;

        if(minWidth < width){
            rateWidth = minWidth/width;
            width = minWidth;
            height = height * rateWidth
        }

        if(minHeight < height){
            rateHeight = minHeight/height;
            height = minHeight;
            width = width * rateHeight;
        }
        obj.width = width;
        obj.height = height;

        /*var newImage = new Image();
        newImage.src = obj.src;

        var width = newImage.width;
        var height = newImage.height;

        var rateWidth;
        var rateHeight;

        if(minWidth < width){        //이미지 넓이가 지정한 사이즈보다 크면
            rateWidth = minWidth/width;
            width = minWidth;
            height = height * rateWidth        //높이도 비율만큼 줄인다.
        }

        if(minHeight < height){        //이미지 높이가 지정한 사이즈보다 크면
            rateHeight = minHeight/height;
            height = minHeight;
            width = width * rateHeight;        //넓이도 비율만큼 줄인다.
        }
        obj.onload = null;
        obj.src = newImage.src;
        obj.width = width;
        obj.height = height;
        */
    }

    /*******************************************************************
        설명 : 숫자만 입력가능하당..
                 텍스트 필드에서 다음과 같이 씀다.. onKeyDown="onlyNumber()"
        작성자 : 이정아
    *******************************************************************/
    function onlyNumber(){
         var code = window.event.keyCode;

         if ((code > 34 && code < 41) || (code > 47 && code < 58) || (code > 95 && code < 106) || code == 8 || code == 9 || code == 13 || code == 46)
         {
              window.event.returnValue = true;
              return window.event.returnValue;
         }
         window.event.returnValue = false;
         return window.event.returnValue;

    }

    /*************************************
     컴마(".") 제거
     파라메터 :    obj name
     작성자 : 김민석
    *************************************/
    function removePeriod(strSrc){
        return strSrc.value.replace(/\./gi,"");
    }


    /*************************************
     하이픈("-") 제거
     파라메터 :    obj name
     작성자 : 박종구
    *************************************/
    function removeHipun(strSrc){
        return strSrc.replace(/-/gi,"");
    }


    /*******************************************************************
    설명 : TR 객체의 값을 받아와 배열에 저장한다.
    파라메터 : tr 객체
    작성자 : 김종민
    *******************************************************************/
    function getArrayTd(tr){
        var texts = "";
        var str = new String();
        var arr = new Array();
        var td;

        for (i=0;i<tr.children.length;i++){
            td = tr.children[i];

            if(td.outerText=="")
                texts = texts + td.value + "||";
            else
                texts = texts + td.outerText + "||";
        }

        str = texts;
        arr = str.split("||");

        return arr;
    }

    /*******************************************************************
        설명 : TR Style 에 백그라운드 색상을 설정 , 또 원래의 백그라운드 색상을 유지 하게 한다.
        작성자 : 김종민
        백그라운드색상을 style에 주어야 사용가능 하단다.
    *******************************************************************/
    var old_tr ="";
    var now_tr = "";
    var old_chk = "";
    var old_color = "";
    var new_color = "";
    function FixCellColor(new_tr){

        if (now_tr == new_tr) return;

        if (old_tr != "" && now_tr !="" )
            now_tr.style.display = now_tr.style.display;

        old_tr = now_tr;
        now_tr = new_tr;

        new_color = new_tr.style.background;
        //alert(new_color);
        new_tr.style.background = "#C0C0FF";

        if (old_tr !="" && new_tr != old_tr){
            if(old_color == ""){
                old_tr.style.background = "#FFFFFF";
            }else{
                old_tr.style.background = old_color;
            }
        }
        now_tr = new_tr;
        old_color = new_color;
    }
    /*******************************************************************
        설명 : 키값이 입력될때마다 숫자값만 입력가능하도록 설정 한다.
        작성자 : 김종민
        예제 :  OnKeyup="keyDown(this, 24)"
    *******************************************************************/
    function keyDown(objarg, arglen){
        if(isNumeral(trim(objarg.value)) == false) {
            objarg.value = "";
            alert("숫자만 입력 가능합니다.");
        }else{
          if(objarg.value >= arglen){
             alert(arglen + "보다 큰수는 입력될 수 없습니다.");
             objarg.value = arglen - 1;
           }
        }
    }

    /*******************************************************************
        설명 : 2003-10-29 로 되어 있는 "-" 를 제거하여 20031029 로 변환한다.
        작성자 : 김종민
    *******************************************************************/
    function OnReplaceDate(objarg){
        objarg.value = removeHipun(objarg.value)
    }

    /*******************************************************************
        설  명 : DATE 형식으로 돌려준다.
        작성자 : 김종민
        예  제 : OnFormatDate(this)
    *******************************************************************/
    function OnFormatDate(objarg){
        var now = new Date();
        var syear
        var smonth
        var sday
        var slen
        //alert();
        if(objarg.value.length >= 4){
            syear = (objarg.value).substr(0,4) + "-";
            if(objarg.value.length >= 6){
                if((objarg.value).substr(4,2) > 12){
                    smonth = "12-";
                }else{
                    smonth = (objarg.value).substr(4,2) + "-";
                }
            }else{
                smonth = now.getMonth() + "-";
            }
            if(objarg.value.length == 8){
                sday = (objarg.value).substr(6,2);
                if(sday > 31) sday = "31";
            }else{
                sday = now.getDay();
            }
            objarg.value = syear + smonth + sday;
        }
    }

    /*******************************************************************
        설  명 : 새창을 Modal형식으로 띄운다.
        파라메터 :
                fName - 파일경로
                objData - 전달하고자 하는 데이터 객체
                prop - 모달창의 속성 (예: "dialogWidth:990px;dialogHeight:600px; dialogLeft:200px;resizable:on")
        작성자 : 박한나
        예  제 : ModalOpen("Trouble_term_pop.asp", oData, "dialogWidth:990px;dialogHeight:600px; dialogLeft:200px;resizable:on");
    *******************************************************************/

    function ModalOpen(fName, objData, Prop){
        return window.showModalDialog(fName, objData, Prop);
    }

    /*******************************************************************
        설  명 : 새창을 띄운다.
        파라메터 :
                fName - 파일경로
                objData - 전달하고자 하는 데이터 객체
                prop - 모달창의 속성 (예: "width=990;height:600")
        작성자 : 박한나
        예  제 : WindowOpen("Trouble_term_pop.asp", oData, "width=990;height:600");
    *******************************************************************/
    function WindowOpen(fName, objData, Prop){
        return window.open(fName, objData, Prop);
    }

    /*******************************************************************
        설  명 : 키입력 시 날짜형식 자동 완성
        파라메터 :
                obj - 전달하고자 하는 데이터 객체
        작성자 : 박한나
        예  제 : onkeydown="makeDate(this)"
    *******************************************************************/
    function makeDate(obj){
        var keyCode = event.keyCode
        Str = obj.value
        if ((keyCode!=8) && (Str.length==4 || Str.length==7)) Str += "-";
            obj.value = Str

    }

    /*******************************************************************
        설  명 : 유효 주민등록번호 체크
        파라메터 :
                arg1 - 앞자리 6
                arg2 - 뒷자리 7
        작성자 : 엄광용
    *******************************************************************/
    function isCheckSSN(arg1, arg2) {
        var num = 2;
        var sum = 0;

        for(var i = 0; i < arg1.length; i++)
            sum += parseInt(arg1.substr(i, 1)) * num++;

        for (var j = 0; j < arg2.length - 1; j++) {
            sum += parseInt(arg2.substr(j, 1)) * num++;
            if (num == 10) num = 2;
        }

        var count = 11 - sum % 11;
        if (count == 11) count = 1;
        if (count == 10) count = 0;
        if (count != parseInt(arg2.substr(6, 1))) return false;
        else return true;
    }

    /*******************************************************************
        설  명 : 유효 외국인등록번호 체크
        파라메터 :
                arg - 외국인 등록번호
        작성자 : 엄광용
    *******************************************************************/
    function isCheckFgnNo(arg) {
        var sum = 0;
        var odd = 0;

        buf = new Array(13);
        for (i = 0; i < 13; i++) buf[i] = parseInt(arg.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;
        }
    }

    /*******************************************************************
        설  명 : 우편번호 찾기 팝업 공통적용
        파라메터 :
                arg1 - 리턴 파라미터 1
                arg2 - 리턴 파라미터 2
                arg3 - 리턴 파라미터 3
        작성자 : 엄광용
    *******************************************************************/

    function searchAddr(arg1, arg2, arg3) {
        var Url = "/popup/popup_member_02.asp?arg1=" + arg1 + "&arg2=" + arg2 + "&arg3=" + arg3;
        WindowOpen(Url,'search_zipcode','left=0 top=0 width=520 height=420, menubar=no, scrollbars=yes, resizable=no');
    }