function doRequest(urlStr, soapAction, postBackData, callBack, callBackArgs)
{
   var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]

   var httpObj;

   if (window.ActiveXObject)
   {
       for (var i=0; i<activexmodes.length; i++)
       {
           try
           {
               httpObj = new ActiveXObject(activexmodes[i]);
           }
           catch(e)
           {
           }
       }
   }
   else if (window.XMLHttpRequest)
   {
       httpObj = new XMLHttpRequest();
   }
   else
   {
       return false;
   }

httpObj.onreadystatechange = function()
   {
       if (httpObj.readyState == 4)
       {
           if (httpObj.status == 200)
           {
               var cbParams = new Array();
               cbParams.push(httpObj.responseText);
               for(var i=0;i<callBackArgs.length;i++)
               {
                   cbParams.push(callBackArgs[i]);
               }
               callBack.apply(null, cbParams);
           }
           else
           {
               alert("HTTP Error " + httpObj.status + ": " + httpObj.statusText);
           }
       }

   }
        httpObj.open("POST", urlStr, true);
        httpObj.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        httpObj.setRequestHeader("Content-Length", postBackData.length);
        httpObj.setRequestHeader("SOAPAction", soapAction);
        httpObj.send(postBackData);
}
