if (window.attachEvent) {
    window.attachEvent("onload", CodeHighlighter);
} else if (window.addEventListener) {
    window.addEventListener("load", CodeHighlighter, false);
}

function CodeHighlighter() {
    var pres = document.getElementsByTagName("pre");
    for (i=0; i<pres.length; i++) {
        if (pres[i].className == "Code") {
            var code = pres[i].childNodes[0].data;
            code = code.replace(/(<)/gm, "&lt;");
            code = code.replace(/(>)/gm, "&gt;");
            code = code.replace(/(\babstract\b|\bas\b|\bbase\b|\bbool\b|\bbreak\b|\bbyte\b|\bcase\b|\bcatch\b|\bchar\b|\bchecked\b|\bclass\b|\bconst\b|\bcontinue\b|\bdecimal\b|\bdefault\b|\bdelegate\b|\bdo\b|\bdouble\b|\belse\b|\benum\b|\bevent\b|\bexplicit\b|\bextern\b|\bfalse\b|\bfinally\b|\bfixed\b|\bfloat\b|\bfor\b|\bforeach\b|\bget\b|\bgoto\b|\bif\b|\bimplicit\b|\bin\b|\bint\b|\binterface\b|\binternal\b|\bis\b|\block\b|\blong\b|\bnamespace\b|\bnew\b|\bnull\b|\bobject\b|\boperator\b|\bout\b|\boverride\b|\bparams\b|\bprivate\b|\bprotected\b|\bpublic\b|\breadonly\b|\bref\b|\breturn\b|\bsbyte\b|\bsealed\b|\bset\b|\bshort\b|\bsizeof\b|\bstackalloc\b|\bstatic\b|\bstring\b|\bstruct\b|\bswitch\b|\bthis\b|\bthrow\b|\btrue\b|\btry\b|\btypeof\b|\buint\b|\bulong\b|\bunchecked\b|\bunsafe\b|\bushort\b|\busing\b|\bvirtual\b|\bvoid\b|\bwhile\b)/gm, "<span class='CodeKeyword'>$1</span>");
            code = code.replace(/(^\s*?#.*?\s)/gm, "<span class='CodeDirective'>$1</span>");
            code = code.replace(/(".*?")/gm, "<span class='CodeString'>$1</span>");
            code = code.replace(/(\/\*[\s\S]*?\*\/)/gm, "<span class='CodeComment'>$1</span>");
            code = code.replace(/(\/\/.*?$)/gm, "<span class='CodeComment'>$1</span>");
            code = code.replace(/(\/\/\/.*?$)/gm, "<span class='CodeDocument'>$1</span>");
            if (window.navigator.appName.charAt(0) == "M") {
                pres[i].innerHTML = "<pre>" + code + "</pre>";
            } else {
                pres[i].innerHTML = code;
            }            
        }
    }
}

