﻿/*function List ******** 2009.05.18 ********** 
    ***  왠만한 함수들은 다 여기 나열되어 있습니다. 
        꼭 필요한 함수는 생성을 하시고 (되도록이면 함수명만 봐도 무슨 역할을 하는지 알게끔 생성)
        주석되어 있는 이 부분에 
        상단 함수명 부분만 복사하셔서 관리 하도록 합시다. (찾기 버튼으로 찾기 용이함)***
        
//날짜함수 관련
function getCurrentDate(dateFormat)  포맷에 따라 현재일자 반환
function getCurrentDateFormat(strYear, strMonth, strDay, dateFormat)  주어진 일자, 포맷에 따라 일자 반환
function getCurrentAddDate(strDate, strInterval, iAdd) 주어진 일자에서 해당 포맷에 따른 기간 연산
function getTimeFormat(strTime, timeFormat) { 주어진 시간을 12:39 형태로 반환
function getNowDate(spt) { 서버시간을 가져온다
function getNowDateTime(spt) {
function getLunarDate(sDate, spt) {
function getSolarDate(sDate, bYundal, spt) {
function getDateAddDay(YYYYMMDD, addDay) {
function getDateAddMonth(YYYYMMDD, addMonth) {
function getDateAddYear(YYYYMMDD, AddYear) {
function getDateAdd(YYYYMMDD, addYY, addMM, addDD) {
function getDateDiff(sTday, eNday) {
function getDateDiffMonth(sDate, fDate) 
function MonthName(mm) {
function Lastday(yymm) {

//컨트롤 관련
function getMaxLengthForDateFormat(dateFormat) {
function getRegExpSpecialChar(spChar) {
function getRemoveFirstZeroNumber(interger) {
function replaceComma(integer) {
function replaceFormat(src, cFormat) {
function setCommaByInterger(interger) {
function checkDateFormat(src, format) {

//interger 포맷적용
function keypress_only_integer(Ev) {
function valuechange_only_integer(srcObj, isComma) {

//float 포맷적용   
function keypress_only_float(Ev) {
function valuechange_only_float(srcObj, isComma) {

code 포맷적용   
function keypress_only_code(Ev) {
function valuechange_only_code(srcObj) {

date 포맷적용
function valuechange_only_date(srcObj) {
function setMonthFormat(obj, type, currDate) {
function onfocus_only_date(srcObj) {

none,popup,kor keypressEvent  
function keypress_not_enter(Ev) { //enter를 막는다

function comboDataClear(cboName) {
function setComboDataBind(dt, combo) {
function setHtmlBindForGrid(groupName, grid, row) {

//Ajax 및 FrameWork 관련.
function serviceInvoke(groupSetObj, serviceId, Key, asyncFn) {
function GetGroupSet(groupName) {
function groupSetAdd(paramSet, groupName, key, value) {
function clearDataGroupSet(groupName) {
function vailidationForGroupSet(groupSet, offset) {
function processingForResult(rObj) {
function showModalMessage(msg, popGubun) {
function getVersion() {
function strPageLocation() {
var RequestQueryString = new Array();

//GInfo , Session , Cookie
function GInfo(_SessionID) {
function GetCookie(name) {
function sessionDestroy() {
function SetCookie(name, value) {


//팝업 관련
function ShowModalDialogWindow(url, args, dialogWidth, dialogHeight, center, dialogHide, edge, help, resizable, scroll, status, unadorned) {
function OpenWin(url, name, width, height) {
function OpenWindow(url, name, width, height, status, toolbar, titlebar, menubar, location, resizable, scrollbars) {
function modalPopupCall(gbn, para) {   //프로그램 또는 공통으로 팝업 설정

//image upload처리
function imageUploader(imgObj) {
function personimageUploader(imgObj) {

//기타 
function setNumberFormat() {    //숫자만 입력 가능하게
function chk_residentno(resident_obj) {   주민번호 체크 ( 그리드 외 컨트롤)
function chk_grid_residentno(grd, row, key) {   주민번호 체크 ( 그리드 )
function Lpad(src, len, padStr){
function Rpad(src, len, padStr) {
function EnterKeySearch() {         //엔터시 조회
function Call_PopEmpno() {          //사원팝업을 공통으로 관리
function Call_Diff_Empnm() {        // 동명이인 처리 함수
Call_Diff_Empnm_ByGrid(grid, row, empnm_key, empno_key, gbn)  // 동명이인 처리 함수 그리드용

  function List ******** END ***********/
 
var __FormObj = document.getElementsByTagName('form').item(0);
/****************************************************************************
*                                                                           *
*                              현재일자 반환관련                            *
*                                                                           *
****************************************************************************/
function getCurrentDate(dateFormat) {
    var toDate = new Date();
    var retDate = toDate.getYear() + '-' + set2format(toDate.getMonth() + 1);

    switch (dateFormat.toUpperCase()) {
        case "YYYY":
            return toDate.getYear();
        case "YYYYMM":
            return retDate;
        case "YYYYMMDD":
            return retDate + '-' + set2format(toDate.getDate());
        default:
            return '';
    }
}

function set2format(iNum) {
    return (iNum < 10) ? '0' + iNum : iNum;
}

function getCurrentDateFormat(strYear, strMonth, strDay, dateFormat) {
    var retDate = strYear + '-' + set2format(strMonth);

    switch (dateFormat.toUpperCase()) {
        case "YYYYMMDD":
            return retDate + '-' + set2format(strDay);
        case "YYYYMM":
            return retDate;
        default:
            return '';
    }
}

function getCurrentAddDate(strDate, strInterval, iAdd) {
    // strDate      : 기준일자 'yyyy-mm-dd' 형식 필수
    // strInterval  : y - year / m - Month / d - day
    // iAdd         : 차감일수
    var iYear = strDate.substr(0, 4);
    var iMonth = strDate.substr(5, 2);
    var iDay = strDate.substr(8, 2);
    var retDate;
    var toDate;
    
    switch (strInterval.toUpperCase()) {
        case "Y":
            iYear = iYear * 1 + (iAdd * 1);
            toDate = new Date(iYear, iMonth, iDay, "", "", "");
            break;
        case "M":
            iMonth = iMonth * 1 + ((iAdd * 1)) + iAdd;
            toDate = new Date(iYear, iMonth, iDay, "", "", "");
            break;
        case "D":
            iDay = iDay * 1 + (iAdd * 1);
            toDate = new Date(iYear, (iMonth-1), iDay, "", "", "");
            break;
    }

    //var toDate = new Date(iYear, iMonth, iDay, "", "", "");
    retDate = getCurrentDateFormat(toDate.getYear(), toDate.getMonth()+1, toDate.getDate(), 'YYYYMMDD');

    return retDate;
}




function getCurrentAddDateNormal(strDate, strInterval, iAdd) {
    // strDate      : 기준일자 'yyyymmdd' 형식 필수
    // strInterval  : y - year / m - Month / d - day
    // iAdd         : 차감일수
    var iYear = strDate.substr(0, 4);
    var iMonth = strDate.substr(4, 2);
    var iDay = strDate.substr(6, 2);
    var retDate;

    var toDate;

    switch (strInterval.toUpperCase()) {
        case "Y":
            iYear = iYear * 1 + (iAdd * 1);
            toDate = new Date(iYear, iMonth, iDay, "", "", "");
            break;
        case "M":
            iMonth = iMonth * 1 + ((iAdd * 1)) + iAdd;
            toDate = new Date(iYear, iMonth, iDay, "", "", "");
            break;
        case "D":
            iDay = iDay * 1 + (iAdd * 1);
            toDate = new Date(iYear, (iMonth - 1), iDay, "", "", "");
            break;
    }

    //var toDate = new Date(iYear, iMonth, iDay, "", "", "");
    retDate = getCurrentDateFormatNormal(toDate.getYear(), toDate.getMonth() + 1, toDate.getDate(), 'YYYYMMDD');

    return retDate;
}



function getCurrentDateFormatNormal(strYear, strMonth, strDay, dateFormat) {
    var retDate = strYear + set2format(strMonth);

    switch (dateFormat.toUpperCase()) {
        case "YYYYMMDD":
            return retDate + set2format(strDay);
        case "YYYYMM":
            return retDate;
        default:
            return '';
    }
}


function getTimeFormat(strTime, timeFormat) {
    if (strTime.length == 4 || strTime.length == 5) {
        var retTime = chkTimeFormat(strTime.replace(':', '').substr(0, 4));
        if (strTime.length == 4) retTime = chkTimeFormat(strTime.substr(0, 4));
        if (retTime != "") {
            switch (timeFormat.toUpperCase()) {

                case "24H":
                    retTime = retTime.substr(0, 2) + ':' + retTime.substr(2, 2);
                    break;
                default:
                    retTime = '';
                    break;
            }
        }
    }

    return retTime;
}

function chkTimeFormat(strTime) {
    return strTime.substr(0, 2) > 24 ? "" : (strTime.substr(3, 2) > 60 ? "" : strTime) ;
}


/*날짜함수*/

//서버시간을 가져온다
function getNowDate(spt) {
    rObj = HHASAjaxServices.GetNowDate();
    oDate = rObj.value;
    cYear = oDate.substr(0, 4); // 계산된 년도 할당
    cMonth = oDate.substr(4, 2); // 계산된 월 할당
    cDay = oDate.substr(6, 2); // 계산된 일자 할당
    return cYear + (spt == null ? '' : spt) + (cMonth.length == 1 ? '0' : '') + cMonth + (spt == null ? '' : spt) + (cDay.length == 1 ? '0' : '') + cDay;
}

//*******************************************************************************************/
//							날짜 계산 관련 함수
//*******************************************************************************************/

// alert( getDateAddDay('20050101', -18) );
function getDateAddDay(YYYYMMDD, addDay) {
    return getDateAdd(YYYYMMDD, 0, 0, addDay);
}

function getDateAddMonth(YYYYMMDD, addMonth) {
    return getDateAdd(YYYYMMDD, 0, addMonth, 0);
}

function getDateAddYear(YYYYMMDD, AddYear) {
    return getDateAdd(YYYYMMDD, AddYear, 0, 0);
}

function getDateAdd(YYYYMMDD, addYY, addMM, addDD) {
    YYYYMMDD = YYYYMMDD.trim().replace(/-/g, '');

    if (YYYYMMDD.length == 0)
        return '';

    var yyyy = Number(YYYYMMDD.substr(0, 4)) + Number(addYY);
    var mm = Number(YYYYMMDD.substr(4, 2)) - 1 + Number(addMM);
    var dd = Number(YYYYMMDD.substr(6, 2)) + Number(addDD);

    oDate = new Date(yyyy, mm, dd);

    cYear = String(oDate.getFullYear()); // 계산된 년도 할당
    cMonth = String(oDate.getMonth() + 1); // 계산된 월 할당
    cDay = String(oDate.getDate()); // 계산된 일자 할당

    return cYear + (cMonth.length == 1 ? '0' : '') + cMonth + (cDay.length == 1 ? '0' : '') + cDay;
}

// 날짜 빼기 (sTday - eNday) : 날짜입력 형식은 (20061212)
function getDateDiff(sTday, eNday) {
    var sTyear = sTday.substr(0, 4);
    var sTmonth = sTday.substr(4, 2);
    var sTday = sTday.substr(6, 2);
    var eNyear = eNday.substr(0, 4);
    var eNmonth = eNday.substr(4, 2);
    var eNday = eNday.substr(6, 2);

    var sTall = new Date(sTyear, sTmonth - 1, sTday);
    var eNall = new Date(eNyear, eNmonth - 1, eNday);

    return (sTall.getTime() - eNall.getTime()) / (24 * 60 * 60 * 1000);
}

function getDateDiffMonth(sDate, fDate) //날짜입력 형식은 (20061212)
{
    c = Math.floor(getDateDiff(fDate, sDate) / 30);

    return String(c);
}
function MonthName(mm) {
    var monname;
    switch (Number(mm)) {
        case 1: monname = 'January'; break;
        case 2: monname = 'February'; break;
        case 3: monname = 'March'; break;
        case 4: monname = 'April'; break;
        case 5: monname = 'May'; break;
        case 6: monname = 'June'; break;
        case 7: monname = 'July'; break;
        case 8: monname = 'August'; break;
        case 9: monname = 'September'; break;
        case 10: monname = 'October'; break;
        case 11: monname = 'November'; break;
        case 12: monname = 'December'; break;
    }
    return monname;
}
function Lastday(yymm) {
    var yyyy = Number(yymm.substr(0, 4));
    var mm = Number(yymm.substr(4, 2));
    oDate = new Date(yyyy, mm, 0);

    return oDate.getDate();
}

function getDateByFormat(oDate, spt) {
    rDate = oDate.replace(/-/g, '');
    if (rDate.length == 8) {
        cYear = rDate.substr(0, 4);
        cMonth = rDate.substr(4, 2);
        cDay = rDate.substr(6, 2);
        return cYear + (spt == null ? '' : spt) + (cMonth.length == 1 ? '0' : '') + cMonth + (spt == null ? '' : spt) + (cDay.length == 1 ? '0' : '') + cDay;
    }
    else {
        return '';
    }
}


/****************************************************************************
*                                                                           *
*                              컨트롤 포맷관련                              *
*                                                                           *
****************************************************************************/
function getMaxLengthForDateFormat(dateFormat) {
    switch (dateFormat) {
        case "yyyymmdd24himiss":
            return 14;
        case "yyyymmdd24himi":
            return 12;
        case "yyyymmdd":
            return 8;
        case "yyyymm":
            return 6;
        case "yymm":
            return 4;
        case "mmdd":
            return 4;
         case "yyyy":
            return 4;
        default:
            return 8;
    }
}
function getRegExpSpecialChar(spChar) {
    switch (spChar) {
        case "$":
            return "\$.";
        case "(":
            return "\(";
        case ")":
            return "\).";
        case "*":
            return "\*.";
        case "+":
            return "\+.";
        case ".":
            return "\.";
        case "[":
            return "\[";
        case "]":
            return "\].";
        case "?":
            return "\?.";
        case "/":
            return "\/";
        case "^":
            return "\^.";
        case "{":
            return "\{";
        case "}":
            return "\}.";
        case "|":
            return "\|.";
        default:
            return spChar;
    }
}
function getRemoveFirstZeroNumber(interger) {
    ///<summary>앞자리가 0 인넘을 제거</summary>
    ///<param name="interger"></param>
    ///<returns></returns>
    //    var Re = /[^0]/g;
    //    var str = interger.match(Re);
    //    if (str != null) {
    //        return interger.substr(interger.indexOf(str[0]), interger.length);
    //    }
    //    else {
    //        return interger;
    //    }
    return fn_removeZeroByVal(interger);
}
function fn_removeZeroByVal(sVal) {
    if (sVal == null) {
        return "";
    }

    var sStr = sVal + "";
    var flag = false;

    var ii = 0;

    while (!flag) {
        var ch = sStr.charAt(ii);
        if ((ch == '0')) {
            if (ii < sStr.length) ii++;
            else flag = true;
        } else
            flag = true;
    }

    if (ii == (sStr.length))
        return "0";
    else
        sStr = sStr.substring(ii);
    return sStr;

}
function replaceComma(integer) {
    ///<summary>콤마 제거</summary>
    ///<param name="integer"></param>
    ///<returns></returns>
    return integer.replace(/,/g, '');
}
function replaceFormat(src, cFormat) {
    ///<summary></summary>
    ///<param name="src"></param>
    ///<param name="cFormat"></param>
    ///<returns></returns>
    return src.replace(eval("/" + getRegExpSpecialChar(cFormat) + "/g"), '');
}
function setCommaByInterger(interger) {
    ///<summary>천단위 comma를 찍어준다</summary>
    ///<param name="interger"></param>
    ///<returns></returns>
    var str = interger;
    var Re = /[^0-9]/g;
    var ReN = /(-?[0-9]+)([0-9]{3})/;
    //alert(str);
    str = str.replace(Re, '');
    while (ReN.test(str)) {
        str = str.replace(ReN, "$1,$2");
    }
    return str;
}
function checkDateFormat(src, format) {
    if (src != "") {
        var dateSrc = Number(src);
        switch (format) {
            case "yyyy":
                if (yyyyStartRange <= dateSrc && dateSrc <= yyyyEndRange) {
                    return true;
                }
                else {
                    alert("년도는 " + yyyyStartRange + " ~ " + yyyyEndRange + " 입니다!!");
                    return false;
                }
                break;
            case "mm":
                if (1 <= dateSrc && dateSrc <= 12) {
                    return true;
                }
                else {
                    alert("월의 범위가 잘못 되었습니다");
                    return false;
                }
                break;
            case "dd":
                if (1 <= dateSrc && dateSrc <= 31) {
                    return true;
                }
                else {
                    alert("일의 범위가 잘못 되었습니다");
                    return false;
                }
                break;
            case "hi":
                if (0 <= dateSrc && dateSrc <= 23) {
                    return true;
                }
                else {
                    alert("시간의 범위[00 ~ 23]가 잘못 되었습니다");
                    return false;
                }
                break;
            case "mi":
                if (0 <= dateSrc && dateSrc <= 59) {
                    return true;
                }
                else {
                    alert("분의 범위[00 ~ 59]가 잘못 되었습니다");
                    return false;
                }
                break;
            case "ss":
                if (0 <= dateSrc && dateSrc <= 59) {
                    return true;
                }
                else {
                    alert("초의 범위[00 ~ 59]가 잘못 되었습니다");
                    return false;
                }
                break;
            default:
                return false;
                break;
        }
    }
    else {
        return true;
    }
}
function getDatePart(srcObj) {
    var yyyy = "", yy = "", mm = "", dd = "", hi = "", mi = "", ss = "";
    var dateArr = new Array(yyyy, yy, mm, dd, hi, mi, ss);
    var dateSrc = replaceFormat(srcObj.value, srcObj.datedash);
    switch (srcObj.userformat) {
        case "yyyymmdd":
            dateArr[0] = dateSrc.substr(0, 4);
            dateArr[2] = dateSrc.substr(4, 2);
            dateArr[3] = dateSrc.substr(6, 2);
            break;
        case "yyyymmdd24himiss":
            dateSrc = replaceFormat(srcObj.value, "-");
            dateSrc = replaceFormat(dateSrc, " ");
            dateSrc = replaceFormat(dateSrc, ":");
            dateArr[0] = dateSrc.substr(0, 4);
            dateArr[2] = dateSrc.substr(4, 2);
            dateArr[3] = dateSrc.substr(6, 2);
            dateArr[4] = dateSrc.substr(8, 2);
            dateArr[5] = dateSrc.substr(10, 2);
            dateArr[6] = dateSrc.substr(12, 2);
            break;
        case "yyyymmdd24himi":
            dateSrc = replaceFormat(srcObj.value, "-");
            dateSrc = replaceFormat(dateSrc, " ");
            dateSrc = replaceFormat(dateSrc, ":");
            dateArr[0] = dateSrc.substr(0, 4);
            dateArr[2] = dateSrc.substr(4, 2);
            dateArr[3] = dateSrc.substr(6, 2);
            dateArr[4] = dateSrc.substr(8, 2);
            dateArr[5] = dateSrc.substr(10, 2);
            break;
        case "yyyymm":
            dateArr[0] = dateSrc.substr(0, 4);
            dateArr[2] = dateSrc.substr(4, 2);
            break;
        case "yymm":
            dateArr[1] = dateSrc.substr(0, 2);
            dateArr[2] = dateSrc.substr(2, 2);
            break;
        case "mmdd":
            dateArr[2] = dateSrc.substr(0, 2);
            dateArr[3] = dateSrc.substr(2, 2);
            break;
        case "yyyy":
            dateArr[0] = dateSrc.substr(0, 4);
            break;
    }
    return dateArr;
}
/***************************************************************************
*                                                                         *
*                          interger 포맷적용                              *
*                                                                         *
***************************************************************************/
function keypress_only_integer(Ev) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var evCode = (window.netscape) ? Ev.which : event.keyCode;
    /* FF일 경우 Ev.which 값을, 
    IE을 경우 event.keyCode 값을 evCode에 대입 */
    if (!(evCode == 0 || evCode == 8 || (47 < evCode && evCode < 58))) {
        /* 눌러진 키 코드가 숫자가 아닌 경우 
        ( '0'은 FF에서 Tab 키, 
        '8'은 FF에서 BackSpace가 먹히지 않아 삽입)    */
        if (window.netscape) {        // FF일 경우 
            Ev.preventDefault();        // 이벤트 무효화 
        } else {                                // IE일 경우 
            event.returnValue = false;    // 이벤트 무효화 
        }
    }
}
function valuechange_only_integer(srcObj, isComma) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var codePattern = /^[+-]?[\d,]*$/;
    codePattern = srcObj.value.match(codePattern);
    if (codePattern == null) {
        alert("숫자만 입력가능합니다!");
        srcObj.value = "";
        srcObj.focus();
    }
    else {
        var intvar = replaceComma(codePattern[0]);
        if (intvar.length > 0) {
            //실제 1이상으로 시작하는 정수부분만 가져온다
            intvar = getRemoveFirstZeroNumber(intvar);
            //comma 적용
            if (isComma) {
                srcObj.value = setCommaByInterger(intvar);
            }
            else {
                srcObj.value = intvar;
            }
        }
    }
}

function value_only_integer(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    srcObj.value = srcObj.value.replace(/[^0-9]/g,'');
}
/***************************************************************************
*                                                                         *
*                              float 포맷적용                             *
*                                                                         *
***************************************************************************/
function keypress_only_float(Ev) {
    ///<summary>only float(.<== 허용)</summary>
    ///<param name=""></param>
    ///<returns></returns>
    var evCode = (window.netscape) ? Ev.which : event.keyCode;
    /* FF일 경우 Ev.which 값을, 
    IE을 경우 event.keyCode 값을 evCode에 대입 */
    if (!(evCode == 0 || evCode == 8 || evCode == 46 || (47 < evCode && evCode < 58))) {
        /* 눌러진 키 코드가 숫자가 아닌 경우 
        ( '0'은 FF에서 Tab 키, 
        '8'은 FF에서 BackSpace가 먹히지 않아 삽입)    */
        if (window.netscape) {        // FF일 경우 
            Ev.preventDefault();        // 이벤트 무효화 
        } else {                                // IE일 경우 
            event.returnValue = false;    // 이벤트 무효화 
        }
    }
}
function valuechange_only_float(srcObj, isComma) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var codePattern = /^[+-]?[\d,]*(\.?\d*)$/;
    codePattern = srcObj.value.match(codePattern);
    if (codePattern == null) {
        alert("float 형식이 잘못되었습니다!");
        srcObj.value = "";
        srcObj.focus();
    }
    else {
        //소숫점 부분 제거
        var intvar = codePattern[0].replace(codePattern[1], '');
        //콤마제거
        intvar = replaceComma(intvar);
        if (intvar.length > 0) {
            //실제 1이상으로 시작하는 정수부분만 가져온다
            intvar = getRemoveFirstZeroNumber(intvar);
            if (isComma) {
                srcObj.value = setCommaByInterger(intvar) + codePattern[1];
            }
            else {
                srcObj.value = intvar + codePattern[1];
            }
        }
    }
}
/***************************************************************************
*                                                                         *
*                              code 포맷적용                              *
*                                                                         *
***************************************************************************/
function keypress_only_code(Ev) {
    ///<summary>only code</summary>
    ///<param name=""></param>
    ///<returns></returns>
    var evCode = (window.netscape) ? Ev.which : event.keyCode;
    /* FF일 경우 Ev.which 값을, 
    IE을 경우 event.keyCode 값을 evCode에 대입 */
    if (!(evCode == 0 || evCode == 8 || (47 < evCode && evCode < 58) || (96 < evCode && evCode < 123) || (64 < evCode && evCode < 91))) { // 
        /* 눌러진 키 코드가 숫자가 아닌 경우 
        ( '0'은 FF에서 Tab 키, 
        '8'은 FF에서 BackSpace가 먹히지 않아 삽입)    */
        if (window.netscape) {        // FF일 경우 
            Ev.preventDefault();        // 이벤트 무효화 
        } else {                                // IE일 경우 
            event.returnValue = false;    // 이벤트 무효화 
        }
    }
}
function valuechange_only_code(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var codePattern = /([^A-Za-z0-9])/;
    codePattern = srcObj.value.match(codePattern);
    if (codePattern != null) {
        alert("CODE 형식이 잘못되었습니다[영문,숫자]만 허용!");
        srcObj.value = "";
        srcObj.focus();
    }
    else {
        srcObj.value = srcObj.value.toUpperCase();
    }
}
function value_only_code(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    srcObj.value = srcObj.value.replace(/[^A-Za-z0-9-]/g,'').toUpperCase();
}

function value_only_eng(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    srcObj.value = srcObj.value.replace(/[^A-Za-z0-9-|.]/g,'');
}


/***************************************************************************
*                                                                         *
*                              숫자, '-' 포맷적용                         *
*                                                                         *
***************************************************************************/
function valuechange_only_num_bar(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var codePattern = /([^0-9|-])/;
    codePattern = srcObj.value.match(codePattern);
    if (codePattern != null) {
        alert("형식이 잘못되었습니다[숫자, '-'] 허용!");
        srcObj.value = "";
        srcObj.focus();
    }
    else {
        srcObj.value = srcObj.value.toUpperCase();
    }
}
function value_only_num_bar(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    srcObj.value = srcObj.value.replace(/[^0-9|-]/g,'');
}
function valuechange_only_num_bar_slush(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var codePattern = /([^0-9/|-])/;
    codePattern = srcObj.value.match(codePattern);
    if (codePattern != null) {
        alert("형식이 잘못되었습니다[숫자, '-', '/'] 허용!");
        srcObj.value = "";
        srcObj.focus();
    }
    else {
        srcObj.value = srcObj.value.toUpperCase();
    }
}

function value_only_num_bar_slush(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    srcObj.value = srcObj.value.replace(/[^0-9/|-]/g,'');
}

//eMail
function value_only_email(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    srcObj.value = srcObj.value.replace(/[^A-Za-z0-9-|@|.]/g,'');
}

/***************************************************************************
*                                                                         *
*                              date 포맷적용                              *
*                                                                         *
***************************************************************************/
/*날짜전역 설정변수*/
var yyyyStartRange = 1901;
var yyyyEndRange = 2100;


function valuechange_only_date(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    if (srcObj.value != "") {
        var dashFormat = srcObj.datedash;
        var dateSrc;
        if (srcObj.userformat == "yyyymmdd24himi") {
            dateSrc = replaceFormat(srcObj.value, "-");
            dateSrc = replaceFormat(dateSrc, " ");
            dateSrc = replaceFormat(dateSrc, ":");
        }
        else if (srcObj.userformat == "yyyymmdd24himiss") {
            dateSrc = replaceFormat(srcObj.value, "-");
            dateSrc = replaceFormat(dateSrc, " ");
            dateSrc = replaceFormat(dateSrc, ":");
        }
        else {
            dateSrc = replaceFormat(srcObj.value, dashFormat);
        }
        var codePattern = /([^0-9])/;
        codePattern = dateSrc.match(codePattern);
        if (codePattern != null) {
            alert("날짜형식만 입력가능합니다!");
            srcObj.value = "";
            srcObj.focus();
        }
        else {
            var maxlength = getMaxLengthForDateFormat(srcObj.userformat);

            var dateArr = getDatePart(srcObj);

            if (maxlength == dateSrc.length) {
                if (!checkDateFormat(dateArr[0], "yyyy")) {
                    //srcObj.value = "";
                    srcObj.focus();
                    return;
                }
                if (!checkDateFormat(dateArr[2], "mm")) {
                    //srcObj.value = "";
                    srcObj.focus();
                    return;
                }
                if (!checkDateFormat(dateArr[3], "dd")) {
                    //srcObj.value = "";
                    srcObj.focus();
                    return;
                }
                if (!checkDateFormat(dateArr[4], "hi")) {
                    srcObj.focus();
                    return;
                }
                if (!checkDateFormat(dateArr[5], "mi")) {
                    //srcObj.value = "";
                    srcObj.focus();
                    return;
                }
                if (!checkDateFormat(dateArr[6], "ss")) {
                    //srcObj.value = "";
                    srcObj.focus();
                    return;
                }
                switch (srcObj.userformat) {
                    case "yyyymmdd24himiss":
                        //alert(dateArr[0] + dashFormat + dateArr[2] + dashFormat + dateArr[3] + " " + dateArr[4] + ":" +dateArr[5] + ":" +dateArr[6]);
                        srcObj.value = dateArr[0] + dashFormat + dateArr[2] + dashFormat + dateArr[3] + " " + dateArr[4] + ":" + dateArr[5] + ":" + dateArr[6];
                        break;
                    case "yyyymmdd24himi":
                        srcObj.value = dateArr[0] + dashFormat + dateArr[2] + dashFormat + dateArr[3] + " " + dateArr[4] + ":" + dateArr[5];
                        break;
                    case "yyyymmdd":
                        //기간 체크하는 소스를 common.js로 옮김...(버튼 클릭시 validation 체크를 한다)
                        srcObj.value = dateArr[0] + dashFormat + dateArr[2] + dashFormat + dateArr[3];
                        break;
                    case "yyyymm":
                        srcObj.value = dateArr[0] + dashFormat + dateArr[2];
                        break;
                    case "yymm":
                        srcObj.value = dateArr[1] + dashFormat + dateArr[2];
                        break
                    case "mmdd":
                        srcObj.value = dateArr[2] + dashFormat + dateArr[3];
                        break;
                    case "yyyy":
                        srcObj.value = dateArr[0];
                        break;
                }

            }
            else {
                alert("입력된 값[" + dateSrc + "]이 지정된 형식[" + srcObj.userformat + "]과 일치하지 않습니다!!");
                //srcObj.value = "";
                srcObj.focus();
            }
        }
    }
}
function setMonthFormat(obj, type, currDate) {
    var dashFormat = obj.datedash;
    if (obj.value == "") {
        obj.value = currDate.substr(0, 4) + dashFormat + currDate.substr(4, 2);
    }
    else {
        var dateSrc = replaceFormat(obj.value, dashFormat);

        var dateObj = new Date(Math.abs(dateSrc.substr(0, 4)), (Math.abs(dateSrc.substr(4, 2)) == 12 ? 11 : Math.abs(dateSrc.substr(4, 2)) - 1), 1);
        //감소
        if (type == 1) {
            dateObj.setMonth(dateObj.getMonth() - 1);
        }
        //증가
        else if (type == 2) {
            dateObj.setMonth(dateObj.getMonth() + 1);
        }
        obj.value = dateObj.getFullYear() + dashFormat +
                    (dateObj.getMonth() < 9 ? "0" : "") + (dateObj.getMonth() + 1);
        var r = obj.createTextRange();
        for (i = 1; i <= 12; i++) {
            if (r.findText("-" + (i < 10 ? "0" : "") + i)) {
                obj.focus();
                r.select();
            }
        }
    }
}

function setYearMonthFormat(obj, type, currDate, dateformat) {
    var dashFormat = obj.datedash;
    if (dateformat == 'yyyymm') {
        if (obj.value == "") {
            obj.value = currDate.substr(0, 4) + dashFormat + currDate.substr(4, 2);
        }
        else {
            var dateSrc = replaceFormat(obj.value, dashFormat);

            var dateObj = new Date(Math.abs(dateSrc.substr(0, 4)), (Math.abs(dateSrc.substr(4, 2)) == 12 ? 11 : Math.abs(dateSrc.substr(4, 2)) - 1), 1);
            //감소
            if (type == 1) {
                dateObj.setMonth(dateObj.getMonth() - 1);
            }
            //증가
            else if (type == 2) {
                dateObj.setMonth(dateObj.getMonth() + 1);
            }
            obj.value = dateObj.getFullYear() + dashFormat +
                    (dateObj.getMonth() < 9 ? "0" : "") + (dateObj.getMonth() + 1);
            var r = obj.createTextRange();
            for (i = 1; i <= 12; i++) {
                if (r.findText("-" + (i < 10 ? "0" : "") + i)) {
                    obj.focus();
                    r.select();
                }
            }
        }
    }
    else if (dateformat == 'yyyy') {
        if (obj.value == "" || obj.value.length != 4) {
            obj.value = currDate.substr(0, 4);
        }
        else {
            //감소
            if (type == 1) {
                obj.value = parseInt(obj.value) - 1;
            }
            //증가
            else if (type == 2) {
                obj.value = parseInt(obj.value) + 1;
            }
        }
    }
    else if (dateformat == 'mm') {
        if (obj.value == "" || obj.value.length != 2) {
            obj.value = currDate.substr(4, 2);
        }
        else {
            var mm;
            //감소
            if (type == 1) {
                mm = (parseInt(obj.value) == 1 ? 12 : parseInt(obj.value) - 1);
            }
            //증가
            else if (type == 2) {
                mm = (parseInt(obj.value) == 12 ? 1 : parseInt(obj.value) + 1);
            }
            obj.value = (mm < 10 ? "0" : "") + mm;
        }
    }
}

//textbox focus시 포맷을 없앤다...
function onfocus_only_date(srcObj) {
    var dateSrc = replaceFormat(srcObj.value, srcObj.dashFormat);
    dateSrc = replaceFormat(dateSrc, "-");
    dateSrc = replaceFormat(dateSrc, " ");
    dateSrc = replaceFormat(dateSrc, ":");
    srcObj.value = dateSrc;
}


/***************************************************************************
*                                                                         *
*                              popup 포맷적용                              *
*                                                                         *
***************************************************************************/
function valuechange_only_popup(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    if (srcObj.value == '')
        srcObj.popupvalue = '';
}
/***************************************************************************
*                                                                         *
*                              none 포맷적용                              *
*                                                                         *
***************************************************************************/
function valuechange_default(srcObj) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    if (srcObj.chartype == "UPPER")
        srcObj.value = srcObj.value.toUpperCase();
    else if (srcObj.chartype == "LOWER")
        srcObj.value = srcObj.value.toLowerCase();
}
/***************************************************************************
*                                                                         *
*                      none,popup,kor keypressEvent                       *
*                                                                         *
***************************************************************************/
function keypress_not_enter(Ev) {
    ///<summary></summary>
    ///<param name=""></param>
    ///<returns></returns>
    var evCode = (window.netscape) ? Ev.which : event.keyCode;
    //enter를 막는다
    if (evCode == 13) {
        if (window.netscape) {        // FF일 경우 
            Ev.preventDefault();        // 이벤트 무효화 
        } else {                                // IE일 경우 
            event.returnValue = false;    // 이벤트 무효화 
        }
    }
}
/***************************************************************************
*                                                                         *
*                     input/select deco 함수                              *
*                                                                         *
***************************************************************************/
var preFocusControl = "";
function selectToControlAppear(id, focusCss) {
    if (preFocusControl != "")
        document.getElementById(preFocusControl).className = document.getElementById(preFocusControl).originCss;
    if (id != "") {
        document.getElementById(id).className = focusCss;
        preFocusControl = id;
    }
}
function errorToControlAppear(id) {
    if (preFocusControl != "")
        document.getElementById(preFocusControl).className = document.getElementById(preFocusControl).originCss;

    //document.getElementById(id).style.backgroundColor = '#fcebe3';
    preFocusControl = id;
}



function comboDataClear(cboName) {
    if (cboName == null || cboName.options == undefined) {
        return;
    }

    while (cboName.options.length > 0) {
        cboName.options.remove(0);
    }

    cboName.selectedIndex = -1;
}
function setComboDataBind(dt, combo) {
    try {
        comboDataClear(combo);

        if (combo.bindoption == 'top') {
            var bindData = document.createElement("OPTION");

            combo.options.add(bindData, 0);

            bindData.innerText = combo.displaytext;
            bindData.value = '';
        }
        if (dt != undefined && dt != null) {
            for (i = 0; i < dt.Rows.length; i++) {
                var bindData = document.createElement("OPTION");

                combo.options.add(bindData);
                var text = dt.Rows[i][combo.textkey];
                var val = dt.Rows[i][combo.valuekey];

                if (combo.bindstyle != null && combo.bindstyle != '') {
                    var tempStyleValue = combo.bindstyle;
                    text = tempStyleValue.replace('{value}', val).replace('{text}', text);
                }
                bindData.innerText = text;
                bindData.value = val;
            }
        }
        if (combo.bindoption == 'bottom') {
            var oOption = document.createElement("OPTION");

            combo.options.add(oOption);

            oOption.innerText = combo.displaytext;
            oOption.value = '';
        }
        combo.selectedIndex = 0;
    }
    catch (e) {
        alert(e + ' [setComboData]');
    }
}

function setHtmlBindForGrid(groupName, grid, row) {
    for (var i = 0; i < UIObj.length - 1; i++) {
        var groupNameMapping = UIObj[i][0].split(';');
        for (var j = 0; j < groupName.length; j++) {
            for (var k = 0; k < groupNameMapping.length; k++) {
                try {
                    if (groupNameMapping[k] == groupName[j]) {
                        if (UIObj[i][2] == "noneGrid") {
                            var obj = document.getElementById(UIObj[i][3]);
                            var keyVal = "";

                            keyVal = "";
                            keyVal = grid.getTextByKey(row, UIObj[i][1]);


                            var radioValue = "";
                            var radioItemName = "";
                            if (obj.type == 'radio') {
                                var radioCtrl = document.getElementsByName(obj.name);
                                for (radioCnt = 0; radioCnt < radioCtrl.length; radioCnt++) {
                                    if (radioCtrl.item(radioCnt).value == keyVal)
                                        radioCtrl.item(radioCnt).checked = true;
                                    else
                                        radioCtrl.item(radioCnt).checked = false;
                                }
                            }
                            else if (obj.type == 'checkbox') {
                                if (keyVal == "1" || keyVal == "Y")
                                    obj.checked = true;
                                else
                                    obj.checked = false;
                            }
                            else if (obj.tagName == 'LABEL') {
                                obj.innerText = keyVal;
                            }
                            else {
                                obj.value = keyVal;
                            }
                        }
                    }
                }
                catch (e) { }
            }
        }
    }
}



/********************************************************************************************************************/
var gSeverResponseTime;

function serviceInvoke(groupSetObj, serviceId, Key, asyncFn) {
    var globalKeyName = "";
    if (Key != undefined && Key != null && Key != "")
        globalKeyName = Key;

    var now = new Date();
    var pid = RequestQueryString["orgPid"];
    if (pid == undefined || pid == null)
        pid = "";
    var rObj;
    if (asyncFn == undefined || asyncFn == null || asyncFn == "")
        rObj = EHOTEL_WebApp.ajaxSvcsHandler.serviceProxy(groupSetObj, serviceId, globalKeyName, pid);
    else
        rObj = EHOTEL_WebApp.ajaxSvcsHandler.serviceProxy(groupSetObj, serviceId, globalKeyName, pid, asyncFn);
    var sec = (new Date() - now) + "";
    if (sec.length < 4)
        gSeverResponseTime = "0." + sec + "초";
    else
        gSeverResponseTime = sec.substr(0, sec.length - 3) + "." + sec.substr(sec.length - 3, 3) + "초";
    return rObj;
}
/********************************************************************************************************************/
function GetGroupSet(groupName) {
    ///<summary> ui의 control 값 변환 </summary>
    ///<param name="groupName"> 이 변수는 컨트롤로 정의 된 변수의 집합Array. </param>    
    ///<returns> 그리드객체와 변수들을 합쳐 같이 넘긴다. </returns>

    var UIpara = new Array();

    for (var i = 0; i < UIObj.length - 1; i++) {
        var groupNameMapping = UIObj[i][0].split(';');
        for (var j = 0; j < groupName.length; j++) {
            for (var k = 0; k < groupNameMapping.length; k++) {
                if (groupNameMapping[k] == groupName[j]) {
                    var ctrlType = "";
                    if (UIObj[i][2] == "noneGrid") {
                        var obj = document.getElementById(UIObj[i][3]);

                        var radioValue = "";
                        var radioItemName = "";
                        if (obj.type == 'radio') {
                            ctrlType = 'radio';
                            var radioCtrl = document.getElementsByName(obj.name);
                            for (radioCnt = 0; radioCnt < radioCtrl.length; radioCnt++) {
                                if (radioCnt == 0)
                                    radioItemName = radioCtrl.item(radioCnt).itemname;

                                if (radioCtrl.item(radioCnt).checked) {
                                    radioValue = radioCtrl.item(radioCnt).value;
                                }
                            }
                        }

                        if (obj.tagName == 'LABEL') {
                            ctrlType = 'LABEL';
                            UIObj[i][4] = obj.innerText;
                        }
                        else {
                            //applyFormat.js에서 옮겨옴..
                            //날짜 type인 경우 기간을 지정한 경우 validation을 체크한다
                            if (obj.type == 'text' && obj.datatype == "DATE" && obj.userformat == "yyyymmdd") {
                                ctrlType = 'text';
                                if (obj.value != '' && obj.dateRangeType != '' && obj.dateOtherRangeID != '' && document.getElementById(obj.dateOtherRangeID).value != "") {
                                    var dateArr = getDatePart(obj);
                                    var dateRangeVal1 = parseInt(dateArr[0] + dateArr[2] + dateArr[3]);
                                    var dateRangeVal2 = parseInt(document.getElementById(obj.dateOtherRangeID).value.replace(/-/g, ''));
                                    var dateStartVal = (obj.dateRangeType == 'start' ? dateRangeVal1 : dateRangeVal2) + "";
                                    var dateEndVal = (obj.dateRangeType == 'start' ? dateRangeVal2 : dateRangeVal1) + "";
                                    var dateStartDateObj = new Date(parseInt(dateStartVal.substr(0, 4)), parseInt(dateStartVal.substr(4, 2)), parseInt(dateStartVal.substr(6, 2)));
                                    var dateEndDateObj = new Date(parseInt(dateEndVal.substr(0, 4)), parseInt(dateEndVal.substr(4, 2)), parseInt(dateEndVal.substr(6, 2)));
                                    if (dateStartVal > dateEndVal) {
                                        //obj.value = "";
                                        obj.focus();
                                        throw '기간[' + obj.itemname + ']의 범위가 잘못되었습니다!!';
                                    }
                                    else if (parseInt(obj.dateRangeMaxDays) > -1) {
                                        var diffDayCnt = 0;
                                        if (dateEndDateObj.getMonth() != dateStartDateObj.getMonth()) {
                                            for (addDays = 1; addDays <= dateEndDateObj.getMonth() - dateStartDateObj.getMonth(); addDays++) {
                                                var r = new Date(dateStartDateObj.getFullYear(), dateStartDateObj.getMonth() + addDays, 1);
                                                // 하루빼기
                                                r.setDate(r.getDate() - 1);
                                                diffDayCnt += (dateEndDateObj.getDate() + (r.getDate() - dateStartDateObj.getDate()));
                                            }
                                        }
                                        else {
                                            diffDayCnt = dateEndDateObj.getDate() - dateStartDateObj.getDate();
                                        }
                                        if (diffDayCnt > parseInt(obj.dateRangeMaxDays)) {
                                            //obj.value = "";
                                            obj.focus();
                                            throw '기간[' + obj.itemname + ']은(는) 최대범위는 ' + obj.dateRangeMaxDays + '일 입니다!!';
                                        }
                                    }
                                }
                            }
                            UIObj[i][4] = (obj.type == 'radio' ? radioValue : ConvertToValue(obj));
                        }
                        UIpara.push(new Array(groupNameMapping[k], UIObj[i][1], UIObj[i][2], UIObj[i][3], UIObj[i][4], ctrlType));
                    }
                    else if (UIObj[i][2] == "grid") {
                        ctrlType = 'grid';
                        //gridKey, gridcolCnt, rowsLength, gridClipdata,isDynamic,crosstabkey,rowFixKey,fixedKey;
                        var grid = igGrid_ScriptObj(UIObj[i][3]);
                        UIObj[i][4] = new Array(grid.KeyInfo,
                                                grid.MaxColsCnt,
                                                grid.esItemInfoObj.rowsLength,
                                                grid.getClipData(),
                                                grid.IsDynamicColumn,
                                                grid.crossTabKey,
                                                grid.rowFixKey,
                                                grid.dynamicFixKey);
                        UIpara.push(new Array(groupNameMapping[k], UIObj[i][1], UIObj[i][2], UIObj[i][3], UIObj[i][4], ctrlType));
                    }
                    else if (UIObj[i][2] == "UcFileUpDownX") {
                        ctrlType = 'UcFileUpDownX';
                        var _transManagerObj = eval(UIObj[i][3]);
                        if (_transManagerObj != null) {
                            var arr = _transManagerObj.getFileGuidCollection();
                            for (tmList = 0; tmList < _transManagerObj.MaxFileCount; tmList++) {
                                if (tmList < arr.length) {
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.GuidKey + (tmList + 1), "noneGrid", UIObj[i][3], arr[tmList][0], ctrlType));
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.FileExtensionKey + (tmList + 1), "noneGrid", UIObj[i][3], arr[tmList][1], ctrlType));
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.FileNameKey + (tmList + 1), "noneGrid", UIObj[i][3], arr[tmList][2], ctrlType));
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.FileSizeKey + (tmList + 1), "noneGrid", UIObj[i][3], arr[tmList][3], ctrlType));
                                }
                                else {
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.GuidKey + (tmList + 1), "noneGrid", UIObj[i][3], "", ctrlType));
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.FileExtensionKey + (tmList + 1), "noneGrid", UIObj[i][3], "", ctrlType));
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.FileNameKey + (tmList + 1), "noneGrid", UIObj[i][3], "", ctrlType));
                                    UIpara.push(new Array(groupNameMapping[k], _transManagerObj.FileSizeKey + (tmList + 1), "noneGrid", UIObj[i][3], 0, ctrlType));
                                }
                            }
                        }
                    }
                    else if (UIObj[i][2] == "imageUploader") {
                        ctrlType = 'imageUploader';
                        var uploaderObj = document.getElementById(UIObj[i][3]);
                        UIpara.push(new Array(groupNameMapping[k], UIObj[i][1], "noneGrid", UIObj[i][3], uploaderObj.imgGuid, ctrlType));
                    }
                }
            }
        }
    }
    SessionID = RequestQueryString["SessionKey"];
    if (SessionID == undefined)
        SessionID = "";
    UIpara.push(new Array("SESSION_KEY", "", "noneGrid", SessionID, SessionID, "session"));
    UIpara.push(UIObj[UIObj.length - 1]);
    return UIpara;
}

function ConvertToValue(control) {
    switch (control.datatype) {
        case "INT":
            return control.value.replace(/,/g, '');
            break;
        case "FLOAT":
            return control.value.replace(/,/g, '');
            break;
        case "DATE":
            var dateSrc = replaceFormat(control.value, control.datedash);
            dateSrc = replaceFormat(dateSrc, "-");
            dateSrc = replaceFormat(dateSrc, " ");
            dateSrc = replaceFormat(dateSrc, ":");
            return control.value.replace(/-/g, '');
            break;
        case "POPUP":
            return (control.popupvalue == "" ? control.value : control.popupvalue);
            break;
        default:
            return control.value;
            break;
    }
}

function groupSetAdd(paramSet, groupName, key, value) {
    //location,sessionkey을 가지고 온다
    var location = paramSet[paramSet.length - 1];
    var sessionkey = paramSet[paramSet.length - 2];
    if (sessionkey[3] == "") {
        if (RequestQueryString["SessionKey"] == undefined) {
            sessionkey[3] = "";
            sessionkey[4] = "";
        }
        else {
            sessionkey[3] = RequestQueryString["SessionKey"];
            sessionkey[4] = sessionkey[3];
        }
    }
    //location,sessionkey 부분을 제거
    paramSet.pop();
    paramSet.pop();
    //제거후 null일 경우 array생성
    if (paramSet == undefined)
        paramSet = new Array();
    //끝부분에 추가한다
    paramSet.push(new Array(groupName, key, "noneGrid", "dummy", value, "dummy"));
    //최종적으로 location,sessionkey을 추가
    paramSet.push(sessionkey);
    paramSet.push(location);
}

function groupSetAddByRadioSrc(paramSet, groupName, key, raioID, value) {
    //location을 가지고 온다
    var location = paramSet[paramSet.length - 1];
    //location 부분을 제거
    paramSet.pop();
    //제거후 null일 경우 array생성
    if (paramSet == undefined)
        paramSet = new Array();
    //끝부분에 추가한다
    paramSet.push(new Array(groupName, key, "noneGrid", raioID, value));
    //최종적으로 location을 추가
    paramSet.push(location);
}

function clearDataGroupSet(groupName) {
    for (var i = 0; i < UIObj.length - 1; i++) {
        var groupNameMapping = UIObj[i][0].split(';');
        for (var j = 0; j < groupName.length; j++) {
            for (var k = 0; k < groupNameMapping.length; k++) {
                if (groupNameMapping[k] == groupName[j]) {
                    if (UIObj[i][2] == "noneGrid") {
                        var obj = document.getElementById(UIObj[i][3]);

                        if (obj.type == 'radio') {
                            var radioCtrl = document.getElementsByName(obj.name);
                            for (radioCnt = 0; radioCnt < radioCtrl.length; radioCnt++) {
                                radioCtrl.item(0).checked = true;
                                break;
                            }
                        }
                        else if (obj.tagName == 'LABEL') {
                            obj.innerText = "";
                        }
                        else if (obj.tagName == 'SELECT' && obj.options.length > 0) {
                            obj.selectedIndex = 0;
                        }
                        else {
                            obj.value = '';
                        }
                    }
                    else if (UIObj[i][2] == "grid") {
                        igGrid_ScriptObj(UIObj[i][3]).RowsClear();
                    }
                }
            }
        }
    }
}

//group-set validation
function vailidationForGroupSet(groupSet, offset) {
    var control;
    var orItemName = new Array();
    for (var i = 0; i < UIObj.length - 1; i++) {
        var groupSetMapping = UIObj[i][0].split(';');
        for (var j = 0; j < groupSet.length; j++) {
            for (var k = 0; k < groupSetMapping.length; k++) {
                if (groupSetMapping[k] == groupSet[j]) {
                    if (UIObj[i][2] == "noneGrid" || UIObj[i][2] == "imageUploader") {
                        control = document.getElementById(UIObj[i][3]);
                        if (control.tagName != 'LABEL' && control.type != 'radio') {
                            if (control != null && control.required.toLowerCase() == "true") {
                                var radioValue = "";
                                var radioItemName = "";
                                // 20081028 수정
                                // radio 버튼 필수입력 선언하지 않음. 상위에서 제어함.
                                //                                if (control.type == 'radio') {
                                //                                    var radioCtrl = document.getElementsByName(control.name);
                                //                                    for (radioCnt = 0; radioCnt < radioCtrl.length; radioCnt++) {
                                //                                        if (radioCnt == 0)
                                //                                            radioItemName = radioCtrl.item(radioCnt).itemname;

                                //                                        if (radioCtrl.item(radioCnt).checked) {
                                //                                            radioValue = radioCtrl.item(radioCnt).value;
                                //                                        }
                                //                                    }
                                //                                }
                                var ctrlValue = '';
                                if (control.type == 'radio') {
                                    ctrlValue = radioValue
                                }
                                else if (UIObj[i][2] == "imageUploader") {
                                    ctrlValue = control.imgGuid;
                                }
                                else {
                                    ctrlValue = control.value;
                                }

                                if (ctrlValue == '') {
                                    if (offset.toLowerCase() == 'and') {
                                        alert('[' + (control.type == 'radio' ? radioItemName : control.itemname) + ']은(는) 필수입력입니다');
                                        try {
                                            // 콘트롤이 없을경우 처리
                                            control.focus();
                                        } catch (e) {
                                        }

                                        errorToControlAppear(control.id);
                                        return;
                                    }
                                    else {
                                        orItemName.push((control.type == 'radio' ? radioItemName : control.itemname));
                                    }
                                }
                                else {
                                    //or인 경우는 하나라도 입력을 했으므로 조건을 만족한다
                                    if (offset.toLowerCase() == 'or')
                                        return true;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if (offset.toLowerCase() == 'and') {
        return true;
    }
    else {
        //위 상황을 만족못한경우는 or조건의 값이 하나도 입력이 안된경우
        var message = "다음 항목의 값중 하나이상은 입력하셔야 합니다!!\r\n\r\n";
        for (i = 0; i < orItemName.length; i++) {
            message += orItemName[i] + "\r\n"
        }
        alert(message);
        return false;
    }
}

function processingForResult(rObj) {
    ///<summary> 결과값 화면 ui에 setting </summary>
    ///<param name="rObj"> 결과 값 object 덩어리 </param>    
    ///<param name="comboName"> 혹 콤보 박스 바인딩의 경우 comboObj 를 던져 준다. </param>    
    ///<returns></returns>
    if (rObj.error != null) {
        alert(rObj.error.Message);
        return false;
    }
    else {
        var resultSet = rObj.value;
        return resultSet;
    }
}
/********************************************************************************************************************/

//popGubun : -1 :예외 , 0 : 실패 , 1 : 성공
function showModalMessage(msg, popGubun) {
    msg = msg.replace(/"/g, '');
    msg = msg.replace(/\r\n/g, '');
    var args = new Array();
    args["MSG"] = msg;
    if (popGubun == -1) {
        openExceptionPage(args);
    }
    if (popGubun == 0) {
        openFalsePage(args);
    }
    if (popGubun == 1) {
        openSuccessPage(args);
    }
}

//imageFilterApply.js
function high(which2) {
    clearInterval(highlighting)
    which2.filters.alpha.opacity = 150
}
function low(which2) {
    theobject = which2
    highlighting = setInterval("highlightit(theobject)", 5)
}
function highlightit(cur2) {
    if (cur2.filters.alpha.opacity <= 100 && cur2.filters.alpha.opacity >= 50)
        cur2.filters.alpha.opacity -= 5
    else if (window.highlighting)
        clearInterval(highlighting)
}

function ConvertEsGridComboDataByRecursiveData(recursiveData) {
    var comboData = "";
    for (i = 0; i < recursiveData.length; i++) {
        comboData += (recursiveData[i][0] + " - " + recursiveData[i][1] + (recursiveData.length == (i + 1) ? "" : "\t")); // ;
    }
    return comboData;
}


function getVersion() {
    var app_ver = navigator.appVersion;
    var p_app;
    if (navigator.platform == 'Win32') {
        if (app_ver.indexOf('98') != -1) p_app = '98';
        else if (app_ver.indexOf('95') != -1) p_app = '95';
        else if (app_ver.indexOf('Me') != -1) p_app = 'Windows Me';
        else if (app_ver.indexOf('NT 5.0') != -1) p_app = 'Windows 2000';
        else if (app_ver.indexOf('NT 5.1') != -1) p_app = 'Windows XP';
        else if (app_ver.indexOf('NT 5.2') != -1) p_app = 'Windows 2003';
        else if (app_ver.indexOf('NT 6.0') != -1) p_app = 'Windows Vista';
        else if (app_ver.indexOf('NT 6.1') != -1) p_app = 'Windows 2008';
        else if (app_ver.indexOf('NT') != -1) p_app = 'Windows NT';
    }
    else p_app = navigator.platform;

    return p_app;
}

var querystringArray = document.location.href.split('?');
var querystringItemArray;
var querystringArray;
var RequestQueryString = new Array();
if (querystringArray.length > 1) {
    querystringItemArray = querystringArray[1].split('&');
    for (querystringItemArrayIndex = 0; querystringItemArrayIndex < querystringItemArray.length; querystringItemArrayIndex++) {
        querystringArray = querystringItemArray[querystringItemArrayIndex].split('=');
        if (querystringArray.length > 1)
            RequestQueryString[querystringArray[0]] = querystringArray[1];
    }
}

function strPageLocation() {
    var resultString = "location정보를 찾을 수 없습니다";
    if (RequestQueryString["orgPid"] != undefined && top.tabInfo != undefined) {
        resultString = ((top.tabInfo[RequestQueryString["orgPid"]])[3]).replace(/@/g, '"');
    }
    return resultString;
}






/******************************************************************************************************************************
팝업 관련
******************************************************************************************************************************/
function ShowModalDialogWindow(url, args, dialogWidth, dialogHeight, center, dialogHide, edge, help, resizable, scroll, status, unadorned) {
    var dialogtop = (screen.height - dialogHeight) / 2;
    var dialogleft = (screen.width - dialogWidth) / 2;

    var opt = "dialogtop:" + dialogtop + "px;" + // sYPos
				"dialogleft:" + dialogleft + "px;" + // sXPos
				"dialogWidth:" + dialogWidth + "px;" + // sWidth
				"dialogHeight:" + dialogHeight + "px;" + // sHeight

				"center:" + center + ";" + 	// :{ yes | no | 1 | 0 | on | off }
				"dialogHide:" + dialogHide + ";" + 	// :{ yes | no | 1 | 0 | on | off }
				"edge:" + edge + ";" + 	// :{ sunken | raised }
				"help:" + help + ";" + 	// :{ yes | no | 1 | 0 | on | off }
				"resizable:" + resizable + ";" + 	// :{ yes | no | 1 | 0 | on | off }
				"scroll:" + scroll + ";" + 	// :{ yes | no | 1 | 0 | on | off }
				"status:" + status + ";" + 	// :{ yes | no | 1 | 0 | on | off }
				"unadorned:" + unadorned + ";"; 	// :{ yes | no | 1 | 0 | on | off }

    if (url.indexOf('?') > -1)
        url += "&SessionKey=" + RequestQueryString["SessionKey"];
    else
        url += "?SessionKey=" + RequestQueryString["SessionKey"];
        

    var ret = window.showModalDialog(url, args, opt);
    return ret;
}

function OpenWin(url, name, width, height) {
    return OpenWindow(url, name, width, height, 'no', 'no', 'no', 'no', 'no', 'yes', 'no');
}

function OpenWindow(url, name, width, height, status, toolbar, titlebar, menubar, location, resizable, scrollbars) {
    var top = (screen.height - height) / 2;
    var left = (screen.width - width) / 2;

    var opt = "top=" + top + "," + 	// sYPos
				"left=" + left + "," + 	// sXPos
				"width=" + width + "," + 	// sWidth
				"height=" + height + "," + 	// sHeight

				"status=" + status + "," + 	// ={ yes | no | 1 | 0 | on | off }
				"toolbar=" + toolbar + "," + 	// ={ yes | no | 1 | 0 | on | off }
				"titlebar=" + titlebar + "," + 	// ={ yes | no | 1 | 0 | on | off }
				"menubar=" + menubar + "," + 	// ={ yes | no | 1 | 0 | on | off }
				"location=" + location + "," + 	// ={ yes | no | 1 | 0 | on | off }
				"resizable=" + resizable + "," + 	// ={ yes | no | 1 | 0 | on | off }
				"scrollbars=" + scrollbars; 			// ={ yes | no | 1 | 0 | on | off }

    var popup_window = null;

    if (popup_window != null) {
        if (typeof popup_window.focus == "function") {
            popup_window.focus();
        }
    }
    else {
        if (url.indexOf('?') > -1)
            url += "&SessionKey=" + RequestQueryString["SessionKey"];
        else
            url += "?SessionKey=" + RequestQueryString["SessionKey"];
        popup_window = window.open(url, name, opt);
        popup_window.focus();
    }
}

/////////////////////////////////////////////////////여기서부터는 팝업 스크립트 설정/////////////////////////////////////////////////////

//시스템에서 발생하는 예외에 대한 메시지팝업
function openExceptionPage(args) {
    ShowModalDialogWindow('/Common/Popup/ExceptionAlert.aspx', args, 320, 280, 'no', 'no', 'no', 'no', 'no', 'no', 'no', 'no')
}
//성공 메시지팝업
function openSuccessPage(args) {
    ShowModalDialogWindow('/Common/Popup/SuccessAlert.aspx', args, 320, 280, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no')
}

//실패 메시지팝업
function openFalsePage(args) {
    ShowModalDialogWindow('/Common/Popup/FalseAlert.aspx', args, 320, 280, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no')
}

function modalExecute(functionName) {
    this["flag"] = false;
    ShowModalDialogWindow('/Popup/inProcess.aspx?functionName=' + functionName, this, 350, 190, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    return this["flag"];
}

function modalPopupCall(gbn, para) {
    // 공통 팝업
    var ret;
    if (gbn == 'CM0000P')           // 공통코드
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0010P')      // 사원조회(para -> "retire=Y" : 퇴직자 조회까지 가능)
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0012P')      // 용역사사원조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx', this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0020P')      // 부서조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0030P')      // 은행조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'PA1010P_01')   // 호봉조회
        ret = ShowModalDialogWindow('./' + gbn + '.aspx?' + para, this, 650, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0040P')      // 거래처조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx', this, 550, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0050P')      // 품목코드조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx', this, 650, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0060P')      // 상위부서조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 400, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0070P')      // 관리번호조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 650, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0080P')      // 직종직무직급조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');
    else if (gbn == 'CM0090P')      // 우편번호, 주소 조회
        ret = ShowModalDialogWindow('/CM/CM0000/' + gbn + '.aspx?' + para, this, 450, 500, 'yes', 'no', 'sunken', 'no', 'no', 'no', 'no', 'no');

    return ret;
}

/******************************************************************************************************************************
텍스트박스에서 발생시키는 팝업유틸함수
******************************************************************************************************************************/
var popValueColumn;
var popTextColumn;
var popValueBindControl;
var popTextBindControl;
function setPopValue(trObj) {
    var tdObj = trObj.getElementsByTagName('td');
    for (i = 0; i < tdObj.length; i++) {
        //value setting....
        for (j = 0; j < popValueColumn.length; j++) {
            if (tdObj.item(i).id == popValueColumn[j]) {
                var controlObj = eval(__FormObj.id + '.' + popValueBindControl[j]);
                if (controlObj != null)
                    controlObj.popupvalue = (tdObj.item(i).innerText);
            }
        }
        //text setting....
        for (j = 0; j < popTextColumn.length; j++) {
            if (tdObj.item(i).id == popTextColumn[j]) {
                var controlObj = eval(__FormObj.id + '.' + popTextBindControl[j]);
                if (controlObj != null)
                    controlObj.value = (tdObj.item(i).innerText);
            }
        }
    }
}
function getPopItemColor(colorCode) {
    if (colorCode == 1)
        return "#f1f1f1";
    else if (colorCode == 2)
        return "#FFFFFF";
    else
        return "#7D9AA4";
}

function setPopColor(trObj, status, colorCode) {
    if (status == 1)
        trObj.style.backgroundColor = getPopItemColor(colorCode);
    else
        trObj.style.backgroundColor = getPopItemColor(colorCode);
}

/******************************************************************************************************************************
인사에서 탭처리시 사용될 공용스크립트
******************************************************************************************************************************/
var tab_name;
var tab_gridName;
var selectedTabIndex;
var max_tab;

function setSubTab(name, gridName, tabIndex, maxtab) {
    //table초기화
    if (TabArea.rows.length > 0) {
        while (TabArea.rows.length != 0) {
            TabArea.deleteRow(0);
        }
    }

    if (maxtab == undefined) maxtab = 0;
    
    tab_name = name;
    tab_gridName = gridName;
    selectedTabIndex = tabIndex;
    max_tab = maxtab;
    
    var tabHtml = "";
    var row, cell;

    var imaxtab = 1;
    if (maxtab > 0) imaxtab = tab_name.length / maxtab;

    var i = 0;
    for (var irow = 0; irow < imaxtab; irow++) {
        row = TabArea.insertRow();
        for (var icol = 0; icol < (maxtab == 0 ? tab_name.length : maxtab); icol++) {
            if (i < tab_name.length) {
                cell = row.insertCell();
                tabHtml = "";
                tabHtml += "  <table width='100%' border='0' cellpadding='0' cellspacing='0' background='/Common/Image/etc/tap0" + (i == selectedTabIndex ? "3" : "4") + "_02.gif'>";
                tabHtml += "    <tr>";
                tabHtml += "      <td><img id='tabLimg_" + i + "' src='/Common/Image/etc/tap0" + (i == selectedTabIndex ? "3" : "4") + "_01.gif' width='6' height='22'></td>";
                tabHtml += "      <td id='tabObj_" + i + "' cIdx='" + i + "' width='99%' align='center' class='" + (i == selectedTabIndex ? "text_ww" : "text_green") + "' style='cursor:hand'>" + tab_name[i] + "</td>";
                tabHtml += "      <td align='right'><img id='tabRimg_" + i + "' src='/Common/Image/etc/tap0" + (i == selectedTabIndex ? "3" : "4") + "_03.gif' width='6' height='22'></td>";
                tabHtml += "    </tr>";
                tabHtml += "  </table>";

                cell.innerHTML = tabHtml;

                eval("tabObj_" + i).attachEvent('onclick', changeTab);

                //grid
                if (i == selectedTabIndex)
                    eval(tab_gridName[i]).style.display = 'inline';
                else
                    eval(tab_gridName[i]).style.display = 'none';
            }
            i++;
        }

    }
    
}
function changeTab() {
    setSubTab(tab_name, tab_gridName, event.srcElement.cIdx, max_tab);
}
/******************************************************************************************************************************
image upload처리
******************************************************************************************************************************/
function imageUploader(imgObj) {
    OpenWindow('/Common/Popup/UploadImage.aspx?UniqueID=' + imgObj.id, '', 324, 180, "no", "no", "no", "no", "no", "no", "no");
}
function personimageUploader(imgObj) {
    OpenWindow('/Common/Popup/UploadpersonImage.aspx?UniqueID=' + imgObj.id + '&EMP_NO=' + imgObj.imgGuid, '', 324, 180, "no", "no", "no", "no", "no", "no", "no");
}
/************************************************************************************************/


/***********************************
숫자 포맷~
************************************/
function setNumberFormat1(numValue, obj) {
    var commaNum = Math.floor(numValue.length / 3);
    var firstStringNum = numValue.length % 3;

    var firstString = numValue.substring(0, firstStringNum) + (firstStringNum == 0 || commaNum == 0 ? "" : ",");
    var beforeCommaString = numValue.substring(firstStringNum, numValue.length);
    var afterCommaString = "";

    for (var i = 0; i < commaNum; i++) {
        afterCommaString = afterCommaString + beforeCommaString.substring(i * 3, (i + 1) * 3) + (((i + 1) == commaNum) ? "" : ",");

    }

    obj.value = firstString + afterCommaString;
}

/**************************************************
숫자 포맷~(이벤트 부착용~)
:사용법:obj.attachEvent("onKeyup",setNumberFormat);
수정일:2008-11-20
수정내용:숫자입력확인 
***************************************************/
function setNumberFormat() {
    var regexp = /^-|[0-9]+$/;

    var obj = event.srcElement;
    var numValueOld = obj.value.split(',');
    var numValue = "";

    for (var i = 0; i < numValueOld.length; i++) {
        numValue += numValueOld[i];
    }
    if (numValue != "") {
        if (!regexp.test(numValue)) {
            alert("숫자만 입력이 가능합니다.");
            numValue = numValue.substring(0, numValue.length - 1);
        }
    }
    var commaNum = Math.floor(numValue.length / 3);
    var firstStringNum = numValue.length % 3;

    var firstString = numValue.substring(0, firstStringNum) + (firstStringNum == 0 || commaNum == 0 ? "" : ",");
    var beforeCommaString = numValue.substring(firstStringNum, numValue.length);
    var afterCommaString = "";

    for (var i = 0; i < commaNum; i++) {
        afterCommaString = afterCommaString + beforeCommaString.substring(i * 3, (i + 1) * 3) + (((i + 1) == commaNum) ? "" : ",");

    }

    obj.value = firstString + afterCommaString;
}


/***
* text field 에서 주민번호체크. 그리드는 다르게 작성
****/
function chk_residentno(resident_obj) {

    var strtxt_residentno = resident_obj.value.replace('-', '');
    var strtxt_residentno1 = strtxt_residentno.substr(0, 6); //첫 번째 필드
    var strtxt_residentno2 = strtxt_residentno.substr(6, 7); //두번째 필드
    
    if (strtxt_residentno1.length != 0) {
        var chk = 0;
        var yy = strtxt_residentno1.substr(0, 2); //출생년도 추출
        var mm = strtxt_residentno1.substr(2, 2); //출생월 추출
        var dd = strtxt_residentno1.substr(4, 2); //출생일 추출
        var sex = strtxt_residentno2.substr(0, 1); //성별 추출
        
        //외국인 등록번호 체크
        var sum=0; 
        var odd=0; 
        buf = new Array(13); 

        //alert(yy + ' ' + mm + ' ' + dd + ' ' + sex);
        //첫 번째필드가 6자리가 아니거나 출생월일이 날짜 형식에 위배될때
        if ((strtxt_residentno1.length != 6) || (mm < 1 || mm > 12 || dd < 1 || dd > 31)) {
            alert(' 주민번호 첫번째자리 형식이 잘못 되었습니다.');
            resident_obj.value = '';
            resident_obj.focus();
            return;
        }
        //성별형식이 틀리거나 두 번째 필드가 7자리가 아닐때
        if ((strtxt_residentno2.length != 7) || sex == 0) {
            alert(' 주민번호 두번째자리 형식이 잘못 되었습니다.');
            resident_obj.value = '';
            resident_obj.focus();
            return;
        }
        
        //주민등록번호 체크에 관한
        //내국인일 경우
        if(sex < 5)
        {
            for (i = 0; i <= 5; i++)
                chk = chk + ((i % 8 + 2) * parseInt(strtxt_residentno1.substring(i, i + 1)));

            for (i = 6; i <= 11; i++)
                chk = chk + ((i % 8 + 2) * parseInt(strtxt_residentno2.substring(i - 6, i - 5)));

            chk = (11 - (chk % 11)) % 10;
            if (chk != strtxt_residentno2.substring(6, 7)) {
                alert('주민번호 형식이 잘못 되었습니다.');
                resident_obj.value = '';
                resident_obj.focus();
                return;
            }
        }
        //외국인일 경우
        else
        {
            var sum=0; 
            var odd=0; 
            buf = new Array(13); 
            for(i=0; i<13; i++) { 
                buf[i]=parseInt(strtxt_residentno.charAt(i)); 
            } 
            odd = buf[7]*10 + buf[8]; 
            if(odd%2 != 0) { 
                alert('주민번호 형식이 잘못 되었습니다.');
                resident_obj.value = '';
                resident_obj.focus();
                return; 
            } 
            if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) { 
                alert('주민번호 형식이 잘못 되었습니다.');
                resident_obj.value = '';
                resident_obj.focus();
                return; 
            } 
            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]) { 
                alert('주민번호 형식이 잘못 되었습니다.');
                resident_obj.value = '';
                resident_obj.focus();
                return; 
            } 
        }
        
        //'-' 붙여서 반환
        resident_obj.value = strtxt_residentno1 + '-' + strtxt_residentno2;
    }
}

function chk_grid_residentno(grd, row, key) {
    rsd_val = grd.getTextByKey(row, key);
    var strtxt_residentno = rsd_val.replace('-', '');
    var strtxt_residentno1 = strtxt_residentno.substr(0, 6); //첫 번째 필드
    var strtxt_residentno2 = strtxt_residentno.substr(6, 7); //두번째 필드
    if (strtxt_residentno1.length != 0) {
        var chk = 0;
        var yy = strtxt_residentno1.substr(0, 2); //출생년도 추출
        var mm = strtxt_residentno1.substr(2, 2); //출생월 추출
        var dd = strtxt_residentno1.substr(4, 2); //출생일 추출
        var sex = strtxt_residentno2.substr(0, 1); //성별 추출

        //alert(yy + ' ' + mm + ' ' + dd + ' ' + sex);
        //첫 번째필드가 6자리가 아니거나 출생월일이 날짜 형식에 위배될때
        if ((strtxt_residentno1.length != 6) || (mm < 1 || mm > 12 || dd < 1 || dd > 31)) {
            alert(' 주민번호 첫번째자리 형식이 잘못 되었습니다.');
            grd.setTextByKey(row, key, ''); 
            return;
        }
        //성별형식이 틀리거나 두 번째 필드가 7자리가 아닐때
        if ((strtxt_residentno2.length != 7) || (sex != 1 && sex != 2 && sex != 3 && sex != 4)) {
            alert(' 주민번호 두번째자리 형식이 잘못 되었습니다.');
            grd.setTextByKey(row, key, ''); 
            return;
        }
        //주민등록번호 체크에 관한
        for (i = 0; i <= 5; i++)
            chk = chk + ((i % 8 + 2) * parseInt(strtxt_residentno1.substring(i, i + 1)));

        for (i = 6; i <= 11; i++)
            chk = chk + ((i % 8 + 2) * parseInt(strtxt_residentno2.substring(i - 6, i - 5)));

        chk = (11 - (chk % 11)) % 10;
        if (chk != strtxt_residentno2.substring(6, 7)) {
            alert('주민번호 형식이 잘못 되었습니다.');
            grd.setTextByKey(row, key, ''); 
            return;
        }

        //'-' 붙여서 반환
        grd.setTextByKey(row, key, strtxt_residentno1 + '-' + strtxt_residentno2);
    }
}

function Lpad(src, len, padStr){
     var retStr = "";
     var padCnt = Number(len) - String(src).length;
     for(var i=0;i<padCnt;i++){
      retStr += String(padStr);
     }
     return retStr+src;
}

function Rpad(src, len, padStr) {
    var retStr = "";
    var padCnt = Number(len) - String(src).length;
    for (var i = 0; i < padCnt; i++) {
        retStr += String(padStr);
    }
    return src + retStr;
}

/*
' ------------------------------------------------------------------
' Function : fc_chk_byte(aro_name)
' Description : 입력한 글자수를 체크
' Argument : Object Name(글자수를 제한할 컨트롤)
' Return : 
' ------------------------------------------------------------------
*/
function fc_chk_byte(aro_name,ari_max) {
    var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
    var li_str_len = ls_str.length; // 전체길이

    // 변수초기화
    var li_max = ari_max; // 제한할 글자수 크기
    var i = 0; // for문에 사용
    var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
    var li_len = 0; // substring하기 위해서 사용
    var ls_one_char = ""; // 한글자씩 검사한다
    var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.

    for(i=0; i< li_str_len; i++)
    {
        // 한글자추출
        ls_one_char = ls_str.charAt(i);

        // 한글이면 2를 더한다.
        if (escape(ls_one_char).length > 4) {
            li_byte += 2;
        }
        // 그밗의 경우는 1을 더한다.
        else {
            li_byte++;
        }

        // 전체 크기가 li_max를 넘지않으면
        if(li_byte <= li_max) {
            li_len = i + 1;
        }
    }

    // 전체길이를 초과하면
    if(li_byte > li_max) {
        alert( li_max + " 글자를 초과 입력할수 없습니다. \n 초과된 내용은 자동으로 삭제 됩니다. ");
        ls_str2 = ls_str.substr(0, li_len);
        aro_name.value = ls_str2;
    }
    
    aro_name.focus(); 
}

