/**
 * JavaSyntax class
 *
 * This specifies the various aspects of java
 * syntax that are of interest when we are handling 
 * syntax coloring.
 *
 * To update the coloring scheme, you can reset the
 * values for the variables aptly named below.
 */
function JavaSyntax()
{
	// These are the syntactic symbols that handle coloring
	var BLOCK_COMMENT_OPEN   = "/*";
	var	BLOCK_COMMENT_CLOSE  = "*/";
	var LINE_COMMENT_OPEN    = "//";
	var LINE_COMMENT_CLOSE   = "\n";
	var SINGLE_QUOTE         = "'";
	var DOUBLE_QUOTE         = "\"";
	var ESCAPE_CHAR          = "\\";
	var DELIMITERS           = " \t\n\r,./<>?;:'\"{}[]\|`~!@#$%^&*()-=+";


	// These are the Java keywords that we will color
	// Try to keep these in alphabetical order, so it's
	// easy to see what keywords are already in the list
	var count = 0;
	var KEYWORDS = new Array();
	KEYWORDS[count++] = "abstract";
	KEYWORDS[count++] = "break";
	KEYWORDS[count++] = "byte";
	KEYWORDS[count++] = "boolean";
	KEYWORDS[count++] = "case";
	KEYWORDS[count++] = "catch";
	KEYWORDS[count++] = "char";
	KEYWORDS[count++] = "class";
	KEYWORDS[count++] = "continue";
	KEYWORDS[count++] = "default";
	KEYWORDS[count++] = "do";
	KEYWORDS[count++] = "double";
	KEYWORDS[count++] = "else";
  KEYWORDS[count++] = "enum";
	KEYWORDS[count++] = "extends";
	KEYWORDS[count++] = "false";
	KEYWORDS[count++] = "final";
	KEYWORDS[count++] = "finally";
	KEYWORDS[count++] = "float";
	KEYWORDS[count++] = "for";
	KEYWORDS[count++] = "if";
	KEYWORDS[count++] = "implements";
	KEYWORDS[count++] = "import";
	KEYWORDS[count++] = "instanceof";
	KEYWORDS[count++] = "int";
	KEYWORDS[count++] = "interface";
	KEYWORDS[count++] = "long";
	KEYWORDS[count++] = "native";
	KEYWORDS[count++] = "new";
	KEYWORDS[count++] = "null";
	KEYWORDS[count++] = "package";
	KEYWORDS[count++] = "private";
	KEYWORDS[count++] = "protected";
	KEYWORDS[count++] = "public";
	KEYWORDS[count++] = "return";
	KEYWORDS[count++] = "short";
	KEYWORDS[count++] = "static";
	KEYWORDS[count++] = "String";
	KEYWORDS[count++] = "super";
	KEYWORDS[count++] = "switch";
	KEYWORDS[count++] = "synchronized";
  KEYWORDS[count++] = "true";
	KEYWORDS[count++] = "try";
	KEYWORDS[count++] = "this";
	KEYWORDS[count++] = "threadsafe";
	KEYWORDS[count++] = "throw";
	KEYWORDS[count++] = "throws";
	KEYWORDS[count++] = "transient";
	KEYWORDS[count++] = "void";
	KEYWORDS[count++] = "volatile";
	KEYWORDS[count++] = "while";


	// Leave this alone!!!
	// Here, we just handle the nitty gritty of creating
	// javascript objects
	this.KEYWORDS             = KEYWORDS;
	this.BLOCK_COMMENT_OPEN   = BLOCK_COMMENT_OPEN;
	this.BLOCK_COMMENT_CLOSE  = BLOCK_COMMENT_CLOSE;
	this.LINE_COMMENT_OPEN    = LINE_COMMENT_OPEN;
	this.LINE_COMMENT_CLOSE   = LINE_COMMENT_CLOSE;
	this.SINGLE_QUOTE         = SINGLE_QUOTE;
	this.DOUBLE_QUOTE         = DOUBLE_QUOTE;
	this.ESCAPE_CHAR          = ESCAPE_CHAR;
	this.DELIMITERS           = DELIMITERS;
}
