|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /**
- * 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);
- };
- };
-
- })();
|