var 
  g_bAjaxBusy = false,
  g_sAjaxCallback = null,
  g_oAjaxRequest = null;

function AjaxGetAndReturn(sUrl) 
{
  var
    oReq;
    
  if (window.XMLHttpRequest) 
  {
    oReq = new XMLHttpRequest();
    oReq.open('GET', sUrl, false);
    oReq.send(null);
    return oReq.responseText;
  } 
  else 
  if (window.ActiveXObject) 
  {
    try 
    {
      oReq = new ActiveXObject('Msxml2.XMLHTTP');
    } 
    catch (e) 
    {
      oReq = new ActiveXObject('Microsoft.XMLHTTP');
    }
    if (oReq) 
    {
      oReq.open('GET', sUrl, false);
      oReq.send();
      return oReq.responseText;
    } 
  }
  return null;
}

function AjaxGet(sUrl, sCallbackFunc) 
{
  var
    oWaitIcon;
    
  if (g_bAjaxBusy == true) 
  { 
    setTimeout('AjaxGet("' + sUrl + '",' (sCallbackFunc == null ? 'null' : '"' + sCallbackFunc + '"') + ')', 100); 
    return false; 
  }
  g_bAjaxBusy = true;
  oWaitIcon = document.getElementById('AjaxWaitIcon');

  if (window.XMLHttpRequest) 
  {
    g_sAjaxCallback = sCallbackFunc;
    g_oAjaxRequest = new XMLHttpRequest();
    g_oAjaxRequest.onreadystatechange = AjaxHandleResponse;
    g_oAjaxRequest.open('GET', sUrl, true);
    g_oAjaxRequest.send(null);
    if (oWaitIcon != null)
    {
      oWaitIcon.style.display = '';
    }
    return;
  } 
  else 
  if (window.ActiveXObject) 
  {
    try 
    {
      g_oAjaxRequest = new ActiveXObject('Msxml2.XMLHTTP');
    } 
    catch (e) 
    {
      g_oAjaxRequest = new ActiveXObject('Microsoft.XMLHTTP');
    }
    if (g_oAjaxRequest) 
    {
      g_sAjaxCallback = sCallbackFunc;
      g_oAjaxRequest.onreadystatechange = AjaxHandleResponse;
      g_oAjaxRequest.open('GET', sUrl, true);
      g_oAjaxRequest.send();
      if (oWaitIcon != null)
      {
        oWaitIcon.style.display = '';
      }
      return;
    } 
  }
  alert('Your browser does not support ajax');
  return false;
}

function AjaxPost(sUrl, sBuffer) 
{
  if (g_bAjaxBusy == true) 
  { 
    setTimeout('AjaxPost("' + sUrl + '","' + sBuffer + '")', 100);
    return false; 
  }
  g_bAjaxBusy = true;

  if (navigator.appName != 'Microsoft Internet Explorer') 
  {
    g_oAjaxRequest = new XMLHttpRequest();
    g_oAjaxRequest.onreadystatechange = AjaxHandleResponse;
    g_oAjaxRequest.open('POST', sUrl, true);
    g_oAjaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    return g_oAjaxRequest.send(sBuffer);
  }
  else 
  if (window.ActiveXObject) 
  {
    g_oAjaxRequest = new ActiveXObject('Microsoft.XMLHTTP');
    if (g_oAjaxRequest) 
    {
      g_oAjaxRequest.onreadystatechange = AjaxHandleResponse;
      g_oAjaxRequest.open('POST', sUrl, true);
      g_oAjaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
      return g_oAjaxRequest.send(sBuffer);
    }
  }
  alert('Your browser does not support ajax');
  return false;
}

function AjaxHandleResponse() 
{
  var
    oWaitIcon;
    
  if (g_oAjaxRequest.readyState == 4) 
  {
    oWaitIcon = document.getElementById('AjaxWaitIcon');
    if (oWaitIcon != null)
    {
      oWaitIcon.style.display = 'none';
    }
    if (g_sAjaxCallback != null)
    {
      pFunc = eval(g_sAjaxCallback);
      pFunc(g_oAjaxRequest.responseText);
    }
    else
    if (g_oAjaxRequest.responseText.charAt(0) == '<')
    {
      alert(g_oAjaxRequest.responseText);
    } 
    else 
    {
      eval(g_oAjaxRequest.responseText);
    }
    g_bAjaxBusy = false;
    g_oAjaxRequest = null;
  }
}
