var is_ajax_on = true;

function getXMLHttpRequest() {

	// see http://developer.apple.com/internet/webcontent/xmlhttpreq.html

	var req = null;

	if(window.XMLHttpRequest) {
		// branch for native XMLHttpRequest object
		try
		{
			req = new XMLHttpRequest();
		} catch(e) {
			req = null;
		}

	} else if(window.ActiveXObject) {
		// branch for IE/Windows ActiveX version
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = null;
			}
		}
	}
	return req;
}

function ajax_call (url, method, on_success, post_params) {

	var req = getXMLHttpRequest();

	if (!req) {
		alert('upgrade your browser');
	} else {
		req.open(method, url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");

		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				// req is loaded
				if (req.status == 200) {
					// response was "OK"
					eval(on_success + '(req)');
				}
			}
		}

		if (method == 'POST') {
			req.setRequestHeader("Content-length", post_params.length);
			req.setRequestHeader("Connection", "close");
			req.send(post_params);
		} else {
			req.send(null);
		}
	}
}

function Ajax(_req) {

	// Provide the XMLHttpRequest class for IE 5.x-6.x:
	if( typeof XMLHttpRequest == "undefined" ) XMLHttpRequest = function() {
		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
		try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
		throw new Error( "This browser does not support XMLHttpRequest." )
	};
	var ajaxReq = new XMLHttpRequest();
	if (!_req.type == "POST" || typeof(_req.params) == "undefined") {
		_req.params = null;
	}

	ajaxReq.onreadystatechange = function() {
		if ( ajaxReq.readyState == 4 ) {
			if ( ajaxReq.status == 200 ) {
				if (_req.dataType == "json") {
					_req.success(eval('(' + ajaxReq.responseText + ')'));
				} else if (_req.dataType=="xml") {
					_req.success(ajaxReq.responseXML);
				} else {
					_req.success(ajaxReq.responseText);
				}
			} else {
				_req.error();
			}
			ajaxReq = null;
		}
	}

	//Send the proper header information along with the request
	ajaxReq.open(_req.type, _req.url, _req.asynchronous);
	if (_req.type == "POST") {
		ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajaxReq.setRequestHeader("Expires", 5);
		if (_req.params) {
			ajaxReq.setRequestHeader("Content-length", _req.params.length);
		}
		ajaxReq.setRequestHeader("Connection", "close");
	}
	ajaxReq.setRequestHeader("Expires", 5);
	ajaxReq.send(_req.params);
	return 1;
}
