function XHConn(){

		var xmlhttp, bComplete = false;

		try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }

		catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }

		catch (e) { try { xmlhttp = new XMLHttpRequest(); }

		catch (e) { xmlhttp = false; }}}

		if (!xmlhttp) return null;

		this.connect = function(sURL, sMethod, sVars, fnDone) {

		if (!xmlhttp) return false;

			bComplete = false;

			sMethod = sMethod.toUpperCase();

			try {

				if (sMethod == "GET") {

					xmlhttp.open(sMethod, sURL+"?"+sVars, true);

					sVars = "";

				} else {

					xmlhttp.open(sMethod, sURL, true);

					xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");

					xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

				}

				xmlhttp.onreadystatechange = function(){

					if (xmlhttp.readyState == 4 && !bComplete) {

						if (xmlhttp.status == 200) {

							bComplete = true;

							fnDone(xmlhttp);

						}

					}

				};

				xmlhttp.send(sVars);

			} catch(z) { 

				return false; 

			}

			return true;

		};

		return this;

	}
	
	