var MAX_DUMP_DEPTH = 10;

function pr(obj){
	alert(dumpObj(obj, "array", "", 1));
}

function dumpObj(obj, name, indent, depth) {
	
	if (depth > MAX_DUMP_DEPTH) {
		return indent + name + ": <Maximum Depth Reached>\n";
	}
	
	if (typeof obj == "object") {
		
		var child = null;
		var output = indent + name + "\n";
		indent += "\t";
		
		for (var item in obj){
			try {
				child = obj[item];
			} catch (e) {
				child = "<Unable to Evaluate>";
			}
	
			if (typeof child == "object") {
				output += dumpObj(child, item, indent, depth + 1);
			} else {
				output += indent + item + ": " + child + "\n";
			}
	
		}
		return output;
	} else {
		return obj;
	}	
}
