/*--------------------------文档信息-------------------------------------------
///功能：      供应商基本信息——维护画面
///创建人：  王群
///创建时间：2011年05月31日
///修改人：  --------------
///修改时间：--------------
///详细说明：--------------
-----------------------------------------------------------------------------*/
//定义全局变量
var strTableNameP0601 = 'Tgysxx';       //表格的ID
var strDialogP0601 = "divP0601";          //弹出层的ID

/*-----------------------------------------------------------------------------
//功能：点击添加按钮，弹出对话框
//参数：
//strType:1：添加
//2：修改
//strTableNameP0601 表名
-----------------------------------------------------------------------------*/
function alterRecord(strType) {
    try {
        $(".operate").remove();     //清除浮动按钮层
        $("#divP0601").empty();    //清空弹出窗口内容
        if (strType == "1") {    //添加

            //选择操作的数据ID，添加时为0，修改时为选择行的id
            selRowId = "0";

            //值为1，插入数据；值为2，更新数据
            savesign = "1"; //初次保存insert数据

            //把弹出窗口框架及底部按钮添加到父窗口创建dialog中
            creatDiv_ShowDialog(strDialogP0601, "供应商基本信息", false, true, strTableNameP0601);
        }
        //修改
        else if (strType == "2") {
            selRowId = jQuery('#' + strTableNameP0601).jqGrid('getGridParam', 'selrow');
            savesign = "2";     //update数据        

            if (selRowId == "" || selRowId == null) {
                //请选择要修改的记录
                window.parent.cihoAlert(msg.sz.edit.selEditRow);
                return;
            }
            //把弹出窗口框架及底部按钮添加到父窗口创建dialog中
            creatDiv_ShowDialog(strDialogP0601, "供应商基本信息", false, true, strTableNameP0601);
        }
        //添加表单元素到窗口中
        tableFormP0601(strTableNameP0601, strType);
        //在窗口中的元素添加完毕后，给dialog定位
        //$("#" + strDialogP0601).dialog("option", "position", "center");
    } catch (e) { }
}

//创建添加框中的表单
function tableFormP0601(strTableNameP0601, strType) {
    var names = $('#' + strTableNameP0601).jqGrid('getGridParam', "colNames");      //存放表格中的列名
    var indexs = $('#' + strTableNameP0601).jqGrid('getGridParam', "colModel");        //存放表格中列的配置
    var sign = "";              //存放必填项的标志位
    var strForm = "";       //表单开始
    var strAppendTmp = "";
    strForm += "<ul>";
    for (var i = 1; i < names.length; i++) {
        //必填项，标识为红色星号
        if (indexs[i]["editrules"].required == true) {
            sign = "<font color='red'>*</font>";
        }
        else {
            sign = "";
        }
        //供应商序号；状态不显示
        if (indexs[i]["name"] == "zt" || indexs[i]["name"] == "gysdm" || indexs[i]["name"] == "id") {
            continue;
        }
        //编号自动生成，不可编辑
        if (indexs[i]["name"] == "a2") {
            var strBh = "";
            //新增
            if (strType == "1") {
                //系统生成编号
                var strBh = ParseData(window.external.DoOptions(strTableNameP0601, 'MakeBH', '{}'));
                strBh = strBh.BH;
            }
            else {//修改
                strBh = jQuery('#' + strTableNameP0601).jqGrid('getCell', selRowId, i);
            }
            strAppendTmp += "<li>";
            strAppendTmp += names[i] + "：";
            strAppendTmp += "<input type='text'  name='" + indexs[i]["name"] + "'";
            strAppendTmp += " value='" + strBh + "'";
            strAppendTmp += " id='" + indexs[i]["name"] + "' maxlength='10'";
            strAppendTmp += " onkeypress='return checkValidate(event)' onpaste='return validatePaste()'/>"; //限制输入，粘贴特殊字符
            strAppendTmp += "</li>";
            continue;
        }
        if (indexs[i]["edittype"] == "text") {
            if (indexs[i]["name"] == "a15") {
                strAppendTmp += "<li>";
                strAppendTmp += sign;
                strAppendTmp += names[i] + "：";
                strAppendTmp += "<input type='text'  value=''  name='" + indexs[i]["name"] + "'";
                strAppendTmp += " id='" + indexs[i]["name"] + "'"; //限制输入长度
                strAppendTmp += " onkeypress='return checkValidate(event)' onpaste='return validatePaste()'/>"; //限制输入，粘贴特殊字符
                strAppendTmp += "</li>";
            }
            else {
                strAppendTmp += "<li>";
                strAppendTmp += sign;
                strAppendTmp += names[i] + "：";
                strAppendTmp += "<input type='text'  value=''  name='" + indexs[i]["name"] + "'";
                strAppendTmp += " id='" + indexs[i]["name"] + "' maxlength='50'"; //限制输入长度
                strAppendTmp += " onkeypress='return checkValidate(event)' onpaste='return validatePaste()'/>"; //限制输入，粘贴特殊字符
                strAppendTmp += "</li>";

            }
        }
    }
    strForm += strAppendTmp;
    strForm += "</ul>";

    $("#" + strDialogP0601 + "_divform").append(strForm);
    //修改时，加载value
    if (strType.toString() == '2') {
        for (var i = 0; i < indexs.length; i++) {
            $('#' + indexs[i].name, "#" + strDialogP0601 + "_divform").val(jQuery('#' + strTableNameP0601).jqGrid('getCell', selRowId, i));
        }
    }

    //form change设定
    $("#a12", $("#" + strDialogP0601 + "_divform")).autoNumeric({ mDec: 0, aSep: "", mNum: 6 }).focus(function () { this.select(); }).css("ime-mode", "disabled");
    $(":input", $("#" + strDialogP0601 + "_divform")).change(function () {
        $("#" + strDialogP0601 + "_divform").data("change", true);
    });

    $("#a3", $("#" + strDialogP0601 + "_divform")).focus();
    //释放内存
    names = null;
    indexs = null;
    sign = null;
    strForm = null;
    strAppendTmp = null;
}

/*-----------------------------------------------------------------------------
关闭按钮时 看看数据有没有变化时
-----------------------------------------------------------------------------*/
function closeMyDlg(dlgId, strType, strTableNameP0601) {
    if ($("#" + strDialogP0601 + "_divform").data("change")) {  //数据有变化
        showAlert();
    }
    else {
        //$("#" + dlgId).dialog("close");
        cihoDlgClose(dlgId);                    //关闭弹出层
    }
}

//验证表单是否有变化
function showAlert() {
    //函数名称
    window.parent.cihoAlert(
            msg.other.haveChange                    //message information
            , msgBox.dlgBtn.YesNoCancel        //按钮类型msgBox.dlgBtn.YesNo  msgBox.dlgBtn.YesNoCancel
            , function (strRet) {                           //回调函数
                if (msgBox.dlgRst.Yes == strRet) {
                    saveMyData(strDialogP0601, "1", strTableNameP0601);
                }
                else if (msgBox.dlgRst.No == strRet) {
                    //$("#" + strDialogP0601).dialog("close");
                    cihoDlgClose(strDialogP0601);
                }
            }
        );
}

//数据有效性验证
function formDataValidate(saveType) {
    var arrIds = $("#" + strTableNameP0601).jqGrid("getDataIDs");           //存放表格中所有的ID
    var strBh = trim($("#a2").val());                                                               //取得编号的值
    var strGysmc = trim($("#a3").val());                                                        //取得供应商名称的值            
    var strMail = trim($("#a9").val());                                                            //取得邮箱的值 

    for (var i = 0; i < arrIds.length; i++) {
        if ($("#" + strTableNameP0601).jqGrid("getCell", arrIds[i], "a2") != "") {
            if (strBh == $("#" + strTableNameP0601).jqGrid("getCell", arrIds[i], "a2") && arrIds[i] != selRowId) {
                window.parent.cihoAlert(msg.sz.gys.numberingQqual, msgBox.dlgBtn.YesNo, function (strRet) {
                    if (msgBox.dlgRst.Yes == strRet) {
                        if (false == dataRequired(strTableNameP0601, strDialogP0601)) {       //供应商名称为空时，直接返回false  
                            return false;
                        }
                        for (var i = 0; i < arrIds.length; i++) {
                            if (strGysmc == $("#" + strTableNameP0601).jqGrid("getCell", arrIds[i], "a3") && arrIds[i] != selRowId) {
                                window.parent.cihoAlert(msg.sz.gys.nameQqual, null, getSupplierFocus);                      //提示：供应商名称重复
                                return false;
                            }
                        }

                        if (strMail != "") {
                            var strRet = checkEmail(strMail);
                            if (strRet == false) {                                                                          //"邮箱格式不正确，请认真填写！"
                                window.parent.cihoAlert(msg.other.emailTypeErr, null, getEmailFocus);
                                return false;
                            }
                        }    
                                                    //编号重复，点击是时的操作
                        SaveP0601(strDialogP0601, strTableNameP0601, saveType);
                    }
                    else {
                        $("#a2").focus();                                                                       //让编号获得焦点
                    }
                });
                return false;
            }
        }
    }

    if (false == dataRequired(strTableNameP0601, strDialogP0601)) {       //供应商名称为空时，直接返回false  
        return false;
    }

    for (var i = 0; i < arrIds.length; i++) {
        if (strGysmc == $("#" + strTableNameP0601).jqGrid("getCell", arrIds[i], "a3") && arrIds[i] != selRowId) {
            window.parent.cihoAlert(msg.sz.gys.nameQqual, null, getSupplierFocus);                      //提示：供应商名称重复
            return false;
        }
    }

    if (strMail != "") {
        var strRet = checkEmail(strMail);
        if (strRet == false) {                                                                          //"邮箱格式不正确，请认真填写！"
            window.parent.cihoAlert(msg.other.emailTypeErr, null, getEmailFocus);
            return false;
        }
    }

    return true;
    //内存释放
    arrIds = null;
    strGysmc = null;
    strMail = null;
}

//得到邮箱的焦点
function getEmailFocus() {
    $("#a9").focus();
}

//得到供应商名称的焦点
function getSupplierFocus() {
    $("#a3").focus();
}
/*-----------------------------------------------------------------------------
//数据有效性验证：
//              必填项，是否为空；
//              数据格式是否正确。
//正常：返回true
//      否则false
-----------------------------------------------------------------------------*/
function saveMyData(dlgId, stype, strTableNameP0601) {
    var returnStates = formDataValidate(stype);                 //数据有效性验证
    if (returnStates) {                                                            //验证成功时执行保存操作
        SaveP0601(strDialogP0601, strTableNameP0601, stype);
    }
}

/*-----------------------------------------------------------------------------
//功能介绍：保存数据
//参   数：
strTableName, jqGrid名称
saveType，	保存类型
0：退出
3：保存新增
4：保存
//返回 值：
-----------------------------------------------------------------------------*/
function SaveP0601(dlgId, strTableNameP0601, saveType) {
    try {
        //同步保存数据
        var strRet = saveDataP0601(strTableNameP0601, "gysdm", dlgId);
        if ("0" == strRet) {
            //保存新增
            if (saveType == "2") {
                selRowId = "0";
                savesign = "1";

                //清空元素中的数据
                $(":input").val("");
                //系统生成编号
                var strBh = ParseData(window.external.DoOptions(strTableNameP0601, 'MakeBH', '{}'));
                strBh = strBh.BH;
                $("#a2").val(strBh);

                $("#" + strDialogP0601 + "_divform").data('change', false);
                $("#a3", $("#" + strDialogP0601 + "_divform")).focus();
            }
            //退出
            else {
                cihoDlgClose(strDialogP0601);
            }
            changeComboZt(strTableNameP0601);
            resizeGridScroll(strTableNameP0601);                    //调整表格的列宽度
        }
        //内存释放
        strRet = null;
        strBh = null;
    } catch (e) { }
}


/*---------------------------------------------------------------
创建浮动层按钮
供应商基本信息中浮动层按钮有：修改|删除|启【停】用
-----------------------------------------------------------------*/
function fDCP0601(rowId) {
    var strZt = $("#" + strTableNameP0601).jqGrid('getCell', rowId, "zt");
    selRowId = rowId;
    if (strZt == "已启用") {
        var btn = "<a onclick=\"alterP0601('" + selRowId + "');\" >修改</a>-<a onclick=\"deleteP0601('" + selRowId + "');\">删除</a>-<a onclick=\"alterSetP0601('" + selRowId + "');\">停用</a>";
    }
    else {
        var btn = "<a onclick=\"alterP0601('" + selRowId + "');\">修改</a>-<a onclick=\"deleteP0601('" + selRowId + "');\">删除</a>-<a onclick=\"alterSetP0601('" + selRowId + "');\">启用</a>";
    }
    createFloatButton.call(this, rowId, btn);
    //内存释放
    strZt = null;
    btn = null;
}

//调用修改的方法
function alterP0601(id) {
    if (id != null) {
        //打开修改窗口
        alterRecord("2");
    }
    else {
        window.parent.cihoAlert(msg.sz.edit.selEditRow);
    }

}

//删除操作
function deleteP0601(rowId) {
    try {
        window.parent.cihoAlert(msg.del.delConfirm, msgBox.dlgBtn.YesNo, function (result) {
            if (result == msgBox.dlgRst.Yes) {
                var strJsonData = "{\"gysdm\":\"" + $("#" + strTableNameP0601).jqGrid("getCell", rowId, "gysdm") + "\"}";
                var objResult = ParseData(window.external.DoOptions(strTableNameP0601, 'Delete', strJsonData));
                //删除成功后，重新加载数据
                if (objResult.ReturnCode == 0) {
                    $("#" + strTableNameP0601).jqGrid("delRowData", rowId);
                    rowId = "";
                    changeComboZt(strTableNameP0601);
                    //resizeGrid(strTableNameP0601);
                    resizeGridScroll(strTableNameP0601);                    //调整表格的列宽度
                }
                else {
                    window.parent.cihoAlert(objResult.MSG);
                }
            }
        });
    } catch (e) { }
}

//修改状态
function alterSetP0601(id) {
    try {
        if (true == alterState(strTableNameP0601, id, 'zt', "gysdm")) {
            changeComboZt(strTableNameP0601);
        }
    } catch (e) { }
}

/*-----------------------------------------------------------------------------
//功能介绍：保存数据
//参   数：
//strTableName  表名，同时是该页面对应的模块的类名
//url           保存数据的URL
//saveType:
//          3：保存新增
//          4：保存
//          0：退出
//返回 值：NULL
-----------------------------------------------------------------------------*/
function saveDataP0601(strTableNameP0601, strKey, strDlgId) {
    var strRecord = "";
    //获取要保存的数据。
    if (savesign == "1") {
        strRecord = "{";
    }
    else {
        strRecord = "{\"" + strKey + "\":\"" + $("#" + strTableNameP0601).jqGrid("getCell", selRowId, strKey) + "\",";
    }
    $(":input", $("#" + strDlgId + "_divform")).each(function () {
        if ($(this).attr("name") != "" && $(this).attr("name") != null) {
            strRecord += "\"" + $(this).attr("name") + "\":\"" + trim($(this).val()) + "\",";
        }
    });
    //去掉最后的'，'
    strRecord = strRecord.substring(0, strRecord.length - 1);
    strRecord += "}";

    var s = "";
    //初次保存，savesign：1---insert数据 ；savesign：2---update数据
    if (savesign == "1") {
        //插入
        s = saveData(strTableNameP0601, strRecord, "1");
        selRowId = s.id;
        if ("0" == s.ReturnCode) {
            savesign = "2";

            $("#" + strTableNameP0601).jqGrid("addRowData", selRowId, ParseData(strRecord), "first");

            //设定a1：代码的值
            $("#" + strTableNameP0601).jqGrid("setCell", selRowId, strKey, s[strKey]);
            //设定状态值
            $("#" + strTableNameP0601).jqGrid("setCell", selRowId, "zt", "已启用");
            $("#" + strDialogP0601 + "_divform").data('change', false);
        }
    }
    else {//更新
        s = saveData(strTableNameP0601, strRecord, "2");
        if ("0" == s.ReturnCode) {
            //更新数据到jqGrid
            $("#" + strTableNameP0601).jqGrid("setRowData", selRowId, ParseData(strRecord));
            $("#" + strDialogP0601 + "_divform").data('change', false);
        }
    }
    return s.ReturnCode;
    //内存释放
    strRecord = null;
    objResult = null;
    strParsedData = null;
}

//加载设置状态的值
function formatterZtP0601() {
    var arrIds = $(this).jqGrid("getDataIDs");
    var strState = "1";
    for (var i = 0; i < arrIds.length; i++) {
        strState = $(this).jqGrid("getCell", arrIds[i], "zt");
        if (strState == "True") {
            //zt：状态
            $(this).jqGrid("setCell", arrIds[i], "zt", "已启用");
        }
        if (strState == "False") {
            $(this).jqGrid("setCell", arrIds[i], "zt", "已停用");
        }
    }
    //释放内存
    arrIds = null;
}

//新增:增加双击编辑事件
function funcDbClick(rowId) {
    alterRecord("2");
}
