using System;
using System.Collections.Generic;
using System.Net.Mail;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ExWeb
{
    public partial class Mod_Links : Mod
    {
        public static string Help_Description =
            "Fasst alle Links auf einer Seite zusammen"
            + "Voraussetzung: die Links müssen als ASPX-Steuerelement kodiert sein:"
            + "<asp:Hyperlink>...</asp:Hyperlink>";

        public static string[][] Help_Attributes = new string[][]
        {
            // Attribut, Wert, DefaultWert, Optional, Hilfe, Beispiel
            new string[] {"-", "-", "-","-","-", "-" },
        };
        SortedList<string, string> list = new SortedList<string, string>();
        void CollectControls(ControlCollection c)
        {
            // Response.Write("<br/>" + c.Count.ToString() + "<br/>");
            for (int i = 0; i < c.Count; i++)
            {
                // Response.Write(i + ":" + c[i].GetType().ToString() + "<br/>");
                switch (c[i].GetType().ToString())
                {
                    case "System.Web.UI.WebControls.HyperLink":
                        HyperLink l = (HyperLink)c[i];
                        string Url = l.NavigateUrl;
                        string Text = l.Text;
                        if (!list.ContainsKey(Url))
                            list.Add(Url, Text);
                        break;
                }
                if (c[i].HasControls()) CollectControls(c[i].Controls);
            }
        }
        void ShowControls()
        {
            for (int i = 0; i < list.Count; i++)
            {
                HyperLink hl = new HyperLink();
                hl.CssClass = "externallink";
                string Url = list.Keys[i];
                string Text = list.Values[i];
                hl.NavigateUrl = list.Keys[i];
                if (PlaceHolder_Links.Controls.Count > 0)
                    PlaceHolder_Links.Controls.Add(new LiteralControl("<br/>"));
                PlaceHolder_Links.Controls.Add(hl);
                if (Text == "") Text = Url;
                PlaceHolder_Links.Controls.Add(new LiteralControl(" "+Url));
            }
        }
        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            SetPanelLayout(this.Controls);
        }
        protected new void Page_Load(object sender, EventArgs e)
        {
            Page.LoadComplete += new EventHandler(Page_LoadComplete);

            CollectControls(this.Page.Controls);
            ShowControls();
        }
    }
}