var reserved_words = new Array("abstract", "boolean", "break", "byte", "case",
"catch", "char", "class", "const", "continue", "debugger", "default", "delete", 
"do", "double", "else", "enum", "export", "extends", "false", "final", "finally",
"float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof",
"int", "interface", "long", "native", "new", "null", "package", "private",
"protected", "public", "return", "short", "static", "super", "switch", 
"synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof",
"var", "void", "volatile", "while", "with");

var source_window;
function showFunction(f) {
	(arguments[1] != null) ? row = arguments[1] : row = -1;
	(arguments[2] != null) ? rc = arguments[2] : rc = 1;

	var s = f.toString();

	for (var i=0; i < reserved_words.length; i++) {
		var re = new RegExp(reserved_words[i]+" ", "g");
		window.status = re;
		s = s.replace(re, " <b>"+reserved_words[i]+"</b> ");
	}
	s = s.replace(/\t/g, "&nbsp;&nbsp;");
	var lines = s.split("\n");

	if (source_window == null || source_window.closed) {
		source_window = window.open("", "source_window", "width=560,height=400,resizable=yes,scrollbars=yes,menubar=no,statusbar=no,toolbar=no");
	}
	with (source_window) {
		document.writeln("<style>td.line{font-size:60%}</style>");
		document.writeln("<table>");
		for (var i=0; i < lines.length; i++) {
			(i % 2 == 0) ? bgcolor="#eeeeee" : bgcolor="#cccccc";
			if (i+1 >= row && i+1 < row+rc) bgcolor="red";
			document.writeln("<tr bgcolor="+bgcolor+"><td class='line'><a name='"+(i+1)+"'>"+(i+1)+".</a></td><td><code>"+lines[i]+"</code></td></tr>");
		}
		document.writeln("</table>");
		document.close();
		focus();
	}
}
