//使用前,必须先加载MyCommon.js

/*
 * 创建一个XMLHttpRequest对象
 *
 * @return XMLHttpRequest对象,false为浏览器不支持
 */
function CreateXMLHttpRequest() {
	var req = false;//定义变量,用来创建XMLHttpRequest对象

	if (window.XMLHttpRequest) {
        	try {
        		req = new XMLHttpRequest();//IE7以上版本,或者非IE浏览器，用XMLHttpRequest对象创建
        	} catch(e) {

        	}
	} else if (window.ActiveXObject) {
		try {
        		req = new ActiveXObject("Microsoft.XMLHttp");//IE5,IE6浏览器用ActiveXObject对象创建
        	} catch(e) {

        	}
	}

	return req;
}

/*
 * 创建一个XMLHttpRequest对象池
 *
 * @param size 数组长度
 * @return XMLHttpRequest对象数组
 */
function CreateXMLHttpRequestPool(size) {
	var pool = new Array(size);
	for (var i = 0; i < size; i++) {
		var req = CreateXMLHttpRequest();
		pool[i] = req;//生成一个XMLHttpRequest对象,存入数组中
	}

	return pool;
}

/*
 * 从XMLHttpRequest对象池中取出一个对象
 *
 * @param pool XMLHttpRequest对象数组
 * @return XMLHttpRequest对象,false为浏览器不支持
 */
function CreateXMLHttpRequestFromPool(pool) {
	if (pool.constructor != window.Array) {
		return false;
	}

	for (var i = 0; i < pool.length; i++) {
		var req = pool[i];

		try {
			if (req.readyState == null || req.readyState == 0 || req.readyState == 4) {
				return req;//当XMLHttpRequest对象的readyState属性为0或4时,可认为该对象是空闲的,某些浏览器不支持这个属性,所以为空
			}
		} catch(e) {

		}
	}

	return false;
}

/*
 * 对URL地址加随机数防止缓存,得到一个唯一的URL
 *
 * @return URL地址
 */
function InitURL(sourceURL) {
	sourceURL = Trim(sourceURL);

	var url = "";//要请求的服务端地址

	if (sourceURL.indexOf("?") > 0) {
		url = sourceURL + "&randnum=" + Math.random();
	} else {
		url = sourceURL + "?randnum=" + Math.random();
	}

	return url;
}

/*
 * 向XMLHttpRequest对象发出一个GET请求
 *
 * @param req XMLHttpRequest对象
 * @param sourceURL 服务端URL
 * @param syncflag 同步标志.true表示异步
 * @param callBack 回调函数名称
 */
function SendGetRequest(req, sourceURL, syncflag, callBack) {
	try {
		//XMLHttpRequest对象不为空
		if (req) {
			req.open("GET", InitURL(sourceURL), syncflag);//与服务端建立连接
			req.onreadystatechange = callBack;//指定回调函数
			req.send(null);
		}
	} catch (e) {

	}
}

/*
 * 向XMLHttpRequest对象发出一个POST请求
 *
 * @param req XMLHttpRequest对象
 * @param sourceURL 服务端URL
 * @param content Post的内容字符串
 * @param syncflag 同步标志.true表示异步
 * @param callBack 回调函数名称
 */
function SendPostRequest(req, sourceURL, content, syncflag, callBack) {
	try {
		//XMLHttpRequest对象不为空
		if (req) {
			req.open("POST", InitURL(sourceURL), syncflag);//与服务端建立连接
			req.onreadystatechange = callBack;//指定回调函数
			req.setRequestHeader("Content-Length", content.length);
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			req.setRequestHeader("charset", "GBK");
			req.send(content);
		}
	} catch (e) {

	}
}

/*
 * 获得XMLHttpRequest对象输出的文本字符串
 *
 * @param req XMLHttpRequest对象
 * @return 文本字符串
 */
function GetTextResponse(req) {
	//XMLHttpRequest对象不为空
	if (req) {
		return req.responseText;
	} else {
		return "";
	}
}

/*
 * 获得XMLHttpRequest对象输出的XML信息,兼容标准DOM
 *
 * @param req XMLHttpRequest对象
 * @return XML信息
 */
function GetXMLResponse(req) {
	//XMLHttpRequest对象不为空
	if (req) {
		return req.responseXML;
	} else {
		return "";
	}
}

/*
 * 获得XMLHttpRequest对象的readyState属性
 *
 * @param req XMLHttpRequest对象
 * @return 0为已完成请求或没有请求,-1为未完成
 */
function GetRequestReadyState(req) {
	try {
		//XMLHttpRequest对象不为空,且readyState属性为4表示请求已经完成,或者0表示没有请求
		if (req && (req.readyState == 0 || req.readyState == 4)) {
			return 0;
		} else {
			return -1;
		}
	} catch (e) {
		return -1;
	}
}

/*
 * 获得XMLHttpRequest对象的status属性
 *
 * @param req XMLHttpRequest对象
 * @return OK为请求成功,Not found为接口不存在,Forbidden为接口拒绝访问,Error为访问失败
 */
function GetRequestStatus(req) {
	try {
		if (req.status == 200 || req.status == 304) {
			return "OK";
		} else if (req.status == 404) {
			return "Not found";
		} else if (req.status == 403) {
			return "Forbidden";
		} else {
			return "Error";
		}
	} catch (e) {
		return "Error";
	}
}