} // end lbtnAddGroupMembers_Click

    /// <summary>
    /// Updates the changes on the group in Active Directory
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void lbtnUpdateGroupMembers_Click(object sender, EventArgs e)
    {
        var    memberDNs     = new List <string>();
        string objContentMsg = "";
        string objContentMsgGrp;
        int    retval;
        int    retvalGrp;
        string objsearchfilter = "user";
        var    adrw            = new ADrwInfo();
        var    adMemberIn      = new ADobjInfo();

        for (int i = 0; i < lstGroupMembers.Items.Count; i++)
        {
            adMemberIn.ADUserID = lstGroupMembers.Items[i].Value.ToString();
            var adMemberOut = adrw.RetObjValues(ref objContentMsg, out retval, objsearchfilter, adMemberIn);

            if (!String.IsNullOrEmpty(adMemberOut.ADdistinguishedName))
            {
                memberDNs.Add(adMemberOut.ADdistinguishedName);
            }
        }

        string adGrpUpdIn = ViewState["agGrpSelected"].ToString();

        adrw.AddUsersToGroup(out objContentMsgGrp, out retvalGrp, adGrpUpdIn, memberDNs);

        string appTextError = "", appLanguage = "";
        var    appText       = new System.Collections.Generic.Dictionary <string, string>();
        bool   foundLangFile = WbVarious.GetAppText(ref appText, ref appTextError, appLanguage);

        string errorExceptionTxt, operationFinishedtxt;
        string feedback = "";

        appText.TryGetValue("ErrorException", out errorExceptionTxt);
        appText.TryGetValue("OperationFinished", out operationFinishedtxt);

        if (retvalGrp != 0)
        {
            feedback = errorExceptionTxt;
            lblAppFeedback.Attributes.Remove("class");
            lblAppFeedback.Attributes.Add("class", "labelfeedbad");
        }
        else
        {
            feedback = operationFinishedtxt;
            lblAppFeedback.Attributes.Remove("class");
            lblAppFeedback.Attributes.Add("class", "labelfeedgood");
        }

        lblAppFeedback.Text = feedback;

        Hide_Buttons();

        if (WbGetParams.getBValue("WriteUsageLog"))
        {
            Update_UsageLog();
        }
    } // end lbtnUpdateGroupMembers_Click
    protected void Page_Load(object sender, EventArgs e)
    {
        string appLanguage   = Request.UserLanguages[0].Substring(0, 2).ToUpper();
        var    appText       = new System.Collections.Generic.Dictionary <string, string>();
        string appTextError  = "";
        bool   foundLangFile = WbVarious.GetAppText(ref appText, ref appTextError, appLanguage);

        string mailSendTxt, reloadPageTxt;

        appText.TryGetValue("MailSend", out mailSendTxt);
        appText.TryGetValue("ReloadPage", out reloadPageTxt);

        lbtnEmail.Attributes.Add("title", mailSendTxt);
        lbtnReload.Attributes.Add("title", reloadPageTxt);
    } // end Page_Load()
    } // end lbtnReload_Click(object sender, ..)

    /// <summary>
    /// Collects information from the GUI which will send out via mail.
    /// Prepares the e-mail text.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void lbtnEmail_Click(object sender, EventArgs e)
    {
        string appLanguage   = Request.UserLanguages[0].Substring(0, 2).ToUpper();
        var    appText       = new System.Collections.Generic.Dictionary <string, string>();
        string appTextError  = "";
        bool   foundLangFile = WbVarious.GetAppText(ref appText, ref appTextError, appLanguage);
        var    mailChoice    = mailType.UserPage;

        string greetingTxt, mailBodyPartATxt, mailBodyPartBTxt, mailBodyEndTxt, groupMemberTxt;

        appText.TryGetValue("Greeting", out greetingTxt);
        appText.TryGetValue("MailBodyPartA", out mailBodyPartATxt);
        appText.TryGetValue("MailBodyPartB", out mailBodyPartBTxt);
        appText.TryGetValue("MailBodyEnd", out mailBodyEndTxt);
        appText.TryGetValue("GroupMembers", out groupMemberTxt);

        string rcpaddr = GetNotifyMailRcpAddr();

        var    sb = new System.Text.StringBuilder();
        string adGoupName = "", authUser = "", adGroupNotes = "";

        MasterPage         master = Page.Master;
        ContentPlaceHolder mpContentPlaceHolder;
        ListBox            mpListBox;
        Label        mpLabelUsr, mpLabelGrpNotes;
        DropDownList mpAuthUsrRWGroups;
        Label        mLabelcontentTbl;
        string       mLabelcontentTblText = "";

        mpContentPlaceHolder = (ContentPlaceHolder)master.FindControl("cpMainContent");
        if (mpContentPlaceHolder != null)
        {
            mpListBox         = (ListBox)mpContentPlaceHolder.FindControl("lstGroupMembers");
            mpLabelUsr        = (Label)mpContentPlaceHolder.FindControl("lblExistUsrFullName");
            mpLabelGrpNotes   = (Label)mpContentPlaceHolder.FindControl("lblADGroupsNotes");
            mpAuthUsrRWGroups = (DropDownList)mpContentPlaceHolder.FindControl("drpdAuthUsrRWGroups");

            mLabelcontentTbl = (Label)mpContentPlaceHolder.FindControl("lblcontentTbl");

            if (mLabelcontentTbl != null)
            {
                mailChoice           = mailType.InfoPage;
                mLabelcontentTblText = mLabelcontentTbl.Text;
            }

            if (mpListBox != null)
            {
                for (int i = 0; i < mpListBox.Items.Count; i++)
                {
                    sb.Append(mpListBox.Items[i].ToString()).Append(';');
                }
            }

            if (mpLabelUsr != null)
            {
                authUser = mpLabelUsr.Text;
            }

            if (mpLabelGrpNotes != null)
            {
                adGroupNotes = mpLabelGrpNotes.Text;
            }

            if (mpAuthUsrRWGroups != null)
            {
                if (mpAuthUsrRWGroups.SelectedValue.Contains(','))
                {
                    string[] tmp   = mpAuthUsrRWGroups.SelectedValue.Split(',');
                    string   sname = System.Text.RegularExpressions.Regex.Replace(tmp[0], "cn=", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                    adGoupName = sname;
                }
            }
        }

        string groupMemberList = sb.ToString().TrimEnd(';');
        string mailText        = "";

        if (mailChoice == mailType.UserPage)
        {
            mailText = "<p>" + greetingTxt + ' ' + authUser +
                       "<br /><br />" + mailBodyPartATxt + " <span class=\"othercolor\"> " + adGoupName + "</span>" + ':' +
                       "<br />" + groupMemberTxt + " <span class=\"othercolor\"> " + groupMemberList + "</span>" + '.' +
                       "<br />" + mailBodyPartBTxt + " <span class=\"othercolor\"> " + adGroupNotes + "</span>" + '.' +
                       "<br /><br />" + mailBodyEndTxt + "</p>";
        }

        if (mailChoice == mailType.InfoPage)
        {
            mailText = "<p>" +
                       "<br /><br />" + "<table class=\"tableabout\">" +
                       "<tr><th>Group name:</th><th>ManagedBy</th>" +
                       "</tr>" + mLabelcontentTblText + "</table> </p>";
        }

        SendNotificationMail(rcpaddr, mailText);
    } // end lbtnEmail_Click(object sender, ...)
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string appLanguage = Request.UserLanguages[0].Substring(0, 2).ToUpper();

            var    appText      = new System.Collections.Generic.Dictionary <string, string>();
            string appTextError = "";

            bool foundLangFile = WbVarious.GetAppText(ref appText, ref appTextError, appLanguage);

            #region Form initializing
            string greetTxt, selectGroupTxt, groupMembersTxt, groupNotesTxt, memberDeleteTxt, memberAddTxt, saveChangesTxt;
            string errorNotAuthTxt, errorNoGroupsMatchesTxt, errorNoGroupsFileTxt, memberSearchTxt, finishHandlingTxt;
            string selectGroupHeaderTxt, memberHeaderTxt, introTxt;

            appText.TryGetValue("Greeting", out greetTxt);
            appText.TryGetValue("Intro", out introTxt);
            appText.TryGetValue("SelectedGroup", out selectGroupTxt);
            appText.TryGetValue("SelectGroupHeader", out selectGroupHeaderTxt);
            appText.TryGetValue("GroupMembers", out groupMembersTxt);
            appText.TryGetValue("GroupNotes", out groupNotesTxt);
            appText.TryGetValue("MemberHeader", out memberHeaderTxt);
            appText.TryGetValue("MemberDelete", out memberDeleteTxt);
            appText.TryGetValue("MemberAdd", out memberAddTxt);
            appText.TryGetValue("MemberSearch", out memberSearchTxt);
            appText.TryGetValue("SaveChanges", out saveChangesTxt);
            appText.TryGetValue("ErrorNotAuth", out errorNotAuthTxt);
            appText.TryGetValue("ErrorNoGroupsMatches", out errorNoGroupsMatchesTxt);
            appText.TryGetValue("ErrorNoGroupsFile", out errorNoGroupsFileTxt);
            appText.TryGetValue("FinishHandling", out finishHandlingTxt);

            lblGroupNotesTxt.Text        = groupNotesTxt;
            lblGreetingTxt.Text          = greetTxt;
            lblIntroTxt.Text             = introTxt;
            lblSelectGroupHeaderTxt.Text = "1. " + selectGroupHeaderTxt;
            lblGroupMembersTxt.Text      = groupMembersTxt;
            lblSelectedGroupTxt.Text     = selectGroupTxt;
            lblMemberHeaderTxt.Text      = "2. " + memberHeaderTxt;
            lbtnAddGroupMembers.Text     = "&rsaquo;&rsaquo;&nbsp;" + memberAddTxt;
            lbtnRemoveGroupMembers.Text  = "&rsaquo;&rsaquo;&nbsp;" + memberDeleteTxt;
            lbtnUpdateGroupMembers.Text  = "&rsaquo;&rsaquo;&nbsp;" + saveChangesTxt;
            lblMemberSearchTxt.Text      = memberSearchTxt;
            lblFinishHandlingTxt.Text    = "3. " + finishHandlingTxt;
            lblAppFeedback.Text          = "";
            #endregion Form initializing

            string authUsr = Request.LogonUserIdentity.Name;

            bool hasError = false;

            var authUsrMemberOf = new System.Collections.Generic.List <string>();
            var aDGroupsStatic  = new System.Collections.Generic.Dictionary <string, string>();

            string authUsrfullName = "";

            bool authUsrExist  = AuthUsr_Load(authUsr, ref authUsrMemberOf, ref authUsrfullName);
            bool aDGroupsExist = ADGroups_Load(ref aDGroupsStatic);

            if (authUsrExist)
            {
                lblExistUsrFullName.Text = authUsrfullName + ',';
                if (aDGroupsExist)
                {
                    List <string> groupMatches = Match_Groups(authUsrMemberOf, aDGroupsStatic);
                    if (groupMatches.Count > 0)
                    {
                        GroupMatches_Display(groupMatches);
                        GroupMembers_Display();
                    }
                    else
                    {
                        lblAppFeedback.Text = errorNoGroupsMatchesTxt;
                        hasError            = true;
                    }
                }
                else
                {
                    lblAppFeedback.Text = errorNoGroupsFileTxt;
                    hasError            = true;
                } // end if(aDGroupExist)
            }
            else
            {
                lblAppFeedback.Text = errorNotAuthTxt;
                hasError            = true;
            } // end if (authUsrExist)

            if (hasError)
            {
                Hide_Buttons();
                lblAppFeedback.Attributes.Remove("class");
                lblAppFeedback.Attributes.Add("class", "labelfeedbad");
            }
        } // end !IsPostback
    }     // end Page_Load