//////////////////////////////////////////////////////////////////////////
//AJAX
//////////////////////////////////////////////////////////////////////////
function CHttpRequest()
{
    this.m_Data = null;
    this.m_Method = "GET";
    this.m_Asynchrone = true;
    this.m_XMLHttpRequest = null; 
    this.m_URLTarget = "";
    this.m_OnLoading = null;
    this.m_OnLoaded = null;
    this.m_OnInteractive = null;
    this.m_OnComplete = null;
    
    if(window.XMLHttpRequest) // Firefox 
    {
       this.m_XMLHttpRequest = new XMLHttpRequest(); 
    }
    else if(window.ActiveXObject) // Internet Explorer 
    {
       this.m_XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
    }
    else 
    { // XMLHttpRequest non supporté par le navigateur 
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    }
    
    
}
//////////////////////////////////////////////////////////////////////////
CHttpRequest.prototype.Open = function()
{
    if( this.m_Method == "POST" )
    {
        this.m_XMLHttpRequest.open( this.m_Method , this.m_URLTarget , this.m_Asynchrone ); 
        this.m_XMLHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        this.m_XMLHttpRequest.send( this.m_Data );
    }
    
    if( this.m_Method == "GET" )
    {
        this.m_XMLHttpRequest.open( this.m_Method , this.m_URLTarget , this.m_Asynchrone ); 
        this.m_XMLHttpRequest.send( null );
    }
    this.m_XMLHttpRequest.onreadystatechange = this.OnReadyStateChange();
}
//////////////////////////////////////////////////////////////////////////
CHttpRequest.prototype.OnReadyStateChange = function()
{
    //alert('plok');
    if(this.m_XMLHttpRequest.readyState == 1) 
    {
        if( this.m_OnLoading != null )
            this.m_OnLoading();
    }
    if(this.m_XMLHttpRequest.readyState == 2) 
    {
        if( this.m_OnLoaded != null )
            this.m_OnLoaded();
    }
    if(this.m_XMLHttpRequest.readyState == 3) 
    {
        if( this.m_OnInteractive != null )
            this.m_OnInteractive();
    }
    if(this.m_XMLHttpRequest.readyState == 4) 
    {
        if( this.m_OnComplete != null )
        {
            this.m_OnComplete();
        }
        //Analyse du code javascript
        //TODO :: si fichier js , html ou php
        responseText = new String( this.m_XMLHttpRequest.responseText );
        debut = responseText.indexOf( '<script type="text/javascript">' , 0 );
        fin = responseText.indexOf( '</script>' , 0 );
        eval( responseText.substr( debut + 31 , fin - debut - 31 ) );
    }
}
//////////////////////////////////////////////////////////////////////////
function UpdateContents(http_request,updatediv,callback)
{
    if(http_request.readyState == 4 )
    {
        document.getElementById(updatediv).innerHTML=http_request.responseText;
        
        if (typeof callback != "undefined") 
        {
            callback();
        }
    }
    document.getElementById("LOADING").style.display = "none";
}
//////////////////////////////////////////////////////////////////////////
function makeRequest(url,updatediv,callback)
{
	var http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			// Voir la note ci-dessous à propos de cette ligne
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Abandon :( Impossible de créer une instance XMLHTTP');
		return false;
	}
	http_request.onreadystatechange = function() 
	{ 
	    UpdateContents(http_request,updatediv,callback); 
	    if(http_request.readyState == 4 )
        {
            responseText = new String(http_request.responseText);
            debut = responseText.indexOf('<script type="text/javascript">',0);
            fin = responseText.indexOf('</script>',0);
            
            //alert(responseText.substr(debut+31,fin-debut-31));
            eval(responseText.substr(debut+31,fin-debut-31));
	        //alert(http_request.responseText);
	        //globaleval(http_request.responseText);
	        try
	        {
	            eval(http_request.responseText);
	        }catch (exception)
	        {
	        //    alert(exception);
	        }
	        
	    }
	    
	    //
	};
	http_request.open('GET', url, true);
	http_request.send(null);
	document.getElementById("LOADING").style.display = "block";
	//eval(http_request.responseText);
	//eval("alert('"+http_request.responseText+"')");
}
//////////////////////////////////////////////////////////////////////////
function globaleval(script)
{
  if(window.execScript)
  {
    return window.execScript(script);
  } 
  else if(navigator.userAgent.indexOf('KHTML') != -1)
  { //safari, konqueror..
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.innerHTML = script;
      document.getElementsByTagName('head')[0].appendChild(s);
  } 
  else 
  {
    return window.eval(script);
  }
}