/*-- ------------------------------------------------------
oxsolution JAVASCRIPT functions  http://www.oxsolution.com
------------------------------------------------------ --*/

if (typeof(langOX) == "undefined") langOX = {};
if (typeof(langOX.ko) == "undefined") langOX.ko = {};
langOX.ko.accessDeny="±ÇÇÑÀÌ ¾ø½À´Ï´Ù.";
langOX.ko.isSave="ÀúÀåÇÏ½Ã°Ú½À´Ï±î?";
langOX.ko.isUpdate="º¯°æÇÏ½Ã°Ú½À´Ï±î?";
langOX.ko.isRemove="»èÁ¦ÇÏ½Ã°Ú½À´Ï±î?";
langOX.ko.isMove="ÀÌµ¿ÇÏ½Ã°Ú½À´Ï±î?";
langOX.ko.isContinue="°è¼Ó ÁøÇàÇÏ½Ã°Ú½À´Ï±î?";
langOX.ko.realContinue="°è¼Ó ÁøÇàÇÒ °æ¿ì º¯°æµÈ Á¤º¸¸¦ ÀÒ°ÔµË´Ï´Ù.";
langOX.ko.firstSave="¸ÕÀú ÀúÀåÇÏ¼¼¿ä.";
langOX.ko.maxRow="Ç×¸ñÀº ÃÖ´ë {JSVAR row}°³ ÀÌÇÏÀÌ¾î¾ß ÇÕ´Ï´Ù.";
langOX.ko.minRow="Ç×¸ñÀº ÃÖ¼Ò {JSVAR row}°³ ÀÌ»óÀÌ¾î¾ß ÇÕ´Ï´Ù.";
langOX.ko.maxFile="Ã·ºÎÆÄÀÏÀº ÃÖ´ë {JSVAR row}°³ ÀÌÇÏÀÌ¾î¾ß ÇÕ´Ï´Ù.";
langOX.ko.minFile="Ã·ºÎÆÄÀÏÀº ÃÖ¼Ò {JSVAR row}°³ ÀÌ»óÀÌ¾î¾ß ÇÕ´Ï´Ù.";
langOX.ko.emptyList="¸ñ·ÏÀÌ ¾ø½À´Ï´Ù.";
langOX.ko.checkCate="ºÐ·ù¸¦ ¼±ÅÃÇÏ¼¼¿ä.";
langOX.ko.foundError="¿À·ù°¡ ¹ß»ýÇÏ¿© Ã³¸®¸¦ Áß´ÜÇÕ´Ï´Ù.";

function getParam(func) {
    var buf = [];
    var args = func.arguments;
    switch (args.length) {
        case 9:
        case 8:
        case 7:
        case 6:
        case 5:
        case 4: if (args[3]) buf.push(args[3]);
        case 3: if (args[2]) buf.push("&id="+args[2]);
        case 2: if (args[1]) buf.push("&subcmd="+args[1]);
        case 1: if (args[0]) buf.push("&cmd="+args[0]); break;
        default:
    }
    return buf.reverse();
}
function getUrlInfo(oUrl) {
    if (typeof oUrl != "string") oUrl = location.href;
    var obj = {}, url = "", qStr = "",
        qs = oUrl.indexOf("?"),
        eq = oUrl.indexOf("="),
        am = oUrl.indexOf("&");
    var min = (eq == -1)? am : ((am == -1)? eq : Math.min(eq,am));

    if (qs == -1) {
        if (eq == -1 && am == -1) url = oUrl;
        else qStr = oUrl;
    }else if (min == -1 || qs < min) {
        url = oUrl.substring(0,qs);
        qStr = oUrl.substr(qs + 1);
    }else{
        qStr = oUrl;
    }
    obj["url"] = url;
    var a = qStr.split("&"), b;
    for (var i=0,n=a.length; i<n; i++) if (a[i] !== "") {
        b = a[i].split("=");
        if (b[0] !== "") obj[b[0]] = b[1] || "";
    }
    return obj;
}
function getActionFile() {
    var obj = getUrlInfo();
    var u = obj["url"];
    return u.substr(u.lastIndexOf("/") + 1);
}
function getThisUrl(func) {
    var args = func.arguments;
    if ((typeof OX_MODULE_MAIN == "undefined" || OX_MODULE_MAIN != "road") && args.length > 1) {
        var cmd = args[0],
            subcmd = args[1];
        if (typeof pageList != "undefined" && typeof pageList[cmd] != "undefined" && typeof pageList[cmd][subcmd] != "undefined") {
            var obj = getUrlInfo(urlList.thisUrl);
            var goUrl = obj["url"];
            delete obj["url"];

            if (typeof pageList[cmd][subcmd] == "object") {
                var prm = getUrlInfo(args[3]);
                var cid = (typeof prm["bid"] != "undefined")? prm["bid"] : 0;
                cid = isNaN(cid)? 0 : Number(cid);
                if (typeof pageList[cmd][subcmd][cid] != "undefined") obj["mp"] = pageList[cmd][subcmd][cid];
            }else{
                obj["mp"] = pageList[cmd][subcmd];
            }
            var o = [];
            for (var i in obj) o.push(i+"="+obj[i]);
            return goUrl+"?"+o.join("&");
        }
    }
    return urlList.thisUrl;
}
function actionView() {
    if (typeof(urlList) == "undefined") return;
    var obj = getUrlInfo();
    var goUrl = getThisUrl(actionView);
    var param = getParam(actionView);
    if (isDefined(obj["mt"]) && isDefined(obj["cp"]) && obj["mt"].toLowerCase() == "content") goUrl += "&cp="+obj["cp"];
    goUrl += param.join("");
    go_link(goUrl);
}
function managePopup() {
    if (typeof(urlList) == "undefined") return;
    var goUrl = urlList.manageUrl;
    var param = getParam(managePopup);
    goUrl += param.join("");
    var w = 770;
    var h = 600;
    if (arguments.length > 4 && arguments[4]) {
        w = arguments[4];
        if (arguments.length > 5 && arguments[5]) h = arguments[5];
    }
    popup("__OXMANAGEPOPUP__",w,h,goUrl,"yes");
}
function contentPopup() {
    if (typeof(urlList) == "undefined") return;
    var goUrl = urlList.contentUrl;
    var param = getParam(contentPopup);
    goUrl += "&cp=road"+param.join("");
    var w = 770;
    var h = 600;
    if (arguments.length > 4 && arguments[4]) {
        w = arguments[4];
        if (arguments.length > 5 && arguments[5]) h = arguments[5];
    }
    popup("",w,h,goUrl,"yes");
}
function callPopup() {
    if (typeof(urlList) == "undefined") return;
    var goUrl = urlList.contentUrl;
    var param = getParam(callPopup);
    goUrl += param.join("");
    var w = 770;
    var h = 600;
    if (arguments.length > 4 && arguments[4]) {
        w = arguments[4];
        if (arguments.length > 5 && arguments[5]) h = arguments[5];
    }
    popup("",w,h,goUrl,"yes");
}
function showHideLayer(elmId) {
    var elm = document.getElementById(elmId);
    elm.style.display = (elm.offsetWidth || elm.offsetHeight)? "none" : "block";
}
function showHideLayerByBtns(btnName,prefix) {
    var btns = document.getElementsByName(btnName);
    try {
        if (btns.length) for (var i=0,j=1; i<btns.length; i++,j++) {
            var elm = document.getElementById(prefix+j);
            if (btns[i] == event.srcElement) {
                elm.style.display = "block";
                btns[i].style.fontWeight = "bold";
            }else{
                elm.style.display = "none";
                btns[i].style.fontWeight = "normal";
            }
        }
    }catch(e) {}
}
function checkAll(elmsName,btnsName,elm) {
    var elms = document.getElementsByName(elmsName),
        btns = document.getElementsByName(btnsName),
        isChecked = 0, i, n;
    if (elm.type == "checkbox")
        isChecked = elm.checked ? 1 : 0;
    else {
        elm.setAttribute("oxchecked",((null !== (i = elm.getAttribute("oxchecked")))? ((i == 1)? 0 : 1) : 1));
        isChecked = (elm.getAttribute("oxchecked") == 1)? 1 : 0;
    }
    for (i=0,n=btns.length; i<n; i++) {
        if (btns[i].type == "checkbox") btns[i].checked = isChecked;
        else btns[i].setAttribute("oxchecked",isChecked);
    }
    for (i=0,n=elms.length; i<n; i++) {
        if (!elms[i].disabled) elms[i].checked = isChecked;
    }
}
function isCheckAll(elmsName,btnsName) {
    var elms = document.getElementsByName(elmsName),
        btns = document.getElementsByName(btnsName),
        isChecked = 1, i, n;
    for (i=0,n=elms.length; i<n; i++) {
        if (!elms[i].disabled && !elms[i].checked) {
            isChecked = 0;
            break;
        }
    }
    for (i=0,n=btns.length; i<n; i++) {
        if (btns[i].type == "checkbox") btns[i].checked = isChecked;
        else btns[i].setAttribute("oxchecked",isChecked);
    }
}
function getCheckedAttribute() {
    var elmsName = "";
    var att = "value";
    var sep = "|";
    switch (arguments.length) {
        case 3: if (arguments[2]) sep = arguments[2];
        case 2: if (arguments[1]) att = arguments[1];
        case 1: if (arguments[0]) elmsName = arguments[0]; break;
        default: return;
    }
    var elms = document.getElementsByName(elmsName);
    var checkedId = "";
    for (var i=0; i<elms.length; i++)
        if (elms[i].checked) checkedId += elms[i].getAttribute(att)+sep;
    return checkedId.substring(0,checkedId.lastIndexOf(sep));
}
function openLayer() {
    var pos = false;
    switch (arguments.length) {
        case 2: if (arguments[1]) var pos = arguments[1];
        case 1:
            var layerId = arguments[0];
            var elm = document.getElementById(layerId);
            elm.style.display = "block";
            if (pos) {
                elm.style.position = "absolute";
                elm.style.left = pos.x ? pos.x : 0;
                elm.style.top = pos.y ? pos.y : 0;
                movingLayerSet(elm);
                posInnerDoc(elm);
            }
            return elm;
        default: return false;
    }
}
function closeLayer(layerId) {
    var elm = document.getElementById(layerId);
    if (elm == null) return;
    elm.style.display = "none";
    movingLayerClear(elm);
}
function showCtrlBox() {
    var args = arguments;
    var showType = 1;
    var wid = 100;
    var hei = 100;
    var tit = "";
    if (args.length == 1 && typeof(args[0]) == "function") args = args[0].arguments;
    switch (args.length) {
        case 6: tit = trim(args[5]);
        case 5: if (!isNaN(args[4])) hei = Number(args[4]);
        case 4: if (!isNaN(args[3])) wid = Number(args[3]);
        case 3: showType = isNaN(args[2])? 1 : Number(args[2]);
        case 2: var elmId = args[1];
            var btn = args[0]; break;
        default: return;
    }
    var pos = abspos();
    var elm = document.getElementById("ctrlBoxLayer");
    var pElm = btn.parentElement;
    if (elm == null)
        var elm = document.createElement('<DIV id="ctrlBoxLayer" onclick="eventStop()" onmouseover="eventStop()" ondblclick="eventStop()" style="position:relative; width:'+wid+'px; height:'+hei+'px;"></DIV>');
    else {
        elm.style.width = wid+"px";
        elm.style.height = hei+"px";
    }
    pElm.insertAdjacentElement("beforeEnd",elm);
    if (elm.innerHTML == "") elm.innerHTML = '<div class="bx_black"><div class="head" id="ctrlBoxHead"></div><div id="ctrlBoxBody"></div><a href="javascript:hideCtrlBox();"><img src="'+dirHTC+'/__magicdir__/ly_close.gif" style="position:absolute; top:7px; right:7px;" alt="´Ý±â"></a></div>'
    if (pos && btn) {
        if (showType == 2 || showType == 4) pos.x -= wid - parseInt(btn.offsetWidth);
        if (showType == 3 || showType == 4) pos.y -= hei + 3;
        else pos.y += parseInt(btn.offsetHeight) + 3;
    }else pos = getCenterPos("ctrlBoxLayer");
    var chead = document.getElementById("ctrlBoxHead");
    var cbody = document.getElementById("ctrlBoxBody");
    chead.style.display = (tit == "")? "none" : "block";
    chead.innerHTML = tit;
    if (cbody.children.length) {
        cbody.children[0].style.display = "none";
        pElm.insertAdjacentElement("beforeEnd",cbody.children[0]);
    }
    cbody.insertAdjacentElement("beforeEnd",document.getElementById(elmId));
    cbody.children[0].style.display = "block";
    openLayer("ctrlBoxLayer",pos);
    setFrameBack("ctrlBoxLayer");
}
function hideCtrlBox() {
    closeLayer("ctrlBoxLayer");
}
function showHideCtrlBox() {
    var elm = document.getElementById("ctrlBoxLayer");
    if (elm != null && (elm.offsetWidth || elm.offsetHeight)) {
        hideCtrlBox();
        var cbody = document.getElementById("ctrlBoxBody");
        if (arguments.length > 1 && cbody.children.length
            && arguments[1] != cbody.children[0].id) showCtrlBox(showHideCtrlBox);
    }else showCtrlBox(showHideCtrlBox);
}
function setFrameBack(layerId) {
    var elm = document.getElementById(layerId);
    var wid = elm.offsetWidth;
    var hei = elm.offsetHeight;
    try {
        var frm = document.getElementById("hiddenFrameBack");
        frm.width = wid;
        frm.height = hei;
        frm.style.top = 0;
        frm.style.left = 0;
        frm.style.display = "block";
    }catch(e) {
        var frm = document.createElement('<IFRAME id="hiddenFrameBack" src="about:blank" frameborder="0" width="'+wid+'" height="'+hei+'" style="position:absolute; display:block; top:0; left:0; z-index:-1; filter:mask();"></IFRAME>');
    }
    elm.insertAdjacentElement("afterBegin",frm);
}
function resetFrameBack() {
    try {
        var frm = document.getElementById("hiddenFrameBack");
        frm.removeNode(true); //frm.style.display = "none";
    }catch(e) {
        return false;
    }
}
function incTextArea(elmId,row) {
    if (isNaN(row) || Number(row) < 1) row = 1;
    document.getElementById(elmId).rows += row;
}
function decTextArea(elmId,row) {
    if (isNaN(row) || Number(row) < 1) row = 1;
    var elm = document.getElementById(elmId);
    if (elm.rows > row) elm.rows -= row;
}
function oriTextArea(elmId,row) {
    if (isNaN(row) || Number(row) < 1) row = 3;
    document.getElementById(elmId).rows = row;
}
function setTitle(labelsName) {
    var norf = ox_varGET("orf");
    var nort = ox_varGET("ort");
    norf = isNaN(norf)? 0 : Number(norf);
    nort = isNaN(nort)? 0 : Number(nort);
    var buf = ['',' <span style="font-size:9px;">¡å</span>',' <span style="font-size:9px;">¡ã</span>'];
    var labels = document.getElementsByName(labelsName);
    for (var i=0; i<labels.length; i++) if (labels[i].getAttribute("oxOrf") == norf) labels[i].innerHTML += isDefined(buf[nort])? buf[nort] : buf[0];
}
function unsetTitleBg(elm) {
    elm.style.backgroundImage = "";
}
function onlyNumber(elm) { //onkeypress, onkeyup, onblur, style='ime-mode:disabled'
    var eType = event.type.toLowerCase();
    var eCode = event.keyCode;
    if (eType == "keypress") {
        if (eCode < 48 || eCode > 57) {
            alert(ox_tpl(langOX.ko.formCheckDigit,{"name":elm.getAttribute("oxName")}));
            event.returnValue = false;
            return false;
        }
    }else if (eType == "blur") {
        elm.value = isNaN(elm.value)? "" : trim(elm.value);
    }else{
        var str = elm.value;
        var allowStr = "1234567890";
        for (var i=0; i<str.length; i++) {
            if (allowStr.indexOf(str.charAt(i)) == -1) {
                elm.value = str.replace(/\D/g,"");
                return false;
            }
        }
    }
    return true;
}
function onlyNumberAndComma(elm) { //onkeypress, onkeyup, onblur, style='ime-mode:disabled'
    var eType = event.type.toLowerCase();
    var eCode = event.keyCode;
    if (eType == "keypress") {
        if ((eCode != 44 && eCode < 48) || eCode > 57) {
            alert(ox_tpl(langOX.ko.formCheckDigit,{"name":elm.getAttribute("oxName")}));
            event.returnValue = false;
            return false;
        }
    }else{
        var str = elm.value;
        var allowStr = "1234567890,";
        for (var i=0; i<str.length; i++) {
            if (allowStr.indexOf(str.charAt(i)) == -1) {
                elm.value = str.replace(/[^,\d]/g,"");
                return false;
            }
        }
    }
    return true;
}
function numberFormat(n_) {
    var n = n_+"";
    if (!n.length) return n_;
    var sign = n.charAt(0);
    if (sign == "-" || sign == "+") {
        n = n.substr(1);
        if (sign == "+") sign = "";
    }else sign = "";
    n = n.replace(/\D/g,"");
    var rs = "";
    var j = n.length % 3;
    var k = j || 3;
    for (var i=0; i<n.length; i+=k) {
        if (i) k = 3;
        rs += n.substr(i,k)+",";
    }
    rs = rs.substr(0,rs.lastIndexOf(","));
    return (rs === "")? 0 : sign+rs;
}
function changeSpaceAndComma(elm) {
    var str = elm.value;
    str = str.replace(/(\s*,+\s*)+/g,",");
    if (str.charAt(str.length-1) == ",") str = str.substring(0,str.length-1);
    if (str.charAt(0) == ",") str = str.substring(1,str.length);
    elm.value = str;
}
function removeSpace(elm) {
    var str = elm.value;
    str = str.replace(/\s/g,"");
    elm.value = str;
}
function childrenDisabled(elm,disabled) {
    if (elm && elm.nodeType == 1) {
        var n = elm.childNodes.length;
        if (!n) elm.disabled = disabled ? true : false;
        else {
            if (elm.tagName == "SELECT") elm.disabled = disabled ? true : false;
            else for (var i=0; i<n; i++) childrenDisabled(elm.childNodes[i],disabled);
        }
    }
}
function oxc_edit(vn,magicdir) {
    this.rpc = new oxc_RPC();
    this.vn = vn;
    this.data = [];
    this.cells = [];
    this.elms = [];
    this.uniqueIndex = 0;
    this.selectIndex = 0;
    this.startRow = 1;
    this.magicdir = magicdir;
    this.onImg = magicdir+"image/ico_check_on.gif";
    this.offImg = magicdir+"image/ico_check_off.gif";
    this.onBg = "#F3F3F3";
    this.offBg = "#FFFFFF";
    this.fixed = true;
    this.maxRow = 30;
    this.minRow = 0;

    this.init = function() {
        try {
            this.setData();
            this.cells = [];
            this.elms = [];
            for (var i=0; i<this.tbl.rows[this.startRow].cells.length; i++) {
                this.cells.push(this.tbl.rows[this.startRow].cells[i].innerHTML);
                this.setDefaultData(i,"INPUT");
                this.setDefaultData(i,"TEXTAREA");
                this.setDefaultData(i,"SELECT");
            }
            if (this.data.length < this.minRow)
                for (var i=this.data.length; i<this.minRow; i++) this.data.push(this.getDefaultData());
            return this.cells.length ? true : false;
        }catch(e) {
            return false;
        }
    }
    this.setData = function() {
        this.uniqueIndex = 0;
        try {
            if (typeof(this.data) == "object") {
                var buf = [];
                for (var i in this.data) {
                    this.data[i]["INDEX"] = this.uniqueIndex;
                    buf.push(this.data[i]);
                    this.uniqueIndex++;
                }
                this.data = buf;
            }else this.data = [];
        }catch(e) {
            return false;
        }
    }
    this.getEncodeData = function() {
        return this.rpc.obj2code(this.data);
    }
    this.encodeData = function(elm) {
        try {
            if (elm.type == "textarea" || elm.type == "hidden") {
                elm.value = this.getEncodeData();
                return true;
            }
            return false;
        }catch(e) {
            return false;
        }
    }
    this.setDefaultData = function(c,tagName) {
        var elms = this.tbl.rows[this.startRow].cells[c].getElementsByTagName(tagName);
        if (typeof(this.elms) != "object") this.elms = [];
        if (elms.length) for (var i=0; i<elms.length; i++) {
            var oxIndex = elms[i].getAttribute("oxIndex");
            var oxDefVal = elms[i].getAttribute("oxDefVal");
            if (oxIndex) switch (elms[i].type) {
                case "radio":
                    if (isUndefined(this.elms[oxIndex])) this.elms[oxIndex] = "";
                    if (oxDefVal != 0 && this.elms[oxIndex] === "") this.elms[oxIndex] = elms[i].value;
                    break;
                case "checkbox":
                    if (isUndefined(this.elms[oxIndex])) this.elms[oxIndex] = "";
                    if (oxDefVal != 0) {
                        if (this.elms[oxIndex] === "") this.elms[oxIndex] = elms[i].value;
                        else this.elms[oxIndex] += "|"+elms[i].value;
                    }
                    break;
                case "text":
                case "textarea":
                case "hidden":
                case "select-one":
                //case "select-multiple":
                    this.elms[oxIndex] = (oxDefVal === null)? "" : oxDefVal;
                    break;
            }
        }
    }
    this.getDefaultData = function() {
        var rs = {"INDEX":this.uniqueIndex};
        this.uniqueIndex++;
        for (var i in this.elms) rs[i] = this.elms[i];
        return rs;
    }
    this.selectRow = function(row) {
        if (!this.data.length) return;
        for (var i=this.startRow,j=0; i<this.tbl.rows.length; i++,j++) {
            if (row == j) {
                this.selectIndex = j;
                this.tbl.rows[i].bgColor = this.onBg;
                var imgUrl = this.onImg;
            }else{
                this.tbl.rows[i].bgColor = this.offBg;
                var imgUrl = this.offImg;
            }
            for (var k=0; k<this.cells.length; k++) {
                var elms = this.tbl.rows[i].cells[k].getElementsByTagName("IMG");
                if (elms.length) for (var l=0; l<elms.length; l++) {
                    if (elms[l].getAttribute("oxIndex") == "checkbox") elms[l].src = imgUrl;
                }
            }
        }
    }
    this.insertRow = function() {
        if (this.data.length >= this.maxRow) {
            alert(ox_tpl(langOX.ko.maxRow,{"row":this.maxRow}));
            return;
        }
        var data = this.getDefaultData();
        if (arguments.length && typeof(arguments[0]) == "object")
            for (var i in arguments[0]) data[i] = arguments[0][i];
        if (this.data.length > 0) {
            this.data.splice(this.selectIndex+1,0,data);
            this.selectIndex++;
        }else this.data.splice(this.selectIndex,0,data);
        this.show();
        this.fixed = false;
    }
    this.deleteRow = function() {
        if (!this.data.length) return;
        if (this.data.length <= this.minRow) {
            alert(ox_tpl(langOX.ko.minRow,{"row":this.minRow}));
            return;
        }
        if (!confirm(langOX.ko.isRemove)) return;
        //userDelFunc
        if (typeof(this.userDelFunc) == "function" && this.userDelFunc(this.selectIndex) == false) return;
        this.data.splice(this.selectIndex,1);
        if (this.data.length && this.selectIndex == this.data.length) this.selectIndex--;
        this.show();
        this.fixed = false;
    }
    this.moveUpRow = function() {
        if (!this.data.length || !this.selectIndex) return;
        var buf = this.data[this.selectIndex-1];
        this.data[this.selectIndex-1] = this.data[this.selectIndex];
        this.data[this.selectIndex] = buf;
        this.selectIndex--;
        this.show();
        this.fixed = false;
    }
    this.moveDownRow = function() {
        if (!this.data.length || this.selectIndex+1 == this.data.length) return;
        var buf = this.data[this.selectIndex+1];
        this.data[this.selectIndex+1] = this.data[this.selectIndex];
        this.data[this.selectIndex] = buf;
        this.selectIndex++;
        this.show();
        this.fixed = false;
    }
    this.reset = function(n) {
        if (this.tbl.rows.length > n) {
            var len = this.tbl.rows.length;
            for (var i=n; i<len; i++) this.tbl.deleteRow(n);
        }
    }
    this.show = function() {
        this.reset(this.startRow);
        if (!this.data.length) {
            var nR = this.tbl.insertRow(-1);
            var nC = nR.insertCell(0);
            nC.colSpan = this.cells.length;
            nC.bgColor = this.offBg;
            nC.align = "center";
            nC.height = 30;
            nC.innerHTML = langOX.ko.emptyList;
            if (typeof(this.submitBtn) != "undefined") this.submitBtn.setAttribute("disabled",true);
        }else{
            var nR,nC,html,regExp,i,j,k;
            var tBody = this.tbl; //¼Óµµ°³¼±À» À§ÇØ insertRow, insertCellÀ» ´ëÃ¼
            if (this.tbl.children.length) {
                for (i=0; i<this.tbl.children.length; i++) if (this.tbl.children[i].tagName == "TBODY") {
                    tBody = this.tbl.children[i];
                    break;
                }
            }//
            for (i=0; i<this.data.length; i++) {
                //nR = this.tbl.insertRow(-1); ¼Óµµ°³¼±À» À§ÇØ ¾Æ·¡ µÎ¶óÀÎÀ¸·Î ´ëÃ¼
                nR = document.createElement("TR");
                tBody.appendChild(nR);//
                nR.setAttribute("oxRow",i);
                nR.setAttribute("oxVn",this.vn);
                nR.attachEvent("onclick",this.getRow);
                for (j=0; j<this.cells.length; j++) {
                    //nC = nR.insertCell(j); ¼Óµµ°³¼±À» À§ÇØ ¾Æ·¡ µÎ¶óÀÎÀ¸·Î ´ëÃ¼
                    nC = document.createElement("TD");
                    nR.appendChild(nC);//
                    html = this.cells[j].replace(/{\s*JSVAR\s+ROW\s*}/g,i);
                    html = html.replace(/{\s*JSVAR\s+NO\s*}/g,i+1);
                    for (k in this.data[i]) if (isDefined(this.data[i][k])) {
                        regExp = eval("/{JSVAR\\s+"+k+"\\s*}/g");
                        html = html.replace(regExp,htmlspecialchars(this.data[i][k]));
                    }
                    nC.innerHTML = html;
                    this.setStaticValue(i,nC.getElementsByTagName("INPUT"));
                    this.setStaticValue(i,nC.getElementsByTagName("SELECT"));
                }
                //userRowFunc
                if (typeof(this.userRowFunc) == "function") this.userRowFunc(i);
            }
            this.selectRow(this.selectIndex);
            if (typeof(this.submitBtn) != "undefined") this.submitBtn.setAttribute("disabled",false);
        }
    }
    this.getStaticValue = function(row,elm) {
        var oxIndex = elm.getAttribute("oxIndex");
        if (!oxIndex) return;
        if (this.data[row][oxIndex] != elm.value) this.fixed = false;
        switch (elm.type) {
            case "select-one":
            //case "select-multiple":
                this.data[row][oxIndex] = optionSelectedValue(elm);
                break;
            case "radio":
                this.data[row][oxIndex] = radioCheckedValue(document.getElementsByName(elm.name));
                break;
            case "checkbox":
                this.data[row][oxIndex] = checkboxCheckedValue(document.getElementsByName(elm.name),"|");
                break;
            case "text":
            case "textarea":
            case "hidden":
                this.data[row][oxIndex] = elm.value;
                break;
        }
    }
    this.setStaticValue = function(row,elms) {
        var nameBuf = "";
        for (var i=0; i<elms.length; i++) {
            var oxIndex = elms[i].getAttribute("oxIndex");
            if (oxIndex && isDefined(this.data[row][oxIndex])) switch (elms[i].type) {
                case "select-one":
                //case "select-multiple":
                    optionChoice(elms[i],this.data[row][oxIndex]);
                    break;
                case "radio":
                    if (elms[i].name == nameBuf) continue;
                    radioChoice(document.getElementsByName(elms[i].name),this.data[row][oxIndex]);
                    break;
                case "checkbox":
                    if (elms[i].name == nameBuf) continue;
                    checkboxChoice(document.getElementsByName(elms[i].name),this.data[row][oxIndex],"|");
                    break;
                case "text":
                case "textarea":
                case "hidden":
                    //elms[i].value = this.data[row][oxIndex];
                    break;
            }
            nameBuf = elms[i].name;
        }
    }
    this.getRow = function() {
        var elm = event.srcElement;
        var obj,row,vn,i;
        for (i=0; i<100; i++) {
            row = elm.getAttribute("oxRow");
            vn = elm.getAttribute("oxVn");
            if (row != null && vn != null) {
                obj = eval(vn);
                obj.selectRow(row);
                break;
            }
            if (elm.parentElement == null) break;
            elm = elm.parentElement;
        }
    }
    this.isFixed = function() {
        if (this.fixed) return true;
        else return confirm(langOX.ko.realContinue+"\n\n"+langOX.ko.isContinue);
    }
}
function oxc_list(vn,magicdir) {
    this.rpc = new oxc_RPC();
    this.vn = vn;
    this.magicdir = magicdir;
    this.data = [];
    this.cells = [];
    this.startRow = 1;
    this.artpp = 10;
    this.navinum = 5;
    this.onBg = "#EEEEEE";
    this.offBg = "#FFFFFF";
    this.targetIden = false;
    this.targetText = false;
    this.viewType = 1; //1:floating, 2:static
    this.naviTpl = {
        "first":'<img src="'+magicdir+'image/pnb_begin.gif" align="absmiddle">',
        "prev" :'<img src="'+magicdir+'image/pnb_prev.gif" align="absmiddle">',
        "next" :'<img src="'+magicdir+'image/pnb_next.gif" align="absmiddle">',
        "last" :'<img src="'+magicdir+'image/pnb_end.gif" align="absmiddle">'
    };

    this.construct = function() {
        this.orf = 0;
        this.ort = 0;
        this.cpage = 1;
        this.tpage = 1;
        this.e_art = 0;
        this.list_start = 0;
        this.findParam = "";
        this.data = [];
    }
    this.init = function(layerId,cmd,subcmd) {
        if (isUndefined(layerId) || isUndefined(cmd)) return false;
        this.layerId = layerId;
        this.cmd = cmd;
        this.subcmd = isDefined(subcmd)? subcmd : "getlist";
        this.construct();
        try {
            for (var i=0; i<this.tbl.rows[this.startRow].cells.length; i++)
                this.cells.push(this.tbl.rows[this.startRow].cells[i].innerHTML);
            return this.cells.length ? true : false;
        }catch(e) {
            return false;
        }
    }
    this.getData = function() {
        var vn = this.vn;
        var reqUrl = urlList.dataUrl+"&cmd="+this.cmd+"&subcmd="+this.subcmd+"&cpage="+this.cpage+"&artpp="+this.artpp
            +"&navinum="+this.navinum+"&orf="+this.orf+"&ort="+this.ort+this.findParam+"&dummy="+oxrandom(1000000,9999999);
        var req = this.rpc.httpConnect();
        req.onreadystatechange = function() {
            if (req.readyState == 4 && req.status == 200) {
                if (req.responseXML) {
                    var xml = req.responseXML;
                    var res = xml.getElementsByTagName("response")[0];
                    var error = res.childNodes[0].text;
                    var message = res.childNodes[1].text;
                    var data = xml.getElementsByTagName("data")[0].text;
                    if (error == "SUCCESS")
                        eval(vn+".setData(data);");
                    else{
                        alert(message);
                        eval(vn+".setData();");
                    }
                }
            }
        }
        req.open("GET",reqUrl,true);
        req.send(null);
    }
    this.setData = function() {
        if (arguments.length && typeof(arguments[0]) == "string") {
            try {
                var data = this.rpc.code2obj(arguments[0]);
                this.orf = Number(data["orf"]);
                this.ort = Number(data["ort"]);
                this.cpage = Number(data["cpage"]);
                this.tpage = Number(data["tpage"]);
                this.e_art = Number(data["e_art"]);
                this.list_start = Number(data["list_start"]);
                this.findParam = data["findParam"];
                this.data = data["data"];
            }catch(e) {
                this.construct();
            }
        }else{
            this.construct();
        }
        this._show();
    }
    this.getFindParam = function() {
        var rs = "";
        var elms = this.fm.tags("select");
        for (var i=0; i<elms.length; i++)
            rs += "&"+elms[i].name+"="+optionSelectedValue(elms[i]);
        return rs;
    }
    this.actionSearch = function() {
        var fd = optionSelectedValue(this.fm["fd"]);
        var str = trim(this.fm["str"].value);
        if (fd == "CLEAR" || !ox_formChecker(this.fm)) return;
        this.construct();
        this.findParam += this.getFindParam()+"&str="+str;
        this.show(1);
    }
    this.onChangeSearch = function() {
        this.fm["str"].value = "";
        this.construct();
        this.findParam += this.getFindParam();
        this.show(1);
    }
    this.onChangeSearchField = function() {
        if (optionSelectedValue(this.fm["fd"]) == "CLEAR") {
            this.fm.reset();
            this.construct();
            this.findParam += this.getFindParam();
            this.show(1);
        }else this.fm["str"].focus();
    }
    this.reset = function(n) {
        if (this.tbl.rows.length > n) {
            var len = this.tbl.rows.length;
            for (var i=n; i<len; i++) this.tbl.deleteRow(n);
        }
    }
    this.show = function() {
        switch (arguments.length) {
            case 3: this.targetText = arguments[2];
            case 2: this.targetIden = arguments[1];
                this.findParam += this.getFindParam();
            case 1:
                if (isNaN(arguments[0])) this.cpage = 1;
                else {
                    this.cpage = Number(arguments[0]);
                    if (this.cpage < 1) this.cpage = 1;
                } break;
            default: this.construct();
        }
        this.setLoadImg();
        this.getData();
    }
    this._show = function() {
        this.setTitle();
        this.reset(this.startRow);
        if (this.e_art < 1) {
            var nR = this.tbl.insertRow(-1);
            var nC = nR.insertCell(0);
            nC.colSpan = this.cells.length;
            nC.bgColor = this.offBg;
            nC.align = "center";
            nC.height = 30;
            nC.innerHTML = langOX.ko.emptyList;
        }else{
            var onBg = this.onBg;
            var offBg = this.offBg;
            var n = this.e_art - this.list_start;
            var nR,nC,html,regExp,i,j,k;
            var tBody = this.tbl; //¼Óµµ°³¼±À» À§ÇØ insertRow, insertCellÀ» ´ëÃ¼
            if (this.tbl.children.length) {
                for (i=0; i<this.tbl.children.length; i++) if (this.tbl.children[i].tagName == "TBODY") {
                    tBody = this.tbl.children[i];
                    break;
                }
            }//
            for (i in this.data) {
                //nR = this.tbl.insertRow(-1); ¼Óµµ°³¼±À» À§ÇØ ¾Æ·¡ µÎ¶óÀÎÀ¸·Î ´ëÃ¼
                nR = document.createElement("TR");
                tBody.appendChild(nR);//
                nR.onmouseover = function() {this.style.backgroundColor = onBg;}
                nR.onmouseout = function() {this.style.backgroundColor = offBg;}
                nR.height = 23;
                for (j=0; j<this.cells.length; j++) {
                    //nC = nR.insertCell(j); ¼Óµµ°³¼±À» À§ÇØ ¾Æ·¡ µÎ¶óÀÎÀ¸·Î ´ëÃ¼
                    nC = document.createElement("TD");
                    nR.appendChild(nC);//
                    html = this.cells[j].replace(/{\s*JSVAR\s+ROW\s*}/g,i);
                    html = html.replace(/{\s*JSVAR\s+NO\s*}/g,n);
                    for (k in this.data[i]) {
                        regExp = eval("/{JSVAR\\s+"+k+"\\s*}/g");
                        html = html.replace(regExp,((this.data[i][k] != "")? htmlspecialchars(this.data[i][k]) : "&nbsp;"));
                    }
                    nC.innerHTML = html;
                }
                //userRowFunc
                if (typeof(this.userRowFunc) == "function") this.userRowFunc(i);
                n--;
            }
        }
        if (typeof(this.naviGroup) != "undefined") this.naviGroup.innerHTML = this.getNavi(this.getPageInfo());
        try {this.cpageLabel.innerText = this.cpage;}catch(e) {}
        try {this.tpageLabel.innerText = this.tpage;}catch(e) {}
        try {this.e_artLabel.innerText = this.e_art;}catch(e) {}
        //open layer
        var elm = document.getElementById(this.layerId);
        if (!elm.offsetWidth) {
            if (this.viewType == 2) openLayer(this.layerId);
            else {
                openLayer(this.layerId,getCenterPos(this.layerId));
                setFrameBack(this.layerId);
            }
        }
        this.unsetLoadImg();
        this.tbl.style.display = "block";
    }
    this.getRecord = function(row) {
        closeLayer(this.layerId);
        resetFrameBack();
        //userFunc
        if (typeof(this.userFunc) == "function") this.userFunc(row);
    }
    this.getPageInfo = function() {
        var st = 1;
        var en = Math.ceil(this.e_art / this.artpp);
        var bp = this.cpage - Math.floor((this.navinum - 1) / 2);
        var fp = this.cpage + Math.ceil((this.navinum - 1) / 2);
        if (bp < st) {
            bp = st;
            fp = bp + this.navinum - 1;
        }else if (fp > en) {
            fp = en;
            bp = fp - this.navinum + 1;
        }
        if (bp < st) bp = st;
        if (fp > en) fp = en;
        var pp = ((bp - 1) < st)? st : bp - 1;
        var np = ((fp + 1) > en)? en : fp + 1;
        var navi = [];
        for (var i=bp; i<=fp; i++) navi.push({
            "act":this.vn+".show("+i+")",
            "str":(i == this.cpage)? "<b>"+i+"</b>" : i
        });
        return {
            "first":this.vn+".show("+st+")",
            "prev":this.vn+".show("+pp+")",
            "navi":navi,
            "next":this.vn+".show("+np+")",
            "last":this.vn+".show("+en+")"
        }
    }
    this.getNavi = function(info) {
        var rs = '<a href="javascript:'+info["first"]+';">'+this.naviTpl["first"]+'</a> '
            +'<a href="javascript:'+info["prev"]+';">'+this.naviTpl["prev"]+'</a> ';
        for (var i in info["navi"])
            rs += '[<a href="javascript:'+info["navi"][i]["act"]+';">'+info["navi"][i]["str"]+'</a>]';
        rs += ' <a href="javascript:'+info["next"]+';">'+this.naviTpl["next"]+'</a>'
            +' <a href="javascript:'+info["last"]+';">'+this.naviTpl["last"]+'</a>';
        return rs;
    }
    this.actionOrderBy = function(elm) {
        var norf = isNaN(this.orf)? 0 : Number(this.orf);
        var nort = isNaN(this.ort)? 0 : Number(this.ort);
        this.orf = isNaN(elm.getAttribute("oxOrf"))? 0 : Number(elm.getAttribute("oxOrf"));
        this.ort = (norf == this.orf)? ((nort == 2)? 0 : nort+1) : 1;
        if (this.ort == 0) this.orf = 0;
        this.show(this.cpage);
    }
    this.setTitle = function() {
        if (isUndefined(this.orderLabel)) return;
        var o = ["","¡å","¡ã"], i, e;
        for (i=0; i<this.orderLabel.length; i++) {
            e = this.orderLabel[i].nextSibling;
            if (!e || e.nodeType != 1) {
                e = document.createElement('<SPAN style="font-size:9px;"></SPAN>');
                this.orderLabel[i].parentNode.appendChild(e);
            }
            e.innerHTML = (this.orderLabel[i].getAttribute("oxOrf") == this.orf && isDefined(o[this.ort]))? o[this.ort] : o[0];
        }
    }
    this.setLoadImg = function() {
        var pos = documentcenter();
        pos.x -= 173/2;
        pos.y -= 43/2;
        try {
            var elm = document.getElementById("ox_jsLoadImg");
            elm.style.top = pos.y+"px";
            elm.style.left = pos.x+"px";
            elm.style.display = "block";
        }catch(e) {
            document.body.insertAdjacentHTML("beforeEnd",'<img id="ox_jsLoadImg" src="'+this.magicdir+'image/load.gif" width="173" height="43" style="position:absolute; top:'+pos.y+'px; left:'+pos.x+'px;">');
        }
    }
    this.unsetLoadImg = function() {
        try {
            var elm = document.getElementById("ox_jsLoadImg");
            elm.style.display = "none";
        }catch(e) {
            return false;
        }
    }
}
function addFileElm() {
    var groupId = false;
    var elmName = false;
    var oxName = "Ã·ºÎÆÄÀÏ";
    var oxNeed = 0;
    var wid = "200px";
    var max = 1;
    switch (arguments.length) {
        case 6: if (!isNaN(arguments[5])) {
                max = parseInt(arguments[5],10);
                if (max < 1) max = 1;
            }
        case 5: if (isNaN(arguments[4])) wid = arguments[4];
            else {
                var buf = parseInt(arguments[4],10);
                if (buf > 50) wid = buf+"px";
            }
        case 4: oxNeed = (arguments[3] == 0)? 0 : 1;
        case 3: if (typeof(arguments[2]) == "string" && arguments[2].length) oxName = arguments[2];
        case 2: if (typeof(arguments[1]) == "string" && arguments[1].length) elmName = arguments[1];
        case 1: if (typeof(arguments[0]) == "string" && arguments[0].length) groupId = arguments[0];
    }
    if (groupId === false || elmName === false) return;
    var row = setFileIndex(groupId);
    if (row < max) document.getElementById(groupId).insertAdjacentHTML("beforeEnd","<div oxIndex=\"FILE\" style=\"width:"+wid+";\"><input type=\"text\" id=\""+elmName+"_"+row+"\" class=\"input_file\" onfocus=\"oxInputFileSet('"+elmName+"','"+elmName+"_"+row+"')\" oxNeed=\""+oxNeed+"\" oxName=\""+oxName+"\">"
        +"<img class=\"btn_file\" src=\""+dirHTC+"/__magicdir__/file_attach.gif\" onmouseover=\"oxInputFile('"+elmName+"','"+elmName+"_"+row+"',this)\" align=\"absmiddle\" alt=\"Ã£¾Æº¸±â\"></div>");
    else alert(ox_tpl(langOX.ko.maxFile,{"row":max}));
}
function dropFileElm(groupId,min) {
    var groupElm = document.getElementById(groupId);
    var row = setFileIndex(groupId);
    if (!row) return;
    min = (isUndefined(min) || isNaN(min))? 0 : parseInt(min,10);
    if (min < 0) min = 0;
    if (row > min) groupElm.children[groupElm.children.length-1].removeNode(true);
    else alert(ox_tpl(langOX.ko.minFile,{"row":min}));
}
function setFileIndex(elmId) { //Ã·ºÎµÇ¾îÀÖ´Â ÆÄÀÏ¸ñ·Ï¿¡¼­ ÆÄÀÏ¸ñ·ÏÀÌ ¾Æ´Ñ ºÒÇÊ¿ä ¿¤·¹¸ÕÆ®¸¦ Á¦°Å, (Ã·ºÎµÇ¾îÀÖ´Â ÆÄÀÏ¸ñ·ÏÀÇ ¼ö - »èÁ¦¿äÃ»µÈ ÆÄÀÏ¸ñ·ÏÀÇ ¼ö)¸¦ ¸®ÅÏ
    var elm = document.getElementById(elmId);
    for (var i=0,j=0; i<elm.children.length; i++) {
        if (elm.children[i].getAttribute("oxIndex") != "FILE") elm.children[i].removeNode(true);
        else if (elm.children[i].getAttribute("disabled")) j++;
    }
    return elm.children.length - j;
}
function downloadFile(tid,cid,mt) {
    hiddenFrameLink(urlList.dataUrl+"&cmd=file&subcmd=download&id="+tid+"&cid="+cid+"&type="+mt);
}
function deleteFile(tid,cid,mt) {
    if (confirm(langOX.ko.isRemove)) hiddenFrameLink(urlList.actionUrl+"&cmd=file&subcmd=delete&id="+tid+"&cid="+cid+"&type="+mt);
}
function previewImage(tid,cid,mt) {
    var pos = documentcenter();
    var rpc = new oxc_RPC();
    var reqUrl = urlList.dataUrl+"&cmd=file&subcmd=preview&id="+tid+"&cid="+cid+"&type="+mt+"&dummy="+oxrandom(1000000,9999999);
    var req = rpc.httpConnect();
    req.onreadystatechange = function() {
        if (req.readyState == 4 && req.status == 200) {
            if (req.responseXML) {
                var xml = req.responseXML;
                var res = xml.getElementsByTagName("response")[0];
                var error = res.childNodes[0].text;
                var message = res.childNodes[1].text;
                var data = rpc.code2obj(xml.getElementsByTagName("data")[0].text);

                if (error == "SUCCESS") {
                    var elm = document.getElementById("previewLayer");
                    var w = parseInt(data["WIDTH"],10) + 16;
                    var h = parseInt(data["HEIGHT"],10) + 37;
                    if (w < 300) w = 300;
                    if (h < 180) h = 180;
                    if (elm == null) {
                        var elm = document.createElement("<DIV id=\"previewLayer\" style=\"position:absolute;width:"+w+"px;height:"+h+"px;\"></DIV>");
                        document.body.insertAdjacentElement("beforeEnd",elm);
                    }else{
                        elm.style.width = w;
                        elm.style.height = h;
                        elm.style.display = "block";
                    }
                    switch (Number(data["TYPE"])) {
                        case 4:
                        case 13: var html = oxFlashTag(data["URL"],data["WIDTH"],data["HEIGHT"]); break;
                        default: var html = "<img src=\""+data["URL"]+"\" width=\""+data["WIDTH"]+"\" height=\""+data["HEIGHT"]+"\" alt=\""+data["NAME"]+"\">";
                    }
                    elm.innerHTML = "<table border=\"0\" width=\"100%\" height=\"100%\" cellspacing=\"0\" cellpadding=\"0\" ondblclick=\"closeLayer('previewLayer')\">"
                        +"<tr>"
                            +"<td width=\"5\" height=\"5\"><img src=\""+dirHTC+"/__magicdir__/ly_tl.gif\" width=\"5\" height=\"5\"></td>"
                            +"<td background=\""+dirHTC+"/__magicdir__/ly_tb.gif\"></td>"
                            +"<td width=\"5\"><img src=\""+dirHTC+"/__magicdir__/ly_tr.gif\" width=\"5\" height=\"5\"></td>"
                        +"</tr>"
                        +"<tr>"
                            +"<td background=\""+dirHTC+"/__magicdir__/ly_lb.gif\"></td>"
                            +"<td bgcolor=\"#F7F7F7\" valign=\"top\" style=\"padding:2px;\"><img src=\""+dirHTC+"/__magicdir__/tit_viewer.gif\" style=\"float:left\" vspace=\"2\" alt=\"ÀÌ¹ÌÁö ¹Ì¸®º¸±â\"><img src=\""+dirHTC+"/__magicdir__/ly_close.gif\" onclick=\"closeLayer('previewLayer')\" vspace=\"2\" style=\"float:right; cursor:pointer;\" alt=\"´Ý±â\"><div style=\"clear:both; margin:5px 0 0; padding:0; border-top:1px solid #999; border-right:1px solid #BBB; border-bottom:1px solid #BBB; border-left:1px solid #999; width:"+(w-14)+"px; height:"+(h-35)+"px; background:#FFF;\">"+html+"</div></td>"
                            +"<td background=\""+dirHTC+"/__magicdir__/ly_rb.gif\"></td>"
                        +"</tr>"
                        +"<tr>"
                            +"<td height=\"5\"><img src=\""+dirHTC+"/__magicdir__/ly_bl_squ.gif\" width=\"5\" height=\"5\"></td>"
                            +"<td background=\""+dirHTC+"/__magicdir__/ly_bb.gif\"></td>"
                            +"<td><img src=\""+dirHTC+"/__magicdir__/ly_br_squ.gif\" width=\"5\" height=\"5\"></td>"
                        +"</tr>"
                        +"</table>";
                    elm.style.top = pos.y - (parseInt(elm.offsetHeight,10) / 2);
                    elm.style.left = pos.x - (parseInt(elm.offsetWidth,10) / 2);
                    setFrameBack("previewLayer");
                    movingLayerSet(elm);
                }else alert(message);
            }
        }
    }
    req.open("GET",reqUrl,true);
    req.send(null);
}
function oxc_file(groupId,elmsId,listId,max,min) {
    this.groupId = groupId;
    this.elmsId = elmsId;
    this.listId = listId;
    this.max = isDefined(max)? max : 1;
    this.min = isDefined(min)? min : 0;
    this.init = function() {
        this.groupElm = document.getElementById(this.groupId);
        this.fileElms = document.getElementById(this.elmsId);
        this.listElm = document.getElementById(this.listId);
        if (isNaN(this.max)) this.max = 1;
        else {
            this.max = parseInt(this.max,10);
            if (this.max < 1) this.max = 1;
        }
        if (isNaN(this.min)) this.min = 0;
        else {
            this.min = parseInt(this.min,10);
            if (this.min < 0) this.min = 0;
        }
        var row = setFileIndex(listId);
        if (row >= max) {
            this.groupElm.style.display = "none";
            return false;
        }else{
            if (row < 1) this.listElm.style.display = "none";
            return true;
        }
    }
    this.addFileElm = function() {
        var row = this.max - setFileIndex(this.listId);
        var args = [this.elmsId,"","","","",row];
        if (arguments.length) for (var i=0; i<arguments.length; i++) args[i+1] = arguments[i];
        eval('addFileElm("'+args.join('","')+'")');
    }
    this.dropFileElm = function() {
        dropFileElm(this.elmsId,this.min);
    }
    this.deleteFile = function(elm,cid) {
        if (elm.value == "") elm.value = cid;
        else {
            if (in_array(cid,elm.value.split("|"))) return;
            elm.value += "|"+cid;
        }
        this.groupElm.style.display = "block";
        document.getElementById(this.listId+cid).setAttribute("disabled",true);
        //userDelFunc
        if (typeof(this.userDelFunc) == "function") this.userDelFunc(cid);
    }
}
function getKoreanDay(y,m,d) {
    if (isNaN(y) || isNaN(m) || isNaN(d) || y < 1911 || y > 2100 || m < 1 || m > 12 || d < 1 || d > 31) return false;
    var s = ["ÀÏ","¿ù","È­","¼ö","¸ñ","±Ý","Åä"];
    var c = ["#C91D1D","#666666","#666666","#666666","#666666","#666666","#1E95D4"];
    var n = new Date(Number(y),Number(m)-1,Number(d),0,0,0);
    var i = n.getDay();
    return '<span style="color:'+c[i]+';">'+s[i]+'</span>';
}
function getLastDay(y,m){
    if (m < 1) {m = 12 - m; y--;}
    else if (12 < m) {m = m - 12; y++;}
    if (m == 2) {
        if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) return 29;
        else return 28;
    }else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) return 31;
    else return 30;
}
function getCenterPos(elmId) {
    var elm = document.getElementById(elmId);
    var pos = documentcenter();
    elm.style.position = "absolute";
    elm.style.top = -3000;
    elm.style.left = -3000;
    elm.style.display = "block";
    pos.x -= parseInt(elm.offsetWidth,10) / 2;
    pos.y -= parseInt(elm.offsetHeight,10) / 2;
    return pos;
}
function setFormData(fm,data) {
    fm.reset();
    for (var i in data) if (isDefined(fm["input["+i+"]"])) {
        switch (fm["input["+i+"]"].type) {
            case "select-one":
                try {optionChoice(fm["input["+i+"]"],data[i]);}
                catch(e) {continue;}
                break;
            case "text":
            case "textarea":
            case "hidden":
                try {fm["input["+i+"]"].value = data[i];}
                catch(e) {continue;}
                break;
            default: try {
                if (fm["input["+i+"]"].length) switch (fm["input["+i+"]"][0].type) {
                    case "radio": radioChoice(fm["input["+i+"]"],data[i]); break;
                    case "checkbox": checkboxChoice(fm["input["+i+"]"],data[i],"|"); break;
                }else switch (fm["input["+i+"]"].type) {
                    case "radio": radioChoice(fm["input["+i+"]"],data[i]); break;
                    case "checkbox": checkboxChoice(fm["input["+i+"]"],data[i],"|"); break;
                }
            }catch(e) {continue;}
        }
    }
}
function createHiddenForm(a) {
    var fm = document.createElement("FORM");
    fm.action = a;
    fm.method = "post";
    fm.style.display = "none";
    return fm;
}
function createHiddenElement(n,v) {
    var elm = document.createElement("INPUT");
    elm.type = "hidden";
    elm.name = n;
    elm.value = v;
    return elm;
}
function actionSubmit(fm,cmd,subcmd,ext,trans) {
    var actionUrl = urlList.actionUrl;
    if (isDefined(cmd)) actionUrl += "&cmd="+cmd;
    if (isDefined(subcmd)) actionUrl += "&subcmd="+subcmd;
    if (!isDefined(trans)) trans = false;
    fm.action = actionUrl;
    if (typeof(ext) == "string" && trim(ext).length) {
        if (ox_InputFileChecker(ext,true)) hiddenFramePostLink(fm,true,trans);
    }else hiddenFramePostLink(fm,true,trans);
}
function actionModify(fm,id,cmd,subcmd) {
    var layerId = (arguments.length > 4)? arguments[4] : "modifyLayer";
    var pos = abspos() || getCenterPos(layerId);
    var rpc = new oxc_RPC();
    var reqUrl = urlList.dataUrl+"&cmd="+cmd+"&subcmd="+(isDefined(subcmd)? subcmd : "getinfo")+"&id="+id+"&dummy="+oxrandom(1000000,9999999);
    var req = rpc.httpConnect();
    req.onreadystatechange = function() {
        if (req.readyState == 4 && req.status == 200) {
            if (req.responseXML) {
                var xml = req.responseXML;
                var res = xml.getElementsByTagName("response")[0];
                var error = res.childNodes[0].text;
                var message = res.childNodes[1].text;
                var data = rpc.code2obj(xml.getElementsByTagName("data")[0].text);
                if (error == "SUCCESS") {
                    setFormData(fm,data);
                    openLayer(layerId,pos);
                    setFrameBack(layerId);
                }else alert(message);
            }
        }
    }
    req.open("GET",reqUrl,true);
    req.send(null);
}
function actionDelete(id,cmd,subcmd) {
    if (!confirm(langOX.ko.isRemove)) return;
    var fm = createHiddenForm(urlList.actionUrl+"&cmd="+cmd+"&subcmd="+(isDefined(subcmd)? subcmd : "delete"));
    fm.insertAdjacentElement("beforeEnd",createHiddenElement("input[ID_NUM]",id));
    document.body.insertAdjacentElement("beforeEnd",fm);
    hiddenFramePostLink(fm,false);
}
function actionListDelete(elmsName,cmd,subcmd) {
    var checkedId = getCheckedAttribute(elmsName);
    if (checkedId == "") alert(langOX.ko.select);
    else actionDelete(checkedId,cmd,subcmd);
}
function tplLoop(obj,blockId,blocksId,eblockId) {
    var rs = "";
    var elm = document.getElementById(blockId).cloneNode(true);
    elm.id = null;
    elm.style.display = "block";
    var html = elm.outerHTML;
    var n = 0;
    for (var i in obj) {
        var buf = html;
        for (var j in obj[i]) {
            var regExp = eval("/{JSVAR\\s+"+j+"\\s*}/g");
            buf = buf.replace(regExp,obj[i][j]);
        }
        rs += buf;
        n++;
    }
    if (!n) {
        elm = document.getElementById(eblockId).cloneNode(true);
        elm.id = null;
        elm.style.display = "block";
        rs = elm.outerHTML;
    }
    document.getElementById(blocksId).innerHTML = rs;
}
function onChangeArtpp(elm) {
    var artpp = optionSelectedValue(elm);
    artpp = isNaN(artpp)? 10 : Number(artpp);
    if (artpp < 1 || artpp > 500) artpp = 10;
    var obj = getUrlInfo();
    var goUrl = obj["url"]; delete obj["url"];
    var buf = [];
    var j = 0;
    for (var i in obj) {
        if (i == "artpp") {buf.push(i+"="+artpp); j = 1}
        else if (i == "cpage") buf.push(i+"=1");
        else buf.push(i+"="+obj[i]);
    }
    if (j == 0) buf.push("artpp="+artpp);
    go_link(goUrl+"?"+buf.join("&"));
}
function checkboxCheckedValue(elm,sep) {
    if (!elm.length) return elm.checked ? elm.value : "";
    var rs = [];
    for (var i=0; i<elm.length; i++)
        if (elm[i].checked) rs.push(elm[i].value);
    if (typeof(sep) != "string") sep = "|";
    return rs.length ? rs.join(sep) : "";
}
function checkboxChoice(elm,val,sep) {
    if (typeof(sep) != "string") sep = "|";
    val = val.toString().split(sep);
    if (elm.length) {
        for (var i=0; i<elm.length; i++) for (var j=0; j<val.length; j++) {
            if (elm[i].value == val[j]) elm[i].checked = true;
        }
    }else{
        for (var i=0; i<val.length; i++) if (elm.value == val[i]) elm.checked = true;
    }
}

