
/**/

/*
 *	Leere Console fuer Browser ohne Firebug (aus firebugx.js)
 *	
 *	Verhindert Javascript-Errors, falls weder Firebug installiert ist 
 *	noch firebug.js geladen wurde. 
 */
if (!("console" in window) || !("firebug" in console)) {
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}

/**
 * Wrapper fuer die Firebug-Console
 * 
 * - Loglevels: log/debug/info und console (global off)
 * - Extra-Calls: log|debugInfo(), log|infoGroup() 
 *
 * Autor: Raphael Kirchner
 * Version 1.0.0 (15.5.2007)
 */	
if ("ConsoleWrapper" in window) {
	window.console.error("ConsoleWrapper already loaded!");
} else {

	window.ConsoleWrapper = function ConsoleWrapper() {
	
		/*
			Loglevel-Switches
			TODO: ueber JSP steuern
			TODO: alternativ ueber Konstruktor setzen
		*/
		var consoleEnabled = false;; // gobaler Switch		
		var logEnabled = false;
		var debugEnabled = false;;
		var infoEnabled = false;;
	
		window.console.info('Console-Loglevel: console=' + consoleEnabled 
			+ ' log=' + logEnabled + ' debug=' + debugEnabled 
			+ ' info=' + infoEnabled);
	
		/*
		 * Loglevel-spezifische Methoden
		 */
		 
		this.log = function log(obj) {
			if (consoleEnabled && logEnabled) {
				window.console.log(obj);
			}
		}
		this.debug = function debug(obj) {
			if (consoleEnabled && debugEnabled) {
				window.console.debug(obj);
			}
		}
		this.info = function info(obj) {
			if (consoleEnabled && infoEnabled) {
				window.console.info(obj);
			}
		}
		this.logInfo = function logInfo(obj) {
			if (consoleEnabled && logEnabled) {
				window.console.info(obj);
			}
		}
		this.debugInfo = function debugInfo(obj) {
			if (consoleEnabled && debugEnabled) {
				window.console.info(obj);
			}
		}		
		this.logGroup = function logGroup(obj) {
			if (consoleEnabled && logEnabled) {
				window.console.group(obj);
			}
		}
		this.logGroupEnd = function logGroupEnd() {
			if (consoleEnabled && logEnabled) {
				window.console.groupEnd();
			}
		}		
		this.debugGroup = function debugGroup(obj) {
			if (consoleEnabled && debugEnabled) {
				window.console.group(obj);
			}
		}
		this.debugGroupEnd = function debugGroupEnd() {
			if (consoleEnabled && debugEnabled) {
				window.console.groupEnd();
			}
		}		
		/*
		 * Globale Methoden
		 */
		
		this.group = function group(obj) {
			if (consoleEnabled) {
				window.console.group(obj);
			}
		}
		this.groupEnd = function groupEnd() {
			if (consoleEnabled) {
				window.console.groupEnd();
			}
		}
		this.warn = function warn(obj) {
			if (consoleEnabled) {
				window.console.warn(obj);
			}
		}
		this.error = function error(obj) {
			if (consoleEnabled) {
				window.console.error(obj);
			}
		}
		this.trace = function trace(obj) {
			if (consoleEnabled) {
				window.console.trace(obj);
			}
		}
		this.time = function time(obj) {
			if (consoleEnabled) {
				window.console.time(obj);
			}
		}
		this.timeEnd = function timeEnd() {
			if (consoleEnabled) {
				window.console.timeEnd();
			}
		}
		this.profile = function profile(obj) {
			if (consoleEnabled) {
				window.console.profile(obj);
			}
		}
		this.timeEnd = function profileEnd() {
			if (consoleEnabled) {
				window.console.profileEnd();
			}
		}
		this.assert = function assert(obj) {
			if (consoleEnabled) {
				window.console.assert(obj);
			}
		}
		this.time = function count(obj) {
			if (consoleEnabled) {
				window.console.count(obj);
			}
		}
		this.time = function dir(obj) {
			if (consoleEnabled) {
				window.console.dir(obj);
			}
		}
		this.time = function dirxml(obj) {
			if (consoleEnabled) {
				window.console.dirxml(obj);
			}
		}
	}
	
} 
