diff --git a/common/js/plugins/code_highlighter/css/SyntaxHighlighter.css b/common/js/plugins/code_highlighter/css/SyntaxHighlighter.css
new file mode 100644
index 000000000..753510002
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/SyntaxHighlighter.css
@@ -0,0 +1,310 @@
+.dp-highlighter
+{
+ font-family: "Consolas", "Courier New", "Courier", "mono", "serif";
+ font-size: 12px;
+ background-color: #E7E5DC;
+ width: 99%;
+ overflow: auto;
+ padding-top: 1px; /* adds a little border on top when controls are hidden */
+}
+
+/* clear styles */
+.dp-highlighter ol,
+.dp-highlighter ol li,
+.dp-highlighter ol li span
+{
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+
+.dp-highlighter a,
+.dp-highlighter a:hover
+{
+ background: none;
+ border: none;
+ padding: 0;
+ margin: 0;
+}
+
+.dp-highlighter .bar
+{
+ padding-left: 45px;
+}
+
+.dp-highlighter.collapsed .bar,
+.dp-highlighter.nogutter .bar
+{
+ padding-left: 0px;
+}
+
+.dp-highlighter ol
+{
+ list-style: decimal; /* for ie */
+ background-color: #fff;
+ margin: 0px 0px 1px 45px !important; /* 1px bottom margin seems to fix occasional Firefox scrolling */
+ padding: 0px;
+ color: #5C5C5C;
+}
+
+.dp-highlighter.nogutter ol,
+.dp-highlighter.nogutter ol li
+{
+ list-style: none !important;
+ margin-left: 0px !important;
+}
+
+.dp-highlighter ol li,
+.dp-highlighter .columns div
+{
+ list-style: decimal; /* better look for others, override cascade from OL */
+ list-style-position: outside !important;
+ background-color: #F8F8F8;
+ color: #5C5C5C;
+ padding: 0 3px 0 10px !important;
+ margin: 0 !important;
+ line-height: 14px;
+}
+
+.dp-highlighter.nogutter ol li,
+.dp-highlighter.nogutter .columns div
+{
+ border: 0;
+}
+
+.dp-highlighter .columns
+{
+ background-color: #F8F8F8;
+ color: gray;
+ overflow: hidden;
+ width: 100%;
+}
+
+.dp-highlighter .columns div
+{
+ padding-bottom: 5px;
+}
+
+.dp-highlighter ol li.alt
+{
+ background-color: #FFF;
+ color: inherit;
+}
+
+.dp-highlighter ol li span
+{
+ color: black;
+ background-color: inherit;
+}
+
+/* Adjust some properties when collapsed */
+
+.dp-highlighter.collapsed ol
+{
+ margin: 0px;
+}
+
+.dp-highlighter.collapsed ol li
+{
+ display: none;
+}
+
+/* Additional modifications when in print-view */
+
+.dp-highlighter.printing
+{
+ border: none;
+}
+
+.dp-highlighter.printing .tools
+{
+ display: none !important;
+}
+
+.dp-highlighter.printing li
+{
+ display: list-item !important;
+}
+
+/* Styles for the tools */
+
+.dp-highlighter .tools
+{
+ padding: 3px 8px 3px 10px;
+ font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif;
+ color: silver;
+ background-color: #f8f8f8;
+ padding-bottom: 10px;
+}
+
+.dp-highlighter.nogutter .tools
+{
+ border-left: 0;
+}
+
+.dp-highlighter.collapsed .tools
+{
+ border-bottom: 0;
+}
+
+.dp-highlighter .tools a
+{
+ font-size: 9px;
+ color: #a0a0a0;
+ background-color: inherit;
+ text-decoration: none;
+ margin-right: 10px;
+}
+
+.dp-highlighter .tools a:hover
+{
+ color: red;
+ background-color: inherit;
+ text-decoration: underline;
+}
+
+/* About dialog styles */
+
+.dp-about { background-color: #fff; color: #333; margin: 0px; padding: 0px; }
+.dp-about table { width: 100%; height: 100%; font-size: 11px; font-family: Tahoma, Verdana, Arial, sans-serif !important; }
+.dp-about td { padding: 10px; vertical-align: top; }
+.dp-about .copy { border-bottom: 1px solid #ACA899; height: 95%; }
+.dp-about .title { color: red; background-color: inherit; font-weight: bold; }
+.dp-about .para { margin: 0 0 4px 0; }
+.dp-about .footer { background-color: #ECEADB; color: #333; border-top: 1px solid #fff; text-align: right; }
+.dp-about .close { font-size: 11px; font-family: Tahoma, Verdana, Arial, sans-serif !important; background-color: #ECEADB; color: #333; width: 60px; height: 22px; }
+
+/* Language specific styles */
+
+.dp-highlighter .comment,
+.dp-highlighter .comments { color: #008200; background-color: inherit; }
+.dp-highlighter .string { color: #FF00FF; background-color: inherit; }
+.dp-highlighter .keyword { color: #0000FF; background-color: inherit; }
+.dp-highlighter .preprocessor { color: gray; background-color: inherit; }
+.dp-highlighter .func { color: #FF0000; }
+.dp-highlighter .vars { color: #008080; }
+
+
+/* Language specific styles */
+
+.dp-c {}
+.dp-c .comment { color: green; }
+.dp-c .string { color: blue; }
+.dp-c .preprocessor { color: gray; }
+.dp-c .keyword { color: blue; }
+.dp-c .vars { color: #d00; }
+
+.dp-vb {}
+.dp-vb .comment { color: green; }
+.dp-vb .string { color: blue; }
+.dp-vb .preprocessor { color: gray; }
+.dp-vb .keyword { color: blue; }
+
+.dp-sql {}
+.dp-sql .comment { color: green; }
+.dp-sql .string { color: red; }
+.dp-sql .keyword { color: blue; }
+.dp-sql .func { color: #ff1493; }
+.dp-sql .op { color: #808080; }
+
+.dp-xml {}
+.dp-xml .cdata { color: #ff1493; }
+.dp-xml .comments { color: green; }
+.dp-xml .tag { margin: 0; padding: 0; background: none; font-weight: bold; color: blue; }
+.dp-xml .tag-name { color: black; font-weight: bold; }
+.dp-xml .attribute { color: red; }
+.dp-xml .attribute-value { color: blue; }
+
+.dp-delphi {}
+.dp-delphi .comment { color: #008200; font-style: italic; }
+.dp-delphi .string { color: blue; }
+.dp-delphi .number { color: blue; }
+.dp-delphi .directive { color: #008284; }
+.dp-delphi .keyword { font-weight: bold; color: navy; }
+.dp-delphi .vars { color: #000; }
+
+.dp-py {}
+.dp-py .comment { color: green; }
+.dp-py .string { color: red; }
+.dp-py .docstring { color: green; }
+.dp-py .keyword { color: blue; font-weight: bold;}
+.dp-py .builtins { color: #ff1493; }
+.dp-py .magicmethods { color: #808080; }
+.dp-py .exceptions { color: brown; }
+.dp-py .types { color: brown; font-style: italic; }
+.dp-py .commonlibs { color: #8A2BE2; font-style: italic; }
+
+.dp-rb {}
+.dp-rb .comment { color: #c00; }
+.dp-rb .string { color: #f0c; }
+.dp-rb .symbol { color: #02b902; }
+.dp-rb .keyword { color: #069; }
+.dp-rb .variable { color: #6cf; }
+
+.dp-css {}
+.dp-css .comment { color: green; }
+.dp-css .string { color: red; }
+.dp-css .value { color: red; }
+.dp-css .keyword { color: blue; }
+.dp-css .colors { color: darkred; }
+.dp-css .vars { color: #d00; }
+
+.dp-j {}
+.dp-j .comment { color: rgb(63,127,95); }
+.dp-j .string { color: rgb(42,0,255); }
+.dp-j .keyword { color: rgb(127,0,85); font-weight: bold }
+.dp-j .annotation { color: #646464; }
+.dp-j .number { color: #C00000; }
+
+.dp-cpp {}
+.dp-cpp .comment { color: #e00; }
+.dp-cpp .string { color: red; }
+.dp-cpp .preprocessor { color: #CD00CD; font-weight: bold; }
+.dp-cpp .keyword { color: #5697D9; font-weight: bold; }
+.dp-cpp .datatypes { color: #2E8B57; font-weight: bold; }
+
+.dp-php { color: #800000; }
+.dp-php .comment { color: #008000; }
+.dp-php .keyword { color: #4B00FB; }
+.dp-php .string { color: #FB00FB; }
+.dp-php .func { color: #FF0000; }
+.dp-php .vars { color: #008080; }
+.dp-php .zbxe_funcs { color: #FF6820; }
+.dp-php .zbxe_class { color: #FF6820; font-weight: bold; }
+
+
+.dp-abap { color: #800000; }
+.dp-abap .comment { color: #008000; }
+.dp-abap .keyword { color: #4B00FB; }
+.dp-abap .string { color: #FB00FB; }
+.dp-abap .datatypes { color: #2E8B57; font-weight: bold; }
+
+
+pre[name='code'] {
+ max-height: 300px;
+ font-size: 1.1em;
+ border: #666666 dotted 1px;
+ border-left: #22AAEE solid 5px;
+ padding: 5px;
+ overflow: auto;
+}
+
+
+.ch_infobox {
+ padding: 5px 0;
+ width: 99%;
+ background-color: #F8F8F8;
+ border-top: 1px solid #E7E5DC;
+}
+
+.ch_infobox .file_path {
+ font-size: 0.9em;
+ font-weight: bold;
+ margin-left: 10px;
+}
+
+.ch_infobox .description {
+ color: #AAA;
+ font-size: 0.9em;
+ margin-left: 10px;
+}
\ No newline at end of file
diff --git a/common/js/plugins/code_highlighter/css/help.png b/common/js/plugins/code_highlighter/css/help.png
new file mode 100644
index 000000000..5c870176d
Binary files /dev/null and b/common/js/plugins/code_highlighter/css/help.png differ
diff --git a/common/js/plugins/code_highlighter/css/magnifier.png b/common/js/plugins/code_highlighter/css/magnifier.png
new file mode 100644
index 000000000..cf3d97f75
Binary files /dev/null and b/common/js/plugins/code_highlighter/css/magnifier.png differ
diff --git a/common/js/plugins/code_highlighter/css/page_white_code.png b/common/js/plugins/code_highlighter/css/page_white_code.png
new file mode 100644
index 000000000..0c76bd129
Binary files /dev/null and b/common/js/plugins/code_highlighter/css/page_white_code.png differ
diff --git a/common/js/plugins/code_highlighter/css/page_white_copy.png b/common/js/plugins/code_highlighter/css/page_white_copy.png
new file mode 100644
index 000000000..a9f31a278
Binary files /dev/null and b/common/js/plugins/code_highlighter/css/page_white_copy.png differ
diff --git a/common/js/plugins/code_highlighter/css/printer.png b/common/js/plugins/code_highlighter/css/printer.png
new file mode 100644
index 000000000..a350d1871
Binary files /dev/null and b/common/js/plugins/code_highlighter/css/printer.png differ
diff --git a/common/js/plugins/code_highlighter/css/shCore.css b/common/js/plugins/code_highlighter/css/shCore.css
new file mode 100644
index 000000000..74156dd24
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shCore.css
@@ -0,0 +1,344 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+.syntaxhighlighter,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter span,
+.syntaxhighlighter .bold,
+.syntaxhighlighter .italic,
+.syntaxhighlighter .line,
+.syntaxhighlighter .line .number,
+.syntaxhighlighter .line .content,
+.syntaxhighlighter .line .content .block,
+.syntaxhighlighter .line .content .spaces,
+.syntaxhighlighter .bar,
+.syntaxhighlighter .ruler,
+.syntaxhighlighter .toolbar,
+.syntaxhighlighter .toolbar a,
+.syntaxhighlighter .toolbar a:hover
+{
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ background: none;
+ text-align: left;
+ float: none;
+ vertical-align: baseline;
+ position: static;
+ left: auto;
+ top: auto;
+ right: auto;
+ bottom: auto;
+ height: auto;
+ width: auto;
+ line-height: normal;
+ font-family: "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
+ font-weight: normal;
+ font-style: normal;
+ font-size: 100%;
+}
+
+.syntaxhighlighter
+{
+ width: 100%;
+ margin: 1em 0 1em 0;
+ padding: 1px; /* adds a little border on top and bottom */
+ position: relative;
+}
+
+.syntaxhighlighter .bold {
+ font-weight: bold;
+}
+
+.syntaxhighlighter .italic {
+ font-style: italic;
+}
+
+.syntaxhighlighter .line .number
+{
+ float: left;
+ width: 3em;
+ padding-right: .3em;
+ text-align: right;
+ display: block;
+}
+
+/* Disable numbers when no gutter option is set */
+.syntaxhighlighter.nogutter .line .number
+{
+ display: none;
+}
+
+.syntaxhighlighter .line .content
+{
+ margin-left: 3.3em;
+ padding-left: .5em;
+ display: block;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ display: block;
+ padding-left: 1.5em;
+ text-indent: -1.5em;
+}
+
+.syntaxhighlighter .line .content .spaces
+{
+ display: none;
+}
+
+/* Disable border and margin on the lines when no gutter option is set */
+.syntaxhighlighter.nogutter .line .content
+{
+ margin-left: 0;
+ border-left: none;
+}
+
+.syntaxhighlighter .bar
+{
+}
+
+.syntaxhighlighter.collapsed .bar
+{
+
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ margin-left: 0;
+ padding-left: 0;
+}
+
+.syntaxhighlighter .ruler
+{
+ padding: 0 0 .5em .5em;
+ margin-left: 3.3em;
+ overflow: hidden;
+}
+
+/* Adjust some properties when collapsed */
+
+.syntaxhighlighter.collapsed .lines,
+.syntaxhighlighter.collapsed .ruler
+{
+ display: none;
+}
+
+/* Styles for the toolbar */
+
+.syntaxhighlighter .toolbar
+{
+ position: absolute;
+ right: 0px;
+ top: 0px;
+ font-size: 1px;
+ padding: 8px 8px 8px 0; /* in px because images don't scale with ems */
+}
+
+.syntaxhighlighter.collapsed .toolbar
+{
+ font-size: 80%;
+ padding: .2em 0 .5em .5em;
+ position: static;
+}
+
+.syntaxhighlighter .toolbar a.item,
+.syntaxhighlighter .toolbar .item
+{
+ display: block;
+ float: left;
+ margin-left: 8px;
+ background-repeat: no-repeat;
+ overflow: hidden;
+ text-indent: -5000px;
+}
+
+.syntaxhighlighter.collapsed .toolbar .item
+{
+ display: none;
+}
+
+.syntaxhighlighter.collapsed .toolbar .item.expandSource
+{
+ background-image: url(magnifier.png);
+ display: inline;
+ text-indent: 0;
+ width: auto;
+ float: none;
+ height: 16px;
+ padding-left: 20px;
+}
+
+.syntaxhighlighter .toolbar .item.viewSource
+{
+ background-image: url(page_white_code.png);
+}
+
+.syntaxhighlighter .toolbar .item.printSource
+{
+ background-image: url(printer.png);
+}
+
+.syntaxhighlighter .toolbar .item.copyToClipboard
+{
+ text-indent: 0;
+ background: none;
+ overflow: visible;
+}
+
+.syntaxhighlighter .toolbar .item.about
+{
+ background-image: url(help.png);
+}
+
+/**
+ * Print view.
+ * Colors are based on the default theme without background.
+ */
+
+.syntaxhighlighter.printing,
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content,
+.syntaxhighlighter.printing .line .content .block
+{
+ background: none;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter.printing .line .number
+{
+ color: #bbb;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter.printing .line .content
+{
+ color: #000;
+}
+
+/* Toolbar when visible */
+.syntaxhighlighter.printing .toolbar,
+.syntaxhighlighter.printing .ruler
+{
+ display: none;
+}
+
+.syntaxhighlighter.printing a
+{
+ text-decoration: none;
+}
+
+.syntaxhighlighter.printing .plain,
+.syntaxhighlighter.printing .plain a
+{
+ color: #000;
+}
+
+.syntaxhighlighter.printing .comments,
+.syntaxhighlighter.printing .comments a
+{
+ color: #008200;
+}
+
+.syntaxhighlighter.printing .string,
+.syntaxhighlighter.printing .string a
+{
+ color: blue;
+}
+
+.syntaxhighlighter.printing .keyword
+{
+ color: #069;
+ font-weight: bold;
+}
+
+.syntaxhighlighter.printing .preprocessor
+{
+ color: gray;
+}
+
+.syntaxhighlighter.printing .variable
+{
+ color: #a70;
+}
+
+.syntaxhighlighter.printing .value
+{
+ color: #090;
+}
+
+.syntaxhighlighter.printing .functions
+{
+ color: #ff1493;
+}
+
+.syntaxhighlighter.printing .constants
+{
+ color: #0066CC;
+}
+
+.syntaxhighlighter.printing .script
+{
+ font-weight: bold;
+}
+
+.syntaxhighlighter.printing .color1,
+.syntaxhighlighter.printing .color1 a
+{
+ color: #808080;
+}
+
+.syntaxhighlighter.printing .color2,
+.syntaxhighlighter.printing .color2 a
+{
+ color: #ff1493;
+}
+
+.syntaxhighlighter.printing .color3,
+.syntaxhighlighter.printing .color3 a
+{
+ color: red;
+}
+
+.ch_infobox {
+ padding: 5px 0;
+ width: 99%;
+ background-color: #F8F8F8;
+ border-top: 1px solid #E7E5DC;
+}
+
+.ch_infobox .file_path {
+ font-size: 0.9em;
+ font-weight: bold;
+ margin-left: 10px;
+}
+
+.ch_infobox .description {
+ color: #AAA;
+ font-size: 0.9em;
+ margin-left: 10px;
+}
\ No newline at end of file
diff --git a/common/js/plugins/code_highlighter/css/shThemeDefault.css b/common/js/plugins/code_highlighter/css/shThemeDefault.css
new file mode 100644
index 000000000..2068d2c85
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shThemeDefault.css
@@ -0,0 +1,183 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+/************************************
+ * Default Syntax Highlighter theme.
+ *
+ * Interface elements.
+ ************************************/
+
+.syntaxhighlighter
+{
+ background-color: #E7E5DC;
+}
+
+/* Highlighed line number */
+.syntaxhighlighter .line.highlighted .number
+{
+ background-color: #6CE26C;
+ color: black;
+}
+
+/* Highlighed line */
+.syntaxhighlighter .line.highlighted.alt1 .content,
+.syntaxhighlighter .line.highlighted.alt2 .content
+{
+ background-color: #6CE26C;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter .line .number
+{
+ color: #5C5C5C;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter .line .content
+{
+ border-left: 3px solid #6CE26C;
+ color: #000;
+}
+
+.syntaxhighlighter.printing .line .content
+{
+ border: 0;
+}
+
+/* First line */
+.syntaxhighlighter .line.alt1 .content
+{
+ background-color: #fff;
+}
+
+/* Second line */
+.syntaxhighlighter .line.alt2 .content
+{
+ background-color: #F8F8F8;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ background: url(wrapping.png) 0 1.1em no-repeat;
+}
+
+.syntaxhighlighter .ruler
+{
+ color: silver;
+ background-color: #F8F8F8;
+ border-left: 3px solid #6CE26C;
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ border: 0;
+}
+
+.syntaxhighlighter .toolbar
+{
+ background-color: #F8F8F8;
+ border: #E7E5DC solid 1px;
+}
+
+.syntaxhighlighter .toolbar a
+{
+ color: #a0a0a0;
+}
+
+.syntaxhighlighter .toolbar a:hover
+{
+ color: red;
+}
+
+/************************************
+ * Actual syntax highlighter colors.
+ ************************************/
+.syntaxhighlighter .plain,
+.syntaxhighlighter .plain a
+{
+ color: #000;
+}
+
+.syntaxhighlighter .comments,
+.syntaxhighlighter .comments a
+{
+ color: #008200;
+}
+
+.syntaxhighlighter .string,
+.syntaxhighlighter .string a
+{
+ color: blue;
+}
+
+.syntaxhighlighter .keyword
+{
+ color: #069;
+ font-weight: bold;
+}
+
+.syntaxhighlighter .preprocessor
+{
+ color: gray;
+}
+
+.syntaxhighlighter .variable
+{
+ color: #a70;
+}
+
+.syntaxhighlighter .value
+{
+ color: #090;
+}
+
+.syntaxhighlighter .functions
+{
+ color: #ff1493;
+}
+
+.syntaxhighlighter .constants
+{
+ color: #0066CC;
+}
+
+.syntaxhighlighter .script
+{
+ background-color: yellow !important;
+}
+
+.syntaxhighlighter .color1,
+.syntaxhighlighter .color1 a
+{
+ color: #808080;
+}
+
+.syntaxhighlighter .color2,
+.syntaxhighlighter .color2 a
+{
+ color: #ff1493;
+}
+
+.syntaxhighlighter .color3,
+.syntaxhighlighter .color3 a
+{
+ color: red;
+}
diff --git a/common/js/plugins/code_highlighter/css/shThemeDjango.css b/common/js/plugins/code_highlighter/css/shThemeDjango.css
new file mode 100644
index 000000000..def5797e7
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shThemeDjango.css
@@ -0,0 +1,184 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+/**
+ * Django SyntaxHighlighter theme
+ */
+
+/************************************
+ * Interface elements.
+ ************************************/
+
+.syntaxhighlighter
+{
+ background-color: #0B2F20;
+}
+
+/* Highlighed line number */
+.syntaxhighlighter .line.highlighted .number
+{
+ background-color: #336442;
+ color: #fff;
+}
+
+/* Highlighed line */
+.syntaxhighlighter .line.highlighted .content
+{
+ background-color: #336442 !important;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter .line .number
+{
+ color: #497958;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter .line .content
+{
+ border-left: 3px solid #41A83E;
+ color: #B9BDB6;
+}
+
+.syntaxhighlighter.printing .line .content
+{
+ border: 0;
+}
+
+/* First line */
+.syntaxhighlighter .line.alt1 .content
+{
+}
+
+/* Second line */
+.syntaxhighlighter .line.alt2 .content
+{
+ background-color: #0a2b1d;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ background: url(wrapping.png) 0 1.1em no-repeat;
+}
+
+.syntaxhighlighter .ruler
+{
+ color: #C4B14A;
+ background-color: #245032;
+ border-left: 3px solid #41A83E;
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ border: 0;
+}
+
+.syntaxhighlighter .toolbar
+{
+ background-color: #245032;
+ border: #0B2F20 solid 1px;
+}
+
+.syntaxhighlighter .toolbar a
+{
+ color: #C4B14A;
+}
+
+.syntaxhighlighter .toolbar a:hover
+{
+ color: #FFE862;
+}
+
+/************************************
+ * Actual syntax highlighter colors.
+ ************************************/
+.syntaxhighlighter .plain,
+.syntaxhighlighter .plain a
+{
+ color: #F8F8F8;
+}
+
+.syntaxhighlighter .comments,
+.syntaxhighlighter .comments a
+{
+ color: #336442;
+ font-style: italic;
+}
+
+.syntaxhighlighter .string,
+.syntaxhighlighter .string a
+{
+ color: #9DF39F;
+}
+
+.syntaxhighlighter .keyword
+{
+ color: #96DD3B;
+ font-weight: bold !important;
+}
+
+.syntaxhighlighter .preprocessor
+{
+ color: #91BB9E;
+}
+
+.syntaxhighlighter .variable
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .value
+{
+ color: #F7E741;
+}
+
+.syntaxhighlighter .functions
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .constants
+{
+ color: #E0E8FF;
+}
+
+.syntaxhighlighter .script
+{
+ background-color: #497958 !important;
+}
+
+.syntaxhighlighter .color1,
+.syntaxhighlighter .color1 a
+{
+ color: #EB939A;
+}
+
+.syntaxhighlighter .color2,
+.syntaxhighlighter .color2 a
+{
+ color: #91BB9E;
+}
+
+.syntaxhighlighter .color3,
+.syntaxhighlighter .color3 a
+{
+ color: #EDEF7D;
+}
diff --git a/common/js/plugins/code_highlighter/css/shThemeEmacs.css b/common/js/plugins/code_highlighter/css/shThemeEmacs.css
new file mode 100644
index 000000000..91a5c7697
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shThemeEmacs.css
@@ -0,0 +1,183 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+/**
+ * Emacs SyntaxHighlighter theme based on theme by Joshua Emmons
+ * http://www.skia.net/
+ */
+
+/************************************
+ * Interface elements.
+ ************************************/
+
+.syntaxhighlighter
+{
+ background-color: #000000;
+}
+
+/* Highlighed line number */
+.syntaxhighlighter .line.highlighted .number
+{
+ background-color: #435A5F;
+ color: #fff;
+}
+
+/* Highlighed line */
+.syntaxhighlighter .line.highlighted .content
+{
+ background-color: #435A5F !important;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter .line .number
+{
+ color: #D3D3D3;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter .line .content
+{
+ border-left: 3px solid #990000;
+ color: #B9BDB6;
+}
+
+.syntaxhighlighter.printing .line .content
+{
+ border: 0;
+}
+
+/* First line */
+.syntaxhighlighter .line.alt1 .content
+{
+}
+
+/* Second line */
+.syntaxhighlighter .line.alt2 .content
+{
+ background-color: #0f0f0f;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ background: url(wrapping.png) 0 1.1em no-repeat;
+}
+
+.syntaxhighlighter .ruler
+{
+ color: silver;
+ background-color: #000000;
+ border-left: 3px solid #990000;
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ border: 0;
+}
+
+.syntaxhighlighter .toolbar
+{
+ background-color: #000000;
+ border: #000000 solid 1px;
+}
+
+.syntaxhighlighter .toolbar a
+{
+ color: #646763;
+}
+
+.syntaxhighlighter .toolbar a:hover
+{
+ color: #9CCFF4;
+}
+
+/************************************
+ * Actual syntax highlighter colors.
+ ************************************/
+.syntaxhighlighter .plain,
+.syntaxhighlighter .plain a
+{
+ color: #D3D3D3;
+}
+
+.syntaxhighlighter .comments,
+.syntaxhighlighter .comments a
+{
+ color: #FF7D27;
+}
+
+.syntaxhighlighter .string,
+.syntaxhighlighter .string a
+{
+ color: #FF9E7B;
+}
+
+.syntaxhighlighter .keyword
+{
+ color: #00FFFF;
+}
+
+.syntaxhighlighter .preprocessor
+{
+ color: #AEC4DE;
+}
+
+.syntaxhighlighter .variable
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .value
+{
+ color: #090;
+}
+
+.syntaxhighlighter .functions
+{
+ color: #81CEF9;
+}
+
+.syntaxhighlighter .constants
+{
+ color: #FF9E7B;
+}
+
+.syntaxhighlighter .script
+{
+ background-color: #990000 !important;
+}
+
+.syntaxhighlighter .color1,
+.syntaxhighlighter .color1 a
+{
+ color: #EBDB8D;
+}
+
+.syntaxhighlighter .color2,
+.syntaxhighlighter .color2 a
+{
+ color: #FF7D27;
+}
+
+.syntaxhighlighter .color3,
+.syntaxhighlighter .color3 a
+{
+ color: #AEC4DE;
+}
diff --git a/common/js/plugins/code_highlighter/css/shThemeFadeToGrey.css b/common/js/plugins/code_highlighter/css/shThemeFadeToGrey.css
new file mode 100644
index 000000000..8f7160967
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shThemeFadeToGrey.css
@@ -0,0 +1,184 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+/**
+ * Fade to Grey SyntaxHighlighter theme based on theme by Brasten Sager
+ * http://www.ibrasten.com/
+ */
+
+/************************************
+ * Interface elements.
+ ************************************/
+
+.syntaxhighlighter
+{
+ background-color: #121212;
+}
+
+/* Highlighed line number */
+.syntaxhighlighter .line.highlighted .number
+{
+ background-color: #3A3A00;
+ color: #fff;
+}
+
+/* Highlighed line */
+.syntaxhighlighter .line.highlighted .content
+{
+ background-color: #3A3A00 !important;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter .line .number
+{
+ color: #C3C3C3;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter .line .content
+{
+ border-left: 3px solid #3185B9;
+ color: #B9BDB6;
+}
+
+.syntaxhighlighter.printing .line .content
+{
+ border: 0;
+}
+
+/* First line */
+.syntaxhighlighter .line.alt1 .content
+{
+}
+
+/* Second line */
+.syntaxhighlighter .line.alt2 .content
+{
+ background-color: #000000;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ background: url(wrapping.png) 0 1.1em no-repeat;
+}
+
+.syntaxhighlighter .ruler
+{
+ color: silver;
+ border-left: 3px solid #3185B9;
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ border: 0;
+}
+
+.syntaxhighlighter .toolbar
+{
+ background-color: #000000;
+ border: #000000 solid 1px;
+}
+
+.syntaxhighlighter .toolbar a
+{
+ color: #808080;
+}
+
+.syntaxhighlighter .toolbar a:hover
+{
+ color: #96DAFF;
+}
+
+/************************************
+ * Actual syntax highlighter colors.
+ ************************************/
+.syntaxhighlighter .plain,
+.syntaxhighlighter .plain a
+{
+ color: #FFFFFF;
+}
+
+.syntaxhighlighter .comments,
+.syntaxhighlighter .comments a
+{
+ color: #696854;
+}
+
+.syntaxhighlighter .string,
+.syntaxhighlighter .string a
+{
+ color: #E3E658;
+}
+
+.syntaxhighlighter .keyword
+{
+ color: #D01D33;
+}
+
+.syntaxhighlighter .preprocessor
+{
+ color: #435A5F;
+}
+
+.syntaxhighlighter .variable
+{
+ color: #898989;
+}
+
+.syntaxhighlighter .value
+{
+ color: #090;
+}
+
+.syntaxhighlighter .functions
+{
+ color: #AAAAAA;
+ font-weight: bold !important;
+}
+
+.syntaxhighlighter .constants
+{
+ color: #96DAFF;
+}
+
+.syntaxhighlighter .script
+{
+ background-color: #C3C3C3 !important;
+ color: #000;
+}
+
+.syntaxhighlighter .color1,
+.syntaxhighlighter .color1 a
+{
+ color: #FFC074;
+}
+
+.syntaxhighlighter .color2,
+.syntaxhighlighter .color2 a
+{
+ color: #4A8CDB;
+}
+
+.syntaxhighlighter .color3,
+.syntaxhighlighter .color3 a
+{
+ color: #96DAFF;
+}
diff --git a/common/js/plugins/code_highlighter/css/shThemeMidnight.css b/common/js/plugins/code_highlighter/css/shThemeMidnight.css
new file mode 100644
index 000000000..8171ca3e8
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shThemeMidnight.css
@@ -0,0 +1,183 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+/**
+ * Midnight SyntaxHighlighter theme based on theme by J.D. Myers
+ * http://webdesign.lsnjd.com/
+ */
+
+/************************************
+ * Interface elements.
+ ************************************/
+
+.syntaxhighlighter
+{
+ background-color: #0F192A;
+}
+
+/* Highlighed line number */
+.syntaxhighlighter .line.highlighted .number
+{
+ background-color: #253E5A;
+ color: #fff;
+}
+
+/* Highlighed line */
+.syntaxhighlighter .line.highlighted .content
+{
+ background-color: #253E5A !important;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter .line .number
+{
+ color: #38566F;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter .line .content
+{
+ border-left: 3px solid #435A5F;
+ color: #B9BDB6;
+}
+
+.syntaxhighlighter.printing .line .content
+{
+ border: 0;
+}
+
+/* First line */
+.syntaxhighlighter .line.alt1 .content
+{
+ background-color: #0F192A;
+}
+
+/* Second line */
+.syntaxhighlighter .line.alt2 .content
+{
+ background-color: #0F192A;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ background: url(wrapping.png) 0 1.1em no-repeat;
+}
+
+.syntaxhighlighter .ruler
+{
+ color: #38566F;
+ background-color: #0F192A;
+ border-left: 3px solid #435A5F;
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ border: 0;
+}
+
+.syntaxhighlighter .toolbar
+{
+ background-color: #0F192A;
+}
+
+.syntaxhighlighter .toolbar a
+{
+ color: #38566F;
+}
+
+.syntaxhighlighter .toolbar a:hover
+{
+ color: #8AA6C1;
+}
+
+/************************************
+ * Actual syntax highlighter colors.
+ ************************************/
+.syntaxhighlighter .plain,
+.syntaxhighlighter .plain a
+{
+ color: #D1EDFF;
+}
+
+.syntaxhighlighter .comments,
+.syntaxhighlighter .comments a
+{
+ color: #428BDD;
+}
+
+.syntaxhighlighter .string,
+.syntaxhighlighter .string a
+{
+ color: #1DC116;
+}
+
+.syntaxhighlighter .keyword
+{
+ color: #B43D3D;
+}
+
+.syntaxhighlighter .preprocessor
+{
+ color: #8AA6C1;
+}
+
+.syntaxhighlighter .variable
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .value
+{
+ color: #F7E741;
+}
+
+.syntaxhighlighter .functions
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .constants
+{
+ color: #E0E8FF;
+}
+
+.syntaxhighlighter .script
+{
+ background-color: #404040 !important;
+}
+
+.syntaxhighlighter .color1,
+.syntaxhighlighter .color1 a
+{
+ color: #F8BB00;
+}
+
+.syntaxhighlighter .color2,
+.syntaxhighlighter .color2 a
+{
+ color: #FFFFFF;
+}
+
+.syntaxhighlighter .color3,
+.syntaxhighlighter .color3 a
+{
+ color: #FFAA3E;
+}
diff --git a/common/js/plugins/code_highlighter/css/shThemeRDark.css b/common/js/plugins/code_highlighter/css/shThemeRDark.css
new file mode 100644
index 000000000..a390c2a68
--- /dev/null
+++ b/common/js/plugins/code_highlighter/css/shThemeRDark.css
@@ -0,0 +1,183 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+/**
+ * RDark SyntaxHighlighter theme based on theme by Radu Dineiu
+ * http://www.vim.org/scripts/script.php?script_id=1732
+ */
+
+/************************************
+ * Interface elements.
+ ************************************/
+
+.syntaxhighlighter
+{
+ background-color: #1B2426;
+}
+
+/* Highlighed line number */
+.syntaxhighlighter .line.highlighted .number
+{
+ background-color: #435A5F;
+ color: #fff;
+}
+
+/* Highlighed line */
+.syntaxhighlighter .line.highlighted .content
+{
+ background-color: #435A5F !important;
+}
+
+/* Gutter line numbers */
+.syntaxhighlighter .line .number
+{
+ color: #B9BDB6;
+}
+
+/* Add border to the lines */
+.syntaxhighlighter .line .content
+{
+ border-left: 3px solid #435A5F;
+ color: #B9BDB6;
+}
+
+.syntaxhighlighter.printing .line .content
+{
+ border: 0;
+}
+
+/* First line */
+.syntaxhighlighter .line.alt1 .content
+{
+ background-color: #1B2426;
+}
+
+/* Second line */
+.syntaxhighlighter .line.alt2 .content
+{
+ background-color: #1B2426;
+}
+
+.syntaxhighlighter .line .content .block
+{
+ background: url(wrapping.png) 0 1.1em no-repeat;
+}
+
+.syntaxhighlighter .ruler
+{
+ color: silver;
+ background-color: #1B2426;
+ border-left: 3px solid #435A5F;
+}
+
+.syntaxhighlighter.nogutter .ruler
+{
+ border: 0;
+}
+
+.syntaxhighlighter .toolbar
+{
+ background-color: #1B2426;
+}
+
+.syntaxhighlighter .toolbar a
+{
+ color: #646763;
+}
+
+.syntaxhighlighter .toolbar a:hover
+{
+ color: #E0E8FF;
+}
+
+/************************************
+ * Actual syntax highlighter colors.
+ ************************************/
+.syntaxhighlighter .plain,
+.syntaxhighlighter .plain a
+{
+ color: #B9BDB6;
+}
+
+.syntaxhighlighter .comments,
+.syntaxhighlighter .comments a
+{
+ color: #878A85;
+}
+
+.syntaxhighlighter .string,
+.syntaxhighlighter .string a
+{
+ color: #5CE638;
+}
+
+.syntaxhighlighter .keyword
+{
+ color: #5BA1CF;
+}
+
+.syntaxhighlighter .preprocessor
+{
+ color: #435A5F;
+}
+
+.syntaxhighlighter .variable
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .value
+{
+ color: #090;
+}
+
+.syntaxhighlighter .functions
+{
+ color: #FFAA3E;
+}
+
+.syntaxhighlighter .constants
+{
+ color: #E0E8FF;
+}
+
+.syntaxhighlighter .script
+{
+ background-color: #435A5F !important;
+}
+
+.syntaxhighlighter .color1,
+.syntaxhighlighter .color1 a
+{
+ color: #E0E8FF;
+}
+
+.syntaxhighlighter .color2,
+.syntaxhighlighter .color2 a
+{
+ color: #FFFFFF;
+}
+
+.syntaxhighlighter .color3,
+.syntaxhighlighter .color3 a
+{
+ color: #FFAA3E;
+}
diff --git a/common/js/plugins/code_highlighter/css/wrapping.png b/common/js/plugins/code_highlighter/css/wrapping.png
new file mode 100644
index 000000000..6972c5e59
Binary files /dev/null and b/common/js/plugins/code_highlighter/css/wrapping.png differ
diff --git a/common/js/plugins/code_highlighter/plugin.load b/common/js/plugins/code_highlighter/plugin.load
new file mode 100644
index 000000000..b49fb75b6
--- /dev/null
+++ b/common/js/plugins/code_highlighter/plugin.load
@@ -0,0 +1,3 @@
+script/shCore.js
+css/shCore.css
+css/shThemeDefault.css
diff --git a/common/js/plugins/code_highlighter/script/clipboard.swf b/common/js/plugins/code_highlighter/script/clipboard.swf
new file mode 100644
index 000000000..1b4d90a0f
Binary files /dev/null and b/common/js/plugins/code_highlighter/script/clipboard.swf differ
diff --git a/common/js/plugins/code_highlighter/script/shBrushAbap.js b/common/js/plugins/code_highlighter/script/shBrushAbap.js
new file mode 100644
index 000000000..eef3f0d73
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushAbap.js
@@ -0,0 +1,26 @@
+dp.sh.Brushes.Abap = function()
+{
+ var datatypes =
+ 'ACCP CHAR CLNT CUKY CURR DATS DEC FLTP INT1 INT2 INT4 LANG LCHR LRAW NUMC PREC QUAN RAW RAWSTRING SSTRING STRING TIMS UNIT';
+
+ var keywords =
+ 'IF RETURN WHILE CASE DEFAULT DO ELSE FOR ENDIF ELSEIF EQ NOT AND DATA TYPES SELETION-SCREEN PARAMETERS ' +
+ 'FIELD-SYMBOLS EXTERN INLINE REPORT WRITE APPEND SELECT ENDSELECT CALL METHOD CALL FUNCTION LOOP ENDLOOP ' +
+ 'RAISE READ TABLE CONCATENATE SPLIT SHIFT CONDENSE DESCRIBE CLEAR ENDFUNCTION ASSIGN CREATE DATA TRANSLATE ' +
+ 'CONTINUE START-OF-SELECTION AT SELECTION-SCREEN MODIFY CALL SCREEN CREATE OBJECT PERFORM FORM ENDFORM ' +
+ 'REUSE_ALV_BLOCK_LIST_INIT ZBCIALV INCLUDE TYPE REF TO TYPE BEGIN\SOF END\SOF LIKE INTO FROM WHERE ORDER BY ' +
+ 'WITH KEY INTO STRING SEPARATED BY EXPORTING IMPORTING TO UPPER CASE TO EXCEPTIONS TABLES USING CHANGING';
+
+ this.regexList = [
+ { regex: new RegExp('^\\*.*$', 'gm'), css: 'comment' }, // one line comments
+ { regex: new RegExp('\\".*$', 'gm'), css: 'comment' }, // one line comments
+ { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // strings
+ { regex: new RegExp(this.GetKeywords(datatypes), 'gm'), css: 'datatypes' },
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' }
+ ];
+
+ this.CssClass = 'dp-abap';
+}
+
+dp.sh.Brushes.Abap.prototype = new dp.sh.Highlighter();
+dp.sh.Brushes.Abap.Aliases = ['abap', 'Abap'];
\ No newline at end of file
diff --git a/common/js/plugins/code_highlighter/script/shBrushBash.js b/common/js/plugins/code_highlighter/script/shBrushBash.js
new file mode 100644
index 000000000..8bc123815
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushBash.js
@@ -0,0 +1,51 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Bash = function()
+{
+ var keywords = 'if fi then elif else for do done until while break continue case function return in eq ne gt lt ge le';
+ var commands = 'alias apropos awk bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' +
+ 'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' +
+ 'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' +
+ 'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' +
+ 'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' +
+ 'import install join kill less let ln local locate logname logout look lpc lpr lprint ' +
+ 'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' +
+ 'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' +
+ 'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' +
+ 'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' +
+ 'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' +
+ 'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' +
+ 'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' +
+ 'vi watch wc whereis which who whoami Wget xargs yes'
+ ;
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(this.getKeywords(commands), 'gm'), css: 'functions' } // commands
+ ];
+}
+
+SyntaxHighlighter.brushes.Bash.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Bash.aliases = ['bash', 'shell'];
+
diff --git a/common/js/plugins/code_highlighter/script/shBrushCSharp.js b/common/js/plugins/code_highlighter/script/shBrushCSharp.js
new file mode 100644
index 000000000..f90422d8c
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushCSharp.js
@@ -0,0 +1,56 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.CSharp = function()
+{
+ var keywords = 'abstract as base bool break byte case catch char checked class const ' +
+ 'continue decimal default delegate do double else enum event explicit ' +
+ 'extern false finally fixed float for foreach get goto if implicit in int ' +
+ 'interface internal is lock long namespace new null object operator out ' +
+ 'override params private protected public readonly ref return sbyte sealed set ' +
+ 'short sizeof stackalloc static string struct switch this throw true try ' +
+ 'typeof uint ulong unchecked unsafe ushort using virtual void while';
+
+ function fixComments(match, regexInfo)
+ {
+ var css = (match[0].indexOf("///") == 0)
+ ? 'color1'
+ : 'comments'
+ ;
+
+ return [new SyntaxHighlighter.Match(match[0], match.index, css)];
+ }
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, func : fixComments }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /^\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // c# keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+};
+
+SyntaxHighlighter.brushes.CSharp.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.CSharp.aliases = ['c#', 'c-sharp', 'csharp'];
+
diff --git a/common/js/plugins/code_highlighter/script/shBrushCpp.js b/common/js/plugins/code_highlighter/script/shBrushCpp.js
new file mode 100644
index 000000000..f6b4be666
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushCpp.js
@@ -0,0 +1,91 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Cpp = function()
+{
+ // Copyright 2006 Shin, YoungJin
+
+ var datatypes = 'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' +
+ 'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' +
+ 'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' +
+ 'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' +
+ 'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' +
+ 'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' +
+ 'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' +
+ 'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' +
+ 'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' +
+ 'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' +
+ 'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' +
+ 'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' +
+ 'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' +
+ 'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' +
+ 'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' +
+ 'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' +
+ 'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' +
+ 'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' +
+ 'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' +
+ '__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' +
+ 'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' +
+ 'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' +
+ 'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' +
+ 'va_list wchar_t wctrans_t wctype_t wint_t signed';
+
+ var keywords = 'break case catch class const __finally __exception __try ' +
+ 'const_cast continue private public protected __declspec ' +
+ 'default delete deprecated dllexport dllimport do dynamic_cast ' +
+ 'else enum explicit extern if for friend goto inline ' +
+ 'mutable naked namespace new noinline noreturn nothrow ' +
+ 'register reinterpret_cast return selectany ' +
+ 'sizeof static static_cast struct switch template this ' +
+ 'thread throw true false try typedef typeid typename union ' +
+ 'using uuid virtual void volatile whcar_t while';
+
+ var functions = 'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' +
+ 'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' +
+ 'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' +
+ 'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' +
+ 'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' +
+ 'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' +
+ 'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' +
+ 'fwrite getc getchar gets perror printf putc putchar puts remove ' +
+ 'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' +
+ 'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' +
+ 'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' +
+ 'mbtowc qsort rand realloc srand strtod strtol strtoul system ' +
+ 'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' +
+ 'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' +
+ 'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' +
+ 'clock ctime difftime gmtime localtime mktime strftime time';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /^ *#.*/gm, css: 'preprocessor' },
+ { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'color1 bold' },
+ { regex: new RegExp(this.getKeywords(functions), 'gm'), css: 'functions bold' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword bold' }
+ ];
+};
+
+SyntaxHighlighter.brushes.Cpp.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Cpp.aliases = ['cpp', 'c'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushCss.js b/common/js/plugins/code_highlighter/script/shBrushCss.js
new file mode 100644
index 000000000..f0925cc1c
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushCss.js
@@ -0,0 +1,85 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.CSS = function()
+{
+ function getKeywordsCSS(str)
+ {
+ return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+ };
+
+ function getValuesCSS(str)
+ {
+ return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+ };
+
+ var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
+ 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
+ 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
+ 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
+ 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
+ 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
+ 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
+ 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
+ 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
+ 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
+ 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
+ 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
+ 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
+ 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
+
+ var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
+ 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
+ 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
+ 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
+ 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
+ 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
+ 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
+ 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
+ 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
+ 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
+ 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
+ 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
+ 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
+ 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+ var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors
+ { regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g, css: 'value' }, // sizes
+ { regex: /!important/g, css: 'color3' }, // !important
+ { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values
+ { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts
+ ];
+
+ this.forHtmlScript({
+ left: /(<|<)\s*style.*?(>|>)/gi,
+ right: /(<|<)\/\s*style\s*(>|>)/gi
+ });
+};
+
+SyntaxHighlighter.brushes.CSS.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.CSS.aliases = ['css'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushDelphi.js b/common/js/plugins/code_highlighter/script/shBrushDelphi.js
new file mode 100644
index 000000000..beb0a7dc2
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushDelphi.js
@@ -0,0 +1,49 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Delphi = function()
+{
+ var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' +
+ 'case char class comp const constructor currency destructor div do double ' +
+ 'downto else end except exports extended false file finalization finally ' +
+ 'for function goto if implementation in inherited int64 initialization ' +
+ 'integer interface is label library longint longword mod nil not object ' +
+ 'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' +
+ 'pint64 pointer private procedure program property pshortstring pstring ' +
+ 'pvariant pwidechar pwidestring protected public published raise real real48 ' +
+ 'record repeat set shl shortint shortstring shr single smallint string then ' +
+ 'threadvar to true try type unit until uses val var varirnt while widechar ' +
+ 'widestring with word write writeln xor';
+
+ this.regexList = [
+ { regex: /\(\*[\s\S]*?\*\)/gm, css: 'comments' }, // multiline comments (* *)
+ { regex: /{(?!\$)[\s\S]*?}/gm, css: 'comments' }, // multiline comments { }
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /\{\$[a-zA-Z]+ .+\}/g, css: 'color1' }, // compiler Directives and Region tags
+ { regex: /\b[\d\.]+\b/g, css: 'value' }, // numbers 12345
+ { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // numbers $F5D3
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword
+ ];
+};
+
+SyntaxHighlighter.brushes.Delphi.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Delphi.aliases = ['delphi', 'pascal'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushDiff.js b/common/js/plugins/code_highlighter/script/shBrushDiff.js
new file mode 100644
index 000000000..fbdde3fb5
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushDiff.js
@@ -0,0 +1,35 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Diff = function()
+{
+ this.regexList = [
+ { regex: /^\+\+\+.*$/gm, css: 'color2' },
+ { regex: /^\-\-\-.*$/gm, css: 'color2' },
+ { regex: /^\s.*$/gm, css: 'color1' },
+ { regex: /^@@.*@@$/gm, css: 'variable' },
+ { regex: /^\+[^\+]{1}.*$/gm, css: 'string' },
+ { regex: /^\-[^\-]{1}.*$/gm, css: 'comments' }
+ ];
+};
+
+SyntaxHighlighter.brushes.Diff.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Diff.aliases = ['diff', 'patch'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushGroovy.js b/common/js/plugins/code_highlighter/script/shBrushGroovy.js
new file mode 100644
index 000000000..7f94ff2e2
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushGroovy.js
@@ -0,0 +1,61 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Groovy = function()
+{
+ // Contributed by Andres Almiray
+ // http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter
+
+ var keywords = 'as assert break case catch class continue def default do else extends finally ' +
+ 'if in implements import instanceof interface new package property return switch ' +
+ 'throw throws try while public protected private static';
+ var types = 'void boolean byte char short int long float double';
+ var constants = 'null';
+ var methods = 'allProperties count get size '+
+ 'collect each eachProperty eachPropertyName eachWithIndex find findAll ' +
+ 'findIndexOf grep inject max min reverseEach sort ' +
+ 'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' +
+ 'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' +
+ 'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' +
+ 'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' +
+ 'transformChar transformLine withOutputStream withPrintWriter withStream ' +
+ 'withStreams withWriter withWriterAppend write writeLine '+
+ 'dump inspect invokeMethod print println step times upto use waitForOrKill '+
+ 'getText';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /""".*"""/g, css: 'string' }, // GStrings
+ { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'value' }, // numbers
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // goovy keyword
+ { regex: new RegExp(this.getKeywords(types), 'gm'), css: 'color1' }, // goovy/java type
+ { regex: new RegExp(this.getKeywords(constants), 'gm'), css: 'constants' }, // constants
+ { regex: new RegExp(this.getKeywords(methods), 'gm'), css: 'functions' } // methods
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+}
+
+SyntaxHighlighter.brushes.Groovy.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Groovy.aliases = ['groovy'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushJScript.js b/common/js/plugins/code_highlighter/script/shBrushJScript.js
new file mode 100644
index 000000000..40905a7f3
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushJScript.js
@@ -0,0 +1,43 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.JScript = function()
+{
+ var keywords = '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';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keywords
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);
+};
+
+SyntaxHighlighter.brushes.JScript.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.JScript.aliases = ['js', 'jscript', 'javascript'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushJava.js b/common/js/plugins/code_highlighter/script/shBrushJava.js
new file mode 100644
index 000000000..fb77c5264
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushJava.js
@@ -0,0 +1,47 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Java = function()
+{
+ var keywords = 'abstract assert boolean break byte case catch char class const ' +
+ 'continue default do double else enum extends ' +
+ 'false final finally float for goto if implements import ' +
+ 'instanceof int interface long native new null ' +
+ 'package private protected public return ' +
+ 'short static strictfp super switch synchronized this throw throws true ' +
+ 'transient try void volatile while';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
+ { regex: /(?!\@interface\b)\@[\$\w]+\b/g, css: 'color1' }, // annotation @anno
+ { regex: /\@interface\b/g, css: 'color2' }, // @interface keyword
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // java keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+};
+
+SyntaxHighlighter.brushes.Java.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Java.aliases = ['java'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushPhp.js b/common/js/plugins/code_highlighter/script/shBrushPhp.js
new file mode 100644
index 000000000..91653c26e
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushPhp.js
@@ -0,0 +1,83 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Php = function()
+{
+ var funcs = 'abs acos acosh addcslashes addslashes ' +
+ 'array_change_key_case array_chunk array_combine array_count_values array_diff '+
+ 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
+ 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
+ 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
+ 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
+ 'array_push array_rand array_reduce array_reverse array_search array_shift '+
+ 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
+ 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
+ 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
+ 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
+ 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
+ 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
+ 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
+ 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
+ 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
+ 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
+ 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
+ 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
+ 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
+ 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
+ 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
+ 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
+ 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
+ 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
+ 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
+ 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
+ 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
+ 'parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir '+
+ 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
+ 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
+ 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
+ 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
+ 'strtoupper strtr strval substr substr_compare';
+
+ var keywords = 'and or xor array as break case ' +
+ 'cfunction class const continue declare default die do else ' +
+ 'elseif empty enddeclare endfor endforeach endif endswitch endwhile ' +
+ 'extends for foreach function include include_once global if ' +
+ 'new old_function return static switch use require require_once ' +
+ 'var while abstract interface public implements extends private protected throw';
+
+ var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\$\w+/g, css: 'variable' }, // variables
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions
+ { regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+};
+
+SyntaxHighlighter.brushes.Php.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Php.aliases = ['php'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushPlain.js b/common/js/plugins/code_highlighter/script/shBrushPlain.js
new file mode 100644
index 000000000..ce1e8b75e
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushPlain.js
@@ -0,0 +1,27 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Plain = function()
+{
+};
+
+SyntaxHighlighter.brushes.Plain.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Plain.aliases = ['text', 'plain'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushPython.js b/common/js/plugins/code_highlighter/script/shBrushPython.js
new file mode 100644
index 000000000..07bf8cd0a
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushPython.js
@@ -0,0 +1,48 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Python = function()
+{
+ // Contributed by Gheorghe Milas
+
+ var keywords = 'and assert break class continue def del elif else ' +
+ 'except exec finally for from global if import in is ' +
+ 'lambda not or pass print raise return try yield while';
+
+ var special = 'None True False self cls class_';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' },
+ { regex: /^\s*@\w+/gm, css: 'decorator' },
+ { regex: /(['\"]{3})([^\1])*?\1/gm, css: 'comments' },
+ { regex: /"(?!")(?:\.|\\\"|[^\""\n])*"/gm, css: 'string' },
+ { regex: /'(?!')(?:\.|(\\\')|[^\''\n])*'/gm, css: 'string' },
+ { regex: /\+|\-|\*|\/|\%|=|==/gm, css: 'keyword' },
+ { regex: /\b\d+\.?\w*/g, css: 'value' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' },
+ { regex: new RegExp(this.getKeywords(special), 'gm'), css: 'color1' }
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+};
+
+SyntaxHighlighter.brushes.Python.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Python.aliases = ['py', 'python'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushRuby.js b/common/js/plugins/code_highlighter/script/shBrushRuby.js
new file mode 100644
index 000000000..af978150f
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushRuby.js
@@ -0,0 +1,49 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Ruby = function()
+{
+ // Contributed by Erik Peterson.
+
+ var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' +
+ 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' +
+ 'self super then throw true undef unless until when while yield';
+
+ var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' +
+ 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' +
+ 'ThreadGroup Thread Time TrueClass';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\b[A-Z0-9_]+\b/g, css: 'constants' }, // constants
+ { regex: /:[a-z][A-Za-z0-9_]*/g, css: 'color2' }, // symbols
+ { regex: /(\$|@@|@)\w+/g, css: 'variable bold' }, // $global, @instance, and @@class variables
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(this.getKeywords(builtins), 'gm'), css: 'color1' } // builtins
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+};
+
+SyntaxHighlighter.brushes.Ruby.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Ruby.aliases = ['ruby', 'rails', 'ror'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushScala.js b/common/js/plugins/code_highlighter/script/shBrushScala.js
new file mode 100644
index 000000000..6aa94fdec
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushScala.js
@@ -0,0 +1,46 @@
+/**
+ * Code Syntax Highlighter.
+ * Version 1.5.2
+ * Copyright (C) 2004-2008 Alex Gorbatchev
+ * http://www.dreamprojections.com/syntaxhighlighter/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/** Contributed by Yegor Jbanov and David Bernard. */
+dp.sh.Brushes.Scala = function()
+{
+ var keywords = 'val sealed case def true trait implicit forSome import match object null finally super ' +
+ 'override try lazy for var catch throw type extends class while with new final yield abstract ' +
+ 'else do if return protected private this package false';
+
+ var keyops = '[_:=><%#@]+';
+
+ this.regexList = [
+ { regex: dp.sh.RegexLib.SingleLineCComments, css: 'comment' }, // one line comments
+ { regex: dp.sh.RegexLib.MultiLineCComments, css: 'comment' }, // multiline comments
+ { regex: new RegExp("(['\"]{3})([^\\1])*?\\1", 'gm'), css: 'string' }, // multi-line strings
+ { regex: new RegExp('"(?!")(?:\\.|\\\\\\"|[^\\""\\n\\r])*"', 'gm'), css: 'string' }, // double-quoted string
+ { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // strings
+ { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'number' }, // numbers
+ { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(keyops, 'gm'), css: 'keyword' } // scala keyword
+ ];
+
+ this.CssClass = 'dp-j';
+ this.Style = '.dp-j .annotation { color: #646464; }' +
+ '.dp-j .number { color: #C00000; }';
+}
+
+dp.sh.Brushes.Scala.prototype = new dp.sh.Highlighter();
+dp.sh.Brushes.Scala.Aliases = ['scala'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushSql.js b/common/js/plugins/code_highlighter/script/shBrushSql.js
new file mode 100644
index 000000000..566f8c0ea
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushSql.js
@@ -0,0 +1,60 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Sql = function()
+{
+ var funcs = 'abs avg case cast coalesce convert count current_timestamp ' +
+ 'current_user day isnull left lower month nullif replace right ' +
+ 'session_user space substring sum system_user upper user year';
+
+ var keywords = 'absolute action add after alter as asc at authorization begin bigint ' +
+ 'binary bit by cascade char character check checkpoint close collate ' +
+ 'column commit committed connect connection constraint contains continue ' +
+ 'create cube current current_date current_time cursor database date ' +
+ 'deallocate dec decimal declare default delete desc distinct double drop ' +
+ 'dynamic else end end-exec escape except exec execute false fetch first ' +
+ 'float for force foreign forward free from full function global goto grant ' +
+ 'group grouping having hour ignore index inner insensitive insert instead ' +
+ 'int integer intersect into is isolation key last level load local max min ' +
+ 'minute modify move name national nchar next no numeric of off on only ' +
+ 'open option order out output partial password precision prepare primary ' +
+ 'prior privileges procedure public read real references relative repeatable ' +
+ 'restrict return returns revoke rollback rollup rows rule schema scroll ' +
+ 'second section select sequence serializable set size smallint static ' +
+ 'statistics table temp temporary then time timestamp to top transaction ' +
+ 'translation trigger true truncate uncommitted union unique update values ' +
+ 'varchar varying view when where with work';
+
+ var operators = 'all and any between cross in join like not null or outer some';
+
+ this.regexList = [
+ { regex: /--(.*)$/gm, css: 'comments' }, // one line and multiline comments
+ { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // single quoted strings
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'color2' }, // functions
+ { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such
+ { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
+ ];
+};
+
+SyntaxHighlighter.brushes.Sql.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Sql.aliases = ['sql'];
+
diff --git a/common/js/plugins/code_highlighter/script/shBrushVb.js b/common/js/plugins/code_highlighter/script/shBrushVb.js
new file mode 100644
index 000000000..879305fea
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushVb.js
@@ -0,0 +1,50 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Vb = function()
+{
+ var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' +
+ 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' +
+ 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' +
+ 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' +
+ 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' +
+ 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' +
+ 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' +
+ 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' +
+ 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' +
+ 'Overloads Overridable Overrides ParamArray Preserve Private Property ' +
+ 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' +
+ 'Return Select Set Shadows Shared Short Single Static Step Stop String ' +
+ 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' +
+ 'Variant When While With WithEvents WriteOnly Xor';
+
+ this.regexList = [
+ { regex: /'.*$/gm, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: /^\s*#.*$/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // vb keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+};
+
+SyntaxHighlighter.brushes.Vb.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Vb.aliases = ['vb', 'vbnet'];
diff --git a/common/js/plugins/code_highlighter/script/shBrushXml.js b/common/js/plugins/code_highlighter/script/shBrushXml.js
new file mode 100644
index 000000000..e35ffd0f0
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shBrushXml.js
@@ -0,0 +1,63 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+SyntaxHighlighter.brushes.Xml = function()
+{
+ function process(match, regexInfo)
+ {
+ var constructor = SyntaxHighlighter.Match,
+ code = match[0],
+ tag = new XRegExp('(<|<)[\\s\\/\\?]*(?[:\\w-\\.]+)', 'xg').exec(code),
+ result = []
+ ;
+
+ if (match.attributes != null)
+ {
+ var attributes,
+ regex = new XRegExp('(? [\\w:\\-\\.]+)' +
+ '\\s*=\\s*' +
+ '(? ".*?"|\'.*?\'|\\w+)',
+ 'xg');
+
+ while ((attributes = regex.exec(code)) != null)
+ {
+ result.push(new constructor(attributes.name, match.index + attributes.index, 'color1'));
+ result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));
+ }
+ }
+
+ if (tag != null)
+ result.push(
+ new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword')
+ );
+
+ return result;
+ }
+
+ this.regexList = [
+ { regex: new XRegExp('(\\<|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\>|>)', 'gm'), css: 'color2' }, //
+ { regex: new XRegExp('(\\<|<)!--\\s*.*?\\s*--(\\>|>)', 'gm'), css: 'comments' }, //
+ { regex: new XRegExp('(<|<)[\\s\\/\\?]*(\\w+)(?.*?)[\\s\\/\\?]*(>|>)', 'sg'), func: process }
+ ];
+};
+
+SyntaxHighlighter.brushes.Xml.prototype = new SyntaxHighlighter.Highlighter();
+SyntaxHighlighter.brushes.Xml.aliases = ['xml', 'xhtml', 'xslt', 'html', 'xhtml'];
diff --git a/common/js/plugins/code_highlighter/script/shCore.js b/common/js/plugins/code_highlighter/script/shCore.js
new file mode 100644
index 000000000..85f8c0b11
--- /dev/null
+++ b/common/js/plugins/code_highlighter/script/shCore.js
@@ -0,0 +1,22 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/
+ *
+ * @version
+ * 2.0.287 (February 06 2009)
+ *
+ * @author
+ * Alex Gorbatchev
+ *
+ * @copyright
+ * Copyright (C) 2004-2009 Alex Gorbatchev.
+ *
+ * Licensed under a GNU Lesser General Public License.
+ * http://creativecommons.org/licenses/LGPL/2.1/
+ *
+ * SyntaxHighlighter is donationware. You are allowed to download, modify and distribute
+ * the source code in accordance with LGPL 2.1 license, however if you want to use
+ * SyntaxHighlighter on your site or include it in your product, you must donate.
+ * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
+ */
+eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('f(!1h.2I){l 2I=h(){l p={61:{"1b-1d":"","7f-2R":1,"1W-1P":u,"1B":u,"85-6L":U,"1H-1P":4,"5p":M,"5z":U,"1u":U,"5E":M,"7R-6e":U,"6n":M},R:{59:u,4x:16,4P:16,8h:M,7I:"4p",1n:{4t:"98 1c",4o:"99 1c",67:"97 96 7C",6y:"93 I 94 2a 95 7C 9a",38:"38",6B:"?",1q:"2I\\n\\n",6t:"9b\'t 9h 7J C: ",6b:"9i 9g\'t 9f C 2c-2q 9c: ",77:"<2c 8K=\\"2j://8e.8f.8c/8L/8M\\"><84><8S 2j-8T=\\"8Z-90\\" 5u=\\"2g/2c; 8Y=8X-8\\" /><4O>8U 2I4O>84><2E 1g=\\"1W-6l:8V,\\"6g 8W 9j\\",6g,5Y;9k-4H:#9J;4H:#9K;1W-1P:9I;2g-6r:6p;\\">2I5T 2.0.9N (9O 9P 6C)2j://74.589s I 9p 9o.9l 9m-6C 9n 9t.2E>2c>"},7F:M},1t:{5j:u,3w:u,3f:u,5F:{}},2T:{},7b:{9u:/\\/\\*[\\s\\S]*?\\*\\//4G,9A:/\\/\\/.*$/4G,9B:/#.*$/4G,9y:/"(?:\\.|(\\\\\\")|[^\\""\\n])*"/g,9v:/\'(?:\\.|(\\\\\\\')|[^\\\'\'\\n])*\'/g,9w:/"(?:\\.|(\\\\\\")|[^\\""])*"/g,9x:/\'(?:\\.|(\\\\\\\')|[^\\\'\'])*\'/g,3L:/\\w+:\\/\\/[\\w-.\\/?%&=]*/g,9U:{D:/(&1I;|<)\\?=?/g,19:/\\?(&2x;|>)/g},8r:{D:/(&1I;|<)%=?/g,19:/%(&2x;|>)/g},8s:{D:/(&1I;|<)\\s*2q.*?(&2x;|>)/4l,19:/(&1I;|<)\\/\\s*2q\\s*(&2x;|>)/4l}},1u:{18:h(3G){l 3E=J.1w("39"),4F=p.1u.7V;3E.Z="1u";C(l 2J 2a 4F){l 6J=4F[2J],4D=Q 6J(3G),1V=4D.18();3G.5o[2J]=4D;f(1V==u){1O}f(8I(1V)=="8H"){1V=p.1u.6T(1V,3G.1j,2J)}1V.Z+="8z "+2J;3E.1K(1V)}q 3E},6T:h(4M,6Y,4N){l a=J.1w("a"),4L=a.1g,4J=p.R,4K=4J.4x,4C=4J.4P;a.2e="#"+4N;a.4O=4M;a.4Q=6Y;a.6q=4N;a.1x=4M;f(5r(4K)==M){4L.1M=4K+"5q"}f(5r(4C)==M){4L.2i=4C+"5q"}a.8p=h(e){8k{p.1u.6W(c,e||1h.68,c.4Q,c.6q)}8l(e){p.B.1q(e.6M)}q M};q a},6W:h(7Z,89,81,86,7W){l 4B=p.1t.5F[81],4s;f(4B==u||(4s=4B.5o[86])==u){q u}q 4s.2f(7Z,89,7W)},7V:{4t:h(4r){c.18=h(){f(4r.T("5E")!=U){q}q p.R.1n.4t};c.2f=h(4q,8C,8w){l z=4r.z;4q.7x.4j(4q);z.Z=z.Z.E("5D","")}},4o:h(7N){c.18=h(){q p.R.1n.4o};c.2f=h(8o,8E,8x){l 3C=p.B.3y(7N.5B).E(/"+3C+"4p>");2d.J.54()}},67:h(5c){l 3c,9G,5a=5c.1j;c.18=h(){l 2K=p.R;f(1h.70.a8=="b8:"||2K.59==u){q u}h 1y(4u){l 4A="";C(l 4v 2a 4u){4A+=""}q 4A};h 2k(4z){l 4w="";C(l 4y 2a 4z){4w+=" "+4y+"=\'"+4z[4y]+"\'"}q 4w};l 56={1M:2K.4x,2i:2K.4P,1j:5a+"b6",6w:"b4/x-6c-6o"},57={b5:"b9",ba:"bf",be:"4Q="+5a,bd:"M"},5b=2K.59,3a;f(/bc/i.1X(80.83)){3a="<5R"+2k({b3:"b2:aU-aT-aS-aQ-aR",aW:"2j://b0.aZ.58/aX/6c/bh/6o/bg.bm#5T=9,0,0,0"})+2k(56)+">"+1y(57)+1y({bD:5b})+"5R>"}F{3a=""}3c=J.1w("z");3c.1x=3a;q 3c};c.2f=h(bE,bF,5g){l 71=5g.by;6V(71){2H"5Q":l 5h=p.B.2z(p.B.3y(5c.5B).E(/&1I;/g,"<").E(/&2x;/g,">").E(/&bw;/g,"&"));f(1h.6P){1h.6P.bx("2g",5h)}F{q p.B.2z(5h)}2H"bl":p.B.1q(p.R.1n.6y);30;2H"bk":p.B.1q(5g.6M);30}}},bi:h(5f){c.18=h(){q p.R.1n.38};c.2f=h(bj,bo,9V){l 1U=J.1w("bv"),1J=u;f(p.1t.3f!=u){J.2E.4j(p.1t.3f)}p.1t.3f=1U;1U.1g.bu="bt:bq;1M:6H;2i:6H;D:-6G;4S:-6G;";J.2E.1K(1U);1J=1U.5d.J;6F(1J,1h.J);1J.35(""+5f.z.1x+"");1J.54();1U.5d.52();1U.5d.38();h 6F(6x,6E){l 2L=6E.7v("5e");C(l i=0;i<2L.v;i++){f(2L[i].6v.aP()=="6z"&&/ac\\.12$/.1X(2L[i].2e)){6x.35("<5e 6w=\\"2g/12\\" 6v=\\"6z\\" 2e=\\""+2L[i].2e+"\\">5e>")}}}}},af:h(ag){c.18=h(){q p.R.1n.6B};c.2f=h(al,ak){l 2d=p.B.4R("","55",ah,ai,"75=0"),1J=2d.J;1J.35(p.R.1n.77);1J.54();2d.52()}}}},B:{5w:h(6Z){q 6Z+3I.a0(3I.9Y()*9W).2t()},5H:h(4V,4U){l 3g={},20;C(20 2a 4V){3g[20]=4V[20]}C(20 2a 4U){3g[20]=4U[20]}q 3g},5V:h(4T){6V(4T){2H"U":q U;2H"M":q M}q 4T},4R:h(3L,63,4W,4n,2G){l x=(79.1M-4W)/2,y=(79.2i-4n)/2;2G+=", D="+x+", 4S="+y+", 1M="+4W+", 2i="+4n;2G=2G.E(/^,/,"");l 51=1h.a2(3L,63,2G);51.52();q 51},7D:h(1L,23,1Z){f(1L.5X){1L["e"+23+1Z]=1Z;1L[23+1Z]=h(){1L["e"+23+1Z](1h.68)};1L.5X("a6"+23,1L[23+1Z])}F{1L.a3(23,1Z,M)}},1q:h(A){1q(p.R.1n.1q+A)},41:h(4Z,65){l 2y=p.1t.5j,3l=u;f(2y==u){2y={};C(l 4Y 2a p.2T){l 3k=p.2T[4Y].am;f(3k==u){1O}C(l i=0;i<3k.v;i++){2y[3k[i]]=4Y}}p.1t.5j=2y}3l=p.2T[2y[4Z]];f(3l==u&&65!=M){p.B.1q(p.R.1n.6t+4Z)}q 3l},4a:h(A,6m){l 2C=A.27("\\n");C(l i=0;i<2C.v;i++){2C[i]=6m(2C[i])}q 2C.5n("\\n")},7q:h(){l z=J.1w("z"),3m=J.1w("z"),6s=10,i=1;1S(i<=aE){f(i%6s===0){z.1x+=i;i+=(i+"").v}F{z.1x+="&aC;";i++}}3m.Z="5p 2R";3m.1K(z);q 3m},6D:h(A){q A.E(/^[ ]*[\\n]+|[\\n]*[ ]*$/g,"")},7H:h(A){l 3i,3V={},5i=Q O("^\\\\[(?<4f>(.*?))\\\\]$"),6k=Q O("(?<1d>[\\\\w-]+)"+"\\\\s*:\\\\s*"+"(?<1N>"+"[\\\\w-%#]+|"+"\\\\[.*?\\\\]|"+"\\".*?\\"|"+"\'.*?\'"+")\\\\s*;?","g");1S((3i=6k.N(A))!=u){l 2u=3i.1N.E(/^[\'"]|[\'"]$/g,"");f(2u!=u&&5i.1X(2u)){l m=5i.N(2u);2u=m.4f.v>0?m.4f.27(/\\s*,\\s*/):[]}3V[3i.1d]=2u}q 3V},6a:h(A,12){f(A==u||A.v==0||A=="\\n"){q A}A=A.E(/"+2s+""})}q A},7P:h(6f,7a){l 2D=6f.2t();1S(2D.v<7a){2D="0"+2D}q 2D},5G:h(){l 36=J.1w("z"),3h,37=0,4i=J.2E,1j=p.B.5w("5G"),2F="",4h="1Q>";36.1x=2F+"6u\\">"+2F+"28\\">"+2F+"2R\\">"+2F+"5u"+"\\"><1Q 1b=\\"7Q\\"><1Q 1j=\\""+1j+"\\">&1R;"+4h+4h+2M+2M+2M+2M;4i.1K(36);3h=J.aJ(1j);f(/aK/i.1X(80.83)){l 87=1h.aB(3h,u);37=7i(87.aA("1M"))}F{37=3h.as}4i.4j(36);q 37},72:h(7U,7T){l 1H="";C(l i=0;i<7T;i++){1H+=" "}q 7U.E(/\\t/g,1H)},6A:h(2N,4c){l ar=2N.27("\\n"),1H="\\t",47="";C(l i=0;i<50;i++){47+=" "}h 8j(3e,17,88){q 3e.22(0,17)+47.22(0,88)+3e.22(17+1,3e.v)};2N=p.B.4a(2N,h(24){f(24.1e(1H)==-1){q 24}l 17=0;1S((17=24.1e(1H))!=-1){l 8g=4c-17%4c;24=8j(24,17,8g)}q 24});q 2N},3y:h(A){q(p.R.8h==U)?A.E(/
|&1I;br\\s*\\/?&2x;/4l,"\\n"):A},3O:h(A){q A.E(/\\s*$/g,"").E(/^\\s*/,"")},2z:h(A){l 29=p.B.3y(A).27("\\n"),az=Q 5A(),7X=/^\\s*/,25=ay;C(l i=0;i<29.v&&25>0;i++){l 43=29[i];f(p.B.3O(43).v==0){1O}l 44=7X.N(43);f(44==u){q A}25=3I.25(44[0].v,25)}f(25>0){C(l i=0;i<29.v;i++){29[i]=29[i].22(25)}}q 29.5n("\\n")},7K:h(2U,2V){f(2U.H<2V.H){q-1}F{f(2U.H>2V.H){q 1}F{f(2U.v<2V.v){q-1}F{f(2U.v>2V.v){q 1}}}}q 0},2Q:h(7l,2Y){h 7r(3X,7s){q[Q p.4m(3X[0],3X.H,7s.12)]};l av=0,4e=u,3M=[],7k=2Y.3R?2Y.3R:7r;1S((4e=2Y.3D.N(7l))!=u){3M=3M.2P(7k(4e,2Y))}q 3M},6d:h(7c){q 7c.E(p.7b.3L,h(m){q""+m+""})}},1B:h(7G,46){h 7u(4g){l 49=[];C(l i=0;i<4g.v;i++){49.K(4g[i])}q 49};l 3J=46?[46]:7u(J.7v(p.R.7I)),7M="1x",2l=u;f(3J.v===0){q}C(l i=0;i<3J.v;i++){l 2B=3J[i],2b=p.B.7H(2B.Z),2W;2b=p.B.5H(7G,2b);2W=2b["7J"];f(2W==u){1O}f(2b["2c-2q"]=="U"){2l=Q p.4X(2W)}F{l 48=p.B.41(2W);f(48){2l=Q 48()}F{1O}}2l.1B(2B[7M],2b);l 2h=2l.z;f(p.R.7F){2h=J.1w("an");2h.1N=2l.z.1x;2h.1g.1M="a4";2h.1g.2i="a7"}2B.7x.a1(2h,2B)}},9Z:h(7B){p.B.7D(1h,"ae",h(){p.1B(7B)})}};p.4m=h(45,6i,12){c.1N=45;c.H=6i;c.v=45.v;c.12=12};p.4m.Y.2t=h(){q c.1N};p.4X=h(3S){l 1C=p.B.41(3S),3Q=Q p.2T.aO(),bn=u;f(1C==u){q}1C=Q 1C();c.5O=3Q;f(1C.3z==u){p.B.1q(p.R.1n.6b+3S);q}3Q.5s.K({3D:1C.3z.I,3R:66});h 3F(42,5Z){C(l j=0;j<42.v;j++){42[j].H+=5Z}};h 66(13,bA){l 6X=13.I,1D=[],3Y=1C.5s,6Q=13.H+13.D.v,2S=1C.3z,1o;C(l i=0;i<3Y.v;i++){1o=p.B.2Q(6X,3Y[i]);3F(1o,6Q);1D=1D.2P(1o)}f(2S.D!=u&&13.D!=u){1o=p.B.2Q(13.D,2S.D);3F(1o,13.H);1D=1D.2P(1o)}f(2S.19!=u&&13.19!=u){1o=p.B.2Q(13.19,2S.19);3F(1o,13.H+13[0].aV(13.19));1D=1D.2P(1o)}q 1D}};p.4X.Y.1B=h(6O,6R){c.5O.1B(6O,6R);c.z=c.5O.z};p.6U=h(){};p.6U.Y={T:h(64,69){l 5M=c.1y[64];q p.B.5V(5M==u?69:5M)},18:h(7j){q J.1w(7j)},7h:h(5N){C(l i=0;i2O.H)&&(5N.H<2O.H+2O.v)){q U}}q M},7y:h(3A,7L){l 2v=[];f(3A!=u){C(l i=0;i<3A.v;i++){2v=2v.2P(p.B.2Q(7L,3A[i]))}}2v=2v.aF(p.B.7K);q 2v},7w:h(){C(l i=0;i"+""+8i+"."+"<1Q 1b=\\"5u\\">"+(1A!=u?""+1A.E(/\\s/g,"&1R;")+"":"")+"<1Q 1b=\\"7Q\\" 1g=\\"5v-D: "+2r+"5q;\\">"+1v+"1Q>"+"1Q>"+""}q 2X},7z:h(5k,5l){l 17=0,3o="",3j=p.B.6a;C(l i=0;i<5l.v;i++){l 1z=5l[i];f(1z===u||1z.v===0){1O}3o+=3j(5k.22(17,1z.H-17),"6j")+3j(1z.1N,1z.12);17=1z.H+1z.v}3o+=3j(5k.22(17),"6j");q 3o},1B:h(1a,62){l aG=p.R,3v=p.1t,z,3d;c.1y={};c.z=u;c.28=u;c.I=u;c.2n=u;c.5o={};c.1j=p.B.5w("a5");3v.5F[c.1j]=c;f(1a===u){1a=""}f(3v.3w===u){3v.3w=p.B.5G()}c.1y=p.B.5H(p.61,62||{});f(c.T("6n")==U){c.1y.1u=c.1y.5z=M}c.z=z=c.18("39");c.28=c.18("39");c.28.Z="28";z.Z="6u";z.1j=c.1j;f(c.T("5E")){z.Z+=" 5D"}f(c.T("5z")==M){z.Z+=" a9"}z.Z+=" "+c.T("1b-1d");z.1g.aj=c.T("1W-1P","");c.5B=1a;c.I=p.B.6D(1a).E(/\\r/g," ");3d=c.T("1H-1P");c.I=c.T("85-6L")==U?p.B.6A(c.I,3d):p.B.72(c.I,3d);c.I=p.B.2z(c.I);f(c.T("1u")){c.2n=c.18("39");c.2n.Z="2n";c.2n.1K(p.1u.18(c));z.1K(c.2n)}f(c.T("5p")){z.1K(p.B.7q())}z.1K(c.28);c.26=c.7y(c.5s,c.I);c.7w();1a=c.7z(c.I,c.26);1a=c.7A(p.B.3O(1a));f(c.T("7R-6e")){1a=p.B.6d(1a)}c.28.1x=1a},8t:h(A){A=A.E(/^\\s+|\\s+$/g,"").E(/\\s+/g,"\\\\b|\\\\b");q"\\\\b"+A+"\\\\b"},8q:h(2A){c.3z={D:{3D:2A.D,12:"2q"},19:{3D:2A.19,12:"2q"},I:Q O("(?"+2A.D.1c+")"+"(?.*?)"+"(?<19>"+2A.19.1c+")","8y")}}};q p}()}f(!5A.1e){5A.Y.1e=h(73,3H){3H=3I.8D(3H||0,0);C(l i=3H;i|[5U]{[^}]+})[\\S\\s]?|\\((?=\\?(?!#|<[\\w$]+>)))+|(\\()(?:\\?(?:(#)[^)]*\\)|<([$\\w]+)>))?|\\\\(?:k<([\\w$]+)>|[5U]{([^}]+)})|(\\[\\^?)|([\\S\\s])/g,9z:/(?:[^$]+|\\$(?![1-9$&`\']|{[$\\w]+}))+|\\$(?:([1-9]\\d*|[$&`\'])|{([$\\w]+)})/g,3b:/^(?:\\s+|#.*)+/,5I:/^(?:[?*+]|{\\d+(?:,\\d*)?})/,6S:/&&\\[\\^?/g,6K:/]/g},5W=h(5x,5P,60){C(l i=60||0;i<5x.v;i++){f(5x[i]===5P){q i}}q-1},7t=/()??/.N("")[1]!==33,3t={};O=h(1f,21){f(1f 4k W){f(21!==33){32 7n("4d\'t 4b 8B 82 8m 7p W 8G 8A")}q 1f.3B()}l 21=21||"",78=21.1e("s")>-1,76=21.1e("x")>-1,5m=M,3n=[],15=[],X=1E.X,G,34,3s,3P,3q;X.L=0;1S(G=2o.N.2p(X,1f)){f(G[2]){f(!1E.5I.1X(1f.14(X.L))){15.K("(?:)")}}F{f(G[1]){3n.K(G[3]||u);f(G[3]){5m=U}15.K("(")}F{f(G[4]){3P=5W(3n,G[4]);15.K(3P>-1?"\\\\"+(3P+1)+(5r(1f.5y(X.L))?"":"(?:)"):G[0])}F{f(G[5]){15.K(3t.7g?3t.7g.5Q(G[5],G[0].5y(1)==="P"):G[0])}F{f(G[6]){f(1f.5y(X.L)==="]"){15.K(G[6]==="["?"(?!)":"[\\\\S\\\\s]");X.L++}F{34=O.7Y("&&"+1f.14(G.H),1E.6S,1E.6K,"",{8a:"\\\\"})[0];15.K(G[6]+34+"]");X.L+=34.v+1}}F{f(G[7]){f(78&&G[7]==="."){15.K("[\\\\S\\\\s]")}F{f(76&&1E.3b.1X(G[7])){3s=2o.N.2p(1E.3b,1f.14(X.L-1))[0].v;f(!1E.5I.1X(1f.14(X.L-1+3s))){15.K("(?:)")}X.L+=3s-1}F{15.K(G[7])}}}F{15.K(G[0])}}}}}}}3q=W(15.5n(""),2o.E.2p(21,/[aD]+/g,""));3q.1r={1c:1f,2m:5m?3n:u};q 3q};O.aH=h(1d,o){3t[1d]=o};W.Y.N=h(A){l 1i=2o.N.2p(c,A),1d,i,5K;f(1i){f(7t&&1i.v>1){5K=Q W("^"+c.1c+"$(?!\\\\s)",c.5J());2o.E.2p(1i[0],5K,h(){C(i=1;i<7S.v-2;i++){f(7S[i]===33){1i[i]=33}}})}f(c.1r&&c.1r.2m){C(i=1;i<1i.v;i++){1d=c.1r.2m[i-1];f(1d){1i[1d]=1i[i]}}}f(c.3K&&c.L>(1i.H+1i[0].v)){c.L--}}q 1i}})()}W.Y.5J=h(){q(c.3K?"g":"")+(c.aq?"i":"")+(c.6h?"m":"")+(c.3b?"x":"")+(c.aI?"y":"")};W.Y.3B=h(7E){l 5L=Q O(c.1c,(7E||"")+c.5J());f(c.1r){5L.1r={1c:c.1r.1c,2m:c.1r.2m?c.1r.2m.14(0):u}}q 5L};W.Y.2p=h(bG,A){q c.N(A)};W.Y.bH=h(bp,6I){q c.N(6I[0])};O.3W=h(3Z,3T){l 40="/"+3Z+"/"+(3T||"");q O.3W[40]||(O.3W[40]=Q O(3Z,3T))};O.3u=h(A){q A.E(/[-[\\]{}()*+?.\\\\^$|,#\\s]/g,"\\\\$&")};O.7Y=h(A,D,V,1k,31){l 31=31||{},2Z=31.8a,11=31.9X,1k=1k||"",4I=1k.1e("g")>-1,5S=1k.1e("i")>-1,7m=1k.1e("m")>-1,4E=1k.1e("y")>-1,1k=1k.E(/y/g,""),D=D 4k W?(D.3K?D:D.3B("g")):Q O(D,"g"+1k),V=V 4k W?(V.3K?V:V.3B("g")):Q O(V,"g"+1k),1F=[],2w=0,1l=0,1m=0,1p=0,1T,1Y,1s,1G,3p,53;f(2Z){f(2Z.v>1){32 at("4d\'t 4b ad ax 7p 3u 8b")}f(7m){32 7n("4d\'t 4b 3u 8b 82 aL aM 6h aN")}3p=O.3u(2Z);53=Q W("^(?:"+3p+"[\\\\S\\\\s]|(?:(?!"+D.1c+"|"+V.1c+")[^"+3p+"])+)+",5S?"i":"")}1S(U){D.L=V.L=1m+(2Z?(53.N(A.14(1m))||[""])[0].v:0);1s=D.N(A);1G=V.N(A);f(1s&&1G){f(1s.H<=1G.H){1G=u}F{1s=u}}f(1s||1G){1l=(1s||1G).H;1m=(1s?D:V).L}F{f(!2w){30}}f(4E&&!2w&&1l>1p){30}f(1s){f(!2w++){1T=1l;1Y=1m}}F{f(1G&&2w){f(!--2w){f(11){f(11[0]&&1T>1p){1F.K([11[0],A.14(1p,1T),1p,1T])}f(11[1]){1F.K([11[1],A.14(1T,1Y),1T,1Y])}f(11[2]){1F.K([11[2],A.14(1Y,1l),1Y,1l])}f(11[3]){1F.K([11[3],A.14(1l,1m),1l,1m])}}F{1F.K(A.14(1Y,1l))}1p=1m;f(!4I){30}}}F{D.L=V.L=0;32 ab("aa aY bz b1 bb")}}f(1l===1m){1m++}}f(4I&&!4E&&11&&11[0]&&A.v>1p){1F.K([11[0],A.14(1p),1p,A.v])}D.L=V.L=0;q 1F};',62,726,'||||||||||||this|||if||function||||var||||sh|return||||null|length||||div|str|utils|for|left|replace|else|_109|index|code|document|push|lastIndex|false|exec|XRegExp||new|config||getParam|true|_121|RegExp|part|prototype|className||vN|css|_c3|slice|_107||pos|create|right|_ed|class|source|name|indexOf|_101|style|window|_111|id|_122|_12c|_12d|strings|_ca|_12e|alert|_x|_131|vars|toolbar|_e0|createElement|innerHTML|params|_ec|_e5|highlight|_bd|_c6|lib|_12a|_132|tab|lt|doc|appendChild|obj|width|value|continue|size|span|nbsp|while|_12f|_3c|_8|font|test|_130|_57|_4b|_102|substr|_56|_91|min|matches|split|lines|_97|in|_b4|html|wnd|href|execute|text|_b7|height|http|attributes|_b1|captureNames|bar|_f8|call|script|_e1|_75|toString|_6e|_d7|_12b|gt|_5b|unindent|_f4|_b3|_62|_7a|body|_80|_51|case|SyntaxHighlighter|_5|_28|_40|_81|_88|_d4|concat|getMatches|line|_c9|brushes|m1|m2|_b5|_da|_a1|_124|break|_123|throw|undefined|cc|write|_7b|_7d|print|DIV|_32|extended|_25|_f2|_8e|printFrame|_4a|_7c|_6a|_ea|_5e|_5c|_65|_106|_e9|_133|_10d|_76|len|_100|escape|_f0|spaceWidth|_dc|fixForBlogger|htmlScript|_d5|addFlags|_22|regex|_3|offsetMatches|_2|_f6|Math|_af|global|url|_a6|_db|trim|_10c|_be|func|_bc|_11c|_73|_6b|cache|_a2|_c7|_11b|key|findBrush|_c0|_9c|_9d|_b9|_ab|_8c|_b6|_ad|eachLine|supply|_89|can|_a5|values|_ac|_82|_7e|removeChild|instanceof|gi|Match|_50|viewSource|pre|_1a|_19|_18|expandSource|_29|_2b|_2d|toolbarItemWidth|_2e|_2c|_2a|_17|_10|_7|_129|_4|gm|color|_126|_e|_f|_d|_9|_b|title|toolbarItemHeight|highlighterId|popup|top|_4c|_49|_48|_4f|HtmlScript|_5d|_59||win|focus|esc|close|_blank|_2f|_30|com|clipboardSwf|_27|swf|_24|contentWindow|link|_38|_35|_37|_6c|discoveredBrushes|_e6|_e7|_105|join|toolbarCommands|ruler|px|isNaN|regexList|_e2|content|margin|guid|_fb|charAt|gutter|Array|originalCode|String|collapsed|collapse|highlighters|measureSpace|merge|quantifier|getNativeFlags|r2|_116|_d0|_d2|xmlBrush|_fc|get|object|_127|version|pP|toBoolean|_fa|attachEvent|serif|_c1|_fd|defaults|_ee|_4e|_ce|_5a|process|copyToClipboard|event|_cf|decorate|brushNotHtmlScript|shockwave|processUrls|links|_78|Times|multiline|_ba|plain|_6d|family|_61|light|flash|center|commandName|align|_66|noBrush|syntaxhighlighter|rel|type|_3e|copyToClipboardConfirmation|stylesheet|processSmartTabs|help|2009|trimFirstAndLastLines|_3f|copyStyles|500px|0px|args|_6|classRight|tabs|message|match|_cc|clipboardData|_c8|_cd|classLeft|createButton|Highlighter|switch|executeCommand|_c5|_a|_47|location|_36|processTabs|_f5|alexgorbatchev|scrollbars|_104|aboutDialog|_103|screen|_79|regexLib|_a8|DTD|xhtml1|first|unicode|isMatchNested|parseInt|_d1|_a7|_a0|_128|TypeError|_dd|one|createRuler|defaultAdd|_a3|_ff|toArray|getElementsByTagName|removeNestedMatches|parentNode|findMatches|processMatches|createDisplayLines|_b8|clipboard|addEvent|_115|debug|_aa|parseParams|tagName|brush|matchesSortCallback|_d6|_b0|_1e|_de|padNumber|block|auto|arguments|_85|_84|items|_16|_99|matchRecursive|_12|navigator|_14|when|userAgent|head|smart|_15|_83|_90|_13|escapeChar|character|org|_e4|www|w3|_93|bloggerMode|_e3|insertSpaces|try|catch|constructing|resizable|_1f|onclick|forHtmlScript|aspScriptTags|scriptScriptTags|getKeywords|menubar|400|_1c|_21|sgi|item|another|flags|_1b|max|_20|750|from|string|typeof|Helvetica|xmlns|1999|xhtml|dtd|transitional|Transitional|EN|TR|meta|equiv|About|Georgia|New|utf|charset|Content|Type|XHTML|W3C|The|is|your|to|copy|expand|view|now|Can|option|DOCTYPE|PUBLIC|configured|wasn|find|Brush|Roman|background|Copyright|2004|Alex|highlighter|syntax|decoration|none|JavaScript|Gorbatchev|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|multiLineSingleQuotedString|doubleQuotedString|replaceVar|singleLineCComments|singleLinePerlComments|0099FF|target|Geneva|Arial|_26|3em|1em|fff|000|sans|xx|287|February|06|4em|bottom|large|75em|phpScriptTags|_3b|1000000|valueNames|random|all|round|replaceChild|open|addEventListener|70em|highlighter_|on|30em|protocol|nogutter|subject|Error|shCore|more|load|about|_42|500|250|fontSize|_44|_43|aliases|textarea|spaces|number|ignoreCase|_8a|offsetWidth|SyntaxError|highlighted|_a4|alt|than|1000|_98|getPropertyValue|getComputedStyle|middot|sx|150|sort|_ef|addPlugin|sticky|getElementById|opera|using|the|flag|Xml|toLowerCase|96b8|444553540000|11cf|ae6d|d27cdb6e|lastIndexOf|codebase|pub|data|macromedia|download|unbalanced|clsid|classid|application|allowScriptAccess|_clipboard|param|file|always|wmode|delimiters|msie|menu|flashVars|transparent|swflash|cabs|printSource|_39|error|ok|cab|_bf|_3a|_119|absolute||printing|position|cssText|IFRAME|amp|setData|command|contains|_c4|embed|src|movie|_33|_34|_117|apply'.split('|'),0,{}))