function createXMLHTTP() {
	var cn = null;
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		try {
			cn = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(ex) {
			try {
				cn = new XMLHttpRequest();
			} catch(exc) {
				cn = null;
      		}
		}
	}

  var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP"];
	for (var i=0; i < arrSignatures.length && cn != null; i++) {
		try {
	        var oRequest = new ActiveXObject(arrSignatures[i]);
	        return oRequest;
	    } catch (oError) {}
    }

	return cn;
}

function get(id, url) {
	if (document.getElementById(id) == null)
		return;
		
	cn = getConnection();
	cn.open("GET", url);
	cn.onreadystatechange = function () {
		process = document.getElementById("doProcess");
		if (cn.readyState == 1 && process != null && processHtml != null) {
			process.innerHTML = processHtml;
        } else if (cn.readyState == 2 && process != null && processHtml != null) {
			process.innerHTML = doneHtml;				
        } else if (cn.readyState == 4) {
			document.getElementById(id).innerHTML = unescape(cn.responseText.replace(/\+/g," "));
        }
	}
	cn.send(null);
}


function send(url) {
	send(url, null);
}

var resultDOM = null;
function send(url, post) {
	var cn = createXMLHTTP();

	if (post != null) {
		cn.open("POST", url);
		cn.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		cn.setRequestHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); 
		cn.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0'); 
		cn.setRequestHeader('Pragma', 'no-cache');
	} else {
		cn.open("GET", url, true);
	}

	cn.onreadystatechange=function() {
		if (cn.readyState == 4) {
			if (resultDOM == null) {
				return cn.responseText;
			} else {
				resultDOM.innerHTML = cn.responseText;// unescape(cn.responseText.replace(/\+/g," ")); 
			}
		}
	}
	
	cn.send(post);
}

function setDOM(o) {
	resultDOM = o;
}