dp.sh.Brushes.plsql = function()
{
	
	// this script was created by A. Fuat SUNGUR
	// afsungur@gmail.com 
	// http://afsungur.blogspot.com
	// This code is opened for development.


	var funcs ='ABS ACOS ADD_MONTHS ASCII ASCIISTR ASIN ATAN BFILENAME BITAND CARDINALITY CEIL ' + 
			'CHARTOROWID CHR COALESCE COMMIT_CM COMPOSE CONCAT CONVERT COS COSH CUBE CURRENT_DATE ' + 		    	 	    
			'CURRENT_TIME CURRENT_TIMESTAMP DBTIMEZONE DECODE DECOMPOSE DEREF DUMP EMPTY_BLOB ' + 			   
			'EMPTY_CLOB EXISTS EXP FLOOR FROM_TZ GLB GREATEST GREATEST_LB GROUPING HEXTORAW ' + 
		   'INITCAP INSTR INSTRB INSTRC INSTR2 INSTR4 ISNCHAR LAST_DAY LEAST LEAST_UB LENGTH ' +
    'LENGTHB LENGTHC LENGTH2 LENGTH4 LEVEL LN LOCALTIME LOCALTIMESTAMP LOG LOWER LPAD LTRIM LUB ' + 			   
			'MONTHS_BETWEEN NANVL NCHARTOROWID NCHR NEW_TIME NEXT_DAY NHEXTORAW NLS_CHARSET_DECL_LEN ' +
'NLS_CHARSET_ID NLS_CHARSET_NAME NLS_INITCAP NLS_LOWER NLSSORT NLS_UPPER NULLFN NULLIF ' + 		    
			'NUMTODSINTERVAL NUMTOYMINTERVAL NVL POWER RAWTOHEX RAWTONHEX REF REGEXP_INSTR' +
'SESSIONTIMEZONE SET_TRANSACTION_USE SIGN SIN SINH SOUNDEX SQRT SUBSTR SUBSTRB '+ 
		    'SUBSTRC SUBSTR2 SUBSTR4 SYS_AT_TIME_ZONE SYS_CONTEXT SYSDATE SYS_EXTRACT_UTC SYS_GUID ' +
'SYS_LITERALTODATE SYS_LITERALTODSINTERVAL SYS_LITERALTOTIME SYS_LITERALTOTIMESTAMP ' + 		    
			'SYS_LITERALTOTZTIME SYS_LITERALTOTZTIMESTAMP SYS_LITERALTOYMINTERVAL ' + 
		    'SYSTIMESTAMP TAN TANH TO_ANYLOB TO_BINARY_DOUBLE TO_BINARY_FLOAT ' +
'TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DSINTERVAL TO_LABEL TO_MULTI_BYTE TO_NCHAR TO_NCLOB ' + 		    
			'TO_NUMBER TO_RAW TO_SINGLE_BYTE TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ TO_TIME_TZ ' + 			
			'TO_YMINTERVAL TRANSLATE TRIM TRUNC TZ_OFFSET UID UNISTR UPPER UROWID USER USERENV ' +
		    'VALUE VSIZE XOR ' +
		    'REGEXP_LIKE REGEXP_REPLACE REGEXP_SUBSTR REMAINDER REPLACE ROLLBACK_NR ROLLBACK_SV ' +
		    'ROLLUP ROUND ROWID ROWIDTOCHAR ROWIDTONCHAR ROWLABEL ROWNUM RPAD RTRIM SAVEPOINT';


	var keywords =	'ACCESS ELSE MODIFY START ADD EXCLUSIVE NOAUDIT SELECT EXISTS NOCOMPRESS' + 
			'SESSION ALTER FILE SET FLOAT NOTFOUND SHARE FOR NOWAIT SIZE ARRAYLEN' +
			'FROM SMALLINT AS GRANT NUMBER sqlBUF ASC GROUP OF SUCCESSFUL AUDIT HAVING' +
			'OFFLINE SYNONYM IDENTIFIED ON SYSDATE BY IMMEDIATE ONLINE TABLE CHAR ' + 
			'OPTION THEN CHECK INCREMENT TO CLUSTER INDEX ORDER TRIGGER COLUMN INITIAL PCTFREE' +
			'UID COMMENT INSERT PRIOR UNION COMPRESS INTEGER PRIVILEGES UNIQUE CONNECT' +
			'INTERSECT PUBLIC UPDATE CREATE INTO RAW USER CURRENT IS RENAME VALIDATE DATE' + 
			'LEVEL RESOURCE VALUES DECIMAL REVOKE VARCHAR DEFAULT LOCK ROW VARCHAR2 DELETE' +
			'LONG ROWID VIEW DESC MAXEXTENTS ROWLABEL WHENEVER DISTINCT MINUS ROWNUM WHERE DROP' +
			'MODE ROWS WITH ADMIN CURSOR FOUND MOUNT AFTER CYCLE FUNCTION NEXT ALLOCATE DATABASE' +
			'GO NEW ANALYZE DATAFILE GOTO NOARCHIVELOG ARCHIVE DBA GROUPS NOCACHE ARCHIVELOG DEC' + 				
			'INCLUDING NOCYCLE AUTHORIZATION DECLARE INDICATOR NOMAXVALUE AVG DISABLE INITRANS'+ 
			'NOMINVALUE BACKUP DISMOUNT INSTANCE NONE BEGIN DOUBLE INT NOORDER BECOME DUMP KEY' + 					
			'NORESETLOGS BEFORE EACH LANGUAGE NORMAL BLOCK ENABLE LAYER NOSORT BODY END LINK' +
			'NUMERIC CACHE ESCAPE LISTS OFF CANCEL EVENTS LOGFILE OLD CASCADE EXCEPT MANAGE' +
			'ONLY CHANGE EXCEPTIONS MANUAL OPEN CHARACTER EXEC MAX OPTIMAL CHECKPOINT EXPLAIN' + 			
			'MAXDATAFILES OWN CLOSE EXECUTE MAXINSTANCES PACKAGE COBOL EXTENT MAXLOGFILES PARALLEL' + 		
			'COMMIT EXTERNALLY MAXLOGHISTORY PCTINCREASE COMPILE FETCH MAXLOGMEMBERS' + 
			'PCTUSED CONSTRAINT FLUSH MAXTRANS PLAN CONSTRAINTS FREELIST MAXVALUE PLI' +
			'CONTENTS FREELISTS MIN PRECISION CONTINUE FORCE MINEXTENTS PRIMARY CONTROLFILE' +
			'FOREIGN MINVALUE PRIVATE COUNT FORTRAN MODULE PROCEDURE PROFILE SAVEPOINT' +
			'sqlSTATE TRACING QUOTA SCHEMA STATEMENT_ID TRANSACTION READ SCN STATISTICS' +
			'TRIGGERS REAL SECTION STOP TRUNCATE RECOVER SEGMENT STORAGE UNDER REFERENCES' +
			'SEQUENCE SUM UNLIMITED REFERENCING SHARED SWITCH UNTIL RESETLOGS SNAPSHOT' +
			'SYSTEM USE RESTRICTED TABLES USING REUSE SORT TABLESPACE WHEN ROLE sql' +
			'TEMPORARY WRITE ROLES sqlCODE THREAD WORK ROLLBACK sqlERROR TIME ABORT' +
			'CRASH DIGITS ACCEPT BINARY_INTEGER CREATE DISPOSE ACCESS BODY' + 
			'CURRENT DISTINCT ADD BOOLEAN CURRVAL DO ALL BY CURSOR DROP ALTER CASE' +
			'DATABASE ELSE CHAR DATA_BASE ELSIF CHAR_BASE DATE END ARRAY CHECK' +
			'DBA ENTRY ARRAYLEN CLOSE DEBUGOFF EXCEPTION AS CLUSTER DEBUGON' +
			'EXCEPTION_INIT ASC CLUSTERS DECLARE EXISTS ASSERT COLAUTH DECIMAL EXIT' + 
			'ASSIGN COLUMNS DEFAULT FALSE AT COMMIT DEFINITION FETCH AUTHORIZATION' + 
			'COMPRESS DELAY FLOAT AVG CONNECT DELETE FOR BASE_TABLE CONSTANT DELTA FORM' + 
			'BEGIN COUNT DESC FROM FUNCTION NEW RELEASE SUM GENERIC NEXTVAL REMR' + 
			'TABAUTH GOTO NOCOMPRESS RENAME TABLE GRANT RESOURCE TABLES GROUP' + 
			'RETURN TASK HAVING NUMBER REVERSE TERMINATE IDENTIFIED NUMBER_BASE REVOKE' + 
			'THEN IF OF ROLLBACK TO ON ROWID TRUE INDEX OPEN ROWLABEL TYPE INDEXES OPTION ROWNUM' +
			'UNION INDICATOR ROWTYPE UNIQUE INSERT ORDER RUN UPDATE INTEGER OTHERS SAVEPOINT USE' + 			
			'INTERSECT OUT SCHEMA VALUES INTO PACKAGE SELECT VARCHAR IS PARTITION SEPARATE' +
			'VARCHAR2 LEVEL PCTFREE VARIANCE POSITIVE SIZE VIEW LIMITED PRAGMA' + 
			'SMALLINT VIEWS LOOP PRIOR SPACE WHEN MAX PRIVATE sql WHERE MIN PROCEDURE' + 
			'sqlCODE WHILE MINUS PUBLIC sqlERRM WITH MLSLABEL RAISE START WORK MOD RANGE' + 
			'STATEMENT MODE REAL STDDEV NATURAL RECORD SUBTYPE RETURNING';

	var operators =	'all and any between cross in join like not null or outer some';

	this.regexList = [
		{ regex: new RegExp('--(.*)$','gm'),						css:'comment' },			// one line and multiline comments
		{ regex: dp.sh.RegexLib.DoubleQuotedString,					css:'string' },			// double quoted strings
		{ regex: dp.sh.RegexLib.SingleQuotedString,					css:'string' },			// single quoted strings
		{ regex: new RegExp(this.GetKeywords(funcs),'gmi'),		css:'func' },				// functions
		{ regex: new RegExp(this.GetKeywords(operators),'gmi'),	css:'op' },				// operators and such
		{ regex: new RegExp(this.GetKeywords(keywords),'gmi'),		css:'keyword' }			// keyword
		];

	this.CssClass ='dp-plsql';
	this.Style =	'.dp-plsql .func { color: #ff1493; }' +
					'.dp-plsql .op { color: #808080; }';
}

dp.sh.Brushes.plsql.prototype	= new dp.sh.Highlighter();
dp.sh.Brushes.plsql.Aliases	= ['plsql'];
