	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.onreadystatechange = function () {
			var l;

			if (con.readyState == 1) {
				// cargando...
			}
			
			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.open ("POST", page, true);
		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.onreadystatechange = function () {
			var l;

			if (con.readyState == 1) {
				// cargando...
				handler (data, 1);
				return;
			}
			
			if (con.readyState != 4) {
				return;
			}

			if (con.status != 200) {
				handler (data, con.status);
				return;
			}

			if (con.responseXML!=null) {
				l = con.responseXML.getElementsByTagName ("error");
				if (l.length > 0) {
					var e_error = l[0];
					var msg = e_error.firstChild.nodeValue;
					alert (msg);
				} 
			} 
			
			handler (data, con.status);
		};
		con.open ("POST", page, true);
		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 (obj.type==null) {
				continue;
			}

			if (obj.name=='') {
				continue;
			}

			if (params!="") {
				params += "&";
			}

			if (obj.type=='checkbox') {
				if (obj.checked==false) {
					continue;
				}				
			} 

			//params += obj.name + "=" + encodeURI (obj.value);

			params += obj.name + "=" + encodeURIComponent (obj.value);

		}

		doPostRequest (page, params, handler, data);
	}
