/*
 * EwaDebug.js / Version JQuery
 * permet d'afficher des messages sur la console si elle existe
 *
 * V1.0 : benoit montuelle (??/??/??) : main code
 * V1.1 : mathias delantes (19/10/10) : possibilité de ne pas avoir de filtre, test si debug existe, type de message (kind)
 *
 * EwaDebugEnabled = true / false : afficher ou pas les messages
 *
 * EwaDebugFilter = array("xxx", "yyy") : permet de filtrer les messages = si le messge contient xxx ou yyy alors il s'affiche
 * si EwaDebugFilter est vide alors tout s'affiche 
 *
 * si kind est précisé en argument alors on tache d'afficher ce type de message (warn, log, error, etc...)
 * base sur http://getfirebug.com/wiki/index.php/Console_API
 */
var EwaDebugEnabled = true;

// filtre les messages : ils doivent contenir :  ex : new Array('diaporama', 'rollover');
var EwaDebugFilter = new Array(); 

// alias pour plus de simplicité mais qui peut donc sauter si debug est déjà défini ailleurs
if(typeof debug == 'undefined') {
  var debug = function(msg, kind) {
  return EwaDebug(msg, kind);
  }
}


// main fonction EwaDebug()
var EwaDebug = function(msg, kind) {

  if(kind == undefined) {
    kind = "log";
  }
  
  if (msg == undefined || typeof msg.trim != 'function' || EwaDebugEnabled == false) {
    return;
  }

  msg.trim();

   var allow = true;

  // si on doit filtrer les msgs
  if(EwaDebugFilter.length > 0) {
    var allow = false;
    EwaDebugFilter.each(function(ns, index) {
      if (msg.contains(ns)) {
        allow = true;
      }
    });
  }

  if (allow && window.console) {
    var is_done = false;
    // quel type de message (basé sur firebug cf: http://getfirebug.com/wiki/index.php/Console_API)
    switch(kind) {
      case "debug":
        if(console.debug) { is_done = true; console.debug(msg); }
      break; 

      case "log":
        if(console.log) { is_done = true; console.log(msg); }
      break;

      case "info":
        if(console.info) { is_done = true; console.info(msg); }
      break; 

      case "error":
        if(console.error) { is_done = true; console.error(msg); }
      break; 

      case "warn":
        if(console.warn) { is_done = true; console.warn(msg); }
      break; 

      case "group":
        if(console.group) { is_done = true; console.group(msg); }
      break;  

      case "groupEnd":
        if(console.groupEnd) { is_done = true; console.groupEnd(msg); }
      break;

      case "time":
        if(console.time) { is_done = true; console.time(msg); }
      break;

      case "timeEnd":
        if(console.timeEnd) { is_done = true; console.timeEnd(msg); }
      break;          

      default:
        if(console.log) { is_done = true; console.log(msg); }
      break;

    }

    if(is_done == false) {
      console.log(msg);
    }
  }

}
