var gr_url = null;
var gr_timeout = 0;
var gr_parser = null;
var gr_request = null;
var r_url = null;
var r_timeout = 0;
var r_parser = null;
var r_request = null;

function request_cancel() {
	r_timeout = 0;
}

function request_change_url(url) {
	r_url = url;
}

function request_done(c) {
	if (r_parser != "") {
		eval(r_parser + "(c)");
	}
	if (r_timeout) setTimeout("request_url(r_url)", r_timeout);
}

function request_action() {
	if (r_request.readyState == 4) {
		request_done(r_request.status == 200 ? r_request.responseText : null);
	}
}

function request_url(url) {
	url = url+'?r='+Math.random()
	if (window.XMLHttpRequest) {
       	r_request = new XMLHttpRequest();
		if (r_request) {
			r_request.onreadystatechange = request_action;
			r_request.open("GET", url, true);
			r_request.send(null);
		}
	} else if (window.ActiveXObject) {
		r_request = new ActiveXObject("Microsoft.XMLHTTP");
       	if (r_request) {
			r_request.onreadystatechange = request_action;
			r_request.open("GET", url, true);
			r_request.send();
		}
	}
}

function request(url, timeout, parser) {
	r_url = url;
	r_timeout = timeout;
	r_parser = parser;

	if (r_timeout) setTimeout("request_url(r_url)", r_timeout);
	request_url(r_url);
}

//////////

function globalrequest_done(c) {
	if (gr_parser != "") {
		eval(gr_parser + "(c)");
	}
	if (gr_timeout) setTimeout("globalrequest_url(gr_url)", gr_timeout);
}

function globalrequest_action() {
	if (gr_request.readyState == 4) {
		globalrequest_done(gr_request.status == 200 ? gr_request.responseText : null);
	}
}


function globalrequest_url(url) {
	url = url+'?r='+Math.random()
	if (window.XMLHttpRequest) {
       	gr_request = new XMLHttpRequest();
		if (gr_request) {
			gr_request.onreadystatechange = globalrequest_action;
			gr_request.open("GET", url, true);
			gr_request.send(null);
		}
	} else if (window.ActiveXObject) {
		gr_request = new ActiveXObject("Microsoft.XMLHTTP");
       	if (gr_request) {
			gr_request.onreadystatechange = globalrequest_action;
			gr_request.open("GET", url, true);
			gr_request.send();
		}
	}
}


function globalrequest(url, timeout, parser) {
	gr_url = url;
	gr_timeout = timeout;
	gr_parser = parser;

	if (gr_timeout) setTimeout("globalrequest_url(gr_url)", gr_timeout);
	globalrequest_url(gr_url);
}
