if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/) {
    var len = this.length;var from = Number(arguments[1]) || 0;from=(from < 0)?Math.ceil(from):Math.floor(from);if (from < 0) from += len;
    for (; from < len; from++) {if (from in this && this[from] === elt) return from; } return -1;
  };
}
function loadScript(url, callback, forceCallback) {
  if (!this.loadedScript) {
    this.loadedScript = new Array();
  }
  if (this.loadedScript.indexOf(url) == -1) {
    this.loadedScript.push(url);
    var e = document.createElement("script");
    // e.src = url + "?" + Math.random();
    e.src = url ;
    e.type = "text/javascript";
    if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {
      // IE
      e.onreadystatechange = function(){
        if (this.readyState == 'loaded' || this.readyState == 'complete') {
	  if(typeof(callback)=='function') eval('callback();'); // Patch: le dernier callback est de type 'Nan' ce qui cause une erreur
        }
      }
    } else {
      // Other browsers
      if(typeof(callback)=='function') { // Patch: cf ci-dessus
        e.onload = callback;
      }
    }
    document.getElementsByTagName("head")[0].appendChild(e);
  } else {
    if (forceCallback) {
      eval(callback); 
    }
  }
}
function loadScripts(scripts, callback){
  function createCallback(method, args){
    return function() {
      return method.apply(window, args);
    };
  }
  var callbacks = new Array(createCallback(loadScript, [scripts[scripts.length - 1], callback]));
  for (var i = scripts.length - 2; i > 0; i--) {
    callbacks.unshift(createCallback(loadScript, [scripts[i], callbacks[0], true]));
  }
  loadScript(scripts[0], callbacks[0]);
}

function creerObjetAjax() {
	if (window.XMLHttpRequest)    //  Objet standard
	{ 
		xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
	} 
	else  if (window.ActiveXObject)      //  Internet Explorer
	{
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xhr ;
}

var nScripts = -1 ;
var nRetours = 0 ;
var objetsAjax = new Array() ;

function chargerScripts(scripts) {
	nScripts = scripts.length ;
	for (var i = 0 ; i < nScripts ; i++) {
		objetsAjax[i] = creerObjetAjax() ;
		if (scripts[i].substr(0, 4) == "http")
		   objetsAjax[i].urlRequete = scripts[i] ;
		else
		   objetsAjax[i].urlRequete = url + "/js/" + scripts[i] ;
		objetsAjax[i].onreadystatechange  = function() 
			{
			   if(this.readyState  == 4)
			   {
					if(this.status  == 200 || this.status == 0) 
					{
						nRetours++ ;
						if (nRetours == nScripts)
						{
							for (var i = 0 ; i < nScripts ; i++) {
								eval(objetsAjax[i].responseText) ;
							}
						}
					}
					else 
						alert("erreur " + this.status + " : " + this.urlRequete) ;
				}
			}; 
		objetsAjax[i].open("GET", objetsAjax[i].urlRequete,  true); 
		objetsAjax[i].send(null); 
	}
}
