function myEncode(message) {
  message = encodeURIComponent(message.replace(/[\[\]%~\n\r\"\']/gi,""));
  return message;
}

var ajaxStack = new Array();
var requester = null;

function ajaxSend(file, value, callBackFunction, mode)
{
  var erg = true;
  if (requester == null)
  {
    try
    {
      requester = new XMLHttpRequest();
    }
    catch (error)
    {
      try
      {
        requester = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (error)
      {
        erg = false;
      }
    }
  }

  //if (requester.readyState == );
  if (erg)
  {
    if (requester.readyState == 0 || requester.readyState == 4) {
  	  if (mode == 0 || mode == undefined) value = "arg=" + encodeURIComponent(value);

      requester.onreadystatechange = callBackFunction;
       if (default_userID != undefined) value = value.concat("&user=" + default_userID);
       else if (chatUserID != undefined) value = value.concat("&user=" + chatUserID);
       
       /*
       var serverJetztZeit = 0;
       if (clientZeit != undefined) {
       	 var dt = new Date();
       	 var clientJetztZeit = Math.floor(Date.parse(dt) / 1000);
         var serverJetztZeit = clientJetztZeit - clientZeit + serverZeit;
       }
        + "?time=" + serverJetztZeit
       */
  
       requester.open("POST", file, true);
       requester.setRequestHeader("Pragma", "no-cache");
       //requester.setRequestHeader("Content-Type", "ISO-8859-1");

       requester.setRequestHeader("Content-length", value.length);
       requester.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
       //requester.setRequestHeader('Content-Type','multipart/form-data');
        
       requester.setRequestHeader("Connection", "close");
       requester.send(value);
    }
    else {
      //alert (requester.readyState);
      
      var u = new Object();
      u.file = file;
      u.value = value;
      u.mode = mode;
      u.callBackFunction = callBackFunction;
      ajaxStack.push(u);
    }
  }
  //return erg;
  return;
}

function getDelayedAJAX() {
  if (0 < ajaxStack.length) {        
    var elem = ajaxStack.shift();
    ajaxSend(elem.file, elem.value, elem.callBackFunction ,elem.mode);
    //alert (elem.value);
  }
}

function ajaxResponse()
{
  //alert (requester.readyState);
  var erg = false;
  if (requester.readyState != 4)
  {
  }
  else
  {
    //alert (requester.status);
    if (requester.status != 200)
    {
      // Problem beim Laden
      alert (requester.status);
    }
    else
    {
      var response = requester.responseText;
      //if (1 == getUserID())
      //{
      //  alert (unescape(response));
      //}
      erg = response;
      //messageDigest(response);
      requester = null;
      if (0 < ajaxStack.length) {
        window.setTimeout("getDelayedAJAX()",500);
        //alert (elem.value);
      }
    }
  }
  return erg;
}

