function make_POSTRequest(url, q)
{
    xmlHTTPRequest = get_RequestObject();
	
    if (xmlHTTPRequest==null)
    {
        //alert ("Browser does not support HTTP Request")
        return;
    } 
    
    xmlHTTPRequest.onreadystatechange = process_ReqChange;
    //alert(xmlHTTPRequest.onreadystatechange);
    xmlHTTPRequest.open("POST", url, true);
    xmlHTTPRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlHTTPRequest.setRequestHeader("Content-length", q.length);
    xmlHTTPRequest.send(q);

}

/*
function testHookup()
{
    alert("got it");
    processLoadingState();
}
*/

function get_RequestObject() 
{
	var xmlHTTPRequest = false;
	if (window.XMLHttpRequest) 
	{
        xmlHTTPRequest = new XMLHttpRequest();
		if (xmlHTTPRequest.overrideMimeType) 
		{
			xmlHTTPRequest.overrideMimeType('text/xml');
		}
    } 
    else 
    if (window.ActiveXObject) 
    {
		try 
		{
			xmlHTTPRequest = new ActiveXObject('Msxml2.XMLHTTP');
		} 
		catch(e) 
		{
            try 
			{
				xmlHTTPRequest = new ActiveXObject('Microsoft.XMLHTTP');
			} 
			catch(e) 
			{
			}
		}
    }

    if(!xmlHTTPRequest) 
    {
        return false;
    }
       
    return xmlHTTPRequest;
}

function DOMParser2 (str, contentType)
 {
    if (typeof ActiveXObject != "undefined") 
    {
        var d = new ActiveXObject("MSXML.DomDocument");
        d.loadXML(str);
        return d;
    } 
    else if (typeof XMLHttpRequest != "undefined") 
    {
        var req = new XMLHttpRequest;
        req.open("GET", "data:" + (contentType || "application/xml") +
                     ";charset=utf-8," + encodeURIComponent(str), false);
        if (req.overrideMimeType) 
        {
            req.overrideMimeType(contentType);
        }
        req.send(null);
        return req.responseXML;
    }
}

function process_ReqChange() 
{
	/* Make sure that the transaction has finished. The XMLHttpRequest object 
		has a property called readyState with several states:
		0: Uninitialized
		1: Loading
		2: Loaded
		3: Interactive
		4: Finished */
		
    switch(xmlHTTPRequest.readyState)
    {
        case 0:     // Uninitialized
                    processUninitializedState();
                    break;                    
        case 1:     // Loading
                    processLoadingState();
                    break;
        case 2:     // Loaded
                    processLoadedState();
                    break;
        case 3:     // Interactive
                    processInteractiveState();
                    break;
        case 4:     // Finished
                    processFinishedState();
                    break;
        default:
                    processOtherState();
                    break;
    }
}