function DataManager(){var A=this;A.RequestCompleteEvent=null;this.RequestCompleteEvent=A.RequestCompleteEvent;A.RequestFailedEvent=null;this.RequestFailedEvent=A.RequestFailedEvent;A.Param=null;this.Param=A.Param;this.CreateDataHandler=function(B){var C=function(){if(B.readyState==4){if(B.status==200){A.RequestCompleteEvent(B)}else{A.RequestFailedEvent(B)}}};C.Request=B;C.RequestCompleteEvent=A.RequestCompleteEvent;C.RequestFailedEvent=A.RequestFailedEvent;C.Param=A.Param;return C};this.InitiateXmlHttpRequest=function(){var C=null;try{C=new ActiveXObject("Msxml2.XMLHTTP")}catch(D){try{C=new ActiveXObject("Microsoft.XMLHTTP")}catch(B){C=null}}if(!C&&typeof (XMLHttpRequest)!="undefined"){C=new XMLHttpRequest()}if(!C){alert("Failed to create new ajax request.")}return C};this.LoadData=function(D){var C=this.InitiateXmlHttpRequest();if(C!=null){try{C.onreadystatechange=this.CreateDataHandler(C);C.open("GET",D,true);C.send(null)}catch(B){alert(B)}}}}function HandleFailure(A){alert("Failed: ("+A.status+") "+A.statusText)}

function xmlhttp_req() {
	var req = null;
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	return req;
}

function _doReq(method, url, query, fn, state) {
	var req = xmlhttp_req(), r='';
		req = new xmlhttp_req();

		method = (method ? method : 'get');
		if(method == 'get') {
			if(query.indexOf('&') == 0) {
				url = url + (query ? '?'+query : '');
			} else {
				url = url + (query ? query : '');
			}
		}

		req.open(method, url, (state ? state : true));
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				var r=req.responseText;
				fn(r);
			}
		};
		if(method == 'post') {
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		req.send(method == 'post' ? query : null);
}
