function ajax_query(method_p, url_p, data_p, callback_p)
{
  try
  {
    var xmlhttp = null;
	
    if(window.XMLHttpRequest) // Firefox
    {
      xmlhttp = new XMLHttpRequest();
    }
    else if(window.ActiveXObject) // Internet Explorer
    {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else // XMLHttpRequest non supporté par le navigateur
    {
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.");
      return;
    }
	
    if ((method_p == "GET") && (data_p != null))
    {
      url_p += "?" + data_p;
      data_p = null;
    }
	
    xmlhttp.open(method_p, url_p, true);
	
    xmlhttp.onreadystatechange = function anonymous()
    {
      if (xmlhttp.readyState == 4) // complete
      {
        if (xmlhttp.status == 200)
        {
          if (callback_p != null)
          {
            callback_p(xmlhttp.responseText);
          }
        }
      }
    }

    if (method_p == "POST")
    {
      xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    }

    xmlhttp.send(data_p);
  }
  catch (exception)
  {
    alert("Erreur (" + exception.name + ") : " + exception.message);
  }
}
