//异步多请求
j2.util.Ajax = j2.util.Ajax || {
    _objectPool: [],
    _getInstance: function () {
        for (var i = 0; i < this._objectPool.length; i ++) {
            if (this._objectPool[i].readyState == 0 || this._objectPool[i].readyState == 4) {
                return this._objectPool[i];
            }
        }
        // IE5中不支持push方法
        this._objectPool[this._objectPool.length] = this._createObject();
        return this._objectPool[this._objectPool.length - 1];
    },
    _createObject: function () {
        if (window.XMLHttpRequest) {//Mozilla浏览器
            var objectXMLHttp = new XMLHttpRequest();
        } else if (window.ActiveXObject) {//IE浏览器
            var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
            for(var n = 0; n < MSXML.length; n ++) {
                try {
                    var objectXMLHttp = new ActiveXObject(MSXML[n]);
                    break;
                } catch(e) {
                }
            }
        }
        //Mozilla某些版本没有readyState属性
        if (objectXMLHttp.readyState == null) {
            objectXMLHttp.readyState = 0;
            objectXMLHttp.addEventListener("load", function () {
                                                    objectXMLHttp.readyState = 4;
                                                    if (typeof objectXMLHttp.onreadystatechange == "function") {
                                                        objectXMLHttp.onreadystatechange();
                                                    }
                                                }, false);
        }
        return objectXMLHttp;
    },
    // 发送请求(地址, 数据, 回调函数, 等待函数, 传给回调函数参数, 方法[post,get])
    request: function (url, data, callback, waitcall, args, method) {
        var objectXMLHttp = this._getInstance();
        if (objectXMLHttp) {
            var L = j2.lang;
            if (!L.isString(method) || method == "") {
                method = "post";
            }
            method = "post";
            with(objectXMLHttp) {
                try {
                    // 加随机数防止缓存
                    if (url.indexOf('?') > 0) {
                        url += "&randnumbertemp=" + Math.random();
                    } else {
                        url += "?randnumbertemp=" + Math.random();
                    }
                    open(method, url, true);
                    // 设定请求编码方式
                    setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                    send(data);
                    onreadystatechange = function () {
                        if (objectXMLHttp.readyState == 4 
                            && (objectXMLHttp.status == 200 || objectXMLHttp.status == 304)) {
                            callback(objectXMLHttp, args);
                        }
                    };
                } catch(e) {
                    ;
                }
            }
        }
    }
};
j2.ajax = j2.util.Ajax;

