/*
**	ajax.js
**	
**	function: user ajax
**	depend on xmlhttprequest.js 
*/

// http request method
var _GET  = "GET";
var _POST = "POST";
var _PUSH = "PUSH";

var __ASYNC = true;  		// 异步
var __SYNC  = false;		// 同步

// http server status code
var _HTTP_STATUS_OK                    = 200;	// 请求成功
var _HTTP_STATUS_BED_REQUEST           = 400;	// 非法请求，语法错误
var _HTTP_STATUS_UNAUTHORIZED          = 401;	// 请求未授权
var _HTTP_STATUS_FORBIDDEN             = 403;	// 禁止访问
var _HTTP_STATUS_URI_NOT_FOUND         = 404;	// 资源未找到
var _HTTP_STATUS_SERVER_INTERNAL_ERROR = 500;	// 服务器内部错误
var _HTTP_STATUS_SERVICE_UNAVAILABLE   = 503;	// 服务不可用

// http server status code
var __HTTP_STATUS_OK                 = 200;		// 请求成功
var __HTTP_BAD_REQUEST               = 400;		// 非法请求，语法错误
var __HTTP_UNAUTHORIZED              = 401;		// 请求未授权
var __HTTP_FORBIDDEN                 = 403;		// 禁止访问
var __HTTP_NOT_FOUND                 = 404;		// 资源未找到
var __HTTP_METHOD_NOT_ALLOWED        = 405;		// 
var __HTTP_REQUEST_TIME_OUT          = 408;		// 
var __HTTP_GONE                      = 410;		// 
var __HTTP_LENGTH_REQUIRED           = 411;		// 
var __HTTP_PRECONDITION_FAILED       = 412;		// 
var __HTTP_REQUEST_ENTITY_TOO_LARGE  = 413;		// 
var __HTTP_REQUEST_URI_TOO_LARGE     = 414;		// 
var __HTTP_SERVICE_UNAVAILABLE       = 415;		// 
var __HTTP_INTERNAL_SERVER_ERROR     = 500;		// 服务器内部错误
var __HTTP_NOT_IMPLEMENTED           = 501;		// 
var __HTTP_BAD_GATEWAY               = 502;		// 
var __HTTP_SERVICE_UNAVAILABLE       = 503;		// 服务不可用
var __HTTP_VARIANT_ALSO_VARIES       = 506;		// 

// ajax ready state code
var _READY_STATE_UNINITIALIZED = 0;		// 未初始化
var _READY_STATE_LOADING       = 1;		// 读取中
var _READY_STATE_LOADED        = 2;		// 读取完毕
var _READY_STATE_INTERACTIVING = 3;		// 交互中
var _READY_STATE_COMPLETED     = 4;		// 完成

//include xmlhttprequest.js
function ajaxRequest (mothed, url, async, content) {
	var ajaxRequestObj = new XMLHttpRequest();
	if (ajaxRequestObj == null) return null;
	
	ajaxRequestObj.open (mothed, url, async);
	
	if (async == __ASYNC) {
		ajaxRequestObj.onreadystatechange = function () {
			if (ajaxRequestObj.readyState == _READY_STATE_COMPLETED && ajaxRequestObj.responseText) {
				//ajaxRequestObj.status == _HTTP_STATUS_OK) {
				processAjaxResponse (ajaxRequestObj.responseText);
			}
		};
	}
	
	ajaxRequestObj.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	//ajaxRequestObj.setRequestHeader ("Content-Type", "text/html;");
	ajaxRequestObj.setRequestHeader ("Content-Language", "UTF-8");
	ajaxRequestObj.send (content);
	
	return ajaxRequestObj;
}

function ajaxGetRequest (url, async) {
	if (async == null)	async = __ASYNC;
	ajaxRequest (_GET, url, async);
}

function ajaxPostRequest (url, content, async) {
	if (async == null)	async = __ASYNC;
	return ajaxRequest (_POST, url, async, content);
}

function processAjaxResponse (responseText) {
	//alert (responseText);
	eval (responseText);
}

function processSyncResponse (ajaxRequestObj, responseText) {
	if (ajaxRequestObj.status == _HTTP_STATUS_OK &&
		ajaxRequestObj.readyState == _READY_STATE_COMPLETED) {
		
		//responseText
	}
	
	return false;	
}
