using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace ASPNetPortal {

    public abstract class DesktopPortalBanner : System.Web.UI.UserControl {
        protected System.Web.UI.WebControls.Label WelcomeMessage;
        protected System.Web.UI.WebControls.Label siteName;
        protected System.Web.UI.WebControls.DataList tabs;


        public int          tabIndex;
        public bool         ShowTabs = true;
        protected String    LogoffLink = "";

        private void Page_Load(object sender, System.EventArgs e) {

            // Obtain PortalSettings from Current Context
            PortalSettings portalSettings = (PortalSettings) HttpContext.Current.Items["PortalSettings"];

            // Dynamically Populate the Portal Site Name
            siteName.Text = portalSettings.PortalName;

            // If user logged in, customize welcome message
            if (Request.IsAuthenticated == true) {
        
                WelcomeMessage.Text = "Welcome " + Context.User.Identity.Name + "! <" + "span class=Accent" + ">|<" + "/span" + ">";

                // if authentication mode is Cookie, provide a logoff link
                if (Context.User.Identity.AuthenticationType == "Forms") {
                    LogoffLink = "<" + "span class=\"Accent\">|\n" + "<" + "a href=" + Request.ApplicationPath + "/Admin/Logoff.aspx class=SiteLink> Logoff" + "<" + "/a>";
                }
            }

            // Dynamically render portal tab strip
            if (ShowTabs == true) {

                tabIndex = portalSettings.ActiveTab.TabIndex;

                // Build list of tabs to be shown to user                                   
                ArrayList authorizedTabs = new ArrayList();
                int addedTabs = 0;

                for (int i=0; i < portalSettings.DesktopTabs.Count; i++) {
            
                    TabStripDetails tab = (TabStripDetails)portalSettings.DesktopTabs[i];

                    if (PortalSecurity.IsInRoles(tab.AuthorizedRoles)) { 
                        authorizedTabs.Add(tab);
                    }

                    if (addedTabs == tabIndex) {
                        tabs.SelectedIndex = addedTabs;
                    }

                    addedTabs++;
                }          

                // Populate Tab List at Top of the Page with authorized tabs
                tabs.DataSource = authorizedTabs;
                tabs.DataBind();
            }
        }
        
        public DesktopPortalBanner() {
            this.Init += new System.EventHandler(Page_Init);
        }

        private void Page_Init(object sender, EventArgs e) {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
        }

        #region Web Form Designer generated code
        ///        Required method for Designer support - do not modify
        ///        the contents of this method with the code editor.
        /// 
        private void InitializeComponent() {
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}