OSDN Git Service

add comic2html_0.1.html
[pettanr/clientJs.git] / 0.4.x / lib / syntaxhighlighter / src / shAutoloader.js
diff --git a/0.4.x/lib/syntaxhighlighter/src/shAutoloader.js b/0.4.x/lib/syntaxhighlighter/src/shAutoloader.js
new file mode 100644 (file)
index 0000000..3a95449
--- /dev/null
@@ -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);
+       };
+};
+
+})();