var loadingMessage = "Загрузка...";

function sendRequest(objId, method, uri, paramList, processReqChange, showReadyStateFlag, opt)
{ 
  var parentObj = window.document.getElementById(objId);
  var requestObj = createRequestObject();
  if (requestObj) 
    {
      if (showReadyStateFlag)
        {
          showReadyState(parentObj);
        }
      if (processReqChange)
        {
          requestObj.onreadystatechange 
            = function(){processReqChange(requestObj, parentObj, opt)};
        }
      else
        {
          requestObj.onreadystatechange 
              = function(){defaultProcessReqChange(requestObj, parentObj, opt)};
        }

      if (paramList) 
        {
          var paramString;
          var flag = 0;
          for (var key in paramList)
            {
              if (flag == 0)
                {
                  paramString = key + "=" + encodeURIComponent(paramList[key]);
                  flag = 1;
                }
              else
                {
                  paramString += "&" + key + "=" + encodeURIComponent(paramList[key]);
                }
            }
          uri = encodeURI(uri);

          if (method == "POST")
            {
              requestObj.open(method, uri, true);
              requestObj.send(paramString);
            }
          else
            {
              requestObj.open(method, uri + "?" + paramString, true);
              requestObj.send(null);
            }
        }    
      else
        {
          requestObj.open(method, uri, true);
          requestObj.send(null);
        }
    } 
}



function defaultProcessReqChange(requestObj, parentObj, opt)
{
  if (requestObj.readyState == 4)
    {
      var data;
      if (requestObj.status == 200)
        {
          data = requestObj.responseText;
        }
      else
        {
          data = requestObj.statusText;
        }
      parentObj.innerHTML = data;
    }
}



function createRequestObject()
{
  var req;

  if (window.XMLHttpRequest) 
    {
      try 
        {
          return req = new XMLHttpRequest();
        }
      catch (e){}
    }    
  else if (window.ActiveXObject) 
    {
      try 
        {
          return req = new ActiveXObject('Msxml2.XMLHTTP');
        } 
      catch (e)
        {
          try 
            {
              return req = new ActiveXObject('Microsoft.XMLHTTP');
                                                                                                               } 
          catch (e){}
        }
    }
  return null;
}



function showReadyState(parentObj)
{
  var div = window.document.createElement("div");
  div.id = "loadStatus";
  div.className = "process-message";
  if (window.document.body.clientWidth)
    {
      div.style.left = (window.document.body.clientWidth - 100) + "px";
    }
  else if (window.document.body.offsetWidth)
    {
      div.style.left = (window.document.body.offsetWidth - 100) + "px";
    }
  div.appendChild(window.document.createTextNode(loadingMessage));

  parentObj.appendChild(div);
}

