function AJAXFactory()
{    
	var http_request = false;

    if (window.XMLHttpRequest) 
    { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) 
        {
            http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
    } 
    else if (window.ActiveXObject) 
    { // IE
        try 
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try 
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {}
        }
    }

    if (!http_request) 
    {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    return http_request;
}

////////// helper function to make an AJAX request.
//
// url == url you're making the request from.
// callback == the http_request callback function. Must take one parameter, which is the
//               http_request
//
//////////
function AJAXGet(url, callback)
{
	http_request = AJAXFactory();
    
    http_request.onreadystatechange = function() { callback(http_request); };
    http_request.open('GET', url, true);
    http_request.send(null);
}

function AJAXPost(url, callback, poststr)
{
	http_request = AJAXFactory();
	
	http_request.onreadystatechange = function() { callback(http_request); };
    http_request.open('POST', url, true);    
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", poststr.length);
    http_request.setRequestHeader("Connection", "close");
    
    http_request.send(poststr);
}