/******************************************************************************
 * (s) String prototype 에 등록
 *****************************************************************************/
String.prototype.byteLength = function() {//바이트 길이를 반환.
    str = this;
    var byteLength= 0;
    for(var inx=0; inx < str.length; inx++) {
        var oneChar = escape(str.charAt(inx));
        if ( oneChar.length == 1 ) {
            byteLength ++;
        } else if (oneChar.indexOf("%u") != -1) {
            byteLength += 2;
        } else if (oneChar.indexOf("%") != -1) {
            byteLength += oneChar.length/3;
        }
    }
    return byteLength;
}

String.prototype.trim = function() {
    return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");
}

String.prototype.startsWith = function(prefix, toffset) {
    toffset = (toffset) ? toffset : 0;

    if (this.substring(toffset, toffset + prefix.length) == prefix) {
        return true;
    }

    return false;
}

String.prototype.lpad = function(totalLen,strReplace) {
    var strAdd = "";
    var diffLen = totalLen - this.length;

    for (var i = 0; i < diffLen; ++i) {
        strAdd += strReplace;
    }

    return strAdd + this;//대체 문자열로 채운 문자열과 원본 문자열을 반환
}


/******************************************************************************
 * (s) Array prototype 에 등록
 *****************************************************************************/
Array.prototype.indexOf = function(obj) {
    for (var i = 0, length = this.length; i < length; i++)
        if (this[i] == obj) return i;
    return -1;
}


/******************************************************************************
 * (s) Object prototype 에 등록
 *****************************************************************************/
//등록시 dhtmlx 와 충돌
//Object.prototype.getName = function() {for(var i in window) if(window[i] == this) return i;}

/******************************************************************************
 * (s) 공통 팝업
 *****************************************************************************/
var _ORG_SEARCH_WIN_ID      = "WinID_OrgSearch";
var _USER_SEARCH_WIN_ID     = "WinID_UserSearch";
var _EVM_SEARCH_WIN_ID      = "WinID_EvmSearch";
var _CSF_SEARCH_WIN_ID      = "WinID_CsfSearch";
var _UPORGKPI_SEARCH_WIN_ID = "WinID_UpOrgKpiSearch";
var _KPI_SEARCH_WIN_ID      = "WinID_KpiSearch";
var _OPTION_SEARCH_WIN_ID   = "WinID_OptionSearch";

//공통 윈도우 Object 재사용.
function createCommonSearchWindow(winId, windowObj, winTitle, isModal) {
    if (parent.top.dhxWinsMain != null && parent.top.dhxWinsMain.window(winId) != null) {
        parent.top.dhxWinsMain.window(winId).setModal(isModal ? isModal : true);//모달처럼
        parent.top.dhxWinsMain.window(winId).setText(winTitle);
        parent.top.dhxWinsMain.window(winId).show();
        //alert((parent.top.openerObj ? "ex parent.top.openerObj" : (top.openerObj ? "ex top.openerObj" : (openerObj ? "ex openerObj" : "x"))));

        try {
            parent.top.setOpenerObj(windowObj);//opener Object 세팅.
        } catch(e) {
            ;
        }

        return parent.top.dhxWinsMain;
    } else {
        parent.top.createWindow(winId, 400, 300, windowObj);//모든 영역 위에 팝업 띄움.
        parent.top.dhxWinsMain.window(winId).center();//화면 중앙으로
        parent.top.dhxWinsMain.window(winId).setModal(isModal ? isModal : true);//모달처럼
        parent.top.dhxWinsMain.window(winId).setText(winTitle);
        //alert((parent.top.openerObj ? "new parent.top.openerObj" : (top.openerObj ? "new top.openerObj" : (openerObj ? "new openerObj" : "x"))));

        return parent.top.dhxWinsMain;
    }
}
function closeCommonSearchWindow(winId) {
    if (parent.top.dhxWinsMain == null || parent.top.dhxWinsMain.window(winId) == null) {
        return;
    } else {
        parent.top.dhxWinsMain.window(winId).setModal(false);
        parent.top.dhxWinsMain.window(winId).hide();
        doAttachURL(parent.top.dhxWinsMain.window(winId), "about:blank");
    }

}

function win_pageWidth() {
    return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
}

function win_pageHeight() {
    return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
}

function win_posLeft() {
    return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
}

function win_posTop() {
    return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
}

function win_posRight() {
    return win_posLeft()+win_pageWidth();
}
function posBottom() {
    return win_posTop()+win_pageHeight();
}
function fitPopWindowSize(/*int*/width, /*int*/height, /*Array*/addHeightElementIds, /*int*/maxHeight) {
    //alert(parent.top.dhxWinsMain.getTopmostWindow(true).w);
    var w = width ? width : win_pageWidth();
    var h = height ? height : win_pageHeight();
    for(var i = 0; addHeightElementIds && i < addHeightElementIds.length; i++) {
        h += document.getElementById(addHeightElementIds[i]).offsetHeight;
    }

    if(maxHeight && h > maxHeight) {
        h = maxHeight;
    }

    if(top.dhxWinsMain && top.dhxWinsMain.getTopmostWindow(true)) {
        top.dhxWinsMain.getTopmostWindow(true).setDimension(w, h);
    }
}


///////////////////////////////////////////////////////////////////////////////
//(s) backspace를 이용한 history.back() 사용 여부
///////////////////////////////////////////////////////////////////////////////
//
//document.onkeydown = backspaceKeyHandler;

function backspaceKeyHandler(e) {
    var evt         = e || window.event;
    var keyCode     = evt.which || evt.keyCode;
    var srcElement  = evt.target || evt.srcElement;

    if(keyCode == 8) {
        if (srcElement.tagName != "INPUT" && srcElement.tagName != "TEXTAREA") {
            evt.cancelBubble    = true;
            evt.returnValue     = false;
        }
    }
}
//(e) backspace를 이용한 history.back() 사용 여부
///////////////////////////////////////////////////////////////////////////////



/******************************************************************************
 * (s) AJAX 관련
 *****************************************************************************/
/**
 * ajax를 이용한 form.submit 처리.
 * json String을 받아 에러가 발생했을 경우 메시지를 띄우고, callBackFnNm(json) 메서드를 호출한다.
 * callBackFnNm(json) 메서드는 common_submit(f)를 호출한 페이지에 반드시 존재하여야 한다.
 *
 *@param f              (Object)    - Form Object
 *@param callBackFnNm   (String)    - submit 후 자동호출 될 메서드 명.
 */
function common_submit(f, callBackFnNm) {
    $.post(f.action
            , $("#"+f.id).serialize()
            , function(json) {
                eval(callBackFnNm+"(json);");
              }
            , "json");
}




/******************************************************************************
 * (s) 기타등등
 *****************************************************************************/
function begin_field_str(stLabel) {
    var fieldString;

    fieldString  = "<span class=\"draw_fieldset\">";
    fieldString += "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
    fieldString += "<tr>";
    fieldString += "<td height=\"100%\" width=\"8\">";
    fieldString += "<table height=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"8\">";
    fieldString += "<tr>";
    fieldString += "<td class=\"topLeft\" width=\"8\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "</tr>";
    fieldString += "<tr>";
    fieldString += "<td class=\"middleLeft\" height=\"100%\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "</tr>";
    fieldString += "<tr>";
    fieldString += "<td class=\"bottomLeft\" width=\"8\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "</tr>";
    fieldString += "</table>";
    fieldString += "</td>";
    fieldString += "<td height=\"100%\" width=\"100%\" class=\"\">";
    fieldString += "<table height=\"100%\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
    fieldString += "<tr>";
    fieldString += "<td class=\"content_top\" width=\"1%\" height=\"100%\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "<td width=\"99%\" height=\"100%\">";
    if (stLabel == null || stLabel == "") {
        fieldString += "<table width=\"100%\" height=\"8\" cellpadding=0 cellspacing=0><tr><td class=\"content_top\" width=\"100%\"></td></tr></table>";
    } else {
        fieldString += "<table cellpadding=0 cellspacing=0><tr><td><nobr>"+stLabel+"</nobr></td><td class=\"content_top\" width=\"100%\">&nbsp;</td></tr></table>";
    }
    fieldString += "</td>";
    fieldString += "</tr>";
    fieldString += "<tr>";
    fieldString += "<td colspan=\"3\" class=\"fieldsetContent\" height=\"100%\" width=\"100%\">";

    return fieldString;
}

function end_field_str() {
    var fieldString;

    fieldString  = "</td>";
    fieldString += "</tr>";
    fieldString += "</table>";
    fieldString += "</td>";
    fieldString += "<td height=\"100%\" width=\"8\">";
    fieldString += "<table height=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"8\">";
    fieldString += "<tr>";
    fieldString += "<td class=\"topRight\" width=\"8\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "</tr>";
    fieldString += "<tr>";
    fieldString += "<td class=\"middleRight\" height=\"\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "</tr>";
    fieldString += "<tr>";
    fieldString += "<td class=\"bottomRight\" height=\"8\"><img src=\"/images/spacer.gif\"></td>";
    fieldString += "</tr>";
    fieldString += "</table>";
    fieldString += "</td>";
    fieldString += "</tr>";
    fieldString += "</table>";
    fieldString += "</span>";

    return fieldString;
}



/**
 *  화면의 첫번째 input, type=text 객체에 focus setting;
 */
function setFocus(f) {
    for (var i = 0; i < f.length; i++) {
        if ( ((f[i].tagName.toLowerCase() == "input" && f[i].type.toLowerCase() == "text") || (f[i].tagName.toLowerCase() == "textarea"))
                && f[i].readOnly == false)
        {
            try {
                f[i].focus();
                f[i].blur();
                f[i].focus();
            } catch(e) {
                ;
            }

            break;
        }
    }
}


/**
 * [입력 문자] - [입력 가능 문자] ====> [입력 불가능 문자]
 * 위에서 얻어진 [입력 불가능 문자]를 모두 제거 한다.
 */
function removeInvalidChar(obj) {
    ///////////////////////////////////////////////////////////////////
    // (s) validation pattern list
    ///////////////////////////////////////////////////////////////////
    //
    
    var arrValidKey = new Array();
    var arrValidReg = new Array();

    arrValidKey[arrValidKey.length] = "D";
    arrValidReg[arrValidReg.length] = "([0-9])";

    arrValidKey[arrValidKey.length] = "E";
    arrValidReg[arrValidReg.length] = "([a-zA-Z])";

    arrValidKey[arrValidKey.length] = "K";
    //arrValidReg[arrValidReg.length] = "([ㄱ-힝])";
    arrValidReg[arrValidReg.length] = "([\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF])";

    arrValidKey[arrValidKey.length] = "J";
    arrValidReg[arrValidReg.length] = "([\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF])";

    arrValidKey[arrValidKey.length] = "C";
    arrValidReg[arrValidReg.length] = "([\u2E80-\u2EFF\u31C0-\u31EF\u3200-\u32FF\u3400-\u4DBF\u4E00-\u9FBF\uF900-\uFAFF\u20000-\u2A6DF\u2F800-\u2FA1F])";

    arrValidKey[arrValidKey.length] = "S";
    arrValidReg[arrValidReg.length] = "([^0-9ㄱ-힝a-zA-Z])";
    //
    // (s) validation pattern list
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    // (s) 패턴 정의
    ///////////////////////////////////////////////////////////////////
    //
    var validTmp = obj.ValidChars + ",";
    var pattern = "";

    for(var i = 0; i < arrValidKey.length; i++) {
        if(validTmp.indexOf(arrValidKey[i] + ",") != -1 || validTmp.indexOf(arrValidKey[i] + "[") != -1) {
            //특수문자의 경우 "S" 와  "S[&%]"를 구분한다.
            var type = validTmp.substring(validTmp.indexOf("S"), validTmp.indexOf("S") + 1);
            var reg = validTmp.substring(validTmp.indexOf("S") + 1, validTmp.length - 1);

            if(arrValidKey[i] == "S") {//특수문자
                if(reg.length > 1) {
                    pattern += "(" + reg + ")" + "|";
                } else {
                    pattern += arrValidReg[i] + "|";
                }
            } else {
                pattern += arrValidReg[i] + "|";
            }
        }
    }

    if(pattern.length > 0) {
        pattern = pattern.substring(0, pattern.length - 1) + "*";
    }
    //
    // (e) 패턴 정의
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    // (s) 입력 불가능 문자 제거
    ///////////////////////////////////////////////////////////////////
    //
    //정규식 생성.
    var RegExpObj = new RegExp(pattern, "gm");//g:blobal, i:ignoreCase, m:multiline

    //입력값중 입력불가능 문자 제거.
    var strValue    = obj.value;
    var tmpValue    = strValue.replace(RegExpObj, "", "gm");

    //입력 불가능한 문자 삭제처리
    if(tmpValue.length > 0) {
        for(var i = 0; i < tmpValue.length; i++) {
            strValue = strValue.replace(tmpValue.charAt(i), "");
        }
        //한글 입력 불가능 일 경우 blur 후 setFocus 처리
        if(validTmp.indexOf("K") == -1) {obj.blur(); obj.focus();}
        obj.value = strValue;
    }
    //
    // (e) 입력 불가능 문자 제거
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    // (s) Max Length 체크
    ///////////////////////////////////////////////////////////////////
    //
    if(validTmp.indexOf("LEN[") != -1) {
        var lenCheckStr = validTmp.substring(validTmp.indexOf("LEN["), validTmp.indexOf("]", validTmp.indexOf("LEN[") + 1) + 1);
        //lenCheckStr ==> "LEN[xx, xxx]"
        var arrCheckVal = eval(lenCheckStr.substring(3));

        //숫자/문자 구분 해서 처리
        if(arrCheckVal.length == 2) {//문자
            var minLen  = arrCheckVal[0];
            var maxLen  = arrCheckVal[1];
            var valLen  = strValue.byteLength();
            //뒷자리 잘라내기.
            if(valLen - maxLen > 0) {
                strValue    = strValue.substring(0, strValue.length - (valLen - maxLen));

                //obj.blur();obj.focus();
                obj.value   = strValue;
            }

        } else if(arrCheckVal.length == 3) {//숫자
            var minLen      = arrCheckVal[0];
            var maxLen      = arrCheckVal[1] - arrCheckVal[2];
            var decimalLen  = arrCheckVal[2];

            strValue    = strValue.replace(/,/g, "");
            var arrVal  = strValue.split(".");
            if(arrVal.length == 2) {//소수점 존재
                //정수길이
                if(arrVal[0].length - maxLen > 0) {
                    strValue    = arrVal[0].substring(0, arrVal[0].length - (arrVal[0].length - maxLen)) + ".";
                } else {
                    strValue    = arrVal[0] + ".";
                }
                //소수길이
                if(arrVal[1].length - decimalLen > 0) {
                    strValue    += arrVal[1].substring(0, arrVal[1].length - (arrVal[1].length - decimalLen));
                } else {
                    strValue    += arrVal[1];
                }
            } else {//소수점 미존재
                //뒷자리 잘라내기.
                if(strValue.length - maxLen > 0) {
                    strValue    = strValue.substring(0, strValue.length - (strValue.length - maxLen));
                }
            }

            //obj.blur();obj.focus();
            obj.value   = strValue;
        }
    }
    //
    // (e) Max Length 체크
    ///////////////////////////////////////////////////////////////////
}


/**
 * [입력 문자] - [입력 가능 문자] ====> [입력 불가능 문자]
 * 위에서 얻어진 [입력 불가능 문자]를 모두 제거 한다.
 */
function removeInvalidChar(obj, valid) {
    ///////////////////////////////////////////////////////////////////
    // (s) validation pattern list
    ///////////////////////////////////////////////////////////////////
    //
    var arrValidKey = new Array();
    var arrValidReg = new Array();

    arrValidKey[arrValidKey.length] = "D";
    arrValidReg[arrValidReg.length] = "([0-9])";

    arrValidKey[arrValidKey.length] = "E";
    arrValidReg[arrValidReg.length] = "([a-zA-Z])";

    arrValidKey[arrValidKey.length] = "K";
    //arrValidReg[arrValidReg.length] = "([ㄱ-힝])";
    arrValidReg[arrValidReg.length] = "([\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF])";

    arrValidKey[arrValidKey.length] = "J";
    arrValidReg[arrValidReg.length] = "([\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF])";

    arrValidKey[arrValidKey.length] = "C";
    arrValidReg[arrValidReg.length] = "([\u2E80-\u2EFF\u31C0-\u31EF\u3200-\u32FF\u3400-\u4DBF\u4E00-\u9FBF\uF900-\uFAFF\u20000-\u2A6DF\u2F800-\u2FA1F])";

    arrValidKey[arrValidKey.length] = "S";
    arrValidReg[arrValidReg.length] = "([^0-9ㄱ-힝a-zA-Z])";
    //
    // (s) validation pattern list
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    // (s) 패턴 정의
    ///////////////////////////////////////////////////////////////////
    //
    var validTmp = valid + ",";
    var pattern = "";

    for(var i = 0; i < arrValidKey.length; i++) {
        if(validTmp.indexOf(arrValidKey[i] + ",") != -1 || validTmp.indexOf(arrValidKey[i] + "[") != -1) {
            //특수문자의 경우 "S" 와  "S[&%]"를 구분한다.
            var type = validTmp.substring(validTmp.indexOf("S"), validTmp.indexOf("S") + 1);
            var reg = validTmp.substring(validTmp.indexOf("S") + 1, validTmp.length - 1);

            if(arrValidKey[i] == "S") {//특수문자
                if(reg.length > 1) {
                    pattern += "(" + reg + ")" + "|";
                } else {
                    pattern += arrValidReg[i] + "|";
                }
            } else {
                pattern += arrValidReg[i] + "|";
            }
        }
    }

    if(pattern.length > 0) {
        pattern = pattern.substring(0, pattern.length - 1) + "*";
    }
    //
    // (e) 패턴 정의
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    // (s) 입력 불가능 문자 제거
    ///////////////////////////////////////////////////////////////////
    //
    //정규식 생성.
    var RegExpObj = new RegExp(pattern, "gm");//g:blobal, i:ignoreCase, m:multiline

    //입력값중 입력불가능 문자 제거.
    var strValue    = obj.value;
    var tmpValue    = strValue.replace(RegExpObj, "", "gm");

    //입력 불가능한 문자 삭제처리
    if(tmpValue.length > 0) {
        for(var i = 0; i < tmpValue.length; i++) {
            strValue = strValue.replace(tmpValue.charAt(i), "");
        }
        //한글 입력 불가능 일 경우 blur 후 setFocus 처리
        if(validTmp.indexOf("K") == -1) {obj.blur(); obj.focus();}
        obj.value = strValue;
    }
    //
    // (e) 입력 불가능 문자 제거
    ///////////////////////////////////////////////////////////////////


    ///////////////////////////////////////////////////////////////////
    // (s) Max Length 체크
    ///////////////////////////////////////////////////////////////////
    //
    if(validTmp.indexOf("LEN[") != -1) {
        var lenCheckStr = validTmp.substring(validTmp.indexOf("LEN["), validTmp.indexOf("]", validTmp.indexOf("LEN[") + 1) + 1);
        //lenCheckStr ==> "LEN[xx, xxx]"
        var arrCheckVal = eval(lenCheckStr.substring(3));

        //숫자/문자 구분 해서 처리
        if(arrCheckVal.length == 2) {//문자
            var minLen  = arrCheckVal[0];
            var maxLen  = arrCheckVal[1];
            var valLen  = strValue.byteLength();
            //뒷자리 잘라내기.
            if(valLen - maxLen > 0) {
                strValue    = strValue.substring(0, strValue.length - (valLen - maxLen));

                //obj.blur();obj.focus();
                obj.value   = strValue;
            }

        } else if(arrCheckVal.length == 3) {//숫자
            var minLen      = arrCheckVal[0];
            var maxLen      = arrCheckVal[1] - arrCheckVal[2];
            var decimalLen  = arrCheckVal[2];

            strValue    = strValue.replace(/,/g, "");
            var arrVal  = strValue.split(".");
            if(arrVal.length == 2) {//소수점 존재
                //정수길이
                if(arrVal[0].length - maxLen > 0) {
                    strValue    = arrVal[0].substring(0, arrVal[0].length - (arrVal[0].length - maxLen)) + ".";
                } else {
                    strValue    = arrVal[0] + ".";
                }
                //소수길이
                if(arrVal[1].length - decimalLen > 0) {
                    strValue    += arrVal[1].substring(0, arrVal[1].length - (arrVal[1].length - decimalLen));
                } else {
                    strValue    += arrVal[1];
                }
            } else {//소수점 미존재
                //뒷자리 잘라내기.
                if(strValue.length - maxLen > 0) {
                    strValue    = strValue.substring(0, strValue.length - (strValue.length - maxLen));
                }
            }

            //obj.blur();obj.focus();
            obj.value   = strValue;
        }
    }
    //
    // (e) Max Length 체크
    ///////////////////////////////////////////////////////////////////
}


///////////////////////////////////////////////////////////////////////////////
//(s) 첨부파일 관련
///////////////////////////////////////////////////////////////////////////////
//
/**
 * 첫번째 인수에 해당하는 이름의 DIV object에 파일 첨부 태그를 추가한다.
 *@param divId      (String)    - 파일 Object를 추가할 DIV ID.
 *@param arrName    (int)       - 파일 Object의 name 배열. 배열 개수만큼 파일 객체 생성.
 */
function /*public*/ createAttachFileTag(divId, arrName) {
    //file Object 추가
    var obj         = document.getElementById(divId);
    var fileHtml    = '<span id="SPAN_FILE"><input type="file" name="attach_file" style="width:200px;"></span>';

    var appendHTML  = "";
    for(var i = 0; i < arrName.length; i++) {
        appendHTML += (i == 0 ? "":"<br />") + fileHtml.replace("attach_file", arrName[i]);
    }
    obj.innerHTML = appendHTML;
}
/**
 * 파일첨부 관련 태그를 생성한다.
 * (임시 저장 DIV, 추가버튼 DIV, 첨부파일용 DIV)
 */
function /*public*/ initAttachFileTag(fileInfoObj, isViewOnly) {
    //기존 첨부파일 보이기.
    _addExistFileTag(fileInfoObj, isViewOnly);

    var fileInputTag    = "";
    fileInputTag    += '<input type="hidden" id="SV_IS_ATTACH_FILE" name="SV_IS_ATTACH_FILE" value="Y" />';//서블릿에서 저장 처리 후 실제 파일을 삭제하기 위해
    fileInputTag    += '<input type="hidden" id="SV_FILE_DELETE_FILES" name="SV_FILE_DELETE_FILES" />';//삭제될 파일명
    fileInputTag    += '<div id="TMP_ATTACH_FILE_CODE" style="display:none;"></div>';//임시저장용.
    fileInputTag    += '<div id="DIV_FILE_TEXT"><input type="button" id="_FILE_ADD_BUTTON" value="Add" class="button_default" onClick="_addFileTag();" style="width:30px;" /></div>';//추가버튼
    fileInputTag    += '<div id="DIV_FILESETS"></div>';//첨부파일

    if(!isViewOnly) {
        document.write(fileInputTag);
    }
}
//기존 첨부 파일 태그를 추가한다.(삭제버튼 포함)
function /*private*/ _addExistFileTag(fileInfoObj, isViewOnly) {
    //fileInfoObj ==> {"files":[{"ATTACH_FILE_SQNC":"xxx","SVR_FILE_PATH":"xxx","SVR_FILE_NAME":"xxx","ATTACH_FILE_NAME":"xxx","FILE_SIZE":"xxx"}]}
    var arrFiles    = fileInfoObj.files;

    var fileObj         = null;
    var existFileTag    = "";
    var downloadParam   = "";
    for(var i = 0; i < arrFiles.length; i++) {
        fileObj = arrFiles[i];

        downloadParam   = "ATTACH_FILE_NAME="+Special_letter(fileObj.ATTACH_FILE_NAME)+"&SVR_FILE_PATH="+fileObj.SVR_FILE_PATH.replace(/\\/g, "\\\\")+"&SVR_FILE_NAME="+fileObj.SVR_FILE_NAME;

        existFileTag    += '<script type="text/javascript">var delFileInfo'+i+' = '+JSON.stringify(fileObj)+';</script>';//각파일의 정보를 javascript 변수에 담는다.
        existFileTag    += '<table id="DIV_EXIST_FILE_'+i+'" style="border:0px; padding:0px 0px 0px 0px; border-spacing:0px 0px 0px 0px; margin:0px 0px 0px 0px;">';
        existFileTag    += '  <tr>';
        existFileTag    += '    <td>'+fileObj.ATTACH_FILE_NAME+'</td>';
        if(!isViewOnly) {
            existFileTag    += '    <td><img class="button" border="0" align="absmiddle" onClick="_deleteAttachFile(delFileInfo'+i+', \'DIV_EXIST_FILE_'+i+'\');" onmouseout="buttonout(event);" onmouseover="buttonover(event);" onmouseup="buttonup(event);" onmousedown="buttondown(event);" style="" title="delete" src="/images/icon/btr_del.gif"/></td>';
        }
        existFileTag    += '    <td><img class="button" border="0" align="absmiddle" onClick="downloadAttachFile(\''+downloadParam+'\');" onmouseout="buttonout(event);" onmouseover="buttonover(event);" onmouseup="buttonup(event);" onmousedown="buttondown(event);" style="" title="download" src="/images/icon/btr_down.gif"/></td>';
        existFileTag    += '  </tr>';
        existFileTag    += '</table>';
    }
    //alert(existFileTag);
    document.write(existFileTag);
}
//File Input Object 태그를 추가한다.
function /*private*/ _addFileTag() {
    var objName     = _getNewAttachFileName();
    var fileHtml     = '<table id="DIV_'+objName+'" style="border:0px; padding:0px 0px 0px 0px; border-spacing:0px 0px 0px 0px; margin:0px 0px 0px 0px;">';
    fileHtml        += '  <tr>';
    fileHtml        += '    <td width="100"><input type="text" name="TXT_'+objName+'" id="TXT_'+objName+'" style="width:100px;" /></td>';
    fileHtml        += '    <td><input type="file" id="'+objName+'" name="'+objName+'" imageswap="true" style="cursor:pointer;" title="search" imagesrc="/images/icon/btn_search.gif" onChange="_setFileName(this);" /></td>';
    fileHtml        += '    <td width="150"><img class="button" border="0" align="absmiddle" onClick="_removeFileTag(\''+objName+'\');" onmouseout="buttonout(event);" onmouseover="buttonover(event);" onmouseup="buttonup(event);" onmousedown="buttondown(event);" style="" title="delete" src="/images/icon/btr_del.gif"/></td>';
    fileHtml        += '  </tr>';
    fileHtml        += '</table>';

    document.getElementById("TMP_ATTACH_FILE_CODE").innerHTML = fileHtml;//임시저장.
    document.getElementById("DIV_FILESETS").appendChild(document.getElementById("TMP_ATTACH_FILE_CODE").firstChild);
    document.getElementById("TMP_ATTACH_FILE_CODE").innerHTML = "";//임시저장 된 것 삭제

    //이미지로 대체.
    CustomFileButton.run();
}
function /*private*/ _deleteAttachFile(fileObj, deleteFileTableId) {
    //alert(fileObj.ATTACH_FILE_SQNC);return;
    var deleteFiles = document.getElementById("SV_FILE_DELETE_FILES").value;

    if(deleteFiles && deleteFiles.length > 0) {
        deleteFiles += "\n" + fileObj.ATTACH_FILE_SQNC + "|" + fileObj.SVR_FILE_PATH + "|" + fileObj.SVR_FILE_NAME;
    } else {
        deleteFiles = fileObj.ATTACH_FILE_SQNC + "|" + fileObj.SVR_FILE_PATH + "|" + fileObj.SVR_FILE_NAME;
    }

    //alert(deleteFiles);
    document.getElementById("SV_FILE_DELETE_FILES").value = deleteFiles;
    document.getElementById("DIV_FILE_CONTAINER").removeChild(document.getElementById(deleteFileTableId));
}
function /*private*/ _setFileName(obj) {
    var value   = obj ? obj.value : "";
    document.getElementById("TXT_"+obj.name).value = Special_letter(value);
}
function /*private*/ _removeFileTag(id) {
    var obj = document.getElementById("DIV_FILESETS");
    obj.removeChild(document.getElementById("DIV_"+id));
}
function /*private*/ _getNewAttachFileName(prefix) {
    var d = new Date();
    var t = d.getTime();

    return (prefix ? prefix : "SV_FILE") + "_" + t;
}
function /*private*/ downloadAttachFile(param) {
    //alert(param);return;
    var dlForm = document.getElementById("file_down_form");
    dlForm.action = "/servlet/com.mdaf.servlet.FileDownloadServlet?" + param;
    dlForm.submit();
}
//(e) 첨부파일 관련
///////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////
//(s) 필수입력 체크
///////////////////////////////////////////////////////////////////////////////
//
function checkRequiredField(f) {
    var validTmp    = "";
    var lenCheckStr = "";
    for(var i = 0; i < getForm(f).elements.length; i++) {
        if(getForm(f).elements[i].type && getForm(f).elements[i].ValidChars && (getForm(f).elements[i].type.toUpperCase() == "TEXT" || getForm(f).elements[i].type.toUpperCase() == "TEXTAREA")) {
            validTmp = getForm(f).elements[i].ValidChars + ",";
            lenCheckStr = validTmp.substring(validTmp.indexOf("LEN["), validTmp.indexOf("]", validTmp.indexOf("LEN[") + 1) + 1);
            //alert(getForm(f).elements[i].name + "," + lenCheckStr);

            //lenCheckStr ==> "LEN[xx, xxx]"
            var minLen  = parseInt(lenCheckStr.substring(4, lenCheckStr.indexOf(",")));
            var maxLen  = parseInt(lenCheckStr.substring(lenCheckStr.indexOf(",") + 1, lenCheckStr.length - 1));
            var valLen  = getForm(f).elements[i].value.byteLength();

            //최소입력 글자 체크
            if(minLen > valLen) {
                var tdObj = getForm(f).elements[i].parentElement;
                var trObj = tdObj.parentElement;
                var checkIdx = -1;

                for (var j = 0; j < trObj.cells.length; j++) {
                    if (trObj.cells[j] == tdObj) {
                        checkIdx = j - 2;
                    }
                }

                //alert("[" + trObj.cells[checkIdx].innerText +  "] needs at least " + minLen + " letters.");
                //alert("[" + trObj.cells[checkIdx].innerText +  "]는(은) 최소 " + minLen + " 자 이상 입력해야 합니다.");
                alert(getRequireCheckErrMsg(trObj.cells[checkIdx].innerText, minLen));
                getForm(f).elements[i].focus();
                return false;
            }
        }
    }

    return true;
}
//
//(s) 필수입력 체크
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//(s) 체크박스 체크여부 체크
//1.사용할 페이지에 체크박스는 table로 구성하고 하나의 tr로 묶는다. 
//2.페이지에서 사용중인 전체 체크박스 중 하나라도 체크가 되어있는지를 체크한다.
//ex. prdAdm110_p.jsp
///////////////////////////////////////////////////////////////////////////////
//
function checkRequiredCheckBox(f){
	var flag = false;
	var label = null;
	
	for(var i = 0; i < f.elements.length; i++) {
    	if( f.elements[i].type.toUpperCase() == "CHECKBOX" ) {
    		if( label == null ) label = i;
    		if( f.elements[i].checked ) flag = true;
    	}
    }
	
	if( !flag ){
		var msg = f.elements[label].parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.cells[0].innerText;
        alert(getRequireCheckErrMsg(msg));
        f.elements[label].focus();
	}
	
	return flag;
}
//
//(e) 체크박스 체크여부 체크
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//(s) 체크박스 체크상태 전체 변경
///////////////////////////////////////////////////////////////////////////////
//
function changeCheckBoxState(flag){
		
	for(var i = 0; i < f.elements.length; i++) {
		if( f.elements[i].type.toUpperCase() == "CHECKBOX" ) {
			f.elements[i].checked = flag;
		}
	}
}
//
//(e) 체크박스 체크여부 체크
///////////////////////////////////////////////////////////////////////////////

/**
 * tab 버튼의 활성화/비활성화 처리.
 * 활성화/비활성화 후 기본 활성화 할 탭 처리
 *
 *@param    obj   (Object)
 *              - tabObj    (Object)    : dhtmlXTabBar Object
 *              - idList    (Array)     : 처리할 tab ID  목록
 *              - flag      (boolean)   : ture:enable, false:disable
 *              - activeId  (String)    : optional, 처리후 선택(활성화)할 tab ID. 값이 없으면 첫번째 tab 활성화.
 *              - url       (String)    : optional, 처리후 선택(활성화)할 tab ID의 URL.
 */
function setActivateTabs(obj) {
    if(!obj) return;

    var tabObj  = obj.tabObj;
    var idList  = obj.idList;

    for(var i = 0; i < idList.length; i++) {
        if(obj.flag) {//enable
            tabObj.enableTab(idList[i]);
        } else {//disable
            tabObj.disableTab(idList[i], true);
        }
    }

    if(obj.activeId) {
        if(obj.url) {
            tabObj.setContentHref(obj.activeId, obj.url);
        }

        tabObj.enableTab(obj.activeId);
        tabObj.setTabActive(obj.activeId);
    }
}



/**
 * activex 활성화 처리.
 *
 *@param    id  (object)    : comment 태그의 아이디
 */
function loadObject(id) {
    document.write(id.text);
    id.id='';
}


function buttondown(e) {
    var evt = e || window.event;
    var img = evt.target || evt.srcElement;
    img.style.top=1;
    img.style.left=1;
}
function buttonup(e) {
    var evt = e || window.event;
    var img = evt.target || evt.srcElement;
    img.style.top=0;
    img.style.left=0;
}
function buttonover(e) {
    var evt = e || window.event;
    var img = evt.target || evt.srcElement;
    if(img.className!="button"|| (img.filters && img.filters.alpha==null)) return;
    if(img.filters) img.filters.alpha.opacity = 50;
}
function buttonout(e) {
    var evt = e || window.event;
    var img = evt.target || evt.srcElement;
    if(img.className!="button"|| (img.filters && img.filters.alpha==null)) return;
    if(img.filters) img.filters.alpha.opacity = 100;
    img.style.top=0;
    img.style.left=0;
}



/******************************************************************************
 * (s) NumberFormat
 *****************************************************************************/
function formatNumber(n, format) {
    if (isNaN(n)) return;
    if (n.trim() == "") return;

    var i,c,f,comma,symbol='',sign='',decimals='',integers='';
    var fInt,fDec,nInt,nDec,len=0,cnt=0;
    if(n<0) sign='-';
    n+='';
    if(sign) n=n.replace('-','');
    format=(format)? format+'':'#,##0.00';
    if(format.indexOf(',')>=0) comma=',';
    if(format.indexOf('$')>=0) symbol='$';
    else if(format.indexOf('%')>=0) symbol='%';
    s=format.split('.');
    fInt=((s[0]==''||s[0]==null||s[0]=='undefinded')? '':s[0]);
    fInt=fInt.split('').reverse().join('');
    fDec=(s[1]==''||s[1]==null||s[1]=='undefinded')? '':s[1];
    s=n.split('.');
    nInt=((s[0]==''||s[0]==null||s[0]=='undefinded')? '':s[0]);
    nInt=nInt.split('').reverse().join('');;
    nDec=(s[1]==''||s[1]==null||s[1]=='undefinded')? '':s[1];
    if (nInt) len=nInt.length;
    if (fInt.length>len) len=fInt.length;
    for(i=0;i<len;i++) {
        c=nInt.charAt(i);
        f=fInt.charAt(i);
        cnt++;
        if (cnt==4 && comma && (c||f=='0')) integers+=comma;
        if(f=='0' && !c) integers+='0';
        else if(c) integers+=c;
        if (cnt==4) cnt=1;
    }
    if(fDec) len=fDec.length;
    for(i=0;i<len;i++) {
        c=nDec.charAt(i);
        f=fDec.charAt(i);
        if(f=='0' && !c) decimals+='0';
        else if((f=='#' || f=='0') && c) decimals+=c;
    }
    f=((integers+'').split('').reverse().join(''))+((decimals)? '.'+decimals:'');
    if(symbol=='%') f+=symbol;
    else f=symbol+f;

    return sign+f;
}

/******************************************************************************
 * (e) NumberFormat
 *****************************************************************************/

/******************************************************************************
 * (s) NumberFormat For Grid
 *****************************************************************************/
//input tag의 onblur event에 사용
function setDecimalFormatForInputAtBlur(obj, format) {
    if (obj.value != "") {
        format = (format) ? format + '' : '#,##0.0';
        obj.value = formatNumber(obj.value.replace(/,/g,""), format);
    }
}

//total 계산시 (,)적용
function setDecimalFormatForTotal(value, format) {
    if (value != "") {
        format = (format) ? format + '' : '#,##0.0';
        value = formatNumber(value.replace(/,/g,""), format);
        return value;
    }
}

function removeDecimalFormatForInput(form) {
    for (var i = 0; i < form.length; i++) {
        if (form[i].tagName.toLowerCase() == "input" && form[i].type.toLowerCase() == "text" && form[i].readOnly == false) {
            form[i].value = form[i].value.replace(/,/g,"");
        }
    }
}

//DHtmlX Grid 의 특정Cell 에 사용
function setDecimalFormatForCell(gridObj, rowId, cellIdx, format) {
    format = (format) ? format + '' : '#,##0.0';
    gridObj.cells(rowId, cellIdx).setValue(formatNumber(gridObj.cells(rowId, cellIdx).getValue(), format));
}

//DHtmlX Grid의 특정열 전체에 사용
function setDecimalFormatForAllRows(gridObj, cellIdx, format) {
    /*
    if (format != "#,###.##") {
        alert(format + ":" + cellIdx);
        gridObj.setNumberFormat(format, cellIdx);
    }
    */
    format = (format) ? format + '' : '#,##0.0';

    for (var i = 0; i < gridObj.getRowsNum(); i++) {
        gridObj.cells(gridObj.getRowId(i), cellIdx).setValue(formatNumber(gridObj.cells(gridObj.getRowId(i), cellIdx).getValue(), format));
    }
}

//NumberFormat에 의향 Comma 제거
function removeCommaForAllRows(gridObj, cellIdx) {
    for (var i = 0; i < gridObj.getRowsNum(); i++) {
        gridObj.cells(gridObj.getRowId(i), cellIdx).setValue(gridObj.cells(gridObj.getRowId(i), cellIdx).getValue().replace(/,/g,""));
    }
}

/******************************************************************************
 * (e) NumberFormat For Grid
 *****************************************************************************/

/******************************************************************************
 * (s) Grid To CVS value
 *****************************************************************************/

//sourceString 에서 delim 사이에 특정 문자열이 있으면 delim(exceptDelim)사이를 모두 삭제
function removeStringGridCVS(sourceString, searchStr, delim) {
    var rowsArray = sourceString.split("\n");
    var cellsArray = null;
    var removedString = "";

    for (var i = 0; i < rowsArray.length; i++) {
        cellsArray = rowsArray[i].split(delim);

        for (var j = 0; j < cellsArray.length; j++) {
            if (cellsArray[j].trim().startsWith(searchStr)) {
                if (j < cellsArray.length - 1) {
                    removedString += delim;
                }
            } else {
                removedString += cellsArray[j];

                if (j < cellsArray.length - 1) {
                    removedString += delim;
                }
            }
        }

        removedString += "\n";
    }

    return removedString;
}

function onExcelDownload(tablId, menuId) {
    var delim = "|";
    var gridObj = null;
    var hasError = false;
    var pageTitle = "";

    try {
        gridObj = eval("dataFrame" + tablId).detailGrid;

        if (typeof (gridObj) == "undefined") {
            hasError = true;
        }
    } catch (e) {
        hasError = true;
    }

    try {
        pageTitle = document.getElementById("page_title").innerText;
    } catch (e) {
        if (menuId) {
            if (parseInt(tablId) > 3) {
                pageTitle = this.parent.document.getElementById("page_title").innerText + " (" + this.parent.tabbar.getLabel("tab" + (parseInt(tablId) + 1)) + ")";
            } else {
                pageTitle = this.parent.document.getElementById("page_title").innerText + " (" + this.parent.tabbar.getLabel("tab" + tablId) + ")";
            }
        } else {
            pageTitle = this.parent.document.getElementById("page_title").innerText + " (" + this.parent.tabbar.getLabel("tab" + tablId) + ")";
        }
    }

    if (hasError) {
        //alert("Excel Export Not Possible.");
        alert("해당화면은 Excel 출력이 불가능합니다.");
        return false;
    }

    if (!this.xslform) {
        this.xslform = document.createElement("FORM");
        this.xslform.action = "/servlet/com.mdaf.servlet.CommonServlet";
        this.xslform.method = "post";
        this.xslform.target = "ExcelDownloadFrame";
        document.body.appendChild(this.xslform);
        var i1 = document.createElement("INPUT");
        i1.type = "hidden";
        i1.name = "CSV_DATA";
        this.xslform.appendChild(i1);
        var i2 = document.createElement("INPUT");
        i2.type = "hidden";
        i2.name = "CSV_HEADER";
        this.xslform.appendChild(i2);
        var i3 = document.createElement("INPUT");
        i3.type = "hidden";
        i3.name = "COL_SKIP_CNT";
        i3.value = "1";
        this.xslform.appendChild(i3);
        var i4 = document.createElement("INPUT");
        i4.type = "hidden";
        i4.name = "FILE_NAME";
        i4.value = pageTitle;
        this.xslform.appendChild(i4);
        var i5 = document.createElement("INPUT");
        i5.type = "hidden";
        i5.name = "actionType";
        i5.value = "excelDownload";
        this.xslform.appendChild(i5);
        var i6 = document.createElement("INPUT");
        i6.type = "hidden";
        i6.name = "MENU_ID";
        i6.value = "EXCEL_DOWN";
        this.xslform.appendChild(i6);
    }

    gridObj.setCSVDelimiter(delim);

    var cvs = removeStringGridCVS(gridObj.serializeToCSV(), "<INPUT", delim);

    this.xslform.childNodes[0].value = cvs;

    var cvs_header = [];

    var l = gridObj._cCount;

    for (var i = 0; i < l; i++) {
        cvs_header.push(gridObj.getHeaderCol(i));
    }

    cvs_header = cvs_header.join(delim);

    this.xslform.childNodes[1].value = cvs_header;

    this.xslform.submit();
}

/******************************************************************************
 * (e) Grid To CVS value
 *****************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//(s) Grid Object Memory Leak 방지 처리
///////////////////////////////////////////////////////////////////////////////
//
function doDestructorGridObj(gridObjs) {
    try {
        for(var i = 0; i < gridObjs.length; i++) {
            try {
                gridObjs[i].destructor();
            } catch(e) {
                ;//throw(e);
            }
        }
    } catch(e) {
        ;
    }
}

function doHideWindow(win) {
    try {
        win.hide();
    } catch(e) {
        ;//throw(e);
    }
}

function doAttachURL(obj, url) {
    if (!obj._frame) {
        obj.attachURL(url);
    } else {
        obj._frame.src = url;
    }
}
//
//(e) Grid Object Memory Leak 방지 처리
///////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////
//(s) Flash Object 삽입
///////////////////////////////////////////////////////////////////////////////
//
function makeFlashObj(a,m,h,f,l,d,g,k,e) {
    l = (l == undefined) ? "transparent" : l;
    g = (g == undefined) ? "#FFFFFF" : g;
    k = (k == undefined) ? true : k;
    e = (e == undefined) ? false : e;
    var j;
    var b=[];
    b.push('<object width="'+h+'" height="'+f+'" id="'+m+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" >');
    b.push('<param name="allowScriptAccess" value="always" />');
    b.push('<param name="quality" value="high" />');
    b.push('<param name="menu" value="'+e+'" />');
    b.push('<param name="movie" value="'+a+'" />');
    b.push('<param name="wmode" value="'+l+'" />');
    b.push('<param name="bgcolor" value="'+g+'" />');
    b.push('<param name="FlashVars" value="'+d+'">');
    b.push('<param name="allowFullScreen" value="'+k+'">');
    b.push('<embed src="'+a+'" quality="high" wmode="'+l+'" menu= "'+e+'" FlashVars="'+d+'" bgcolor="'+g+'" width="'+h+'" height="'+f+'" name="'+m+'" allowFullScreen="'+k+'" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
    b.push("</object>");
    j = b.join("");
    return j;
}

function showFlash(f,b,j,e,d,h,a,g) {
    document.write(makeFlashObj(f,b,j,e,d,h,a,g));
}

function showFlashObj(src, w, h, param)
{
    html = '';
    html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"  id="'+src+'" WIDTH="'+w+'" HEIGHT="'+h+'">';
	html += '<PARAM NAME="wmode" VALUE="transparent" />';
    html += '<PARAM NAME=movie VALUE="'+src+'">';
    html += '<PARAM NAME="allowScriptAccess" VALUE="always">';
    html += '<PARAM NAME=quality VALUE=high>';
    html += '<PARAM NAME="FlashVars" VALUE="'+param+'">';
    html += '<EMBED src="'+src+'" quality=high bgcolor=#FFFFFF  WIDTH="'+w+'" HEIGHT="'+h+'" TYPE="application/x-shockwave-flash" align="middle" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" name="'+src+'" ></EMBED>';
    html += '</OBJECT>';
    document.write(html);
}
//
//(e) Flash Object 삽입
///////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////
//(s) 메시지 포맷팅
///////////////////////////////////////////////////////////////////////////////
//
function getFormatedMsg(msg, params) {
    for(var i = 0; params && i < params.length; i++) {
        try {
            var pattern     = "{"+i+"}";
            var RegExpObj   = new RegExp(pattern, "gm");//g:blobal, i:ignoreCase, m:multiline
            msg.replace(RegExpObj, params[i]);
        } catch(e) {
            ;//throw(e);
        }
    }

    return msg;
}
//
//(e) 메시지 포맷팅
///////////////////////////////////////////////////////////////////////////////

function formula_activex() {
    try {
        var xObj = new ActiveXObject("FORMULASOILX.FormulaSOILXCtrl.1");

        if (xObj) {
            Installed = true;
        } else {
            Installed = false;
        }
    } catch(ex) {
        Installed = false;
    }

    return Installed;
}

function orgtree_activex() {
    try {
        var xObj = new ActiveXObject("ORGTREEX.OrgTreeXCtrl.1");

        if (xObj) {
            Installed = true;
        } else {
            Installed = false;
        }
    } catch(ex) {
        Installed = false;
    }

    return Installed;
}

function strategytree_activex() {
    try {
        var xObj = new ActiveXObject("STRATEGYTREEX.StrategyTreeXCtrl.1");

        if (xObj) {
            Installed = true;
        } else {
            Installed = false;
        }
    } catch(ex) {
        Installed = false;
    }

    return Installed;
}

function valuechain_activex() {
    try {
        var xObj = new ActiveXObject("VALUECHAINX.ValueChainXCtrl.1");

        if (xObj) {
            Installed = true;
        } else {
            Installed = false;
        }
    } catch(ex) {
        Installed = false;
    }

    return Installed;
}

function valuemap_activex() {
    try {
        var xObj = new ActiveXObject("VALUEMAPX.ValueMapXCtrl.1");

        if (xObj) {
            Installed = true;
        } else {
            Installed = false;
        }
    } catch(ex) {
        Installed = false;
    }

    return Installed;
}

function vertkpialignment_activex() {
    try {
        var xObj = new ActiveXObject("VERTKPIALIGNMENTX.VertKpiAlignmentXCtrl.1");

        if (xObj) {
            Installed = true;
        } else {
            Installed = false;
        }
    } catch(ex) {
        Installed = false;
    }

    return Installed;
}

function check_activex(type) {
    var rValue;
    if (type == "1") { //formula
        rValue = formula_activex();
    } else if (type == "2") {//orgtree
        rValue = orgtree_activex();
    } else if (type == "3") {//strategytree
        rValue = strategytree_activex();
    } else if (type == "4") {//valuechain
        rValue = valuechain_activex();
    } else if (type == "5") {//valuemap
        rValue = valuemap_activex();
    } else if (type == "6") {//vertkpialignment
        rValue = vertkpialignment_activex();
    }
    if (rValue == false) { //설치 안된경우
        //window.open("/activex/popup/popup.html", "activex", "status=no,width=787,height=600,scrollbars=yes,resizable=no");
        dhxWins = parent.top.createWindow("ActiveXAlert", 800, 600, window);
        dhxWins.window("ActiveXAlert").center();//화면 중앙으로
        dhxWins.window("ActiveXAlert").setText("ActiveX Setup");
        doAttachURL(dhxWins.window("ActiveXAlert"), "/activex/popup/popup.html");
    }
}

function Special_letter(CheckValue){
    var strTemp = CheckValue;
        strTemp = replaceAll(strTemp,'&' , '＆');
        strTemp = replaceAll(strTemp,'#', '＃');
        strTemp = replaceAll(strTemp,'"', '″');
        strTemp = replaceAll(strTemp,'\'', '‘');
        strTemp = replaceAll(strTemp,';', '；');
        strTemp = replaceAll(strTemp,'/', '／');
        strTemp = replaceAll(strTemp,'`', '｀');
        strTemp = replaceAll(strTemp,'|', '｜');
        strTemp = replaceAll(strTemp,'?', '？');
        strTemp = replaceAll(strTemp,':', '：');
        strTemp = replaceAll(strTemp,',', '，');
        strTemp = replaceAll(strTemp,'+', '＋');
        strTemp = replaceAll(strTemp,'-', '－');
        strTemp = replaceAll(strTemp,'=', '＝');
        strTemp = replaceAll(strTemp,'*', '＊');
        strTemp = replaceAll(strTemp,'%', '％');
    return strTemp;
}

function replaceAll(strTemp, strValue1, strValue2){
    while(1){
        if( strTemp.indexOf(strValue1) != -1 )
        strTemp = strTemp.replace(strValue1, strValue2);
        else
        break;
    }
    return strTemp;
}

function setRowBgColorAndRowLockByCellValue(gridObj, cellIdx, diffValue, bgColor, mode) {
    for (var i = 0; i < gridObj.getRowsNum(); i++) {
        if (gridObj.cells2(i, cellIdx).getValue() == diffValue) {
            gridObj.setRowColor(gridObj.getRowId(i), bgColor);
            gridObj.lockRow(gridObj.getRowId(i), mode);
        }
    }
}

function setRowBgColorByCellValue(gridObj, cellIdx, diffValue, bgColor) {
    for (var i = 0; i < gridObj.getRowsNum(); i++) {
        if (gridObj.cells2(i, cellIdx).getValue() == diffValue) {
            gridObj.setRowColor(gridObj.getRowId(i), bgColor);
        }
    }
}

function setRowLockByCellValue(gridObj, cellIdx, diffValue, mode) {
    for (var i = 0; i < gridObj.getRowsNum(); i++) {
        if (gridObj.cells2(i, cellIdx).getValue() == diffValue) {
            gridObj.lockRow(gridObj.getRowId(i), mode);
        }
    }
}

function remakeSelect(selectObjId, selectTargetObjId, hasAll) {

    var selectedValue = eval("d"+selectObjId).getSelectedValue();
    var selectTargetObj = eval("d" + selectTargetObjId);
    var listObj = eval(selectTargetObjId + "List");

    selectTargetObj.clearAll();

    if (hasAll) {
        selectTargetObj.addOption("ALL", "ALL");
    }

    for (var i = 0; i < listObj.length; i++) {
        if (selectedValue != "ALL") {
            if (listObj[i].indexOf(selectedValue + "_") > -1) {
                selectTargetObj.addOption(listObj[i].substring(listObj[i], listObj[i].indexOf(":")), listObj[i].substring(listObj[i].indexOf(":") + 1));
            }
        } else {
            if (listObj[i].indexOf(selectedValue + "_") > -1) {
                selectTargetObj.addOption(listObj[i].substring(listObj[i], listObj[i].indexOf(":")), listObj[i].substring(listObj[i].indexOf(":") + 1));
            }
        }
    }

    selectTargetObj.selectOption(0);
}

function nullToNBSP(value) {
    if (value == null || value == "" || value == "null") {
        return "&nbsp;";
    } else {
        return value;
    }
}
/******************************************************************************
 * (s) Front Common Function
 *****************************************************************************/
/**
 *  쿠키설정
 */
/*
function setCookie(name, value, expires) {
    document.cookie = name + "=" + escape (value) + "; path=/; expires=" + expires.toGMTString();
}
*/
function setCookie( name, value, expiredays ) {
	var todayDate = new Date();
	todayDate.setDate( todayDate.getDate() + expiredays );
	document.cookie = name + '=' + escape( value ) + '; path=/; expires=' + todayDate.toGMTString() + ';'
}


/**
 *  쿠키 호출
 */
function getCookie(Name) {
    var search = Name + "=";

    if (document.cookie.length > 0) { // 쿠키가 설정되어 있다면
        offset = document.cookie.indexOf(search);

        if (offset != -1) {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);

            if (end == -1) {
                end = document.cookie.length;
            }

            return unescape(document.cookie.substring(offset, end));
        }
    }

    return "";
}

/**
 *  사용자 아이디 호출
 */
function getUserId() {
    getForm(f).save_id.checked = ((getForm(f).USER_ID.value = getCookie("www.kiskorea.com_userid")) != "");
    return getForm(f).save_id.checked;
}

/**
 *  사용자 아이디 저장
 */
function saveUserId() {
    if (f.save_id) {
        var expdate = new Date();

        if (f.save_id.checked) {
            //expdate.setTime(expdate.getTime() + 1000 * 3600 * 24 * 30);
			setCookie("www.kiskorea.com_userid", f.USER_ID.value, 1000);
        } else {
            //expdate.setTime(expdate.getTime() - 1);
			setCookie("www.kiskorea.com_userid", f.USER_ID.value, -1);
        }
    }
}

/**
 *  표시언어변경시
 */
function changeDefaultLangCode(chgDefaultLandCode) {
	document.getElementById("select_language").value = chgDefaultLandCode;
    if (location.href.indexOf("community_view.jsp") > -1) {
        getForm(f).action = "/jsp/community_list.jsp";
    }
    getForm(f).target = "_self";
    getForm(f).submit();
}

function getForm(f) {
    if (f) {
        return f;
    } else if (document.atForm) {
        return document.atForm;
    } else if (document.dataFrom) {
        return document.dataFrom;
    } else if (document.dataForm) {
        return document.dataForm;
    }
}

/**
 *  상단메뉴클릭시
 */
function onHeaderMenu(menuCode) {
    if (menuCode == "alltabi") {
        getForm(f).target = "_self";
        getForm(f).action = "/";
        getForm(f).submit();
    } else if (menuCode == "cart") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/product_cart.jsp?SC_CATEGORY=";
        getForm(f).submit();
    } else if (menuCode == "alltabiinfo") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/kis_info.jsp?SC_CATEGORY=";
        getForm(f).submit();
    } else if (menuCode == "sitemap") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/kis_sitemap.jsp?SC_CATEGORY=";
        getForm(f).submit();
    } else if (menuCode == "customercenter") {
        onBoardListByCategoryId("CMI");
    } else {
        alert("onHeaderMenu = " + menuCode);
    }
}

/**
 *  상단카테고리클릭시
 */
function onCategoryMenu(menuCode) {
	
   // if (menuCode == "HT") {
   //     window.open("http://hotel.alltabi.com", 'hotelAlltabi').focus();
   // } else {
        if (getForm(f).SV_CITYCODE) getForm(f).SV_CITYCODE.value = "";
        if (getForm(f).SV_AREATYPE) getForm(f).SV_AREATYPE.value = "";
        if (getForm(f).SV_AREACODE) getForm(f).SV_AREACODE.value = "";
        if (getForm(f).SV_TAB_ID) getForm(f).SV_TAB_ID.value = "";

        getForm(f).target = "_self";
        getForm(f).action = "/jsp/category_" + menuCode.toLowerCase() + ".jsp?SC_CATEGORY=" + menuCode;
        //getForm(f).SC_CATEGORY.value = menuCode;
        getForm(f).submit();
  //  }
}

/**
 *  인기검색어클릭시
 */
function onPopularSearch(popularText) {
    getForm(f).SC_SEARCH_TXT.value = popularText;
}

/**
 *  검색버튼클릭시
 */
function onTextSearch(textSearch) {
    getForm(f).target = "_self";
    getForm(f).action = "/jsp/kis_search.jsp";
    getForm(f).submit();
}

/**
 *  로그인폼에서 엔터 클릭시
 */
function onEnter(e) {
    var evt         = e || window.event;
    var keyCode     = evt.which || evt.keyCode;
    var srcElement  = evt.target || evt.srcElement;

    if(keyCode == 13){
		if (srcElement.name == "SC_SEARCH_TXT") {
			evt = null;
			onTextSearch(getForm(f).SC_SEARCH_TXT.value);
			return;
		}else if (srcElement.name == "USER_ID") {
			evt = null;
			getForm(f).PASSWD.focus();
			return;
		}else if (srcElement.name == "PASSWD") {
			evt = null;
			onLoginMenu("login");
		}else{
			return;
		}
    }
}

/**
 *  좌측메뉴클릭시
 */
function onLeftCategory(categoryCode) {
    var param = "";

    if (categoryCode.substring(0, 2) == "PC") {
        if (categoryCode.substring(2) == "A") param = "ESA";
        else if (categoryCode.substring(2) == "B") param = "ESB";
        else if (categoryCode.substring(2) == "C") param = "ESD";
        else if (categoryCode.substring(2) == "D") param = "ENA";
        else if (categoryCode.substring(2) == "E") param = "TRA";
        else if (categoryCode.substring(2) == "F") param = "TRD";
        else if (categoryCode.substring(2) == "G") param = "TRE";
        else if (categoryCode.substring(2) == "H") param = "ESA";
    } else if (categoryCode.substring(0, 2) == "CM") {
        param = categoryCode;
    } else {
        param = categoryCode;
    }

    getForm(f).target = "_self";

	if (getForm(f).SC_CATEGORY) {
		getForm(f).action = "/jsp/product_list.jsp?SV_PAGE=1";
		getForm(f).SC_CATEGORY.value = param;
	} else {
	    getForm(f).action = "/jsp/product_list.jsp?SV_PAGE=1&SC_CATEGORY=" + param;
	}

    if (getForm(f).SV_TAB_ID) getForm(f).SV_TAB_ID.value = "";

    getForm(f).submit();
}

/**
 *  ExperssOn클릭시
 */
function onExpressMenu(menuCode) {
    getForm(f).SC_CATEGORY.value = "";

    if (menuCode == "tour") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/expresson_pr.jsp";
        getForm(f).submit();
    } else if (menuCode == "discount") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/expresson_cp.jsp";
        getForm(f).submit();
    } else if (menuCode == "event") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/expresson_event.jsp";
        getForm(f).submit();
    } else if (menuCode == "area") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/expresson_area.jsp";
        getForm(f).submit();
    } else if (menuCode == "dutyfree") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/category_df.jsp?SC_CATEGORY=DF";
        getForm(f).submit();
    } else if (menuCode == "comeway") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/kis_comeway.jsp?SC_CATEGORY=";
        getForm(f).submit();
    } else if (menuCode == "mailqna") {
        writeBoard("HELPMAIL");
    } else if (menuCode == "subway") {
        window.open("http://www.smrt.co.kr/Train/Subwaymap/Jpn/Subwaymap.jsp", 'atSubway', 'width=1024,height=768');
    } else if (menuCode == "twitter") {
        window.open("http://twitter.com/kiskorea", 'atSubway');
    } else if (menuCode == "blog") {
        window.open("http://ameblo.jp/kiskorea", 'atSubway');
    } else if (menuCode == "hotel") {
        //window.open("http://hotel.alltabi.com", 'hotelAlltabi').focus();
    	getForm(f).target = "_self";
        //getForm(f).action = "/jsp/category_ht.jsp?SC_CATEGORY=HT";
    	getForm(f).action = "/jsp/event/kisevent_02.jsp";    	
        getForm(f).submit();
    } else if (menuCode == "korea") {
        window.open("http://japanese.visitkorea.or.kr/jpn/AK/AK_JA_1_1_1.jsp", 'kto');
    } else {
        alert("onExpressMenu = " + menuCode);
    }
}

/**
 *  ExperssOn 의 지하철정보 클릭시
 */
function onExpressMenuSubway(langCode) {
    getForm(f).SC_CATEGORY.value = "";
    if (langCode == "K") {
    	window.open("http://www.smrt.co.kr/program/cyberStation/main.jsp", 'atSubway', 'width=1024,height=768');
    } else if (langCode == "J") {
    	window.open("http://www.smrt.co.kr/program/cyberStation/main2.jsp?lang=j", 'atSubway', 'width=1024,height=768');
    } else if (langCode == "C") {
    	window.open("http://www.smrt.co.kr/program/cyberStation/main2.jsp?lang=c2", 'atSubway', 'width=1024,height=768');
    } else if (langCode == "U") {
    	window.open("http://www.smrt.co.kr/program/cyberStation/main2.jsp?lang=e", 'atSubway', 'width=1024,height=768');
    } 
}

/**
 *  ExperssOn 의 한국정보 클릭시
 */
function onExpressMenuKorea(langCode) {
    getForm(f).SC_CATEGORY.value = "";
    if (langCode == "K") {
    	window.open("http://chinese.visitkorea.or.kr/chs/CU/CU_CHG_3_6_1.jsp", 'kto');
    } else if (langCode == "J") {
    	window.open("http://japanese.visitkorea.or.kr/jpn/AK/AK_JA_1_1_1.jsp", 'kto');
    } else if (langCode == "C") {
    	window.open("http://chinese.visitkorea.or.kr/chs/CU/CU_CHG_3_6_1.jsp", 'kto');
    } else if (langCode == "U") {
    	window.open("http://japanese.visitkorea.or.kr/jpn/AK/AK_JA_1_1_1.jsp", 'kto');
    } 
}

/**
 *  환율계산버튼클릭시
 */
function calcCurrencyRate() {
    alert("calcCurrencyRate");
}

/**
 *  Banner클릭시
 */
function onBannerMenu(menuCode) {
    alert("onBannerMenu = " + menuCode);
}

/**
 *  Footer메뉴클릭시
 */
function onFooterMenu(menuCode) {
    if (menuCode == "alltabiinfo") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/alltabi_info.jsp?SC_CATEGORY=";
        getForm(f).submit();
    } else if (menuCode == "private") {
        getForm(f).target = "_self";
        getForm(f).action = "/jsp/kis_private.jsp?SC_CATEGORY=";
        getForm(f).submit();
    } else if (menuCode == "comeway") {
        onExpressMenu(menuCode);
    } else if (menuCode == "groupqna") {
        //onBoardListByCategoryId("CML");
        writeBoard("GROUPQNA");
    } else {
        alert("onFooterMenu = " + menuCode);
    }
}

/**
 *  Popup에서 Product 클릭시
 */
function onProductDetailMain(categoryCode, productCode) {
    getForm(f).target = "_parent";
/*
    getForm(f).SC_CATEGORY.value = categoryCode;
    getForm(f).SV_PRODUCT_CODE.value = productCode;
    getForm(f).action = "/jsp/product_detail.jsp";
*/
    getForm(f).action = "/jsp/product_detail.jsp?SC_CATEGORY=" + categoryCode + "&SV_PRODUCT_CODE=" + productCode;
    getForm(f).submit();
}

/**
 *  Product 클릭시
 */
function onProductDetail(categoryCode, productCode) {
	if (getForm(f).SV_TAB_ID) getForm(f).SV_TAB_ID.value = "1";
    getForm(f).target = "_self";
/*
    getForm(f).SC_CATEGORY.value = categoryCode;
    getForm(f).SV_PRODUCT_CODE.value = productCode;
    getForm(f).action = "/jsp/product_detail.jsp";
*/
    getForm(f).action = "/jsp/product_detail.jsp?SC_CATEGORY=" + categoryCode + "&SV_PRODUCT_CODE=" + productCode;
    getForm(f).submit();
}

/**
 *  쇼핑,음식,에스테 지도 Flash 클릭시
 */
function setArea(cityCode, areaType, areaCode) {
    getForm(f).target = "_self";
/*
    getForm(f).action = "";
    getForm(f).SV_CITYCODE.value = cityCode;
    getForm(f).SV_AREATYPE.value = areaType;
    getForm(f).SV_AREACODE.value = areaCode;
*/
    if (location.href.indexOf("SV_CITYCODE") > -1) {
        getForm(f).action = location.href.substring(0, location.href.indexOf("SV_CITYCODE") - 1) + "&SV_CITYCODE=" + cityCode + "&SV_AREATYPE=" + areaType + "&SV_AREACODE=" + areaCode;
    } else {
        getForm(f).action = location.href + "&SV_CITYCODE=" + cityCode + "&SV_AREATYPE=" + areaType + "&SV_AREACODE=" + areaCode;
    }
    getForm(f).submit();
}

/**
 *  상품상세에서 지도 인쇄 클릭시
 */
function printMap(categoryCode, productCode) {
	window.open("/jsp/printCoupon.jsp?SC_CATEGORY=" + categoryCode + "&SV_PRODUCT_CODE=" + productCode, "printCoupon", "width=650,height=550,scrollbars=yes").focus();
}

/**
 *  게시판 목록 링크 (카테고리ID)
 */
function onBoardListByCategoryId(categoryId) {
    var boardType = null;

    if (categoryId == "CMA") {
        boardType = "NOTICE";
    } else if (categoryId == "CMB") {
        boardType = "TODAY";
    } else if (categoryId == "CMC") {
        boardType = "TRAVELINFO";
    } else if (categoryId == "CMD") {
        boardType = "HRREPORT";
    } else if (categoryId == "CME") {
        boardType = "TRAVELEXP";
    } else if (categoryId == "CMF") {
        boardType = "DUTYSEARCH";
    } else if (categoryId == "CMG") {
        boardType = "EVENTSALE";
    } else if (categoryId == "CMH") {
        boardType = "FAQ";
    } else if (categoryId == "CMI") {
        boardType = "QNA";
    } else if (categoryId == "CMJ") {
        boardType = "DUTYFREE";
    } else if (categoryId == "CMK") {
        boardType = "HELPMAIL";
    } else if (categoryId == "CML") {
        boardType = "GROUPQNA";
    } else if (categoryId == "CMM") {
        boardType = "COSMETIC";
    }  else if (categoryId == "CMN") {
        boardType = "FOUND";
    } else {
        alert("onBoardListByCategoryId = " + boardType);
    }

    getForm(f).SC_CATEGORY.value = categoryId;

    onBoardList(boardType);
}

/**
 *  게시판 목록 링크
 */
function onBoardList(boardType) {
    if (getForm(f).SV_PAGE) getForm(f).SV_PAGE.value = "";
    if (getForm(f).SV_SEARCH_FLAG) getForm(f).SV_SEARCH_FLAG.value = "";
    if (getForm(f).SV_SEARCH_TEXT) getForm(f).SV_SEARCH_TEXT.value = "";

    getForm(f).target = "_self";
    getForm(f).action = "/jsp/community_list.jsp?SV_BOARD_TYPE=" + boardType;
    getForm(f).submit();
}

/**
 *  게시판 글쓰기
 */
function writeBoard(boardType) {
    getForm(f).target = "_self";
    getForm(f).action = "/jsp/community_write.jsp?SV_BOARD_TYPE=" + boardType;
    getForm(f).submit();
}

/**
 *  게시물 수정
 */
function onBoardModify(boardType, boardSeq) {
    getForm(f).target = "_self";
    getForm(f).action = "/jsp/community_write.jsp?SV_BOARD_TYPE=" + boardType + "&SV_BOARD_SEQ=" + boardSeq;
    getForm(f).submit();
}

/**
 *  게시물 삭제
 */
function onBoardDelete(boardType, boardSeq) {
    if (!isDelete()) {
        return;
    }
    getForm(f).target = "_self";
    getForm(f).actionType.value = "deleteBoardArticle";
    getForm(f).action = "/jsp/community_action.jsp?SV_BOARD_TYPE=" + boardType + "&SV_BOARD_SEQ=" + boardSeq;
    getForm(f).submit();
}

/**
 *  게시판 목록 링크 (동일게시판)
 */
function onBoardListSameBoard(boardType) {
    getForm(f).target = "_self";
    getForm(f).action = "/jsp/community_list.jsp?SV_BOARD_TYPE=" + boardType;
    getForm(f).submit();
}

/**
 *  게시판 상세 링크
 */
function onBoardDetail(boardSeq) {
    getForm(f).target = "_self";
    getForm(f).SC_CATEGORY.value = "CM";
    getForm(f).action = "/jsp/community_view.jsp?SV_BOARD_SEQ=" + boardSeq;
    getForm(f).submit();
}

/**
 *  커뮤니티 화면 링크
 */
function onCommunityMenu(menuCode) {
    if (menuCode == "comeway") {
        onExpressMenu(menuCode);
    } else if (menuCode == "mailqna") {
        onExpressMenu(menuCode);
    } else {
        alert("onCommunityMenu = " + menuCode);
    }
}

/**
 *  예약화면 링크
 */
function onReserveProduct(categoryCode, productCode) {
    getForm(f).target = "_self";
/*
    getForm(f).SC_CATEGORY.value = categoryCode;
    getForm(f).SV_PRODUCT_CODE.value = productCode;
    getForm(f).action = "/jsp/product_detail.jsp";
*/
    getForm(f).action = "/jsp/product_reserve.jsp?SC_CATEGORY=" + categoryCode + "&SV_PRODUCT_CODE=" + productCode;
    getForm(f).submit();
}

/**
 *  호텔예약화면 링크
 */
function onReserveHTProduct(categoryCode, productCode) {
    getForm(f).target = "_self";
    getForm(f).action = "/jsp/product_HTreserve.jsp?SC_CATEGORY=" + categoryCode + "&SV_PRODUCT_CODE=" + productCode;
    getForm(f).submit();
}

/**
 *  상품 오시는길 링크
 */
function onComeWay(categoryCode, productCode) {
    getForm(f).target = "_self";
    getForm(f).action = "/jsp/product_detail.jsp?SC_CATEGORY=" + categoryCode + "&SV_PRODUCT_CODE=" + productCode + "&SV_TAB_ID=4";
    getForm(f).submit();
}

function mainFlash(flashCode) {
    if (flashCode == "1") {
		if (getForm(f).CHG_SS_LANGCODE.value == "K") {
			location.href = "/entry/kr_공연_한국방문의해_코리아그랜드세일_기념_제20회_서울가요대상_관람_투어.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "J") {
			location.href = "/entry/jp_公演_韓国訪問の年コリアグランドセール記念_第20回_ソウル歌謡大賞観覧ツアー.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "E") {
		} else if (getForm(f).CHG_SS_LANGCODE.value == "C") {
		}
    } else if (flashCode == "2") {
        onBoardDetail('173');
    } else if (flashCode == "3") {
		if (getForm(f).CHG_SS_LANGCODE.value == "K") {
			location.href = "/entry/kr_피부클리닉_한광호피부과.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "J") {
			location.href = "/entry/jp_皮膚クリニック_ハングァンホ皮膚科.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "E") {
		} else if (getForm(f).CHG_SS_LANGCODE.value == "C") {
		}
    } else if (flashCode == "4") {
		if (getForm(f).CHG_SS_LANGCODE.value == "K") {
			location.href = "/entry/kr_한증막_명동천지연한증막.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "J") {
			location.href = "/entry/jp_汗蒸幕_明洞天地然汗蒸幕（チョンジヨン・ハンジュンマク）.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "E") {
		} else if (getForm(f).CHG_SS_LANGCODE.value == "C") {
		}
    } else if (flashCode == "5") {
		if (getForm(f).CHG_SS_LANGCODE.value == "K") {
			location.href = "/entry/kr_카지노_워커힐호텔카지노.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "J") {
			location.href = "/entry/jp_カジノ_ウォーカーヒルカジノ.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "E") {
		} else if (getForm(f).CHG_SS_LANGCODE.value == "C") {
		}
    } else if (flashCode == "6") {
		if (getForm(f).CHG_SS_LANGCODE.value == "K") {
			location.href = "/entry/kr_카지노_세븐럭카지노(밀레니엄서울힐튼).html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "J") {
			location.href = "/entry/jp_カジノ_SEVENLUCKCASINO・セブンラックカジノ【ミレニアムソウルヒルトン店】.html";
		} else if (getForm(f).CHG_SS_LANGCODE.value == "E") {
		} else if (getForm(f).CHG_SS_LANGCODE.value == "C") {
		}
    } else {
        alert("mainFlash = " + flashCode);
    }
}

function onHotelSelect(productCode) {
    window.open("http://hotel.alltabi.com/jsp/hotel_info.jsp?productCode=" + productCode, 'hotelAlltabi').focus();
}
/******************************************************************************
 * (e) Front Common Function
 *****************************************************************************/

/******************************************************************************
 * (s) Front Function
 *****************************************************************************/

var nMainB = 1;
var nMainBTimer = null;

function utilGetBrowserType() {
    var isType;
    var strAppName = navigator.appName;

    if(strAppName == "Netscape") isType = 1;
    else if(strAppName == "Microsoft Internet Explorer")  isType = 2;
    else isType = 0;

    return isType;
}

function MainBRoll(nMode) {
    if (nMode == 0) {
        showMainBDiv(nMainB)
    }

    nMainBTimer = setTimeout('MainBRoll(0)', 10000);
}
/******************************************************************************
 * (e) Front Function
 *****************************************************************************/
/******************************************************************************
 * (s) 호텔추가
 *****************************************************************************/
function goHotelPrd(productCode, category) {
	f.action = "/jsp/hotel_info.jsp?productCode=" + productCode;
	
	if (category) f.SC_CATEGORY.value = category;
	
	f.submit();
}

function onAreaHotelTop10(areaCode, langCode) {
	for (var i = "A".charCodeAt(0), j = 1; i <= "D".charCodeAt(0); i++, j++) {
		var currAreaCode = "SEL1" + String.fromCharCode(i);
		
		if (areaCode == currAreaCode) {
			document.getElementById(currAreaCode + "_IMG").src = "/images/left/section_over_0" + j + "_" + langCode + ".gif";
			document.getElementById(currAreaCode + "_TABLE").style.display = "";
		} else {
			document.getElementById(currAreaCode + "_IMG").src = "/images/left/section_default_0" + j + "_" + langCode + ".gif";
			document.getElementById(currAreaCode + "_TABLE").style.display = "none";
		}
	}
}

function onGradeHotel(gradeCode, langCode) {
	for (var i = 1; i <= 5; i++) {
		var currGradeCode = "GRADE" + i;
		
		if (gradeCode == currGradeCode) {
			document.getElementById(currGradeCode + "_IMG").src = "/images/main/grade_over_0" + i + "_" + langCode + ".gif";
			document.getElementById(currGradeCode + "_TABLE").style.display = "";
		} else {
			document.getElementById(currGradeCode + "_IMG").src = "/images/main/grade_default_0" + i + "_" + langCode + ".gif";
			document.getElementById(currGradeCode + "_TABLE").style.display = "none";
		}
	}
}

var bestReviewIndex = 1;

function prevBestReview() {
	if (bestReviewIndex == 1) return;
	
	displayBestReview(bestReviewIndex--, bestReviewIndex);
}

function nextBestReview() {
	if (!document.getElementById("BEST_REVIEW_" + (bestReviewIndex + 1))) return;
	
	displayBestReview(bestReviewIndex++, bestReviewIndex);
}

function displayBestReview(hiddenIndex, showIndex) {
	document.getElementById("BEST_REVIEW_" + hiddenIndex).style.display = "none";
	document.getElementById("BEST_REVIEW_" + showIndex).style.display = "";
}

function goReview(productCode, boardSeq, reviewType) {
	alert("goReview : " + productCode + ", " + boardSeq + ", " + reviewType);
}

var bestHotelIndex = 1;

function prevBestHotel() {
	if (bestHotelIndex == 1) return;
	
	displayBestHotel(bestHotelIndex--, bestHotelIndex);
}

function nextBestHotel() {
	if (!document.getElementById("BEST_PRD_" + (bestHotelIndex + 1))) return;
	
	displayBestHotel(bestHotelIndex++, bestHotelIndex);
}

function displayBestHotel(hiddenIndex, showIndex) {
	document.getElementById("BEST_PRD_" + hiddenIndex).style.display = "none";
	document.getElementById("BEST_PRD_" + showIndex).style.display = "";
}

function toggleAnswer(idx) {
	var tableObj = document.getElementById("answer" + idx);

	if (tableObj.style.display == "none") {
		tableObj.style.display = "";
	} else {
		tableObj.style.display = "none";
	}
}

function toggleGuestTable(idx) {
	var tableObj = document.getElementById("guestTable" + idx);
	//var imgObj = document.getElementById("guestArrow" + idx); 

	if (tableObj.style.display == "none") {
		tableObj.style.display = "";
		//imgObj.src = "/images/cart/ico_arrow_09.gif";
	} else {
		if(tableObj.style != null) tableObj.style.display = "none";
		//imgObj.src = "/images/cart/ico_arrow_08.gif";
	}
}

function toggleGuestTable(idx, disable) {
	var tableObj = document.getElementById("guestTable" + idx);
	//var imgObj = document.getElementById("guestArrow" + idx); 

	if (disable == "none") {
		tableObj.style.display = "none";
	}else{
		if(tableObj.style != null)tableObj.style.display = "";
	}
}

function toggleSearchTable(idx) {
	var tableObj = document.getElementById("searchTable" + idx);
	var imgObj = document.getElementById("arrow" + idx);

	if (tableObj.style.display == "none") {
		tableObj.style.display = "";
		imgObj.src = "/images/hotel/ico_up_arrow.jpg";
	} else {
		tableObj.style.display = "none";
		imgObj.src = "/images/hotel/ico_dn_arrow.jpg";
	}
}

function toggleOptionCheck(srcObjName, optionIndex) {
	var postFix = srcObjName.substring(srcObjName.indexOf("_") + 1);
	
	if( optionIndex != null ){
		if (f["room_count_" + postFix].disabled) {
			f["room_count_" + postFix].disabled = false;
			//f["room_count_" + postFix].selectedIndex = 1;
			if (f["breakfast_yn_" + postFix].value == "Y") f["breakfast_count_" + postFix].disabled = false;
			//if (f["breakfast_yn_" + postFix].value == "Y") f["breakfast_count_" + postFix].value = f["default_people_cnt_" + postFix].value;
			if (f["ex_bed_yn_" + postFix].value == "Y") f["exbed_count_" + postFix].disabled = false;
			toggleGuestTable(optionIndex, "");
		} else {
			f["room_count_" + postFix].disabled = true;
			f["room_count_" + postFix].selectedIndex = 0;
			if (f["breakfast_yn_" + postFix].value == "Y") f["breakfast_count_" + postFix].disabled = true;
			if (f["breakfast_yn_" + postFix].value == "Y") f["breakfast_count_" + postFix].selectedIndex = 0;
			if (f["ex_bed_yn_" + postFix].value == "Y") f["exbed_count_" + postFix].disabled = true;
			if (f["ex_bed_yn_" + postFix].value == "Y") f["exbed_count_" + postFix].selectedIndex = 0;
			toggleGuestTable(optionIndex, "none");
		}
		changeOptionPrice();
	}else{
		document.getElementById(srcObjName).checked= false;
		f["room_count_" + postFix].selectedIndex = 0;
		if (f["breakfast_yn_" + postFix].value == "Y") f["breakfast_count_" + postFix].selectedIndex = 0;
		if (f["ex_bed_yn_" + postFix].value == "Y") f["exbed_count_" + postFix].selectedIndex = 0;
	}
}

function changeOptionPrice() {
	var nightCnt = parseInt(f.night_cnt.value);
	var salePrice = 0;
	var breakfastPrice = 0;
	var exbedPrice = 0;
	var mileage = 0;
	var totalPrice = 0;
	
	for (var i = 0; i < OPTION_LIST.length; i++) {
		var postFix = OPTION_LIST[i];
		
		if (f["optionChk_" + postFix].checked) {
			var roomCnt = parseInt(f["room_count_" + postFix].value);
			
			var dateIndex = 1;
			
			while (f["sale_price_" + postFix + "_" + dateIndex]) {
				salePrice += parseInt(f["sale_price_" + postFix + "_" + dateIndex].value) * roomCnt;
				dateIndex++;
			}

			if (f["breakfast_yn_" + postFix].value == "Y") breakfastPrice += parseInt(f["breakfast_price_" + postFix].value) * parseInt(f["breakfast_count_" + postFix].value);
			if (f["ex_bed_yn_" + postFix].value == "Y") exbedPrice += parseInt(f["exbed_price_" + postFix].value) * parseInt(f["exbed_count_" + postFix].value);
			
			dateIndex = 1;
			
			while (f["mileage_" + postFix + "_" + dateIndex]) {
				mileage += parseInt(f["mileage_" + postFix + "_" + dateIndex].value) * roomCnt;
				dateIndex++;
			}
		}
	}
	
	totalPrice = salePrice + breakfastPrice + exbedPrice;
	
	document.getElementById("night_cnt_text").innerText = nightCnt;
	document.getElementById("day_cnt_text").innerText = nightCnt + 1;
	document.getElementById("sale_price_text").innerText = formatNumber("" + salePrice, "#,##0");
	document.getElementById("breakfast_price_text").innerText = formatNumber("" + breakfastPrice, "#,##0");
	document.getElementById("exbed_price_text").innerText = formatNumber("" + exbedPrice, "#,##0");
	document.getElementById("mileage_text").innerText = formatNumber("" + mileage, "#,##0");
	document.getElementById("total_price_text").innerText = formatNumber("" + totalPrice, "#,##0");
}

function changeOptionPriceExchg( rate ) {
	var nightCnt = parseInt(f.night_cnt.value);
	var salePrice = 0;
	var breakfastPrice = 0;
	var exbedPrice = 0;
	var mileage = 0;
	var totalPrice = 0;
	
	var exchg = rate;
	for (var i = 0; i < OPTION_LIST.length; i++) {
		var postFix = OPTION_LIST[i];
		
		if (f["optionChk_" + postFix].checked) {
			var roomCnt = parseInt(f["room_count_" + postFix].value);
			var dateIndex = 1;
			
			while (f["sale_price_" + postFix + "_" + dateIndex]) {
				salePrice += parseInt(f["sale_price_" + postFix + "_" + dateIndex].value) * roomCnt;
				dateIndex++;
			}

			if (f["breakfast_yn_" + postFix].value == "Y") breakfastPrice += parseInt(f["breakfast_price_" + postFix].value) * parseInt(f["breakfast_count_" + postFix].value);
			if (f["ex_bed_yn_" + postFix].value == "Y") exbedPrice += parseInt(f["exbed_price_" + postFix].value) * parseInt(f["exbed_count_" + postFix].value);
			
			dateIndex = 1;
			
			while (f["mileage_" + postFix + "_" + dateIndex]) {
				mileage += parseInt(f["mileage_" + postFix + "_" + dateIndex].value) * roomCnt;
				dateIndex++;
			}
		}
	}
	
	totalPrice = salePrice + breakfastPrice + exbedPrice;
	
	
	document.getElementById("night_cnt_text").innerText = nightCnt;
	document.getElementById("day_cnt_text").innerText = nightCnt + 1;
	document.getElementById("sale_price_text").innerText = formatNumber("" + parseInt(parseFloat(salePrice)/parseFloat(exchg))+"", "#,##0");
	document.getElementById("breakfast_price_text").innerText = formatNumber("" + parseInt(parseFloat(breakfastPrice)/parseFloat(exchg))+"", "#,##0");
	document.getElementById("exbed_price_text").innerText = formatNumber("" + parseInt(parseFloat(exbedPrice)/parseFloat(exchg))+"", "#,##0");
	document.getElementById("mileage_text").innerText = formatNumber("" + mileage, "#,##0");
	document.getElementById("total_price_text").innerText = formatNumber("" + parseInt(parseFloat(totalPrice)/parseFloat(exchg))+"", "#,##0");
}

var photoTypeList = new Array( "h_ext", "h_room", "h_facil", "h_requip", "h_b_equip" );
var currPhotoType;
var currPhotoPageIndex;

function initPhotoPage(photoType, photoPageIndex) {
	currPhotoType = (!photoType ? "h_ext" : photoType);
	currPhotoPageIndex = (!photoPageIndex ? 1 : photoPageIndex);
	
	var photoCount = 0;
	var startIdx = -1;
	var endIdx = -1;
	
	for (var i = 0; i < PHOTO_LIST.length; i++) {
		var temp = PHOTO_LIST[i].split(":");
		
		if (temp[0] == currPhotoType) {
			photoCount++;
			if (startIdx == -1) startIdx = i;
			endIdx = i;
		}
	}
	
	if (photoCount == 0) {
		document.getElementById("photoList").style.display = "none";
		document.getElementById("noPhoto").style.display = "";
	} else {
		document.getElementById("photoList").style.display = "";
		document.getElementById("noPhoto").style.display = "none";
		
		for (var i = 0; i < 5; i++) {
			var photoIdx = startIdx + ((currPhotoPageIndex - 1) * 5) + i;
			var temp = (photoIdx >= PHOTO_LIST.length ? null : PHOTO_LIST[photoIdx].split(":"));
			
			if (i == 0) viewPhoto(photoIdx);
			
			var obj = document.getElementById("thumbnail_img" + (i + 1)); 
			
			if (photoIdx <= endIdx) {
				//obj.src = "http://www.alltabi.com" + temp[2] + "T_" + temp[3];
				obj.src = "http://buy-0657.cafe24.com" + temp[2] + "T_" + temp[3];
				obj.style.cursor = "hand";
				obj.onclick = Function('viewPhoto("' + photoIdx + '")');
			} else {
				obj.src = "/images/hotel/bg_white.gif";
				obj.style.cursor = "none";
				obj.onclick = Function('void(0)');
			}
		}
		
		var totalPhotoPage = Math.ceil(photoCount / 5.0);
		var pageIndexHtml = "";
		var pageStartIndex = (currPhotoPageIndex == 1 ? 1 : currPhotoPageIndex - 1);
		var pageEndIndex = currPhotoPageIndex + 1;
		
		if (pageEndIndex - pageStartIndex < 2) pageEndIndex = pageStartIndex + 2;
		if (pageEndIndex > totalPhotoPage) pageEndIndex = totalPhotoPage;
		if (pageEndIndex - pageStartIndex < 2) pageStartIndex = pageEndIndex - 2;
		if (pageStartIndex < 1) pageStartIndex = 1;
		
		for (var i = pageStartIndex; i <= pageEndIndex; i++) {
			if (i > pageStartIndex) pageIndexHtml += "|";
			
			if (i == currPhotoPageIndex) {
				pageIndexHtml += "<strong>" + i + "</strong>";
			} else {
				pageIndexHtml += "<a href=\"javascript:initPhotoPage(currPhotoType, " + i + ");\">" + i + "</a>";
			}
		}
		
		document.getElementById("photo_page_prev").style.visibility = (currPhotoPageIndex == 1 ? "hidden" : "visible"); 
		document.getElementById("photo_page_next").style.visibility = (currPhotoPageIndex == totalPhotoPage ? "hidden" : "visible");
		document.getElementById("photo_page_index").innerHTML = pageIndexHtml;
	}
}

function changePhotoTab(photoType) {
	/*
	for (var i = 0; i < photoTypeList.length; i++) {
		if (photoTypeList[i] == photoType) {
			document.getElementById(photoTypeList[i] + "_tab").className = "selected";
		} else {
			document.getElementById(photoTypeList[i] + "_tab").className = "deselected";
		}
	}
	*/
	
	

	initPhotoPage(photoType, 1);
}

function prevPhotoPage() {
//	blur();
	
	if (currPhotoPageIndex == 1) return;
	
	initPhotoPage(currPhotoType, currPhotoPageIndex - 1);
}

function nextPhotoPage() {
//	blur();
	
	initPhotoPage(currPhotoType, currPhotoPageIndex + 1);
}

function viewPhoto(idx) {
//	blur();
	
	var temp = PHOTO_LIST[idx].split(":");
	
	//document.getElementById("large_img").src = "http://www.alltabi.com" + temp[2] + "B_" + temp[3];
	document.getElementById("large_img").src = "http://buy-0657.cafe24.com" + temp[2] + "B_" + temp[3];	
	document.getElementById("photo_remark").innerText = temp[1];
}

var currEquipPhotoPageIndex = new Array();

function initEquipPhotoPage(photoType, equipPhotoPageIndex) {
	currEquipPhotoPageIndex[photoType] = (!equipPhotoPageIndex ? 1 : equipPhotoPageIndex);
	
	var photoCount = 0;
	var startIdx = -1;
	var endIdx = -1;
	
	for (var i = 0; i < PHOTO_LIST.length; i++) {
		var temp = PHOTO_LIST[i].split(":");
		
		if (temp[0] == photoType) {
			photoCount++;
			if (startIdx == -1) startIdx = i;
			endIdx = i;
		}
	}
	
	if (photoCount == 0) {
		//document.getElementById(photoType + "_photolist").style.display = "none";
		//document.getElementById(photoType + "_nophoto").style.display = "";
	} else {
		document.getElementById(photoType + "_photoList").style.display = "";
		document.getElementById(photoType + "_noPhoto").style.display = "none";
		
		var totalPhotoPage = Math.ceil(photoCount / 7.0);
		
		if (currEquipPhotoPageIndex[photoType] < 1) currEquipPhotoPageIndex[photoType] = 1;
		if (currEquipPhotoPageIndex[photoType] > totalPhotoPage) currEquipPhotoPageIndex[photoType] = totalPhotoPage;
		
		for (var i = 0; i < 7; i++) {
			var photoIdx = startIdx + ((currEquipPhotoPageIndex[photoType] - 1) * 7) + i;
			var temp = (photoIdx >= PHOTO_LIST.length ? null : PHOTO_LIST[photoIdx].split(":"));
			
			var obj = document.getElementById(photoType + "_img" + (i + 1)); 
			
			if (photoIdx <= endIdx) {
				//obj.src = "http://www.alltabi.com" + temp[2] + "T_" + temp[3];
				obj.src = "http://buy-0657.cafe24.com" + temp[2] + "T_" + temp[3];
			} else {
				obj.src = "/images/hotel/bg_white.gif";
			}
		}
	}
}

function prevEquipPhotoPage(photoType) {
//	blur();
	
	if (currEquipPhotoPageIndex[photoType] == 1) return;
	
	initEquipPhotoPage(photoType, currEquipPhotoPageIndex[photoType] - 1);
}

function nextEquipPhotoPage(photoType) {
//	blur();
	
	initEquipPhotoPage(photoType, currEquipPhotoPageIndex[photoType] + 1);
}

function setPng24(obj) { 
  obj.width=obj.height=1; 
  obj.className=obj.className.replace(/\bpng24\b/i,''); 
  obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src +"',sizingMethod='image');" 
  obj.src='';  
  return ''; 
}

var calendarInput;

function displayCalendar(currDate, inputName) {
	if (inputName) calendarInput = inputName;
	
	var dateObj;
	
	if (!currDate || currDate == "") {
		dateObj = new Date();
		dateObj.setDate(dateObj.getDate() + 1);
	} else {
		dateObj = getDateObj(currDate);
	}
	
	if( inputName == 'checkin_date' || inputName == 'checkout_date' ) {
		setCalendarHT("prev", new Date(dateObj.getFullYear(), dateObj.getMonth(), 1), dateObj);
		setCalendarHT("curr", new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), dateObj);
		setCalendarHT("next", new Date(dateObj.getFullYear(), dateObj.getMonth() + 2, 1), dateObj);
		setLinkHT(dateObj);
	}else{
		setCalendar("prev", new Date(dateObj.getFullYear(), dateObj.getMonth() , 1), dateObj);
		setCalendar("curr", new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), dateObj);
		setCalendar("next", new Date(dateObj.getFullYear(), dateObj.getMonth() + 2, 1), dateObj);
		setLink(dateObj);
	}	
	
	showCalendar(inputName);
}

function displayCalendarHT(currDate, inputName) {
	if (inputName) calendarInput = inputName;
	
	var dateObj;
	
	if (!currDate || currDate == "") {
		dateObj = new Date();
		dateObj.setDate(dateObj.getDate() + 1);
	} else {
		dateObj = getDateObj(currDate);
	}

	setCalendarHT("prev", new Date(dateObj.getFullYear(), dateObj.getMonth(), 1), dateObj);
	setCalendarHT("curr", new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), dateObj);
	setCalendarHT("next", new Date(dateObj.getFullYear(), dateObj.getMonth() + 2, 1), dateObj);
	setLinkHT(dateObj);
	
	//showCalendar(inputName);
	var calObj = document.getElementById("calendarLayer");
	calObj.style.display = "";
}

function displayCalendarPrd(currDate, inputName) {
	if (inputName) calendarInput = inputName;
	
	var dateObj;
	
	if (!currDate || currDate == "") {
		dateObj = new Date();
		dateObj.setDate(dateObj.getDate() + 1);
	} else {
		dateObj = getDateObj(currDate);
	}

	setCalendarPrd("prev", new Date(dateObj.getFullYear(), dateObj.getMonth(), 1), dateObj);
	setCalendarPrd("curr", new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), dateObj);
	setCalendarPrd("next", new Date(dateObj.getFullYear(), dateObj.getMonth() + 2, 1), dateObj);
	setLinkPrd(dateObj);
	
	//showCalendar(inputName);
	var calObj = document.getElementById("calendarLayer");
	calObj.style.display = "";
	
}

function setCalendarPrd(type, dateObj, currDateObj) {
	document.getElementById(type + "YearMonth").innerText = getDateStr(dateObj, "yyyy.mm");
	
	var lastDay = getLastDay(dateObj.getFullYear(), dateObj.getMonth());
	var dateIndex = 1;
	var weekIndex = 1;
	var dayIndex = dateObj.getDay();
	
	for (var i = 1; i <= 6; i++) {
		for (var j = 0; j <= 6; j++) {
			var obj = document.getElementById(type + i + "_" + j);
			obj.innerText = "";
		}
	}
	
	var currDay = new Date();
	var endDay = new Date();
	endDay.setFullYear(currDay.getFullYear()+5);
	endDay.setMonth(currDay.getMonth());
	endDay.setDate(currDay.getDate());
	
	while (dateIndex <= lastDay) {
		var obj = document.getElementById(type + weekIndex + "_" + dayIndex);
		var dateStr = getDateStr(dateObj, "yyyymmdd");
		obj.innerText = dateIndex;
		
		if (getDateStr(currDay, "yyyymmdd") < dateStr ) {
			obj.onclick = Function('chooseDatePrd("' + dateStr + '")');
			obj.style.color = "";
		} else {
			obj.onclick = Function('void(0);');
			obj.style.color = "#a0a0a0";
		}
		
		dateIndex++;
		dayIndex++;
		dateObj.setDate(dateObj.getDate() + 1);
		
		if (dayIndex % 7 == 0) {
			weekIndex++;
			dayIndex = 0;
		}
	}
}

function chooseDatePrd(dateStr) {
	var svDateObj = getDateObj(calendarInput == "SV_DATE" ? dateStr : f.SV_DATE.value);
	
	f[calendarInput].value = dateStr;
	
	hideCalendar();
	mSelectDate(svDateObj)
}

function setCalendar(type, dateObj, currDateObj) {
	document.getElementById(type + "YearMonth").innerText = getDateStr(dateObj, "yyyy.mm");
	
	var lastDay = getLastDay(dateObj.getFullYear(), dateObj.getMonth());
	var dateIndex = 1;
	var weekIndex = 1;
	var dayIndex = dateObj.getDay();
	
	for (var i = 1; i <= 6; i++) {
		for (var j = 0; j <= 6; j++) {
			var obj = document.getElementById(type + i + "_" + j);
			obj.innerText = "";
		}
	}
	
	var currDay = new Date();
	var endDay = new Date();
	endDay.setFullYear(currDay.getFullYear());
	endDay.setMonth(currDay.getMonth() + 12);
	endDay.setDate(currDay.getDate());
	
	while (dateIndex <= lastDay) {
		var obj = document.getElementById(type + weekIndex + "_" + dayIndex);
		var dateStr = getDateStr(dateObj, "yyyymmdd");
		obj.innerText = dateIndex;
		
		if (getDateStr(currDay, "yyyymmdd") < dateStr && getDateStr(endDay, "yyyymmdd") > dateStr) {
			obj.onclick = Function('chooseDate("' + dateStr + '")');
			obj.style.color = "";
		} else {
			obj.onclick = Function('void("0")');
			obj.style.color = "#a0a0a0";
		}
		
		dateIndex++;
		dayIndex++;
		dateObj.setDate(dateObj.getDate() + 1);
		
		if (dayIndex % 7 == 0) {
			weekIndex++;
			dayIndex = 0;
		}
	}
}

function setCalendarHT(type, dateObj, currDateObj) {
	document.getElementById(type + "YearMonth").innerText = getDateStr(dateObj, "yyyy.mm");
	
	var lastDay = getLastDay(dateObj.getFullYear(), dateObj.getMonth());
	var dateIndex = 1;
	var weekIndex = 1;
	var dayIndex = dateObj.getDay();
	
	for (var i = 1; i <= 6; i++) {
		for (var j = 0; j <= 6; j++) {
			var obj = document.getElementById(type + i + "_" + j);
			obj.innerText = "";
		}
	}
	
	var currDay = new Date();
	var endDay = new Date();
	endDay.setFullYear(currDay.getFullYear());
	endDay.setMonth(currDay.getMonth() + 12);
	endDay.setDate(currDay.getDate());
	
	while (dateIndex <= lastDay) {
		var obj = document.getElementById(type + weekIndex + "_" + dayIndex);
		var dateStr = getDateStr(dateObj, "yyyymmdd");
		obj.innerText = dateIndex;
		
		if (getDateStr(currDay, "yyyymmdd") < dateStr && getDateStr(endDay, "yyyymmdd") > dateStr) {
			obj.onclick = Function('chooseDateHT("' + dateStr + '")');
			obj.style.color = "";
		} else {
			obj.onclick = Function('void("0")');
			obj.style.color = "#a0a0a0";
		}
		dateIndex++;
		dayIndex++;
		dateObj.setDate(dateObj.getDate() + 1);
		
		if (dayIndex % 7 == 0) {
			weekIndex++;
			dayIndex = 0;
		}
	}
}

function setLink(dateObj) {
	document.getElementById("prevButton").onclick = Function('displayCalendar("' + getDateStr(new Date(dateObj.getFullYear(), dateObj.getMonth() - 1, 1), "yyyymmdd") + '")');
	document.getElementById("nextButton").onclick = Function('displayCalendar("' + getDateStr(new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), "yyyymmdd") + '")');
}

function setLinkHT(dateObj) {
	document.getElementById("prevButton").onclick = Function('displayCalendarHT("' + getDateStr(new Date(dateObj.getFullYear(), dateObj.getMonth() - 1, 1), "yyyymmdd") + '")');
	document.getElementById("nextButton").onclick = Function('displayCalendarHT("' + getDateStr(new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), "yyyymmdd") + '")');
}

function setLinkPrd(dateObj) {
	document.getElementById("prevButton").onclick = Function('displayCalendarPrd("' + getDateStr(new Date(dateObj.getFullYear(), dateObj.getMonth() - 1, 1), "yyyymmdd") + '")');
	document.getElementById("nextButton").onclick = Function('displayCalendarPrd("' + getDateStr(new Date(dateObj.getFullYear(), dateObj.getMonth() + 1, 1), "yyyymmdd") + '")');
}

function showCalendar(inputName) {
	var calObj = document.getElementById("calendarLayer");
	
	if (inputName) {
		calObj.style.left = eval(event.clientX - (650 / 2)); //163
		calObj.style.top = eval(10 + event.clientY + document.body.scrollTop + document.documentElement.scrollTop); //383
	}

	calObj.style.display = "";
}

function hideCalendar() {
	var calObj = document.getElementById("calendarLayer");
	
	calObj.style.display = "none";
}

function getDateObj(dateStr) {
	var year  = eval(dateStr.substring(0, 4));
	var month = eval(dateStr.substring(4, 6)) - 1;
	var day   = eval(dateStr.substring(6));
	
	return new Date(year, month, day);
}

function getDateStr(dateObj, format) {
	var year  = dateObj.getFullYear();
	var month = dateObj.getMonth() + 1;
	var day   = dateObj.getDate();
	
	if (month < 10) month = "0" + month;
	if (day < 10) day = "0" + day;
	
	if (format == "yyyymmdd") {
		return "" + year + month + day;
	} else if (format == "yyyy.mm") {
		return "" + year + "." + month;
	} else if (format == "yyyy/mm/dd"){
		return "" +year +"/"+month+"/"+day;
	}
}

function getLastDay(year, month) {
	var leap;
	var last = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	if (year % 4 == 0) leap = true;
	if (year % 100 == 0) leap = false;
	if (year % 400 == 0) leap = true;
	if (leap) last[1] = 29;
	
	return last[month];
}

function chooseDate(dateStr) {
	f[calendarInput].value = dateStr;
	hideCalendar();
}

function chooseDateHT(dateStr) {
	var checkinDateObj = getDateObj(calendarInput == "checkin_date" ? dateStr : f.checkin_date.value);
	var checkoutDateObj = getDateObj(calendarInput == "checkout_date" ? dateStr : f.checkout_date.value);
	var nightCnt = (checkoutDateObj.getTime() - checkinDateObj.getTime()) / 1000 / 60 / 60 / 24;
	
	if( !mSelectDate(checkinDateObj,checkoutDateObj,nightCnt) ) return;
	f[calendarInput].value = dateStr;
	setCheckDate(calendarInput);
	
	hideCalendar();
}

function setCheckDate(type) {
	var checkinDateObj;
	var checkoutDateObj;
	var nightCnt;
	
	if (type == "checkin_date" ) {
		checkinDateObj = getDateObj(f.checkin_date.value);
		nightCnt = eval(f.night_cnt.value);
		
		var checkoutDateObj = checkinDateObj;
		checkoutDateObj.setDate(checkoutDateObj.getDate() + nightCnt);
		f.checkout_date.value = getDateStr(checkoutDateObj, "yyyymmdd");
	} else if (type == "night_cnt") {
		if(f.checkin_date.value != null && f.checkin_date.value != ""){
			checkinDateObj = getDateObj(f.checkin_date.value);
			nightCnt = eval(f.night_cnt.value);
			
			var checkoutDateObj = checkinDateObj;
			checkoutDateObj.setDate(checkoutDateObj.getDate() + nightCnt);
			f.checkout_date.value = getDateStr(checkoutDateObj, "yyyymmdd");
		}
	} else if (type == "checkout_date") {
		if (f.checkin_date.value == "") {
			checkoutDateObj = getDateObj(f.checkout_date.value);
			nightCnt = eval(f.night_cnt.value);
			
			var checkinDateObj = checkoutDateObj;
			checkinDateObj.setDate(checkinDateObj.getDate() - nightCnt);
			f.checkin_date.value = getDateStr(checkinDateObj, "yyyymmdd");
		} else {
			checkinDateObj = getDateObj(f.checkin_date.value);
			checkoutDateObj = getDateObj(f.checkout_date.value);
			nightCnt = (checkoutDateObj.getTime() - checkinDateObj.getTime()) / 1000 / 60 / 60 / 24;
			
			f.night_cnt.value = nightCnt;
		}
	}
}

function showOptionWindow() {
	var selectedOption = f.selected_option.value;
	var oform = document.optionForm;
	
	for (var i = 0; i < oform.length; i++) {
		if (selectedOption.indexOf(oform[i].value) == -1) {
			oform[i].checked = false;
		} else {
			oform[i].checked = true;
		}
	}
	
	var optionObj = document.getElementById("optionLayer");
	
	optionObj.style.left = event.clientX - (480 / 2);
	optionObj.style.top = 10 + event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	
	optionObj.style.display = "";
}

function hideOptionWindow() {
	var selectedOption = "";
	var oform = document.optionForm;
	
	for (var i = 0; i < oform.length; i++) {
		if (oform[i].checked) {
			selectedOption += oform[i].value + "|";
		}
	}
	
	f.selected_option.value = selectedOption;
	
	var optionObj = document.getElementById("optionLayer");
	optionObj.style.display = "none";
}

function quickLinkArea(fullAreaCode) {
	if (!documentLoadCheck()) return;

	if (getForm(f).area_code) {
		getForm(f).area_code.value = fullAreaCode;
	} else {
		var i1 = document.createElement("INPUT");
		i1.type = "hidden";
		i1.name = "area_code";
		i1.value = fullAreaCode;
		getForm(f).appendChild(i1);
	}

	getForm(f).target = "_self";
	getForm(f).action = "/jsp/hotel_total.jsp";
	getForm(f).submit();
}

/******************************************************************************
 * (e) 호텔추가
 *****************************************************************************/
function addURL(){
//  window.external.addFavorite("등록할 사이트주소","즐겨찾기로 등록될이름");
  window.external.AddFavorite("http://www.kiskorea.com","kiskorea.");
}
function setURL(obj){
 obj.style.behavior="url(#default#homepage)";
 obj.setHomePage("http://www.kiskorea.com");
}
function site_home(obj){
 obj.style.behavior="url(#default#homepage)";
 obj.setHomePage("http://www.kiskorea.com");
}
