
//------------------------------------------------------------------------------
function Sudoku_getXMLHttpRequestObject ()
{
var http_request = false;

if (window.XMLHttpRequest)
    { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
        {
        http_request.overrideMimeType('text/xml');
        }
    }
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 (http_request) ;

}

//------------------------------------------------------------------------------
function Sudoku_getDataReturnText (url, callback)
{ 
var XMLHttpRequestObject = Sudoku_getXMLHttpRequestObject () ; 

if (XMLHttpRequestObject)
    {
    XMLHttpRequestObject.open ("GET", url); 
    XMLHttpRequestObject.onreadystatechange = function() 
        { 
        if (XMLHttpRequestObject.readyState == 4
                && XMLHttpRequestObject.status == 200)
            { 
            callback (XMLHttpRequestObject.responseText); 
            delete XMLHttpRequestObject;
            XMLHttpRequestObject = null;
            } 
        } 
    XMLHttpRequestObject.send (null); 
    }
}

//------------------------------------------------------------------------------
function Sudoku_getDataReturnXml (url, callback)
{ 
var XMLHttpRequestObject = Sudoku_getXMLHttpRequestObject () ; 

if (XMLHttpRequestObject)
    {
    XMLHttpRequestObject.open ("GET", url) ; 
    XMLHttpRequestObject.onreadystatechange = function() 
        { 
        if (XMLHttpRequestObject.readyState == 4
                && XMLHttpRequestObject.status == 200)
            { 
            callback (XMLHttpRequestObject.responseXML) ; 
            delete XMLHttpRequestObject ;
            XMLHttpRequestObject = null ;
            } 
        } 
    XMLHttpRequestObject.send (null); 
    }
}

//------------------------------------------------------------------------------
function Sudoku_postDataReturnText(url, data, callback)
{ 
var XMLHttpRequestObject = Sudoku_getXMLHttpRequestObject () ; 

if (XMLHttpRequestObject)
    {
    XMLHttpRequestObject.open ("POST", url); 
    XMLHttpRequestObject.setRequestHeader
        ('Content-Type', 
        'application/x-www-form-urlencoded'); 
    XMLHttpRequestObject.onreadystatechange = function() 
        { 
        if (XMLHttpRequestObject.readyState == 4
                && XMLHttpRequestObject.status == 200)
            {
            callback(XMLHttpRequestObject.responseText); 
            delete XMLHttpRequestObject;
            XMLHttpRequestObject = null;
            } 
        }
    XMLHttpRequestObject.send(data); 
    }
}

//------------------------------------------------------------------------------
function Sudoku_postDataReturnXml (url, data, callback)
{ 
var XMLHttpRequestObject = Sudoku_getXMLHttpRequestObject () ; 

if (XMLHttpRequestObject)
    {
    XMLHttpRequestObject.open("POST", url); 
    XMLHttpRequestObject.setRequestHeader
        ('Content-Type', 
        'application/x-www-form-urlencoded'); 
    XMLHttpRequestObject.onreadystatechange = function() 
        { 
        if (XMLHttpRequestObject.readyState == 4
                && XMLHttpRequestObject.status == 200)
            {
            callback (XMLHttpRequestObject.responseXML); 
            delete XMLHttpRequestObject;
            XMLHttpRequestObject = null;
            } 
        }
    XMLHttpRequestObject.send (data); 
    }
}


