/*********************************************************************
 * Filename:      ajax_httpReq.js
 * Version:       1.2
 * Description:   Permet des requettes XMLHttp avec le serveur, ajax dla balle bb
 * Author:        Vitalyn Vitalyn <vitalyn@buck.bastille.vitalyn.com>
 * Created at:    Mon Jun 12 22:42:11 2006
 * Modified at:   Fri Oct 20 16:34:55 2006
 * Modified by:   Vitalyn Vitalyn <vitalyn@buck.bastille.vitalyn.com>
 ********************************************************************/

// doc : http://developer.mozilla.org/fr/docs/AJAX:Premiers_pas
// http://www.brainjar.com/dhtml/ajax/
function	ajax_httpRequest(url, method, type_resp, handle_func, post_data, ctype)
{
  method = method.toLowerCase();

  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
    // certains version de mozilla necessite du XML, mais bug sous IE7
    //http_request.overrideMimeType('text/xml');
  } else if (window.ActiveXObject) {// IE
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  if (!http_request) {
//    alert('Erreur: impossible de lancer la demande'); // arrive que ches les ploucs, mais faut pas le dire
    return false;
  }
  
  http_request.onreadystatechange = function() { ajax_httpReceive(http_request, type_resp, handle_func) };
  http_request.open(method, url, true);
  if (method == 'post') {
    if (ctype)
      http_request.setRequestHeader('Content-Type', ctype);
    else
      http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var data = '';
    for (var i = 0; i < post_data.length; i++) {
      if (i > 0)
	data += '&';
      data += post_data[i].k+'='+escape(post_data[i].v);
    }
    alert(data);
  } 
  else
    var data = null
  http_request.send(data);
}
function    ajax_httpReceive(http_request, type_resp, handle_func) {
  if (http_request.readyState == 4) {   // code 4: finished
    if (http_request.status == 200) {
      if (type_resp == 'text')
        var r = http_request.responseText;
      else if (type_resp == 'xml') {
	if (window.ActiveXObject){ // IE, test a faire en premier car IE7 remond OUI au prochain mais merdoi correctement
          //var r = new ActiveXObject("Microsoft.XMLDOM");
          var r = new ActiveXObject("Msxml2.DOMDocument.3.0");
          r.async = false; // met le script en mode bloquant
          r.loadXML(http_request.responseText); // loadXML: load XML from string, load: load XML from URL
        } else if (window.XMLHttpRequest && http_request.responseXML){ // MOZ
          var r = http_request.responseXML;
        } else
	  r = http_request.responseText;
      }
      else {
        alert(http_request.responseText);
        return false;
      }
    } else {
      //alert('Une erreur est survenue lors de la demande : code d\'erreur '+http_request.status);
      var r = '<b>Une erreur est survenue lors de la demande :</b> code d\'erreur <i>'+http_request.status+'</i>';
    }
    eval(handle_func+"(r);");
    return true;
  }
}
function        ajax_XMLGetTagValue(xmldoc, tagname)
{
  if (xmldoc && xmldoc.getElementsByTagName(tagname) && xmldoc.getElementsByTagName(tagname).item(0) && xmldoc.getElementsByTagName(tagname).item(0).firstChild) {
    var regex = new RegExp ('&amp;', 'gi') ;
    // regex a corriger
    return xmldoc.getElementsByTagName(tagname).item(0).firstChild.data.replace(regex, '&');
  }
  return false;
}
