
    var objXMLPost;
    
    function aspObject()
    {
        this.Execute2 = _ASP_Execute;
        this.ComCentre = IComCentre;
        this.ReturnXML = IReturnXML;
        this.doSearch = IDoSearch;
        this.LogError = ILogError;
        this.ExecuteAsnych = IExecuteAsnych;
        this.clearLookups = IClearLookups;
        this.PollReport = IPollReport;        
        this.WDExecute = IWDExecute;
    }



function _ASP_Execute(strRequest)
{
    var strXMLRequest = "<Execute2>" + strRequest + "</Execute2>";
    return CallServer(strXMLRequest, false);
}


function IComCentre(strRequest)
{
    var strXMLRequest = "<ComCentre>" + strRequest + "</ComCentre>";
    return CallServer(strXMLRequest, true);    
}



function IReturnXML(strRequest)
{
    var strXMLRequest = "<ReturnXML>" + strRequest + "</ReturnXML>";
    return CallServer(strXMLRequest, false);            
}

function IDoSearch(strQueryID, strCriteria, intSearchLimit, bReturnObject)
{
    var strRequest = "<params>";
    strRequest += "<param name=\"SearchID\">" + strQueryID + "</param>";
    strRequest += "<param name=\"Criteria\">" + replaceInvalidXMLCharacters(strCriteria) + "</param>";
    strRequest += "<param name=\"SearchLimit\">" + intSearchLimit + "</param>";
    strRequest += "<param name=\"ReturnObject\">" + bReturnObject + "</param>";
    strRequest += "</params>";
    var strXMLRequest = "<DoSearch>" + strRequest + "</DoSearch>";
    return CallServer(strXMLRequest, false);
}



function ILogError(strRequest)
{
    var strXMLRequest = "<LogError>" + strRequest + "</LogError>";
    return CallServer(strXMLRequest, false);    
}    


    
function IExecuteAsnych(strRequest)
{
    var strXMLRequest = "<Execute2>" + strRequest + "</Execute2>";
    return CallServer(strXMLRequest, true);    
}



function IPollReport(strRequest)
{
    var strXMLRequest = "<PollReport>" + strRequest + "</PollReport>";
    return CallServer(strXMLRequest, false);    
}


function IClearLookups(strRequest)
{
    var strXMLRequest = "<ClearLookups>" + strRequest + "</ClearLookups>";
    return CallServer(strXMLRequest, false);
}


function IWDExecute(strRequest, bAsynch)
{    
    var strXMLRequest = "<WDExecute>" + strRequest + "</WDExecute>";
    return CallServer(strXMLRequest, bAsynch);    
}

function CallServer(strRequest, bAsynch)
{
//posts the xml request to remscriptxml.asp file on server
//uses microsoft marshalling code to extract a javascript object from string    
        
    try 
    {
        objXMLPost = new XMLHttpRequest();
    } 
    catch (e) 
    {
        objXMLPost = new ActiveXObject("Msxml2.XMLHTTP");
    }
        
    if (bAsynch)
    {
        objXMLPost.open("POST", "/Includes/RemscriptXML.asp", true);
        objXMLPost.onreadystatechange = HandleStateChange;
        objXMLPost.send(unescape(strRequest));    
        var x = 0;
        while (x < 800000)
        {
            x++;
        }
    
    }
    else
    {
        objXMLPost.open("POST", "/Includes/RemscriptXML.asp", false);
        objXMLPost.send(unescape(strRequest));        
        var objRequest = new Object();
        objRequest.data = objXMLPost.responseText;
        var objObject = _MSRS_evaluateRequestXML(objRequest);
        return objObject;    
    }
}
    
function HandleStateChange()
{
    if (objXMLPost.readyState == 4)
    {         
        alert("Finished");
        return objXMLPost.responseXML.xml;
    }
}




function _MSRS_evaluateRequestXML(request)
    {
        var MSRS_FAIL = -1;
        var data = request.data;
        var start_index = 0;
        var end_index = 0;
        var start_key = '<' + 'RETURN_VALUE';
        var end_key = '<' + '/RETURN_VALUE>';
        var objReturn = new Object();
        objReturn.status = 0;
        objReturn.message = "";

        if ((start_index = data.indexOf(start_key)) != -1)
        {
            var data_start_index = data.indexOf('>',start_index) + 1;
            end_index = data.indexOf(end_key,data_start_index);
            if (end_index == -1) 
                end_index = data.length;
            var metatag = data.substring(start_index,data_start_index);
            if (metatag.indexOf('TYPE=SIMPLE') != -1)
            {
                objReturn.return_value = unescape(data.substring(data_start_index,end_index));
            }
            else if (metatag.indexOf('TYPE=EVAL_OBJECT') != -1)
            {
                objReturn.return_value = data.substring(data_start_index,end_index);                
                objReturn.return_value = eval(unescape(objReturn.return_value));                            
            }
            else if (metatag.indexOf('TYPE=ERROR') != -1)
            {
                objReturn.status = MSRS_FAIL;
                objReturn.message = unescape(data.substring(data_start_index,end_index));        
            }
        }
        else
        {
            objReturn.status = MSRS_FAIL;
            objReturn.message = 'REMOTE SCRIPTING ERROR: Page invoked does not support remote scripting.';            
        }
        return objReturn;
    }



    
    