
// Incredibly basic code formatting

function code_formatting()
{
	var codeTags = document.getElementsByTagName('div');
	
	for (i = 0; i < codeTags.length; ++i)
	{
		if (codeTags[i].className.indexOf('code_highlight') == -1)	
		{
			continue;
		}
		
		var str = tagsToLowerCase(codeTags[i].innerHTML);
		
		str = str.replace(/^(\r\n|\r|\n)+/g, '').replace(/(\r\n|\r|\n)+$/g, '');

		str = str.replace(/\</g, "&lt;");
		
		str = str.replace(/(\&lt;[^\>]+\>)/gi, "<span class='html_tag'>$1</span>");
		
		str = str.replace(/(\{\/{0,1}exp[^\}]+\})/g,	"<span class='ee_tag'>$1</span>");
		str = str.replace(/(\/{0,1}exp[:a-z_]+)/g,		"<span class='ee_tag_start'>$1</span>");
		
		str = str.replace(/(\{\/{0,1}if[^\}]*\})/g,		"<span class='ee_tag'>$1</span>");
		str = str.replace(/(\/{0,1}if[:a-z_]*)/g,		"<span class='ee_tag_start'>$1</span>");
		
		str = str.replace(/\t/g, "&#160;&#160;&#160;&#160;");
		str = str.replace(/(\r\n|\r|\n)/g, "&#160;<br />");
		
		codeTags[i].innerHTML = str;
	}
}

function tagsToLowerCase(html)
{
	html = html.replace(/([a-z])s*(=)s*("|')/gi, '$1$2$3');

	if (parts = html.match(/(<\/?[a-z][a-z0-9]*| [a-z]+=)/gi))
	{
		for(var i = 0; i < parts.length; i++)
		{
			var part = parts[i];
			html = html.replace(new RegExp(part, 'g'), part.toLowerCase());
		}
	}
	
	return html;
}