function var_dump(oObject, sOutput) {

	var sText = '';

	var recurfunc = function(oObject, nRecursion) {

		var sText = '';
		var sTabs = '';

		nRecursion++;

		for(var i = 0; i < nRecursion; i++) {
			sTabs += '\t';
		}

		for(var oNode in oObject) {

			sText += sTabs + '[' + oNode + ']';

			/* Rekursion um weitere ChildNodes zu finden
			!oObject['nodeName'] schließt HTML-Elemente aus, da sonst Skriptabbruch durch unendliche Rekursion
			*/
			if ( typeof(oObject[oNode]) == 'object' && !oObject['nodeName']) {
				sText += ' =>\n' + sTabs + '(\n' + recurfunc(oObject[oNode], nRecursion) + sTabs + ')\n';
			}
			else {
				sText += ' (' + typeof(oObject[oNode]) + ') => ';
				sText += oObject[oNode] + '\n';
			}

		}

		nRecursion--;

		return sText;

	};

	sText = typeof(oObject) + '\n(\n';

	sText += recurfunc(oObject, 0);

	sText += '\n)';

	switch(sOutput) {

		case 'alert':
			alert(sText);
			break;

		case 'print':
			document.write('<pre>' + sText + '</pre>');
			break;

		default:
			return sText;
			break;
	}

}
