//王诚 2009.9-2010
//嵌入JS应该放在什么位置
//1、放在底部，虽然放在底部照样会阻塞所有呈现，但不会阻塞资源下载。
//2、如果嵌入JS放在head中，请把嵌入JS放在CSS头部。
//3、使用defer
//4、不要在嵌入的JS中调用运行时间较长的函数，如果一定要用，可以用setTimeout来调用



//初始化
$(function() {
    $("body").append("<div id='myAjaxStateDiv' ></div>");//ajax状态
})


//ajax默认值
$.ajaxSetup({
            scriptCharset:"utf-8",//在使用getScript的时候,获取的js文件,按照utf-8的编码来获取
            beforeSend:function(XHR) {
                // XHR.setRequestHeader("If-Modified-Since",0);
                //这样才能真正起到每次获取最新数据的功能
                //经过测试,设置cache=false,应该也可以,但是设置ifmodified,=false或者true没有什么变化,
                //所以,如果必须为最新的数据,就采用beforeSend的方式,cache的方式不好,效率低
                //但是,在使用ajax调用动态的页面,比如jsp或者wsf的时候,什么不设置,也一直返回代码都是200,就是每次都是最新的啊,为什么
                //也就是说,其实页面刷新,数据不是最新的问题,应该是hibernate的问题
            },

            ifModified:false,//=true时,表示每次都获取最新的,false的时候,只有数据修改过了才获取新的,否则使用缓存
            cache: false//不使用cache,可以获取最新的数据,但是效率低下,因为jquery是在url后面加入了时间戳,每次都是一个新的url
        });


$("body").ajaxStart(function(event, request, settings) {
    $("#myAjaxStateDiv").html("");
    $("#myAjaxStateDiv").show();
    $("#myAjaxStateDiv").text("开始了..." + event + request + settings);
})

$("body").ajaxSend(function(event, request, settings) {
    $("#myAjaxStateDiv").show();
    $("#myAjaxStateDiv").text("加载中..." + event + request + settings);
})

$("body").ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
    $("#myAjaxStateDiv").text("出错了...");
})

$("body").ajaxSuccess(function() {
    $("#myAjaxStateDiv").text("成功了...");
})

$("body").ajaxComplete(function() {
    $("#myAjaxStateDiv").text("完成了...");
})

$("body").ajaxStop(function() {
    $("#myAjaxStateDiv").text("结束了...");
    $("#myAjaxStateDiv").fadeOut(1000, function() {
        //$("#myAjaxStateDiv").html("");
    });

//$("#myAjaxStateDiv").hide();
})

function gotoUrl(url) {
    window.location = url;
//使用location.href在ie中出错误
}


function gotoUrl_Top(url) {
    top.location = url;
//使用location.href在ie中出错误
}


/* 简化的 showModalDialog  */
function showDialog(url, args, width, height) {
    var options = "dialogWidth=" + width + "px;dialogHeight=" + height + "px;center=yes;help=no;resizable=yes;scroll=yes;status=1;";
    return window.showModalDialog(url, args, options);
}

var GlobalAction;
function showInnerDialog(title,url, args, width, height,callback) {
    GlobalAction=callback;
    var options = "dialogWidth=" + width + "px;dialogHeight=" + height + "px;center=yes;help=no;resizable=yes;scroll=yes;status=1;";
    asyncbox.open({title:title,id:"Asyncbox",modal:true,url:url,width:width,height:height}) ;
    return name;
    //return window.showModalDialog(url, args, options);
}

function closeDialog(id,rv){
    $.close(id,'close');
    GlobalAction.call(GlobalAction,rv);
}

//加入收藏
function addFav(sURL, sTitle) {
    try {
        window.external.addFavorite(sURL, sTitle);
    }
    catch (e) {
        try {
            window.sidebar.addPanel(sTitle, sURL, "");
        }
        catch (e) {
            alert("加入收藏失败，请使用Ctrl+D进行添加");
        }
    }
}
//设置为首页  setHome(this,url)
function setHome(obj, vrl) {
    try {
        obj.style.behavior = 'url(#default#homepage)';
        obj.setHomePage(vrl);
    }
    catch(e) {
        if (window.netscape) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            }
            catch (e) {
                alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");
            }
            var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
            prefs.setCharPref('browser.startup.homepage', vrl);
        }
    }
}


//设定回车为登录按钮操作(默认按钮)
function defaultButton(fn) {
    document.onkeydown = function(e) {
        var ev = document.all ? window.event : e;//ff和ie的兼容
        if (ev.keyCode == 13) {
            fn();
        }
    }
}

// 奇偶行效果(因为是从0开始计数的,所以其实是设置的是偶数行效果)
/*
 $(function() {

 $("tbody tr:odd").livequery(function() {
 $(this).addClass("odd");//奇数
 })

 $("tbody tr:even").livequery(function() {
 $(this).addClass("even");//偶数
 })

 })
 */

//获取随机数
function getRandom(n) {
    return parseInt(Math.random() * n + 1)
}


function msg(msg) {
    $.messager.show({
                title:'提示',
                msg:msg,
                timeout:3000,
                showType:'slide'
            });
}

function myAlert(msg) {
    $.messager.alert('提示', msg);
}
function myAlertError(msg) {
    $.messager.alert('错误', msg, 'error');
}
function myAlertInfo(msg) {
    $.messager.alert('信息', msg, 'info');
}
function myAlertQuestion(msg) {
    $.messager.alert('问题', msg, 'question');
}
function myAlertWarning(msg) {
    $.messager.alert('警告', msg, 'warning');
}

function myConfirm(title,fn) {
    $.messager.confirm('确认', title || '您确定吗?', function(rtn) {
        if (rtn) {
            fn()
        }
    });
}
function myPrompt(title,fn) {
    $.messager.prompt('输入', title||'请输入:', function(rtn) {
        if (rtn) {
            fn(rtn)
        }
    });
}


//从一个对象数组中取出一个部分值的对象数值
function getSubObjArrayByObjArray(array, keys) {
    keys = keys.split(",")
    var rtn = []
    $.each(array, function(i, r) {
        var obj = {}
        $.each(keys, function(i1, r1) {
            obj[r1] = r[r1]
        })
        rtn[i] = obj
    })
    return rtn
}
//从一个对象数组中取出一个单值的数组,(普通值数值)
function getValueArrayByObjArray(array, key) {
    var rtn = []
    $.each(array, function(i, r) {
        rtn[i] = this[key]
    })
    return rtn
}


// 获得arrayString中的名称为name的参数的值
function getParameterByArrayString(name, arrayString, mainSplit, subSplit) {
    var rtn = "";

    if (name != null && name.length > 0 && arrayString != null
            && arrayString.length > 0) {
        if (mainSplit == null || mainSplit.length == 0) {
            mainSplit = ",";
        }
        if (subSplit == null || subSplit.length == 0) {
            subSplit = "=";
        }
        arrayString = mainSplit + arrayString;//在第一个条件之前加上主分割符号,这样就可以按照比如",name="这样的方式来查询,而这样也就避免了"f_id="包含"id="的方式了
        var name1 = mainSplit + name + subSplit;
        var start = arrayString.indexOf(name1);//起始位置
        var length = name1.length;//长度
        if (start > -1) {
            var m = arrayString.substring(start + length);
            var e = m.indexOf(mainSplit);
            if (e < 0) {
                rtn = m;
            } else {
                rtn = m.substring(0, e);
            }
        }
    }
    return rtn;
}


// 获得arrayString中的名称为name的参数的值
function getParameterByArrayString1(name, arrayString, mainSplit, subSplit) {
    var rtn = "";
    if (name != null && name.length > 0 && arrayString != null
            && arrayString.length > 0) {
        if (mainSplit == null || mainSplit.length == 0) {
            mainSplit = ",";
        }
        if (subSplit == null || subSplit.length == 0) {
            subSplit = "=";
        }
        var s = arrayString.indexOf(name + subSplit);
        var l = name.length + 1;
        if (s > -1) {
            var m = arrayString.substring(s + l);
            var e = m.indexOf(mainSplit);
            if (e < 0) {
                rtn = m;
            } else {
                rtn = m.substring(0, e);
            }
        }
    }
    return rtn;
}

// 获得当前的url的参数字符串,因为search的值是包含?的,所以要去掉?号
function getQueryString() {
    var q = window.location.search;
    if (q != null && q.length > 0) {
        return q.toString().substring(1);
    } else {
        return "";
    }
}


//获得当前窗口上级的url的参数字符串
function getQueryStringByTop() {
    var q = window.top.location.search;
    if (q != null && q.length > 0) {
        return q.toString().substring(1);
    } else {
        return "";
    }
}
//获得上级窗口的url中的名称为name的参数的值
function getParameterByTopUrl(name) {
    var rtn = "";
    rtn = getParameterByArrayString(name, getQueryStringByTop(), "&", "=");
    return rtn;
}
// 获得当前的url中的名称为name的参数的值
function getParameterByUrl(name) {
    var rtn = "";
    rtn = getParameterByArrayString(name, getQueryString(), "&", "=");
    return rtn;
}


//把xml文档转换为字符串
function xmlToString(xmlDoc) {
    if (window.ActiveXObject) { // for IE
        return xmlDoc.xml;
    } else {
        return (new XMLSerializer()).serializeToString(xmlDoc);
    }
}
//把字符串转换xml文档
function stringToXml(xmlString) {
    var xmlDoc;
    // Mozilla and Netscape browsers
    if (document.implementation.createDocument) {
        var parser = new DOMParser();
        xmlDoc = parser.parseFromString(xmlString, "text/xml");// "application/xml");//也可以
        // MSIE
    } else if (window.ActiveXObject) {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlString);
    }
    return xmlDoc;
}


/*
 dialog参数设置:
 dialogDivId:弹出层的id
 dialogPostion:对话框的起始位置
 closeFunction:点击关闭后调用的函数(如刷新页面，获取数据等)
 */
function dialogSet(dialogDivId, dialogTitle, dialogWidth, dialogHeight, dialogPostion, closeFunction) {
    var dialogOpts = {
        title:dialogTitle,
        modal:true,
        autoOpen:false,
        width:dialogWidth,
        height:dialogHeight,
        position:dialogPostion,
        close:function() {
            return closeFunction();
        }

    }
    $("div[id='" + dialogDivId + "']").dialog(dialogOpts);//ie6中报错
}


//把options系列字符串,转换成一个name/value的数组,的循环过程中,执行fn(name/value)    ,例如:optionsToArray(options,function(name,value){})
function optionsToArray(options, fn) {
    var opts = options.split(",")
    $.each(opts, function(i, option) {
        var index = option.indexOf(":")
        var name = option,value = option
        if (index > -1) {
            name = option.substring(0, index)
            value = option.substring(index + 1)
        }
        fn(name, value)
    })
}


//去掉两边的逗号,显示某个用户的角色信息时需要调用
function removeComma(strData) {
    var replaceData = strData.replace(/(^\W+)|(\W+$)/g, "");
    return replaceData;
}

//从数据库中取出string字符串时，去掉两边的方括号
function removeSquare(strData) {
    var replaceData = strData.replace(/(\[\")|(\"])/g, "");
    return replaceData;
}


/*  自适应大小的iframe   */
function iframeAutoSize(iframeId, heightOrWidthOrBoth) {
    var FFextraHeight = 0;
    var pTar = null;
    if (document.getElementById) {
        pTar = document.getElementById(iframeId);
    } else {
        eval('pTar = ' + iframeId + ';');
    }

    if (pTar && !window.opera) {
        //begin resizing iframe
        pTar.style.display = "block"

        if (pTar.contentDocument && pTar.contentDocument.body.offsetHeight) {
            switch (heightOrWidthOrBoth) {
                case 'both':
                    pTar.height = pTar.contentDocument.body.offsetHeight + FFextraHeight;
                    pTar.width = pTar.contentDocument.body.offsetWidth + FFextraWidth;
                    break;
                case 'height':
                    pTar.height = pTar.contentDocument.body.offsetHeight + FFextraHeight;
                    break;
                case 'width':
                    pTar.width = pTar.contentDocument.body.offsetWidth + FFextraWidth;
                    break;
                default:
                    pTar.height = pTar.contentDocument.body.offsetHeight + FFextraHeight;
                    break;
            }


        } else if (pTar.Document && pTar.Document.body.scrollHeight) {
            switch (heightOrWidthOrBoth) {
                case 'both':
                    pTar.height = pTar.Document.body.scrollHeight;
                    pTar.width = pTar.Document.body.scrollWidth;
                    break;
                case 'height':
                    pTar.height = pTar.Document.body.scrollHeight;
                    break;
                case 'width':
                    pTar.width = pTar.Document.body.scrollWidth;
                    break;
                default:
                    pTar.height = pTar.Document.body.scrollHeight;
                    break;
            }
        }
    }

}


//把一个以字节为单位的数字,自动根据大小,修改为一个以KB/MB等为单位的数字的字符串
function getFormatBytes(bytes) {
    if (bytes > 0) {
        var s = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB'];
        var e = Math.floor(Math.log(bytes) / Math.log(1024));
        return (bytes / Math.pow(1024, Math.floor(e))).toFixed(2) + " " + s[e];
    } else {
        return "0.00 KB";
    }
}


//
function getFormatDate(date, fmt) {
    var o = {
        "M+" : date.getMonth() + 1, //月份
        "d+" : date.getDate(), //日
        "h+" : date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, //小时
        "H+" : date.getHours(), //小时
        "m+" : date.getMinutes(), //分
        "s+" : date.getSeconds(), //秒
        "q+" : Math.floor((date.getMonth() + 3) / 3), //季度
        "S" : date.getMilliseconds() //毫秒
    };
    var week = {
        "0" : "\u65e5",
        "1" : "\u4e00",
        "2" : "\u4e8c",
        "3" : "\u4e09",
        "4" : "\u56db",
        "5" : "\u4e94",
        "6" : "\u516d"
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[date.getDay() + ""]);
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
}


/*
 * 对Date的扩展，将 Date 转化为指定格式的String
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * eg:
 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
 */
Date.prototype.dateFormat = function(fmt) {
    var o = {
        "M+" : this.getMonth() + 1, //月份
        "d+" : this.getDate(), //日
        "h+" : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
        "H+" : this.getHours(), //小时
        "m+" : this.getMinutes(), //分
        "s+" : this.getSeconds(), //秒
        "q+" : Math.floor((this.getMonth() + 3) / 3), //季度
        "S" : this.getMilliseconds() //毫秒
    };
    var week = {
        "0" : "\u65e5",
        "1" : "\u4e00",
        "2" : "\u4e8c",
        "3" : "\u4e09",
        "4" : "\u56db",
        "5" : "\u4e94",
        "6" : "\u516d"
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
}


//把date(需要使用new Date() 的方式建立)类型转换为自定义的myDate类型,主要是为了写入到数据库中
function getMyDate_ByDate(date) {
    //因为毫秒不能确定位数,所以修改为了三个0
    return date.format("yyyyMMddHHmmss") + "000";

}

//把自定义的myDate转换为date类型,主要是用户数据库读取出来进行显示
function getDate_ByMyDate(myDate) {
    //因为毫秒在这里出现问题,所以就不去使用了
    var d = myDate.toString();
    var date = new Date();
    date.setFullYear(d.substring(0, 4), d.substring(4, 6) - 1, d.substring(6, 8));
    date.setHours(d.substring(8, 10), d.substring(10, 12), d.substring(12, 14));
    return date;

}

//去除左右两边的空格
function strTrim(str) {
    whitespace = '\n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
    for (var i = 0,len = str.length; i < len; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }
    for (i = str.length - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

//测字符串实际长度
String.prototype.Tlength = function() {
    var arr = this.match(/[^\x00-\xff]/ig);
    return this.length + (arr == null ? 0 : arr.length);
}

//字符串左取
String.prototype.left = function(num, mode) {
    if (!/\d+/.test(num))return(this);
    var str = this.substr(0, num);
    if (!mode) return str;
    var n = str.Tlength() - str.length;
    num = num - parseInt(n / 2);
    return this.substr(0, num);
}

//字符串右取
String.prototype.right = function(num, mode) {
    if (!/\d+/.test(num))return(this);
    var str = this.substr(this.length - num);
    if (!mode) return str;
    var n = str.Tlength() - str.length;
    num = num - parseInt(n / 2);
    return this.substr(this.length - num);
}

//字符串包含
String.prototype.GetCount = function(str, mode) {
    return eval("this.match(/(" + str + ")/g" + (mode ? "i" : "") + ").length");
}

//字符串去除两端空字符
String.prototype.Trim = function() {
    return this.replace(/(^\s*)ws(\s*$)/g, "");
}
String.prototype.Ltrim = function() {
    return this.replace(/(^\s*)/g, "");
}
String.prototype.Rtrim = function() {
    return this.replace(/(\s*$)/g, "");
}


var CONDITION;
//Get current Document path with suffix
function getDocumentName() {
    var lo = window.location.pathname;
    lo = lo.substr(lo.lastIndexOf('/') + 1);
    return lo;
}
function isContentPage() {
    var docName = getDocumentName();
    return  docName.indexOf('contentPage') != -1;
}

function isCommentPage() {
    var docName = getDocumentName();
    return  docName.indexOf('commentPage') != -1;
}
function isSearchPage() {
    var docName = getDocumentName();
    return  docName.indexOf('searchPage') != -1;
}
// 获得当前的url中的名称为name的参数的值,
var global_nodeId;
function getNodeIdByUrl() {
    if (global_nodeId != undefined)return global_nodeId;
    var rtn = "";
    rtn = getParameterByArrayString("id", getQueryString(), "&", "=");
    if (isContentPage()) {
        var idArr = syncGet(proxyName + '/Dao_T_Content/getRowsById.fn', 'fieldNames=f_nodeId&id=' + rtn);
        idArr = JSON.parse(idArr);
        rtn = idArr[0] || 0;
    }

    return rtn;
}
function getNodePathById(nid, callback) {
    $.get(proxyName + '/Dao_T_Node/getRowsByCase.fn?whereQuery=' + encodeURI('["f_id=' + nid + '"]'), 'fieldNames=f_idPath', callback, 'json');
//            var path;
//            $.ajax({
//                type: "get",
//                url: proxyName+'/Dao_T_Node/getRowsByCase.fn?whereQuery='+encodeURI('["f_id='+nid+'"]'),
//                data: 'fieldNames=f_idPath',
//                dataType:'json',
//                success: function(data){
//                    path=data[0];
//                },
//                async:false
//            });
//            return path;
}

function getConditions(moduleParams, callback) {
    var condition = [];
    var otherQuery = moduleParams.otherQuery;
    if (otherQuery)otherQuery = otherQuery.replace(/`/g, "'");
    var f_nodeId = moduleParams.nodeId;
    if (!f_nodeId || f_nodeId == -1) {
        f_nodeId = getNodeIdByUrl();
    } else if (isNaN(f_nodeId)) {
        f_nodeId = undefined;
    }

    if (f_nodeId) {
        getNodePathById(f_nodeId, function(data) {
            var path = data[0];
            condition.push("f_nodeIdPath like ?");
            condition.push("%" + path + "%");
            if (otherQuery) {
                condition[0] += " and " + otherQuery;
            }
            setTimeout(function() {
                callback.call(callback, condition);
            }, 0);

        });
        return;
    }
    else
        condition[0] = otherQuery;
    setTimeout(function() {
        callback.call(callback, condition);
    }, 0);
    return;
}
function getConditions1(moduleParams, callback) {
    if (CONDITION != undefined)return CONDITION;
    var condition = [];
    var otherQuery = moduleParams.otherQuery || getParameterByUrl("whereQuery");
    var f_nodeId = moduleParams.nodeId;
    if (!f_nodeId || f_nodeId == -1) {
        f_nodeId = getNodeIdByUrl();
    } else if (isNaN(f_nodeId)) {
        f_nodeId = undefined;
    }
    if (f_nodeId) {
        condition.push("f_nodeIdPath like ?");
        condition.push("%" + getNodePathById(f_nodeId) + "%");
    }
    if (otherQuery) {
        if (condition.length > 0)
            condition[0] += " and " + otherQuery;
        else
            condition[0] = otherQuery;
    }
    CONDITION = condition;
    return condition;
}

function syncEval(url, callback) {
    $.ajax({
                type: "POST",
                url: url,
                data: null,
                success: callback,
                async:false,
                cache:true,
                dataType: 'script'
            })
}

function syncGet(url, data) {
    var rs;
    $.ajax({
                url: url,
                data: data,
                success: function(data1) {
                    rs = data1;
                },
                async:false
            });
    return rs;
}
function asyncEval(url, callback) {
    $.ajax({
                type: "POST",
                url: url,
                data: null,
                success: callback,
                cache:true,
                dataType: 'script'
            })
}

String.prototype.len = function() {
    return this.replace(/[^\x00-\xff]/g, "rr").length;
};
String.prototype.subchar = function(n) {
    var r = /[^\x00-\xff]/g;
    if (this.replace(r, "mm").length <= n) return this;
    // n = n - 3;
    var m = Math.floor(n / 2);
    for (var i = m; i < this.length; i++) {
        if (this.substr(0, i).replace(r, "mm").length >= n) {
            return this.substr(0, i);
        }
    }
};

function getUserFromNodeId(callback) {
    var id = getNodeIdByUrl();
    $.get(proxyName + "/Dao_T_Node/getFieldValue.fn?fieldName=f_createUser", "id=" + id, callback);
}
