function var_dump(obj, recursive)
{
	//var recursive = recursive||true;
	var s = var_dump_noprint(obj, 0, recursive);
	
	s = s.replace(/</g, '&lt;');
	s = s.replace(/>/g, '&gt;');
	debugwin = window.open('', 'debugwin', 'left=20,top=20,width=400,height=800,toolbar=0,location=0,status=0,scrollbars=1,resizable=1');
	debugwin.document.write('<html><body style="cursor:pointer;" onClick="self.close()"><pre>' + s + '</pre></body></html>');
	debugwin.document.close();
}

/**
* voor debuggen, wordt gebruikt door var_dump hierboven
* ook los te gebruiken: alert(var_dump_noprint(obj));
*/
function var_dump_noprint(obj, indent_level, recursive)
{

	var LINEFEED = '\n';	
	var INDENT   = '\t';
	var indent_level = indent_level||0;
	var indent_str = '';
	var j;
	for(j=0; j<indent_level; j++) {
		indent_str += INDENT;
	}
	var s = '';
	if(typeof obj == 'undefined' || obj==null) {
		s += 'undefined' + LINEFEED;
	} else if(typeof obj == 'array' || typeof obj == 'object') {
		s += typeof obj + ' (' + LINEFEED;
		if(recursive || indent_level==0) {
			var i;
			for(i in obj) {
				s += indent_str + INDENT + '[' + i + '] => ' /*+ INDENT*/ + var_dump_noprint(obj[i], (indent_level+1), recursive);
			}
		}
		s += indent_str + ')' + LINEFEED;
	} else if(typeof obj == 'function') {
		s += 'function' + LINEFEED;
	} else {
		s += '(' + typeof obj + ') ' /*+ INDENT*/ + obj + LINEFEED;
	}
	return s;
}
