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