﻿// JScript 文件
var SysGrid=new SysGrid();
function SysGrid() {
    this.tabCell = TabCell; //返回事件發生的對象在制定Tab中的單元格
    this.isChecked = IsChecked; //判斷某行是否選中
    this.getChk = GetChk; //取得某行第一列的選擇框
    this.getCheckedCount = GetCheckedCount; //返回選中的紀錄數(只針對SysGrid),tab:SysGrid的Client對象
    this.getCheckedKey = GetCheckedKey; //返回選中的紀錄的key(只針對SysGrid,選中多個用,號分割),tab:SysGrid的Client對象,quot:是否單引號引起
    this.getAllKey = GetAllKey; //返回所有紀錄的key(只針對SysGrid,逗號分割),tab:SysGrid的Client對象,quot:是否單引號引起
    this.getCheckedAllKeys = GetCheckedAllKeys;
    this.getCheckedIndex = GetCheckedIndex; //返回選中的紀錄的行索引（從臺頭索引開始）
    this.getKeyByIndex = GetKeyByIndex; //按行索引（從臺頭索引開始）
    this.cancelRadioChk = CancelRadioChk; //取消其他RadioBox的checked
    this.rowClick = RowClick; //當客戶端行Click發生時 
    this.chkAll = ChkAll; //全選
    this.checkRow = CheckRow; //設置勾選上的行顏色
    this.showMenu = ShowMenu; //打開右鍵菜單  
    this.setScrollStyle = SetScrollStyle; //設置Grid出現滾動條的高度和寬度
    this.mergeCell = MergeCell;  //合並相同行單元格
    this.checkDropDownGrid = CheckDropDownGrid; //為下拉Grid是選中值
    //在文本框onchange事件中調用Utils.sumColumn(this);
    //在DataBound事件中調用ScriptManager.RegisterStartupScript(SG_BillMat, SG_BillMat.GetType(), "SG_BillMat", "Utils.sumColumn('" + SG_BillMat.ClientID + "','2,3');", true);
    this.mergeSum = MergeSum;
    this.sumColumn = SumColumn; //匯總
    this.formatPage = FormatPage; //翻頁轉到時處理輸入的頁碼，是否響應轉到事件
    //合並相同行單元格
    function MergeCell(obj, x1, x2, rowLen) {
        if (obj == null) return;
        var head = new Array(x2);
        var rows = obj.rows.length;
        if (rowLen != null) rows = rowLen + 1;
        if (rows > 2) {
            var cols = obj.rows[0].cells.length;
            for (j = x1; j <= x2; j++) {
                if (obj.rows[1].cells[j] == null) continue;
                head[j] = obj.rows[1].cells[j].innerText;
            }
            for (i = 2; i < rows; i++) {
                if (obj.rows[i].cells.length < x2 + 1) continue;
                var flag = 0;
                for (j = x1; j <= x2; j++) {
                    if (obj.rows[i].cells[j] == null) continue;
                    if (head[j] == obj.rows[i].cells[j].innerText && flag == 0) {
                        obj.rows[i].cells[j].innerText = "";
                    }
                    else {
                        flag = 1;
                        head[j] = obj.rows[i].cells[j].innerText;
                        //continue;
                    }
                }
            }
            for (j = x2; j >= x1; j--) {
                var cell = obj.rows[1].cells[j];
                var span = 1;
                for (i = 2; i < rows; i++) {
                    if (obj.rows[i].cells[j] == null) continue;
                    if (obj.rows[i].cells[j].innerText == "") {
                        span++;
                        obj.rows[i].deleteCell(j);
                        cell.rowSpan = span;
                    }
                    else {
                        cell = obj.rows[i].cells[j];
                        span = 1;
                    }
                }
            }
        }
    }

    function IsChecked(tab, index) {
        if (tab == null) return false;
        if (tab.rows[index] == null) return false;
        var chk = GetChk(tab, index);
        if (chk == null) return false;
        if (chk.checked) return true;
        return false;
    }
    function GetChk(tab, index) {
        if (tab == null) return null;
        if (tab.rows[index] == null) return null;
        var chk = tab.rows[index].cells[0].getElementsByTagName("input");
        if (chk.length > 0) {
            if (chk[0].getAttribute("type").toLowerCase() == "radio" || chk[0].getAttribute("type").toLowerCase() == "checkbox")
                return chk[0];
        }
        return null;
    }

    //返回選中的紀錄數(只針對SysGrid),tab:SysGrid的Client對象
    function GetCheckedCount(tab) {
        var count = 0;
        if (tab == null) return count;
        for (var i = 1; i < tab.rows.length; i++) {
            if (IsChecked(tab, i)) {
                count++;
            }
        }
        return count;
    }
    //返回選中的紀錄數(只針對SysGrid),tab:SysGrid的Client對象
    function GetCheckedIndex(tab) {
        if (tab == null) return -1;
        var str = "";
        for (var i = 1; i < tab.rows.length; i++) {
            if (IsChecked(tab, i)) {
                str = str + "," + i;
            }
        }
        if (str.length > 1) str = str.substr(1);
        return str;
    }

    //返回選中的紀錄的key(只針對SysGrid,選中多個用,號分割),tab:SysGrid的Client對象,quot:是否單引號引起
    function GetCheckedKey(tab, quot, keyIndex) {
        if (tab == null) return "";
        var str = "", index = keyIndex;
        if (index == null) index = 0;
        for (var i = 1; i < tab.rows.length; i++) {
            if (!IsChecked(tab, i)) continue;
            var chk = GetChk(tab, i);
            if (quot) {
                str = str + ",'" + Utils.deString(tab.rows[i].getAttribute(index + "")) + "'";
            }
            else {
                str = str + "," + Utils.deString(tab.rows[i].getAttribute(index + ""));
            }
        }
        if (str.length > 0) str = str.substr(1);
        return str;
    }
    //返回選中的紀錄的key(只針對SysGrid,選中多個用,號分割),tab:SysGrid的Client對象,quot:是否單引號引起
    function GetCheckedAllKeys(tab, keyCount, sp, quot) {
        if (tab == null) return "";
        var str = "";
        for (var i = 1; i < tab.rows.length; i++) {
            if (!IsChecked(tab, i)) continue;
            var keysArr = new Array();
            for (var j = 0; j < keyCount; j++) {
                keysArr[j] = Utils.deString(tab.rows[i].getAttribute(j + ""));
            }
            if (quot) {
                str = str + ",'" + keysArr.join(sp) + "'";
            }
            else {
                str = str + "," + keysArr.join(sp);
            }
        }
        if (str.length > 0) str = str.substr(1);
        return str;
    }
    //返回選中的紀錄的key(只針對SysGrid,選中多個用,號分割),tab:SysGrid的Client對象,quot:是否單引號引起
    function GetKeyByIndex(tab, rowIndex, keyIndex) {
        if (tab == null) return "";
        var str = "";
        var index = keyIndex;
        if (index == null) index = 0;
        if (tab.rows[rowIndex] == null) return str;
        str = Utils.deString(tab.rows[rowIndex].getAttribute(index + ""));
        return str;
    }

    //返回所有的紀錄的key(只針對SysGrid,逗號分割),tab:SysGrid的Client對象,quot:是否單引號引起
    function GetAllKey(tab, quot, keyIndex) {
        if (tab == null) return "";
        var str = "", index = keyIndex;
        if (index == null) index = 0;
        for (var i = 1; i < tab.rows.length; i++) {
            if (tab.rows[i].getAttribute(index + "") == null) continue;
            if (quot) {
                str = str + ",'" + Utils.deString(tab.rows[i].getAttribute(index + "")) + "'";
            }
            else {
                str = str + "," + Utils.deString(tab.rows[i].getAttribute(index + ""));
            }
        }
        if (str.length > 1) str = str.substr(1);
        return str;
    }
    //全選
    function ChkAll(obj, tab, checkedColor) {
        var chkFlag = obj.checked;
        for (var i = 1; i < tab.rows.length; i++) {
            var tr = tab.rows[i];
            var chk = GetChk(tab, i);
            if (chk == null) continue;
            chk.checked = chkFlag;
            if (chkFlag) {
                Utils.setBackColor(tr, checkedColor);
            }
            else {
                Utils.setBackColor(tr, "");
            }
        }
    }
    function FormatPage(obj, maxPag) {
        var reg = "^[0-9]*[1-9][0-9]*$";
        var num = obj.parentElement.getElementsByTagName("INPUT")[0];
        if (num.value.match(reg) == null) return false;
        if (parseInt(num.value) > maxPag) num.value = maxPag;
        return true;
    }
    //行單擊事件
    function RowClick(e, sender) {
        var tab = sender.parentNode;
        var rowType = sender.getAttribute("RowType");
        if (tab.tagName != "TABLE") tab = tab.parentNode;
        if (tab.tagName != "TABLE") tab = tab.parentNode;
        var tabObj = eval("__" + tab.id);
        var checkedBackColor = tab.getAttribute("CheckedBackColor"); //勾選的顏色 
        var defaultRowColor = tab.getAttribute("DefaultRowColor"); //高亮行顏色
        var enabledDefaultRowColor = (tab.getAttribute("DefaultRowColor") != null) ? true : false; //是否啟用高亮行
        var boxActiveSelected = tab.getAttribute("BoxActiveSelected").toLowerCase();
        var hiddendynamictx = document.getElementById(tab.id + "_CurrentRiwIndex");
        var chk = GetChk(tab, sender.rowIndex);

        var _arg = new TheSysGridArg(); //設置e參數值
        var e = e || event;
        var srcEle = e.srcElement || e.target;

        _arg.rowType = rowType;
        _arg.chk = chk;
        _arg.srcElement = srcEle;
        if (hiddendynamictx.value != sender.rowIndex + "") {
            for (var i = 0; i < tabObj.BeforeClickFuncs.length; i++) {
                var clickFunc = tabObj.BeforeClickFuncs[i];
                if (!clickFunc(sender, _arg)) {
                    if (chk == null) return false;
                    if (chk == srcEle)
                    { chk.checked = (chk.checked) ? false : true; }
                    return false;
                }
            }
        }

        switch (rowType) {
            case "Header": //表頭行
                if (chk != null && chk == srcEle)//表頭行有選擇框 則是全選框
                {
                    SysGrid.chkAll(chk, tab, checkedBackColor);
                }
                break;
            case "DataRow": //數據行
                if (chk == null) {
                    if (boxActiveSelected == "true" && hiddendynamictx.value != sender.rowIndex + "") {
                        __doPostBack(tab.id, tab.id + "_Selected_" + sender.rowIndex);
                    }
                    hiddendynamictx.value = sender.rowIndex;  //將點擊的行設為高亮行
                }
                else {
                    if (chk.getAttribute("type").toLowerCase() == "radio")//如果是單選框
                    {
                        chk.checked = true;
                        SysGrid.cancelRadioChk(tab, chk);
                        Utils.setBackColor(sender, checkedBackColor);
                        if (enabledDefaultRowColor) Utils.setBackColor(sender, defaultRowColor);
                    }
                    else//如果是復選選框
                    {
                        if (chk.checked) { Utils.setBackColor(sender, checkedBackColor); } else { Utils.clearBackColor(sender); }
                    }
                    if (chk != srcEle || chk.getAttribute("type").toLowerCase() == "radio") {
                        if (boxActiveSelected == "true" && hiddendynamictx.value != sender.rowIndex + "") {
                            __doPostBack(tab.id, tab.id + "_Selected_" + sender.rowIndex);
                        }
                        hiddendynamictx.value = sender.rowIndex;  //將點擊的行設為高亮行
                    }

                }
                break;
            default:
                break;
        }
        SetClickRow(tab, "clear"); //設置高亮行


        for (var i = 0; i < tabObj.ClickFuncs.length; i++) {
            var clickFunc = tabObj.ClickFuncs[i];
            clickFunc(sender, _arg);
        }
    }
    //頁面首次加載或回發加載設置勾選上的行顏色
    function CheckRow(tab, checkedColor) {
        if (tab == null) return;
        var checkedBackColor = tab.getAttribute("CheckedBackColor"); //勾選的顏色 
        var defaultRowColor = tab.getAttribute("DefaultRowColor"); //高亮行顏色
        var enabledDefaultRowColor = (tab.getAttribute("DefaultRowColor") != null) ? true : false; //是否啟用高亮行

        for (var i = 1; i < tab.rows.length; i++) {
            var tr = tab.rows[i];
            Utils.setBackColor(tr, "");
            if (!IsChecked(tab, i)) continue;
            Utils.setBackColor(tr, (checkedColor == null) ? checkedBackColor : checkedColor);
            var chk = GetChk(tab, i);
            if (chk.getAttribute("type").toLowerCase() == "radio" && enabledDefaultRowColor) {
                Utils.setBackColor(tr, defaultRowColor);
                var hiddendynamictx = document.getElementById(tab.id + "_CurrentRiwIndex");
                if (hiddendynamictx != null) hiddendynamictx.value = i + "";
            }
            var txt = document.getElementById(tab.getAttribute("Id") + "_Text");
            var val = document.getElementById(tab.getAttribute("Id") + "_Value");
            if (txt != null) txt.value = tr.cells[1].innerHTML.trim();
            if (val != null) val.value = tr.getAttribute("0").replace(/&quot;/g, "\"");
            var _DetailText = document.getElementById(tab.getAttribute("Id") + "_DetailText");
            if (_DetailText != null) _DetailText.innerText = tr.cells[1].innerHTML.trim();
        }
        SetClickRow(tab);

    }
    //設置高亮行顏色
    function SetClickRow(tab, clear) {
        var checkedBackColor = tab.getAttribute("CheckedBackColor"); //勾選的顏色 
        var defaultRowColor = tab.getAttribute("DefaultRowColor"); //高亮行顏色
        var enabledDefaultRowColor = (tab.getAttribute("DefaultRowColor") != null) ? true : false; //是否啟用高亮行

        if (!enabledDefaultRowColor) return;
        var hiddendynamictx = document.getElementById(tab.id + "_CurrentRiwIndex");
        if (hiddendynamictx == null) return;
        if (hiddendynamictx.value + "" == "") return;
        if (clear == "clear")//清除原先選種的高亮行
        {
            for (var i = 1; i < tab.rows.length; i++) {
                Utils.setBackColor(tab.rows[i], "");
                if (IsChecked(tab, i)) {
                    Utils.setBackColor(tab.rows[i], checkedBackColor);
                }
            }
        }
        var dataRow = tab.rows[parseInt(hiddendynamictx.value)];

        if (dataRow != null && dataRow.getAttribute("RowType") == "DataRow") {          
            Utils.setBackColor(dataRow, defaultRowColor);
        }
    }
    //取消其他RadioBox的checked
    function CancelRadioChk(tab, obj) {
        for (var i = 1; i < tab.rows.length; i++) {
            var chk = GetChk(tab, i);
            if (chk == null) continue;
            var tr = tab.rows[i];
            if (obj.getAttribute("Id") == chk.getAttribute("Id")) continue;
            chk.checked = false;
            Utils.setBackColor(tr, "");
        }
    }

    //為下拉Grid是選中值
    function CheckDropDownGrid(clientId, obj, checkedBackColor) {
        var tab = document.getElementById(clientId);
        var boxActiveSelected = tab.getAttribute("BoxActiveSelected") + "";
      
        
        var clickTr;
        if (obj != null)//click單選框時
        {
            clickTr = (obj.parentNode.tagName == "SPAN") ? obj.parentNode.parentNode.parentNode : obj.parentNode.parentNode;
            Utils.setBackColor(clickTr, checkedBackColor);
        }
        else {
            clickTr = tab.rows[0];
        }
        var rowType = clickTr.getAttribute("RowType");
        var tabObj = eval("__" + tab.id);
        var _arg = new TheSysGridArg(); //設置e參數值
        var e = e || event;
        var srcEle = e.srcElement || e.target;

        _arg.rowType = rowType;
        _arg.chk = obj;
        _arg.srcElement = srcEle;
        
        for (var i = 0; i < tabObj.BeforeClickFuncs.length; i++) {
            var clickFunc = tabObj.BeforeClickFuncs[i];
            if (!clickFunc(clickTr, _arg)) {
                if (obj == null) return false;
                if (obj == srcEle)
                { obj.checked = (obj.checked) ? false : true; }
                return false;
            }
        }
        for (var i = 1; i < tab.rows.length; i++) {
            var ch = GetChk(tab, i);
            if (ch == null) continue;
            if (obj!=null && ch.getAttribute("id") == obj.getAttribute("id")) continue; //click單選框時           
            ch.checked = false;
            Utils.setBackColor(tab.rows[i], "");
        }
        setTimeout(function() {
            document.getElementById(clientId + "_Div").style.display = "none";
        }, 20);
        if (obj != null)//click單選框時
        {
            document.getElementById(clientId + "_Value").value = clickTr.getAttribute("0").replace(/&quot;/g, "\"");
            document.getElementById(clientId + "_Text").value = clickTr.cells[1].innerHTML.trim();
        }
        else//click清除按鈕時
        {
            document.getElementById(clientId + "_Value").value = "";
            document.getElementById(clientId + "_Text").value = checkedBackColor; //參數為NullText
            if (boxActiveSelected == "true") __doPostBack(clientId, clientId + "_Clear");
           
        }

        for (var i = 0; i < tabObj.ClickFuncs.length; i++) {
            var clickFunc = tabObj.ClickFuncs[i];
            clickFunc(clickTr, _arg);
        }
    }

    //設置Grid出現滾動條的高度和寬度
    function SetScrollStyle(tid, width, height) {
        var tab = document.getElementById(tid);
        if (tab == null) return;
        var scrollDiv = document.getElementById(tab.id + "_ScrollDiv");
        if (scrollDiv.offsetHeight > parseInt(height)) {
            scrollDiv.style.height = height;
        }
        else {
            scrollDiv.style.height = tab.offsetHeight + 2;
            if (scrollDiv.scrollWidth > scrollDiv.offsetWidth) {
                scrollDiv.style.height = tab.offsetHeight + 21;
            }
        }
        if (scrollDiv.scrollWidth > scrollDiv.offsetWidth || scrollDiv.scrollHeight > scrollDiv.offsetHeight) {
            scrollDiv.className = "scroolDiv";
        }
        else {

        }
        if ($get("tbTab") != null) {
            scrollDiv.style.width = $get("tbTab").offsetWidth;
        }
//        scrollDiv.style.width = "99.99%";
//        scrollDiv.style.width = width;
    }


    function TabCell(td, tab)//返回點擊tab是所點擊指定tab的單元格
    {
        var element = td, cell = td;
        if (element == null) return null;
        if (element.tagName == "TD" || element.tagName == "TH") {
            cell = element;
            element = element.parentElement.parentElement;
            if (element.tagName != "TABLE") element = element.parentElement;
            if (element == tab) return cell;
        }
        while (element.parentElement) {
            if (element.tagName == "TD" || element.tagName == "TH") {
                cell = element;
                element = element.parentElement.parentElement;
                if (element.tagName != "TABLE") element = element.parentElement;
                if (element == tab) return cell;
            }
            if (element.parentElement != null) {
                element = element.parentElement;
            }
        }
    }
    function ShowMenu(id, showScroll) {
        var menu = document.getElementById(id + "_Menu");
        menu.style.display = "";
        document.getElementById(id + "_ExportTd").style.display = "";
        var scrollTop = document.body.scrollTop;
        var scrollLeft = document.body.scrollLeft;
        if (scrollTop == 0) scrollTop = document.documentElement.scrollTop;
        if (scrollLeft == 0) scrollLeft = document.documentElement.scrollLeft;
        menu.style.posTop = event.clientY + scrollTop - 15;
        menu.style.posLeft = event.clientX + scrollLeft - 15;

        var exportBtn = document.all[id + "_Export"];
        if (exportBtn != null && self.dialogWidth) {
            for (var i = 0; i < exportBtn.length; i++) {
                var _getExData = exportBtn[i].getAttribute("onclick") + "";
                if (_getExData.indexOf("_getExData") > 0) exportBtn[i].parentElement.parentElement.style.display = "none";
            }
            if (menu.offsetHeight < 15) menu.style.display = "none";
        }
    }

    //合並匯總單元格
    function MergeSum(tabId) {
        var tab = document.getElementById(tabId);
        if (tab == null) return;
        if (tab.rows.length <= 2) return;
        var footer = tab.rows[tab.rows.length - 1]; //匯總行
        if (footer.cells.length <= 1) footer = tab.rows[tab.rows.length - 2];
        if (footer.cells[0].colSpan > 1) return;
        var spanCol = 0;

        for (var i = 0; i < footer.cells.length; i++) {

            var fbox = footer.cells[i].getElementsByTagName("INPUT");

            if (fbox == null) continue;
            if (fbox.length == 0) continue;
            if (fbox[0].getAttribute("type") == "text") {
                spanCol = i;
                break;
            }
        }
        if (spanCol > 0) {
            for (var i = spanCol - 1; i >= 1; i--) {
                footer.deleteCell(i);
            }
            footer.cells[0].colSpan = spanCol;
            footer.cells[0].innerText = "合計："
            footer.setAttribute("span", spanCol - 1);
        }
    }

    //文本框值改變時調用SumColumn(this)
    function SumColumn(tabOrBox, columns, sumChecked)//傳TabId和要匯總的列索引（逗號分隔），不含隱藏列
    {
        //傳入的參數為文本框對象時
        if (tabOrBox.type == "text")//onChange時
        {
            var cell = tabOrBox.parentElement;
            if (cell.tagName != "TD") cell = cell.parentElement;
            if (cell.tagName != "TD") cell = cell.parentElement;
            if (cell.tagName != "TD") cell = cell.parentElement;

            var tab = cell.parentElement.parentElement;
            if (tab.tagName != "TABLE") tab = tab.parentElement;
            if (tab.tagName != "TABLE") tab = tab.parentElement;

            if (tab.rows[tab.rows.length - 1].cells[cell.cellIndex] == null) return "";
            var sum = null;
            for (var j = 1; j < tab.rows.length - 1; j++) {
                //根據傳入參數sumChecked匯總選中或不選中的行
                if (sumChecked != null) if (SysGrid.isChecked(tab, j) != sumChecked) continue;

                if (tab.rows[j].cells[cell.cellIndex] == null) continue;
                var box = tab.rows[j].cells[cell.cellIndex].getElementsByTagName("INPUT");
                if (box.length == 0) continue;
                if (Utils.trim(box[0].value.replace(/,/g, "")) == "") continue;
                if (sum == null) sum = 0;
                sum = sum + parseFloat(Utils.trim(box[0].value.replace(/,/g, "")));
            }
            var sumBox = tab.rows[tab.rows.length - 1].cells[cell.cellIndex].getElementsByTagName("INPUT"); //匯總行
            if (sumBox.length == 0) return "";
            if (sum != null) { sumBox[0].value = Math.round(sum * 10000) / 10000; } else { sumBox[0].value = ""; }
            return sumBox[0].value;
        }
        //傳入的參數為TabId時
        var sumResult = new Array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
        var tab = document.getElementById(tabOrBox);
        if (tab == null) return sumResult;
        var footer = tab.rows[tab.rows.length - 1]; //匯總行
        var cols = new Array(); //存儲需要匯總的列索引
        if (columns != null)//獲取要匯總的列索引
        {
            cols = columns.split(",");
        }
        else {
            //Footer單元格有文本框則認為需要匯總    
            for (var c = 0; c < footer.cells.length; c++) {
                var box = footer.cells[c].getElementsByTagName("INPUT");
                if (box.length == 0) continue;
                if (box[0].getAttribute("type") == "text") {
                    cols.push(c); //增加存儲需要匯總的列索引
                }
            }
        }
        if (cols.length == 0) return sumResult; //沒有需要匯總的列則結束

        for (var i = 0; i < cols.length; i++) {
            var c = cols[i];
            var sum = null;
            for (var j = 1; j < tab.rows.length - 1; j++) {
                //根據傳入參數sumChecked匯總選中或不選中的行
                if (sumChecked != null) if (SysGrid.isChecked(tab, j) != sumChecked) continue;

                if (tab.rows[j].cells[c] == null) continue;
                var box = tab.rows[j].cells[c].getElementsByTagName("INPUT");
                if (box.length > 0)//有文本框時匯總文本框裏的數據
                {
                    if (Utils.trim(box[0].value) == "") continue;
                    if (sum == null) sum = 0;
                    sum = sum + parseFloat(Utils.trim(box[0].value.replace(/,/g)));
                } else//沒有文本框時匯總單元格的innerText
                {
                    if (Utils.trim(tab.rows[j].cells[c].innerText.replace(",", "")) == "") continue;
                    if (sum == null) sum = 0;
                    sum = sum + parseFloat(tab.rows[j].cells[c].innerText.replace(/,/g, ""));
                }
            }
            if (footer.cells[c] == null) continue;
            if (sum != null) footer.cells[c].getElementsByTagName("INPUT")[0].value = Math.round(sum * 10000) / 10000; else { footer.cells[c].getElementsByTagName("INPUT")[0].value = ""; }
            sumResult[i] = footer.cells[c].getElementsByTagName("INPUT")[0].value;
        }
        return sumResult;
    }
}
function CheckSelect(tab, allowCount) {
    var count = SysGrid.getCheckedCount(tab);
    var ac = allowCount;
    if (ac == "undefined" || ac == null) ac = "";
    switch (ac) {
        case "":
            if (count == 0) {
                SysMsg.expandMsg("請勾選一條記錄！");
                return false;
            }
            if (count > 1) {
                SysMsg.expandMsg("此操作只能勾選一條記錄！");
                return false;
            }
            break;
        default:
            if (count == 0) {
                SysMsg.expandMsg("請勾選一條記錄！");
                return false;
            }
            break;
    }
    return true;
}

function TheSysGrid(_tabId) {
    this.tabId = _tabId;
    this.ClickFuncs = new Array();
    this.BeforeClickFuncs = new Array();
    this.add_beforeClick = function(func) {
        this.BeforeClickFuncs.push(func);
    };
    this.add_afterClick = function(func) {
        this.ClickFuncs.push(func);
    };
}
function TheSysGridArg() {
    this.rowType = "";
    this.chk = null;
    this.srcElement = null;
}


