var mygrid_recv;
var page_count = 5;
var column_count;
var jsonCodeStlmodeSetObj;
var changeCount = 0;

function $(id) {
    return document.getElementById(id);
}

function initWinScreen() {
    var winScreenHeight = 0;
    var winScreenWidth = 0;
    if (window.screen.height) {
        winScreenHeight = window.screen.height;
    }
    if (window.screen.width) {
        winScreenWidth = window.screen.width;
    }
    if (winScreenWidth >= 1440 && winScreenWidth >= 900) {
        document.getElementById("mygrid_container_recv").style.height = "580px";
    }
    else if (winScreenWidth >= 1366 && winScreenWidth >= 768) {
        document.getElementById("mygrid_container_recv").style.height = "340px";
    }
    else if (winScreenWidth >= 1024 && winScreenWidth >= 768) {
        document.getElementById("mygrid_container_recv").style.height = "300px";
    }
}

function doInitRecvGrid() {

    mygrid_recv = new dhtmlXGridObject('mygrid_container_recv');
    mygrid_recv.setImagePath("../images/");
    mygrid_recv.setSkin("xp");

    mygrid_recv.setHeader("结算方式编码,结算方式,财务软件代码");
    mygrid_recv.setInitWidths("120,120,120");
    mygrid_recv.setColAlign("center,left,left");
    mygrid_recv.setColSorting("str,str,str");
    mygrid_recv.setColTypes("ed,ed,ed");

    var urlVal = "CodeStlmodeSetGridSource.aspx?read=exist&showcount=1&val=" + newGuid();
    var loader = dhtmlxAjax.getSync(urlVal);
    var loadVal = loader.xmlDoc.responseText;
    loader = null;

    if (parseInt(loadVal) == 1) {
        mygrid_recv.loadXML("CodeStlmodeSetGridSource.aspx?read=init&showcount=1");
        setTimeout(function() {
            ReShowLabel(mygrid_recv);
        }, 200);
    }
    mygrid_recv.init();
    mygrid_recv.enableEditEvents(true, false, true);
    mygrid_recv.enableMultiselect(true);
    mygrid_recv.enableKeyboardSupport(true);

    var pushVal = "";
    var pressRecord = "";
    var pressRowIndex = -1;
    var pressCellIndex = -1;
    var pressCount = 0;
    var isExchange = false;
    var shiftCount = 0;
    var isDelete = 0;

    var flagFilter = 0;
    var flagTab = 0;
    var flagEnter = 0;
    var flagDelete = 0;
    //手动编写Grid控件编辑事件,由于免费控件没有提供完整的编辑判断功能,现特此做更改

    mygrid_recv.attachEvent("onEditCell", function(stage, rId, cInd, nValue, oValue) {
        var newCheckValue = false;
        //初始化状态
        if (stage == 0) {
            var selectedId = mygrid_recv.getSelectedRowId();
            var rowIndex = mygrid_recv.getRowIndex(selectedId);
            var oldVal = mygrid_recv.cellByIndex(rowIndex, 0).getValue().trim();
            return true;
        }
        if (stage == 1) {
            var selectedId = mygrid_recv.getSelectedRowId();
            var rowIndex = mygrid_recv.getRowIndex(selectedId);
            var txtEdit;
            for (i = 0; i < document.all.length; i++) {
                if (document.all(i).tagName == "TEXTAREA") {
                    txtEdit = document.all(i);
                    txtEdit.focus();
                    txtEdit.select();
                    break;
                }
            }
        }
        //如果编辑结束
        if (stage == 2) {
            return true;
        }
    });


    //键盘操作事件
    mygrid_recv.attachEvent("onKeyPress", function(code, cFlag, sFlag) {
        //onKeyPress begin
        //获取当前RowID
        var selectedId = mygrid_recv.getSelectedRowId();
        //获取当前RowIndex
        var rowIndex = mygrid_recv.getRowIndex(selectedId);
        //获取当前CellIndex(ind)
        var ind = mygrid_recv.getSelectedCellIndex();

        //触发操作事件前获取单元值
        var oldVal = mygrid_recv.cellByIndex(rowIndex, ind).getValue();
        //获取编辑单元
        var txtEdit;

        for (i = 0; i < document.all.length; i++) {
            if (document.all(i).tagName == "TEXTAREA") {
                txtEdit = document.all(i);
                break;
            }
        }

        //Tab键
        if (code == 9) {
            var colCount = mygrid_recv.getColumnsNum();
            var rowCount = mygrid_recv.getRowsNum();

            if (ind < colCount) {
                isExchange = false;
                pressRecord = "";
                pressRowIndex = -1;
                pressCellIndex = -1;
                mygrid_recv.editStop(true);
                mygrid_recv.cellByIndex(rowIndex, ind).setLabel(oldVal);

                var cInd = ind;
                var rId = selectedId;
                mygrid_recv.selectCell(rowIndex, ind + 1, true, true);
                mygrid_recv.editCell();
                if (ind == colCount - 1) {
                    if (rowIndex < rowCount) {
                        mygrid_recv.editStop(true);
                        mygrid_recv.clearSelection();
                        mygrid_recv.selectCell(rowIndex + 1, 0, true, true);
                        mygrid_recv.editCell();
                    }
                    else {
                        return;
                    }
                }
            }
        }
        else if (code == 40)//向下方向键
        {
            var rowCount = mygrid_recv.getRowsNum();
            mygrid_recv.clearSelection();
            mygrid_recv.editStop();
            if (rowIndex == (rowCount - 1)) {
                addRecvRow();
            }
            else {
                mygrid_recv.selectCell(rowIndex + 1, 0, true, true);
                mygrid_recv.editCell();
            }
        }
        else if (code == 38)//向上箭头
        {
            if (rowIndex > 0) {
                mygrid_recv.clearSelection();
                mygrid_recv.editStop();
                mygrid_recv.selectCell(rowIndex - 1, 0, true, true);
                mygrid_recv.editCell();
            }
        }
        else {
            return true;
        }
    });

    setTimeout(function() {
        markStatusColor(mygrid_recv);
    }, 400);
}

//讲下拉列表Combo所有生成Array数组
function setComboByArray(gridNewObj, comboObj, rowGID, colIndex) {
    var comboVal_arg = new Array();
    comboVal_arg = comboObj.getKeys();
    var newCombo = gridNewObj.getCustomCombo(rowGID, colIndex);
    for (var i = 0; i < comboVal_arg.length; i++) {
        var txtValue = comboObj.get(comboVal_arg[i]);
        newCombo.put(comboVal_arg[i], txtValue);
    }
}
function spliceBuffer(arrayRow) {
    var strBuffer = "";
    for (var i = 0; i < arrayRow.length; ++i) {
        strBuffer = strBuffer + arrayRow[i];

        if (i != arrayRow.length - 1) {
            strBuffer = strBuffer + ",";
        }
    }
    alert(strBuffer);
}
//将整行值暂存到数组中
function getGridRowArray(arrayRow, gridObj, RowID) {
    var arg = new Array();
    var columnCount = gridObj.getColumnsNum();
    var rowCount = gridObj.getRowsNum();
    alert(columnCount); alert(rowCount);
    for (var i = 0; i < columnCount; i++) {
        alert(i);

        var cellObj = gridObj.cellById(RowID, i);
        alert(cellObj);
        if (i == 5) { alert("kill"); }
        var cell = gridObj.cellById(RowID, i);
        if (i == 5) { alert("kill"); }
        var rowValue = cell.getValue();
        if (i == 5) { alert("kill"); }
        if (i == columnCount - 1) {
            arg.push(rowValue == 1 ? true : false);
            break;
        }
        //校验获取的值是否为数字,如果是数字记录时不加引号,如果是字符增加引号
        var re = /^[-\+]?\d+(\.\d+)?$/;
        if (!re.test(rowValue)) {
            switch (i) {
                case 4:
                case 5:
                case 6:
                case 9:
                    alert("请正确输入数字");
                    return;
                    break;
                case 8: //如果是币别 则根据value值获取text值
                    var curCombo = gridObj.getCustomCombo(RowID, i);
                    arg.push(curCombo.get(rowValue));
                    break;
                default:
                    arg.push(rowValue);
                    break;
            }
        } else {
            if (i == 7) {
                //获取单价
                var unitPrice = isObjNaN(parseFloat(gridObj.cellById(RowID, 4).getValue()));
                //获取数量
                var quantityCount = isObjNaN(parseFloat(gridObj.cellById(RowID, 5).getValue()));
                //金额
                var amount = unitPrice * quantityCount;
                arg.push(outputMoney(amount.toString()));

            } else {

                arg.push(outputMoney(isObjNaN(parseFloat(rowValue)).toString()));
            }
        }
    }
    //alert(arg);
    return arg;
}

function isObjNaN(Obj) {
    if (Obj.toString().toLowerCase() == "nan") {
        return 0;
    } else {
        return Obj;
    }
}

function addRecvRow() {
    if (mygrid_recv.getRowsNum() > 0) {
        var newId = newGuid();
        //获取插入新纪录位置
        var rowCount = mygrid_recv.getRowsNum();
        mygrid_recv.addRow(newId, ["", "", ""], rowCount);
        mygrid_recv.clearSelection();
        mygrid_recv.editStop(true);
        mygrid_recv.selectCell(mygrid_recv.getRowIndex(newId), 0, true, true);
        mygrid_recv.editCell();
    }
    else {
        mygrid_recv.loadXML("CodeStlmodeSetGridSource.aspx?read=add&showcount=1");
    }
}

function deleteRecvRow() {
    mygrid_recv.editStop();
    var selRowID = mygrid_recv.getSelectedRowId();
    var selGroup = new Array();
    if (selRowID.indexOf(",") > 0) {
        selGroup = selRowID.split(",");
    }
    else {
        if (selRowID != null) {
            selGroup.push(selRowID);
        }
    }
    //查看是否有被选中的币别项
    if (selGroup.length > 0) {
        if (selGroup.length > 1) {
            var delCount = 0;
            if (window.confirm("您确定要将所选部门删除吗?")) {
                var dg = new dialog();
                dg.html = "<img src=\"../images/icon/progress.gif\" />";
                dg.width = 200;
                dg.height = 100;
                dg.title = "标题";
                dg.show();
                while (delCount < selGroup.length) {
                    var rowIndex = mygrid_recv.getRowIndex(selGroup[delCount]);

                    var CodeStlmodeSetName = mygrid_recv.cellByIndex(rowIndex, 1).getValue();
                    var cusName = mygrid_recv.cellByIndex(rowIndex, 2).getValue();

                    //var urlVal = "CodeStlmodeSetService.aspx?gid="+selGroup[delCount]+"&handle=delete"+"&no="+newGuid();

                    var urlVal = "CodeStlmodeSetGridSource.aspx?read=delete&gid=" + selGroup[delCount];
                    var loader = dhtmlxAjax.getSync(urlVal);
                    var loadVal = loader.xmlDoc.responseText;

                    if (loadVal > 0) {
                        mygrid_recv.deleteRow(selGroup[delCount]);
                    }
                    else {
                        mygrid_recv.deleteSelectedRows();
                    }
                    delCount++;
                }
                dg.close();
            }
        }
        else {
            var delCount = 0;
            while (delCount < selGroup.length) {
                var rowIndex = mygrid_recv.getRowIndex(selGroup[delCount]);

                var CodeStlmodeSetName = mygrid_recv.cellByIndex(rowIndex, 1).getValue();
                var cusName = mygrid_recv.cellByIndex(rowIndex, 2).getValue();

                if (window.confirm("您确定要将(" + CodeStlmodeSetName + ")删除吗?")) {
                    var dg = new dialog();
                    dg.html = "<img src=\"../images/icon/progress.gif\" />";
                    dg.width = 200;
                    dg.height = 100;
                    dg.title = "标题";
                    dg.show();

                    //var urlVal = "CodeStlmodeSetService.aspx?gid="+selGroup[delCount]+"&handle=delete"+"&no="+newGuid();

                    var urlVal = "CodeStlmodeSetGridSource.aspx?read=delete&gid=" + selGroup[delCount];
                    var loader = dhtmlxAjax.getSync(urlVal);
                    var loadVal = loader.xmlDoc.responseText;

                    if (loadVal > 0) {
                        mygrid_recv.deleteRow(selGroup[delCount]);
                        dg.close();
                        //alert("删除成功");
                    }
                    else {
                        mygrid_recv.deleteSelectedRows();
                        dg.close();
                    }
                }
                delCount++;
            }
        }
    }
    else {
        alert("未选中要操作的币别项");
    }
}
function saveRecvChange() {
    mygrid_recv.editStop();
    jsonCodeStlmodeSetObj = "{\"$type\":\"DSWeb.Models.JsonCodeStlmodeSetGroupEntity, DSWeb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",\"JsonCodeStlmodeSetEntities\":[";
    column_count = mygrid_recv.getColumnsNum();

    var tempJson = "";
    var rowCount = mygrid_recv.getRowsNum();
    for (var i = 0; i < rowCount; i++) {
        //获取RowID     
        tempJson = "";
        var rId = mygrid_recv.getRowId(i);

        tempJson += "\"$type\":\"DSWeb.Models.JsonCodeStlmodeSetEntity, DSWeb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\",";
        tempJson += "\"CodeStlmodeSet1\":\"" + rId + "\","; //gid
        for (var j = 0; j < column_count; j++) {
            var cell = mygrid_recv.cellById(rId, j);
            var value = "";
            //value = cell.cell.innerText; // .getValue();
            value = cell.cell.textContent || cell.cell.innerText;
            if (value == "") {
                value = "null";
            }
            tempJson += "\"CodeStlmodeSet" + (j + 2) + "\":\"" + value + "\",";
        }
        //tempJson += "\"CodeStlmodeSet6\":\""+BSNO+"\"";
        tempJson = "{" + tempJson + "}";

        if (i == rowCount - 1) {
            jsonCodeStlmodeSetObj = jsonCodeStlmodeSetObj + tempJson;
        } else {
            jsonCodeStlmodeSetObj = jsonCodeStlmodeSetObj + tempJson + ",";
        }
    }

    jsonCodeStlmodeSetObj += "]}";
    var txt_name = $("recvContainer");
    txt_name.value = jsonCodeStlmodeSetObj;


    msgBox();
    setTimeout(postEnterCodeStlmodeSet, 200);
}

function doOnRowSelected(rowID, celInd) {
    alert("Selected row ID is " + rowID + "\nUser clicked cell with index " + celInd);
}

function getValue() {
    var colLabel = mygrid_recv.getColumnLabel(0);
    alert(colLabel);
    var colLabel2 = mygrid_recv.getColumnLabel(0, 1);
    alert(colLabel2);
}
//post数据
function postEnterCodeStlmodeSet() {
    var myForm = document.getElementById("form1");
    myForm.submit();
}

function findRow() {

    var colNum = mygrid.getColumnsNum();
    //alert(colNum);

    var count = mygrid.getRowsNum();
    //alert(count);

    //var combo = mygrid.getCombo(1);
    //combo.put("abc","abc");
}

function initGrid() {
    doInitRecvGrid();
    //setTimeout(doInitPayGrid,200);
    //setTimeout(totalDynamicCodeStlmodeSetGain,700);
}

//放弃应收币别修改 重新加载页面
function recoverRecvChange() {
    mygrid_recv.editStop();
    var selRowID = mygrid_recv.getSelectedRowId();
    //查看是否有被选中的币别项
    if (selRowID != null) {
        var rowIndex = mygrid_recv.getRowIndex(selRowID);
        var status = mygrid_recv.cellByIndex(rowIndex, 0).getValue();
        var CodeStlmodeSetName = mygrid_recv.cellByIndex(rowIndex, 1).getValue();
        var cusName = mygrid_recv.cellByIndex(rowIndex, 2).getValue();
        if (window.confirm("您确定放弃当前行的修改吗?")) {
            var dg = new dialog();
            dg.html = "<img src=\"../../images/icon/progress.gif\" />";
            dg.width = 200;
            dg.height = 100;
            dg.title = "标题";
            dg.show();

            var urlVal = "CodeStlmodeSetGridSource.aspx?read=recover&gid=" + selRowID + "&val=" + newGuid();
            var loader = dhtmlxAjax.getSync(urlVal);
            var loadVal = loader.xmlDoc.responseText;
            if (!IsNum(loadVal)) {
                var recvArg = new Array();
                recvArg = loadVal.split(",");
                var selRowIndex = mygrid_recv.getRowIndex(recvArg[0]);
                var colCount = mygrid_recv.getColumnsNum();
                for (var i = 0; i < colCount; i++) {
                    mygrid_recv.cellByIndex(selRowIndex, i).setValue(recvArg[i + 1]);
                }
                dg.close();
                //alert("恢复成功");
                //refreshRecv();//刷新
            }
            else {
                if (parseInt(loadVal) == -3) {      
                    mygrid_recv.deleteSelectedRows();
                }
                dg.close();
            }
            ReShowLabel(mygrid_recv);
        } else {
            return;
        }
    } else {
        alert("未选中要操作的币别项");

    }
}

function print_recv() {
    alert("正在打印");
}

function amountSum(gridName) {
    if (gridName == "recv") {
        //计算应收
        mygrid_recv
    } else {
        //计算应付
    }
}
function outputMoney(number) {
    number = number.replace(/\,/g, "");
    if (isNaN(number) || number == "") return "";
    number = Math.round(number * 100) / 100;
    if (number < 0)
        return '-' + outputDollars(Math.floor(Math.abs(number) - 0) + '') + outputCents(Math.abs(number) - 0);
    else
        return outputDollars(Math.floor(number - 0) + '') + outputCents(number - 0);
}


function outputDollars(number) {
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length % 3;
        var output = (mod == 0 ? '' : (number.substring(0, mod)));
        for (i = 0; i < Math.floor(number.length / 3); i++) {
            if ((mod == 0) && (i == 0))
                output += number.substring(mod + 3 * i, mod + 3 * i + 3);

            else
                output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
        }

        return (output);
    }
}

function outputCents(amount) {
    amount = Math.round(((amount) - Math.floor(amount)) * 100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}

//获取GUID
function newGuid() {
    var guid = "";
    for (var i = 1; i <= 32; i++) {
        var n = Math.floor(Math.random() * 16.0).toString(16);
        guid += n;
        if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
            guid += "-";
    }
    return guid.toUpperCase();
}

function dialog() {
    this.width = 450;
    this.height = 360;
    this.title_height = 20;
    this.html = '';
    this.title = '';
    var self = this;
    var bgObj, msgObj, titleObj;
    this.close = function () {
        document.body.removeChild(document.getElementById("bgDiv"));
        document.getElementById("msgDiv").removeChild(document.getElementById("msgTitle"));
        document.body.removeChild(document.getElementById("msgDiv"));
    }

    this.show = function () {
        var msgw, msgh, bordercolor;
        msgw = self.width;
        msgh = self.height;
        bordercolor = "#336699";
        titlecolor = "#99CCFF";

        var sWidth, sHeight;
        sWidth = document.body.offsetWidth;
        sHeight = screen.height;
        bgObj = document.createElement("div");
        bgObj.setAttribute('id', 'bgDiv');
        bgObj.style.position = "absolute";
        bgObj.style.top = "0";
        bgObj.style.background = "#777";
        bgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
        bgObj.style.opacity = "0.6";
        bgObj.style.left = "0";
        bgObj.style.width = sWidth + "px";
        bgObj.style.height = sHeight + "px";
        bgObj.style.zIndex = "10000";
        document.body.appendChild(bgObj);

        msgObj = document.createElement("div")
        msgObj.setAttribute("id", "msgDiv");
        msgObj.setAttribute("align", "center");
        msgObj.style.background = "white";
        msgObj.style.border = "1px solid " + bordercolor;
        msgObj.style.position = "absolute";
        msgObj.style.left = "50%";
        msgObj.style.top = "30%";
        msgObj.style.font = "12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
        msgObj.style.marginLeft = "-225px";
        msgObj.style.marginTop = -75 + document.documentElement.scrollTop + "px";
        msgObj.style.width = msgw + "px";
        msgObj.style.height = msgh + "px";
        msgObj.style.textAlign = "center";
        msgObj.style.lineHeight = "25px";
        msgObj.style.zIndex = "10001";

        titleObj = document.createElement("h4");
        titleObj.setAttribute("id", "msgTitle");
        titleObj.setAttribute("align", "center");
        titleObj.style.margin = "0";
        titleObj.style.padding = "3px";
        titleObj.style.background = bordercolor;
        titleObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
        titleObj.style.opacity = "0.75";
        titleObj.style.border = "1px solid " + bordercolor;
        titleObj.style.height = self.title_height + "px";
        titleObj.style.font = "12px Verdana, Geneva, Arial, Helvetica, sans-serif";
        titleObj.style.color = "white";
        titleObj.style.cursor = "pointer";
        titleObj.innerHTML = self.title;
        //titleObj.onclick=function(){self.close();} 
        document.body.appendChild(msgObj);
        document.getElementById("msgDiv").appendChild(titleObj);
        var txt = document.createElement("div");
        txt.style.margin = "1em 0"
        txt.setAttribute("id", "msgTxt");
        txt.innerHTML = self.html;
        document.getElementById("msgDiv").appendChild(txt);
    }
}
function msgBox() {
    var dg = new dialog();
    dg.html = "程序正在提交,请稍等!";
    //dg.html+="<input type=button onclick='new dialog().close();' value='确定'>";
    dg.width = 200;
    dg.height = 100;
    dg.title = "标题";
    dg.show();
}

//是否为数字
function IsNum(val) {
    var re = /^[-\+]?\d+(\.\d+)?$/;
    if (!re.test(val)) {
        return false;
    } else {
        return true;
    }
}

function ConvertToMoney(strObj) {
    var result = strObj.replace(",", "");
    return result;
}

function filterComboCustomerPress(gridObj, rowID, rowIndex, colIndex, filterVal, oldVal) {
    var combo = gridObj.getCustomCombo(rowID, colIndex);

    var comboArg = combo.getKeys();

    var doCount = 0;
    for (var i = 0; i < comboArg.length; i++) {

        if (combo.get(comboArg[i]).toUpperCase().trim().indexOf(filterVal.toUpperCase()) == 0) {
            alert(combo.get(comboArg[i]).toUpperCase().trim());
            gridObj.cellByIndex(rowIndex, colIndex).setValue(combo.get(comboArg[i]));
            gridObj.selectCell(rowIndex, colIndex, true, true, true, true);
            doCount = 1;
            break;
        }
    }
}

//两端去空格函数
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }

function ReShowLabel(gridObj) {
    var columnCount = gridObj.getColumnsNum();
    var rowCount = gridObj.getRowsNum();

    if (rowCount > 0) {
        for (var i = 0; i < rowCount; i++) {
            for (var j = 0; j < columnCount; j++) {
                if (j == 1 || j == 2) {
                    var cellCurVal = gridObj.cellByIndex(i, j).getValue();
                    gridObj.cellByIndex(i, j).setLabel(cellCurVal);
                }
            }
        }
    }
}

function clearNoNum(valObj) {
    //先把非数字的都替换掉,除了数字和.
    valObj = valObj.replace(/[^\d.]/g, "");
    //必须保证第一个为数字而不是.
    valObj = valObj.replace(/^\./g, "");
    //保证只有出现一个.而没有多个.
    valObj = valObj.replace(/\.{2,}/g, ".");
    //保证.只出现一次,而不能出现两次以上
    valObj = valObj.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");

    return valObj;
}

function markStatusColor(gridObj) {
    var count = gridObj.getRowsNum();
    for (var i = 0; i < count; i++) {
        var status = gridObj.cellByIndex(i, 0).getValue();
        var rowId = gridObj.getRowId(i);
    }
}
//刷新应收
function refreshRecv() {
    doInitRecvGrid();
}