function urlencode(str)
{
  var output = '';
  var i = 0;
  str = str.toString();
  while (i < str.length)
  {
    var match = /(^[a-zA-Z0-9_.]*)/.exec(str.substr(i));
    if (match != null && match.length > 1 && match[1] != '')
    {
      output += match[1];
      i += match[1].length;
    }
    else
    {
      if (str[i] == ' ')
        output += '+';
      else
        output += '%'+str.charCodeAt(i).toString(16).toUpperCase();
      i++;
    }
  }
  return output;
}

var rq;
function ajax_ask(data)
{
  rq = false;

  if (window.XMLHttpRequest)
  { // Mozilla, Safari,...
    rq = new XMLHttpRequest();
  }
  else if (window.ActiveXObject)
  { // IE
    try
    {
      rq = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        rq = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) { return true; }
    }
  }

  rq.onreadystatechange = function() { ajax_chkstate(rq); };
  rq.open('POST', 'qmai.php?html'+(debug?'&debug':''), true);
  rq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  rq.send('q='+urlencode(data)+(referrer?'&ref='+urlencode(referrer):''));
  return false;
}
function ajax_chkstate(http_request)
{
  if (http_request.readyState == 4)
  {
    if (http_request.status == 200) {
      var answer = http_request.responseText.split("\n"), isblank = true;
      for (var i=0;i<answer.length;i++)
      {
        if (answer[i])
        {
			reply(answer[i]);
			isblank = false;
		}
      }
      if (isblank)
		reply('<span style="color:#FF0000"><strong>Error:</strong> There was a blank reply.</span>');
    }
    else
    {
		reply('<span style="color:#FF0000"><strong>Error:</strong> The request did not go through.</span>');
    }
    rq = false;
  }
}

