/**
 * Permet d'ajouter la fonction addEventListener à un objet dom qui ne le possède pas
 * (cas pour IE qui n'implémente pas toutes les spécifications du W3C)
 */
window.addFctAddEventListener = function(obj) {
   if(obj.addEventListener) {
      // pas besoin d'ajouter la fonction car elle existe déjà
      return;
   }
   if(!obj.attachEvent) {
      alert("[window.js] Impossible d'ajouter la méthode addEventListener à l'objet " + obj + " car celui-ci ne possède pas de méthode attachEvent !");
      return;
   }
   obj.addEventListener = function(evtType, evtFct, param) {
      this.attachEvent("on" + evtType, evtFct);
   };
};
window.addFctAddEventListener(window);
// ATTENTION !!! Cette méthode ne doit plus être utiliser !!!
// à la place, il faut utiliser la méthode : window.addEventListener("load",fct,false);
window.doOnLoad = function(functionToAdd, level) {
   window.addEventListener("load", functionToAdd, false);
};
// ATTENTION !!! Cette méthode ne doit plus être utiliser !!!
// à la place, il faut utiliser la méthode : window.addEventListener("click",fct,false);
window.doOnClick = function(functionToAdd, level) {
   window.addEventListener("click", functionToAdd, false);
};
//permet de stopper l'évenement en cours.
window.stopAction = function(e) {
   if(e && e.stopPropagation) {
      e.stopPropagation();
   }
   else if(event) {
      event.cancelBubble = true;
   }
};
if(document.all) {
   window.refreshEvent = function() {
   };
   window.stopEventPropagation = function() {
      window.event.cancelBubble = true;
   };
}
else {
   window.refreshEvent = function(evt) {
      window.event = evt;
   };
   window.stopEventPropagation = function() {
      window.event.stopPropagation();
   };
}
/*
 * 22/04/2009 - Suppression de ces redéfinitions de fonctions. Elles posaient problème avec la librairie jquery.
 * A priori, cela sert pour IE5 et IE5.5
 * 
//correction du bug sur certaine version de IE
if(!Array.push) {
   Array.prototype.push = function(object) {
      this[this.length] = object;
   };
}
*/
if(!Array.addAll) {
   Array.prototype.addAll = function(array) {
      for(var i = 0; i < array.length; i++) {
         this.push(array[i]);
      }
   };
}

/**
 * Permet d'ajouter un événement à un objet.
 * Type d'événement (eventType) possible :
 * - click
 * - blur
 * - load
 * - mousemove
 * - mouseover
 * - mouseout
 */
window.addEvent = function(eventType, eventFct, obj) {
   if(!eventFct || typeof(eventFct) != "function") {
      return;
   }
   if(!obj) {
      obj = window;
   }
   if(obj.addEventListener) {
      obj.addEventListener(eventType, eventFct, false);
   }
   else if(obj.attachEvent) {
      eventType = "on" + eventType;
      obj.attachEvent(eventType, eventFct);
   }
   else {
      alert("[window.js] Ajout de l'événement impossible.");
   }
};
