using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ExWeb
{
    public partial class Mod_Inline : Mod
    {
        protected static string[][] Extensions = new string[][]
        {
            new string[]{"as3","as3","shBrushAS3.js"},
            new string[]{"shell","shell","shBrushBash.js"},
            new string[]{"cf","cf","shBrushColdFusion.js"},
            new string[]{"c","c","shBrushCpp"},
            new string[]{"cpp","c","shBrushCpp"},
            new string[]{"cs","csharp","shBrushCSharp"},
            new string[]{"css","css","shBrushCss"},
            new string[]{"scss","css","shBrushCss"},
            new string[]{"delphi","delphi","shBrushDelphi.js"},
            new string[]{"pas","delphi","shBrushDelphi.js"},
            new string[]{"diff","diff","shBrushDiff.js"},
            new string[]{"erl","erl","shBrushErlang.js"},
            new string[]{"groovy","groovy","shBrushGroovy.js"},
            new string[]{"java","java","shBrushJava"},
            new string[]{"jfx","jfx","shBrushJavaFX.js"},
            new string[]{"js","js","shBrushJScript"},
            new string[]{"pl","pl","shBrushPerl"},
            new string[]{"perl","perl","shBrushPerl.js"},
            new string[]{"php","php","shBrushPhp"},
            new string[]{"bat","ps","shBrushPowerShell"},
            new string[]{"ps","ps","shBrushPowerShell"},
            new string[]{"ps1","ps","shBrushPowerShell"},
            new string[]{"py","py","shBrushPython"},
            new string[]{"ruby","ruby","shBrushRuby.js"},
            new string[]{"scala","scala","shBrushScala.js"},
            new string[]{"sql","sql","shBrushSql"},
            new string[]{"txt","text","shBrushPlain"},
            new string[]{"text","text","shBrushPlain"},
            new string[]{"bat","text","shBrushPlain"},
            new string[]{"ini","text","shBrushPlain"},
            new string[]{"log","text","shBrushPlain"},
            new string[]{"vb","vb","shBrushVb"},
            new string[]{"vbs","vb","shBrushVb"},
            new string[]{"asp","xml","shBrushXml"},
            new string[]{"aspx","xml","shBrushXml"},
            new string[]{"ascx","xml","shBrushXml"},
            new string[]{"asax","xml","shBrushXml"},
            new string[]{"config","xml","shBrushXml"},
            new string[]{"csproj","xml","shBrushXml"},
            new string[]{"dwt","xml","shBrushXml"},
            new string[]{"htm","xml","shBrushXml"},
            new string[]{"html","xml","shBrushXml"},
            new string[]{"master","xml","shBrushXml"},
            new string[]{"user","xml","shBrushXml"},
            new string[]{"xml","xml","shBrushXml"},
            new string[]{"xsl","xml","shBrushXml"},
            new string[]{"xslt","xml","shBrushXml"},
        };
        protected int GetBrushIndex(string Extension)
        {
            if (Extension.StartsWith(".")) Extension = Extension.Substring(1);
            Extension = Extension.ToLower();
            for (int i = 0; i < Extensions.Length; i++)
            {
                if (Extensions[i][0] == Extension)
                {
                    return i;
                }
            }
            return -1;
        }
        protected string GetPreformated(string Code)
        {
            return "\r\n<pre>\r\n" + Untag(Code) + "\r\n</pre>\r\n";
        }
        protected string GetPreformated(string Code, string BrushCode)
        {
            return "\r\n<pre " + "class='brush: " + BrushCode + "'>\r\n" + Untag(Code) + "\r\n</pre>\r\n";
        }
        protected string GetPreformatedBrush(string Code, string Extension)
        {
            string s = "";
            int i = GetBrushIndex(Extension);
            // if (Extensions[i][3] == "0") // Brush noch nicht geladen
            // {
            //     s = "\r\n<script src='" + UrlJsHighlight + "scripts/";
            //     s += Extensions[i][2];
            //     s += ".js' type=\"text/javascript\"></" + "script>";
            // }
            s += GetPreformated(Code, Extensions[i][1]);
            // if (Extensions[i][3] == "0") // Brush noch nicht geladen
           //  {
            //     Extensions[i][3] = "1";
            // }
            return s;
        }
        protected string LoadShScripts()
        {
            string ShSourceSelected = GetConfigString("ShSourceSelected");
            string ShThemeSelected = GetConfigString("ShThemeSelected");
            string s =
                "<link href='" + ShSourceSelected + "styles/shCoreDefault.css' rel='stylesheet' type='text/css' />"
                + "\r\n<link href='" + ShSourceSelected + "styles/shTheme" + ShThemeSelected + ".css' rel='stylesheet' type='text/css' />"
                + "\r\n<script src='" + ShSourceSelected + "scripts/shCore.js' type='text/javascript'></" + "script>"
                + "\r\n<script src='" + ShSourceSelected + "scripts/shAutoloader.js' type='text/javascript'></" + "script>"
                + "\r\n<script type='text/javascript'>"
                + "\r\n  SyntaxHighlighter.autoloader("
                + "\r\n 'as3	/sh/scripts/shBrushAS3.js',"
                + "\r\n 'shell	/sh/scripts/shBrushBash.js',"
                + "\r\n 'cf	    /sh/scripts/shBrushColdFusion.js',"
                + "\r\n 'csharp	/sh/scripts/shBrushCSharp.js',"
                + "\r\n 'cpp	/sh/scripts/shBrushCpp.js',"
                + "\r\n 'css	/sh/scripts/shBrushCss.js',"
                + "\r\n 'delphi	/sh/scripts/shBrushDelphi.js',"
                + "\r\n 'diff	/sh/scripts/shBrushDiff.js',"
                + "\r\n 'erl	/sh/scripts/shBrushErlang.js',"
                + "\r\n 'groovy	/sh/scripts/shBrushGroovy.js',"
                + "\r\n 'js	    /sh/scripts/shBrushJScript.js',"
                + "\r\n 'java	/sh/scripts/shBrushJava.js',"
                + "\r\n 'jfx	/sh/scripts/shBrushJavaFX.js',"
                + "\r\n 'perl	/sh/scripts/shBrushPerl.js',"
                + "\r\n 'php	/sh/scripts/shBrushPhp.js',"
                + "\r\n 'text	/sh/scripts/shBrushPlain.js',"
                + "\r\n 'ps	    /sh/scripts/shBrushPowerShell.js',"
                + "\r\n 'py	    /sh/scripts/shBrushPython.js',"
                + "\r\n 'ruby	/sh/scripts/shBrushRuby.js',"
                + "\r\n 'scala	/sh/scripts/shBrushScala.js',"
                + "\r\n 'sql	/sh/scripts/shBrushSql.js',"
                + "\r\n 'vb	    /sh/scripts/shBrushVb.js',"
                + "\r\n 'xml	/sh/scripts/shBrushXml.js'"
                + "\r\n  );"
                + "\r\n  SyntaxHighlighter.all();"
                + "\r\n</script>";
            return s;
        }
    }
}