var _request = false;
var _handlerFunc = false;

function getRequest() {
    if (!_request) {
        if (window.XMLHttpRequest) {
            _request = new XMLHttpRequest();

        } else if (window.ActiveXObject) {
            try {
                _request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                try {
                    _request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                }
            }
        }
    }

    if (!_request) {
        throw "create XMLHttpRequest object failur!";
        return false;
    } else {
        return _request;
    }
}


function doUrl(url, handlerFunc, xml) {
	_handlerFunc = handlerFunc;
    if (!_request) {
        _request = getRequest();
    }
    _request.open("GET", url, true); 
    if(xml){  
		_request.onreadystatechange = processRequestXML;	
	}else{
		_request.onreadystatechange = processRequest;
	}
    _request.send(null);
}

function trim(src){
	return src.replace(/\s/g,"");
}


function processRequestXML(){
	if (_request.readyState == 4) {
        if (_request.status == 200) {
            responseXML = _request.responseXML;
            if(typeof(_handlerFunc)=="function"){
            	return _handlerFunc(responseXML);
            }
        } else {
            throw "the page you visited have error";
        }
    }	
}
function processRequest() {
    if (_request.readyState == 4) {
        if (_request.status == 200) {
            responseText = trim(_request.responseText);
            if(typeof(_handlerFunc)=="function"){
            	return _handlerFunc(responseText);
            }
        } else {
            throw "the page you visited have error";
        }
    }
}