/*
 *	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.1 (01.09.2007)
 */
window.ConsoleWrapper = new ConsoleWrapper();
function ConsoleWrapper() {
	
	/*
		Loglevel-Switches
		TODO: ueber JSP steuern
		TODO: alternativ ueber Konstruktor setzen
	*/
	var consoleEnabled = true; // gobaler Switch		
	var logEnabled = true;
	var debugEnabled = true;
	var infoEnabled = true;
	this.debugEnabled = debugEnabled;
	this.infoEnabled = infoEnabled; 

	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);
		}
	}
}
	
 
