function ajaxRequest(url, method, callback_func)
{
        var http_request = false;

	if(typeof method == 'undefined')
		method = 'GET';

        if (window.XMLHttpRequest) //Mozilla, Safari
        {
                http_request = new XMLHttpRequest();
                if(http_request.overrideMimeType)
                {
                        http_request.overrideMimeType('text/xml');
                }
        }
        else if (window.ActiveXObject)
        {
                try
                {
                        http_request = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (e) {}
        }

    if (!http_request) 
    {
        alert('AJAX giving up - Cannot create an XMLHTTP instance');
        return false;
    }

    //some might want to make this a one-way request
    if(typeof callback_func != 'undefined')
    	http_request.onreadystatechange = function() { ajaxResponse(http_request, callback_func); };
    http_request.open(method, url, true);
    http_request.send(null);
}


function ajaxResponse(http_request, callback_func)
{
    //states
    // 0 (uninitialized)
    // 1 (loading)
    // 2 (loaded)
    // 3 (interactive)
    // 4 (complete)
        if(http_request.readyState == 4)
        {
                //response received
                if(http_request.status == 200)
                {
                        //sveet
                        return callback_func(http_request);
                }
                else
                {
                    // there was a problem with the request,
                    // for example the response may be a 404 (Not Found)
                    // or 500 (Internal Server Error) response codes
                    alert('There was a problem with the AJAX request. HTTP Response Status:' + http_request.status);
                }
        }
        else
        {
                //still not ready
        }
}

