function print_r(ary, limitLevel, toAlert){
	if(typeof(limitLevel) == 'undefined'){
		limitLevel = 10000;
	}
	
	var str = getValue(ary, 0, limitLevel-1);
	
	if(toAlert){
		var w = window.open('', '_blank', 'width=640,height=480,scrollbars');
		w.document.open();
		w.document.write('<div align="left"><pre>');
		w.document.write(str);
		w.document.write('</pre></div>');
		w.document.close();
//		alert(str);
	}else{
		document.write('<div align="left"><pre>');
		document.write(str);
		document.write('</pre></div>');
	}
}

function getValue(ary, level, limitLevel){
	var str = '';
	
	if(typeof(ary) != 'object' || level > limitLevel){
		str = ary;
	}else{
		var tab = '';
		for(var i = 0; i < level; i++){
			tab += '\t';
		}
		
		str = tab + 'Array\n';
		str += tab + '(\n'
		for(var key in ary){
			str += tab + '\t' + '[' + key + '] => ';
			try{
				str += getValue(ary[key], level+1, limitLevel);
			}catch(err){
				str += err.message;
			}
			str += '\n';
		}
		str += tab + ')\n';
	}
	
	return str;
}

function nl2br(str){
	return str.replace(/(\r\n)|\n|\r/g, '<br>');
}


