        var con = null;
	var request_ok = true;
	
	function getXMLHttpRequest () {
		try { return new ActiveXObject("MSXML2.XMLHTTP"); } catch (e) {};
		try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {};
		try { return new XMLHttpRequest(); } catch (e) {};

		return null;
	}	

	function doPostRequest (page, parameters, handler, data) {
		if (con==null) {
			con = getXMLHttpRequest ();
			if (con==null) {
				return;
			}
		}

		con.open ("POST", page, true);
		con.onreadystatechange = function () {
			var l;

			if (con.readyState != 4) {
				return;
			}

			if (con.status != 200) {
				return;
			}

			l = con.responseXML.getElementsByTagName("ERROR");
			if (l.length > 0) {
				var e_error = l[0];
				var msg = e_error.firstChild.nodeValue;
				alert (msg);
			} else {
				handler(data);
			}
		};
		con.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		con.setRequestHeader("Content-length", parameters.length);
                con.setRequestHeader("Connection", "close");
                con.send(parameters);

	}

	function doGetRequest (page, handler, data) {
		if (con==null) {
			con = getXMLHttpRequest ();
			if (con==null) {
				return;
			}
		}
                
		con.open ("GET", page, true);
		con.onreadystatechange = function () {
			var l;

			if (con.readyState != 4) {
				return;
			}

			if (con.status != 200) {
				return;
			}

			l = con.responseXML.getElementsByTagName ("ERROR");
			if (l.length > 0) {
				var e_error = l[0];
				var msg = e_error.firstChild.nodeValue;
				alert (msg);
			} else {
				handler(data);
			}
		};
		con.send(null);
	}

	function doFormRequest (page, f, handler, data) {
		var i;
		var params = "";

		for (i=0; i < f.length; i++) {
			var obj = f.elements[i];
			if (params!="") {
				params += "&";
			}

			if (obj.type=='checkbox') {
				if (obj.checked==false) {
					continue;
				}				
			} 

			params += obj.name + "=" + encodeURI (obj.value);
		}

		doPostRequest (page, params, handler, data);
	}
