﻿/*powered by chenshuai 20100617*/
function JQueryResultObject() {
    this.error = null;
    this.data = null;
    this.status = null;
    this.rowcnt = 0;
    this.pidx = 0;
    this.prows = 10;
    this.pcnt = 0;
    this.prange = 10;
    this.pranges = new Array();
    this.prangeidx = 0;
    this.lastprangesidx = 0;
    this.firstprangesidx = 0;
    this.lastprangesidx1 = 0;
    this.firstprangesidx1 = 0;
    this.startrowidx = 0;
    this.endrowidx = 0;
    this.nowpagerowcnt = 0;
}
function JQueryDataTable(jquerydt, dtname) {
    if (dtname == null) dtname = "Table1"; //此处必须与服务器端的DataTable名称一致
    this.DT = $(jquerydt);
    this.Name = dtname;
    var Rows = new Array();
    this.GetLength = function() {
        return this.DT.find(this.Name).length;
    }
    if (this.GetLength() > 0) {
        this.DT.find(this.Name).each(function() {
            Rows.push($(this));
        });
    }
    this.GetValue = function(rowidx, colname) {
        if (Rows.length == 0) return null;
        var len = this.GetLength();
        if (len == 0) return null;
        if (rowidx < 0 || rowidx >= len) return null;
        var row = Rows[rowidx];
        if (row.children(colname).length == 0) return null;
        return row.children(colname).text();
    }
}
function JQueryAjaxDataTable(purl, pdata, callback) {
    var obj = new JQueryResultObject();
    if (callback == null) {
        $.ajax({
            type: "POST",
            url: purl,
            data: pdata,
            async: false,
            dataType: "xml",
            success: function(data, textStatus) {
                obj.status=data.id;
		if(data.id>=10000){
                   obj.error=eval("(" + data.name + ")");
		}else{
	           obj.data =eval("(" + data.name + ")");
                   var dt = new JQueryDataTable(obj.data);
                   obj.data = dt;
		}

            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status >= 10000) {
                    obj.error = XMLHttpRequest.responseText;
                } else {
                    obj.error = textStatus;
                }
                obj.status = XMLHttpRequest.status;
            }
        });
        return obj;
    } else {
        $.ajax({
            type: "POST",
            url: purl,
            data: pdata,
            dataType: "xml",
            success: function(data, textStatus) {
                obj.status=data.id;
		if(data.id>=10000){
                   obj.error=eval("(" + data.name + ")");
		}else{
	           obj.data =eval("(" + data.name + ")");
                   var dt = new JQueryDataTable(obj.data);
                   obj.data = dt;
		}
                callback(obj);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status >= 10000) {
                    obj.error = XMLHttpRequest.responseText;
                } else {
                    obj.error = textStatus;
                }
                obj.status = XMLHttpRequest.status
                callback(obj);
            }
        });
    }
}
function JQueryAjax(purl, pdata, callback) {
    var sdata = "";
    if (typeof (p_sessionid) != "undefined") sdata = "sessionid=" + p_sessionid;
    if (sdata != "") {
        sdata += "&refurl=" + escape(document.referrer);
    } else {
    sdata = "refurl=" + escape(document.referrer);
    }
    var obj = new JQueryResultObject(); 
    if (callback == null) {
        $.ajax({
            type: "POST",
            url: purl,
            data: pdata==null?sdata:(pdata+"&"+sdata),
            async: false,
            dataType: "json",
            success: function(data, textStatus) {
                obj.status=data.id;
		if(data.id>=10000){
                   obj.error=eval("(" + data.name + ")");
		}else{
	           obj.data =eval("(" + data.name + ")");
		}
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status >= 10000) {
                    obj.error = XMLHttpRequest.responseText;
                } else {
                    obj.error = textStatus;
                }
                obj.status = XMLHttpRequest.status;
            }
        });
        return obj;
    } else {
        $.ajax({
            type: "POST",
            url: purl,
            data: pdata == null ? sdata : (pdata + "&" + sdata),
            dataType: "json",
            success: function(data, textStatus) {
                obj.status=data.id;
		if(data.id>=10000){
                   obj.error=eval("(" + data.name + ")");
		}else{
	           obj.data =eval("(" + data.name + ")");
		}
                callback(obj);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status >= 10000) {
                    obj.error = XMLHttpRequest.responseText;
                } else {
                    obj.error = textStatus;
                }
                obj.status = XMLHttpRequest.status;
                callback(obj);
            }
        });
    }
}
function JQueryAjax2(purl, pdata, pidx, prow, prange, callback) {
    var sdata = "";
    if (typeof (p_sessionid) != "undefined") sdata = "sessionid=" + p_sessionid;
    if (sdata != "") {
        sdata += "&refurl=" + escape(document.referrer);
    } else {
    sdata = "refurl=" + escape(document.referrer);
    }
    var obj = new JQueryResultObject();
    if (callback == null) {
        $.ajax({
            type: "POST",
            url: purl,
            data: (pdata == null ? ("pidx=" + pidx + "&prow=" + prow + "&prange=" + prange + "&" + sdata) : (pdata + "&pidx=" + pidx + "&prow=" + prow + "&prange=" + prange + "&" + sdata)),
            async: false,
            dataType: "json",
            success: function(data, textStatus) {
                obj.status = data.id;
                if (data.id >= 10000) {
                    obj.error = eval("(" + data.name + ")");
                } else {
                    data = eval("(" + data.name + ")");
                    obj.data = data.Rows;
                    obj.rowcnt = data.RowCnt;
                    obj.pidx = data.PageIdx;
                    obj.prows = data.PageRows;
                    obj.pcnt = data.PageCnt;
                    obj.prange = data.PageRange;
                    obj.pranges = data.PageRanges;
                    obj.prangeidx = data.PageRangeIdx;
                    obj.lastprangesidx = data.LastPageRangesIdx;
                    obj.firstprangesidx = data.FirstPageRangesIdx;
                    obj.lastprangesidx1 = data.LastPageRangesIdx1;
                    obj.firstprangesidx1 = data.FirstPageRangesIdx1;
                    obj.startrowidx = data.StartRowIdx;
                    obj.endrowidx = data.EndRowIdx;
                    obj.nowpagerowcnt = data.NowPageRowCount;
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status >= 10000) {
                    obj.error = XMLHttpRequest.responseText;
                } else {
                    obj.error = textStatus;
                }
                obj.status = XMLHttpRequest.status;
            }
        });
        return obj;
    } else {
        $.ajax({
            type: "POST",
            url: purl,
            data: (pdata == null ? ("pidx=" + pidx + "&prow=" + prow + "&prange=" + prange + "&" + sdata) : (pdata + "&pidx=" + pidx + "&prow=" + prow + "&prange=" + prange + "&" + sdata)),
            dataType: "json",
            success: function(data, textStatus) {
                obj.status=data.id;
		if(data.id>=10000){
                   obj.error=eval("(" + data.name + ")");
		}else{
	           data =eval("(" + data.name + ")");
                   obj.data = data.Rows;
                   obj.rowcnt = data.RowCnt;
                   obj.pidx = data.PageIdx;
                   obj.prows = data.PageRows;
                   obj.pcnt = data.PageCnt;
                   obj.prange = data.PageRange;
                   obj.pranges = data.PageRanges;
                   obj.prangeidx = data.PageRangeIdx;
                   obj.lastprangesidx = data.LastPageRangesIdx;
                   obj.firstprangesidx = data.FirstPageRangesIdx;
                   obj.lastprangesidx1 = data.LastPageRangesIdx1;
                   obj.firstprangesidx1 = data.FirstPageRangesIdx1;
                   obj.startrowidx = data.StartRowIdx;
                   obj.endrowidx = data.EndRowIdx;
                   obj.nowpagerowcnt = data.NowPageRowCount;
		}
                callback(obj);
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (XMLHttpRequest.status >= 10000) {
                    obj.error = XMLHttpRequest.responseText;
                } else {
                    obj.error = textStatus;
                }
                obj.status = XMLHttpRequest.status;
                callback(obj);
            }
        });
    }
}

//针对跨域调用
function JQueryAjax3(purl, pdata, callback) {
    var obj = new JQueryResultObject();
    if (callback == null) {
        $.ajax({
            type: "GET",
            url: purl,
            data: pdata,
            async: false,
            dataType: "jsonp",
            jsonp: "callback",
            success: function(data, textStatus) {
                obj.data = data;
            }
        });
        return obj;
    } else {
        $.ajax({
            type: "GET",
            url: purl,
            data: pdata,
            dataType: "jsonp",
            jsonp: "callback",
            success: function(data, textStatus) {
                obj.data = data;
                callback(obj);
            }
        });
    }
}

