function TR_AJAXInteraction(url, callback){
    var req = init();
    req.onreadystatechange = processRequest;

    function init() {
	if(window.XMLHttpRequest) {
	    return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
	    return new ActiveXObject("Microsoft.XMLHTTP");
	}       
    }   

    function processRequest() {
	//readyState of 4 signifies request is complete
	if(req.readyState == 4) {
	    //status of 200 signifies successful HTTP call
	    if(req.status == 200) {
		if(callback) callback(req.responseXML);
	    }
	}
    }

    this.doGet=function() {
	req.open("GET", url, true);
	req.send(null);
    }   
    this.doPost=function(str) {
	req.open("POST", url, true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	req.send(str);
    }
}
