function createXmlHttpRequest() {
	var request = false;
	
	if(Browser.isIE) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(E) {
				request = false;
			}
		}
	}
	
	if(!request && typeof XMLHttpRequest != "undefined") {
		try {
			request = new XMLHttpRequest();
		} catch(e) {
			request = false;
		}
	}
	
	if(!request && window.createRequest) {
		try {
			request = window.createRequest();
		} catch(e) {
			request = false;
		}
	}
	
	if(!request) {
		alert("Please upgrade to a modern browser (such as Firefox) that supports XMLHttpRequest.");
	}
	
	return request;
}

function getXMLDocument(url, callback) {
	var req = createXmlHttpRequest();

    if (!req) {
        return false;
    }
    
    if (typeof callback != "undefined") {
        req.onreadystatechange = function () {
        	if(req.readyState != 4) {
        		return;
        	}
				
        	if(req.responseXML != null && req.status == 200) {
        		callback(req.responseXML);
        	}
        };
    }
    
    req.open("GET", url, true);
    req.send(null);
    
    return true;
}

function getTextDocument(url, callback) {
	var req = createXmlHttpRequest();

    if (!req) {
        return false;
    }
    
    if (typeof callback != "undefined") {
        req.onreadystatechange = function () {
        	if(req.readyState != 4) {
        		return;
        	}
				
        	if(req.responseText != null && req.status == 200) {
        		callback(req.responseText);
        	}
        };
    }
    
    req.open("GET", url, true);
    req.send(null);
    
    return true;
}