dp.sh.Brushes.XQuery = function()
{
	var keywords =	'as ascending at by case cast castable collation declare default define descending else every ' +
	                'except external for function greatest import if in instance intersect is least let module ' +
	                'namespace of order return satisfies some stable then to treat typeswitch union ' +
	                'variable where ' +
	                'xs:anyType xs:anySimpleType xs:anyURI xs:base64Binary xs:boolean xs:date xs:dateTime xs:decimal ' +
	                'xs:double xs:duration xs:float xs:gDay xs:gMonth xs:gMonthDay xs:gYear xs:gYearMonth ' +
	                'xs:hexBinary xs:integer xs:month xs:normalizedString xs:NOTATION xs:QName ' +
	                'xs:recurringDuration xs:string xs:time xs:timeDuration xs:timeInstant xs:token xs:uriReference ' + 
	                'xs:year';

	this.regexList = [
		{ regex: dp.sh.RegexLib.SingleLineCComments,				css: 'comment' },			// one line comments
		{ regex: dp.sh.RegexLib.MultiLineCComments,					css: 'comment' },			// multiline comments
		{ regex: new RegExp('\\(\\:[\\s\\S]*?\\:\\)', 'gm'),		css: 'comment' },			// XQuery comments
		{ regex: dp.sh.RegexLib.DoubleQuotedString,					css: 'string' },			// double quoted strings
		{ regex: dp.sh.RegexLib.SingleQuotedString,					css: 'string' },			// single quoted strings
		{ regex: new RegExp('^\\s*#.*', 'gm'),						css: 'preprocessor' },		// preprocessor tags like #region and #endregion
		{ regex: new RegExp(this.GetKeywords(keywords), 'gm'),		css: 'keyword' }			// keywords
		];

	this.CssClass = 'dp-c';
}

dp.sh.Brushes.XQuery.prototype	= new dp.sh.Highlighter();
dp.sh.Brushes.XQuery.Aliases	= ['xq', 'xqy', 'xquery'];
