Logger = {};

/**
 * Kein Level
 * @type Number
 */
Logger.LVL_NONE = -1;

/**
 * Level: Debug
 * @type Number
 */
Logger.LVL_DEBUG = 0;

/**
 * Level: Info
 * @type Number
 */
Logger.LVL_INFO = 1;

/**
 * Level: Warning
 * @type Number
 */
Logger.LVL_WARNING = 2;

/**
 * Level: Error
 * @type Number
 */
Logger.LVL_ERROR = 3;


/**
 * Gibt eine Debug Meldung auf 
 * den angeschlossenen Konsolen aus
 * @param {String} sMessage Die Meldung
 */
Logger.debug = function(sMessage) {
	Logger.log(sMessage, Logger.LVL_DEBUG);
}

/**
 * Gibt eine Info Meldung auf 
 * den angeschlossenen Konsolen aus
 * @param {String} sMessage Die Meldung
 */
Logger.info = function(sMessage) {
	Logger.log(sMessage, Logger.LVL_INFO);
}

/**
 * Gibt eine Warnung auf 
 * den angeschlossenen Konsolen aus
 * @param {String} sMessage Die Meldung
 */
Logger.warning = function(sMessage) {
	Logger.log(sMessage, Logger.LVL_WARNING);
}

/**
 * Gibt eine Fehler Meldung auf 
 * den angeschlossenen Konsolen aus
 * @param {String} sMessage Die Meldung
 */
Logger.error = function(sMessage) {
	Logger.log(sMessage, Logger.LVL_ERROR);
}


/**
 * Gibt eine Meldung auf 
 * den angeschlossenen Konsolen aus
 * @param {String} sMessage Die Meldung
 * @param {Number} nLogLevel Der zu verwendende Log Level. (Eine der Logger.LVL_* Konstanten). Default: Logger.LVL_NONE
 */
Logger.log = function(sMessage, nLogLevel) {
	//Glob. JavaScript console Objekt (zB Firebug)
    if (typeof(console) != 'undefined') {
        switch (nLogLevel) {
			case Logger.LVL_DEBUG: {
				console.debug(sMessage);
				break;
			}
			case Logger.LVL_INFO: {
				console.info(sMessage);
				break;
			}
            case Logger.LVL_WARNING: {
                console.warn(sMessage);
				break;
            }
			case Logger.LVL_ERROR: {
                console.error(sMessage);
                break;
            }
			default: {
				console.log(sMessage);
				break;
			}
        }
    }

	//Backbase Debugger Konsole
	if (typeof(bb) != 'undefined') {
		if (typeof(bb.console) != 'undefined') {
			switch (nLogLevel) {
				case Logger.LVL_DEBUG: {
					bb.console.debug(sMessage);
					break;
				}
				case Logger.LVL_INFO: {
					bb.console.info(sMessage);
					break;
				}
	            case Logger.LVL_WARNING: {
	                bb.console.warn(sMessage);
					break;
	            }
				case Logger.LVL_ERROR: {
	                bb.console.error(sMessage);
	                break;
	            }
				default: {
					bb.console.log(sMessage);
					break;
				}
	        }	
		}
	}
}
