aboutsummaryrefslogtreecommitdiff
path: root/upstream/clipper-6.4.2/Documentation/Scripts/SyntaxHighlighter/src/shAutoloader.js
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/clipper-6.4.2/Documentation/Scripts/SyntaxHighlighter/src/shAutoloader.js')
-rw-r--r--upstream/clipper-6.4.2/Documentation/Scripts/SyntaxHighlighter/src/shAutoloader.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/upstream/clipper-6.4.2/Documentation/Scripts/SyntaxHighlighter/src/shAutoloader.js b/upstream/clipper-6.4.2/Documentation/Scripts/SyntaxHighlighter/src/shAutoloader.js
new file mode 100644
index 0000000..3a95449
--- /dev/null
+++ b/upstream/clipper-6.4.2/Documentation/Scripts/SyntaxHighlighter/src/shAutoloader.js
@@ -0,0 +1,130 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+(function() {
+
+var sh = SyntaxHighlighter;
+
+/**
+ * Provides functionality to dynamically load only the brushes that a needed to render the current page.
+ *
+ * There are two syntaxes that autoload understands. For example:
+ *
+ * SyntaxHighlighter.autoloader(
+ * [ 'applescript', 'Scripts/shBrushAppleScript.js' ],
+ * [ 'actionscript3', 'as3', 'Scripts/shBrushAS3.js' ]
+ * );
+ *
+ * or a more easily comprehendable one:
+ *
+ * SyntaxHighlighter.autoloader(
+ * 'applescript Scripts/shBrushAppleScript.js',
+ * 'actionscript3 as3 Scripts/shBrushAS3.js'
+ * );
+ */
+sh.autoloader = function()
+{
+ var list = arguments,
+ elements = sh.findElements(),
+ brushes = {},
+ scripts = {},
+ all = SyntaxHighlighter.all,
+ allCalled = false,
+ allParams = null,
+ i
+ ;
+
+ SyntaxHighlighter.all = function(params)
+ {
+ allParams = params;
+ allCalled = true;
+ };
+
+ function addBrush(aliases, url)
+ {
+ for (var i = 0; i < aliases.length; i++)
+ brushes[aliases[i]] = url;
+ };
+
+ function getAliases(item)
+ {
+ return item.pop
+ ? item
+ : item.split(/\s+/)
+ ;
+ }
+
+ // create table of aliases and script urls
+ for (i = 0; i < list.length; i++)
+ {
+ var aliases = getAliases(list[i]),
+ url = aliases.pop()
+ ;
+
+ addBrush(aliases, url);
+ }
+
+ // dynamically add <script /> tags to the document body
+ for (i = 0; i < elements.length; i++)
+ {
+ var url = brushes[elements[i].params.brush];
+
+ if (!url)
+ continue;
+
+ scripts[url] = false;
+ loadScript(url);
+ }
+
+ function loadScript(url)
+ {
+ var script = document.createElement('script'),
+ done = false
+ ;
+
+ script.src = url;
+ script.type = 'text/javascript';
+ script.language = 'javascript';
+ script.onload = script.onreadystatechange = function()
+ {
+ if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete'))
+ {
+ done = true;
+ scripts[url] = true;
+ checkAll();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ script.parentNode.removeChild(script);
+ }
+ };
+
+ // sync way of adding script tags to the page
+ document.body.appendChild(script);
+ };
+
+ function checkAll()
+ {
+ for(var url in scripts)
+ if (scripts[url] == false)
+ return;
+
+ if (allCalled)
+ SyntaxHighlighter.highlight(allParams);
+ };
+};
+
+})();