/*jslint browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true,
  plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true */
/*global $, document, mwf, SyntaxHighlighter */

mwf.initSyntaxHighlighter = function () {
	var brushFiles = {
			as3: 'AS3', bash: 'Bash', coldfusion: 'ColdFusion', cpp: 'Cpp', csharp: 'CSharp',
			css: 'Css', delphi: 'Delphi', diff: 'Diff', erlang: 'Erlang', groovy: 'Groovy',
			jscript: 'JScript', java: 'Java', javafx: 'JavaFX', perl: 'Perl', php: 'Php',
			plain: 'Plain', powershell: 'PowerShell', python: 'Python', ruby: 'Ruby', scala: 'Scala',
			sql: 'Sql', vb: 'Vb', xml: 'Xml' },
		brushAliases = {
			sh: 'bash', c: 'cpp', h: 'cpp', cs: 'csharp', js: 'jscript', pl: 'perl', text: 'plain',
			ps: 'powershell', py: 'python', rb: 'ruby', html: 'xml', xhtml: 'xml' },
		brushStatus = {},
		path = mwf.p.cfg_dataPath + '/syntax/',
		hilite = false;
	$('pre').each(function () {
		var brush,
			text = this.firstChild.data,
			match = text.match(/^(\[hl=([a-z]+)\])/);
		if (!match) { return; }
		brush = match[2];
		if (brushAliases[brush]) { brush = brushAliases[brush]; }
		if (!brushFiles[brush]) { return; }
		this.className += " brush: " + brush;
		this.firstChild.data = text.substr(match[1].length);
		brushStatus[brush] = 'used';
		hilite = true;
	});
	if (!hilite) { return; }
	$('head').append('<link rel="stylesheet" href="' + path + 'styles/shCore.css">');
	$('head').append('<link rel="stylesheet" href="' + path + 'styles/shThemeDefault.css">');
	$.getScript(path + 'scripts/shCore.js', function () {
		$.each(brushStatus, function (brush) {
			$.getScript(path + 'scripts/shBrush' + brushFiles[brush] + '.js', function () {
				brushStatus[brush] = 'loaded';
				for (var b in brushStatus) { if (brushStatus[b] === 'used') { return; } }
				SyntaxHighlighter.defaults.light = true;
				SyntaxHighlighter.defaults['wrap-lines'] = false;
				SyntaxHighlighter.defaults['auto-links'] = false;
				SyntaxHighlighter.highlight();
			});
		});
	});
};

if (mwf.p.env_script.match(/^(?:topic_show|forum_overview|forum_search|post_add|topic_add)$/)) {
	$(document).ready(mwf.initSyntaxHighlighter);
}
