function makeHTTPRequest(url, data, onReady, userData) {
    var request;
    var onReadyFunc = onReady;
    var userDataLocal = userData;
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    request.open('POST', url, true);
    request.onreadystatechange = function() {
        if (request.readyState != 4) return;
        onReadyFunc(request, request.status == '200', userDataLocal);
    }
    request.setRequestHeader('Content-type', "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", data.length);
    request.send(data);
    return request;
}

function urlencode(params) {
    var parts = new Array();
    for (key in params) {
        parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));
    }
    return parts.join("&");
}
