/// <summary>
        /// Used when binding the lists to the MailChimp actual subscribers.  It will use the
        /// API to dynamically query each potential subscriber against each configured list.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void dlLists_ItemDataBound( object sender, RepeaterItemEventArgs e )
        {
            if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
            {
                MailChimpLookup item = new MailChimpLookup( e.Item.DataItem as Lookup );

                if ( item.ImageUrl != string.Empty )
                {
                    Image image = e.Item.FindControl( "imgBG" ) as Image;
                    image.ImageUrl = item.ImageUrl;
                }
                else
                {
                    Literal itemName = e.Item.FindControl( "liListName" ) as Literal;
                    itemName.Text = item.Name;
                }

                ImageButton btnSubscribe = e.Item.FindControl( "btnSubscribe" ) as ImageButton;
                btnSubscribe.CommandName = "Subscribe";
                btnSubscribe.CommandArgument = item.ListID;

                ImageButton btnUnsubscribe = e.Item.FindControl( "btnUnsubscribe" ) as ImageButton;
                btnUnsubscribe.CommandName = "Unsubscribe";
                btnUnsubscribe.CommandArgument = item.ListID;

                LinkButton lbSaveGroups = e.Item.FindControl( "lbSaveGroups" ) as LinkButton;
                lbSaveGroups.CommandName = "SaveGroups";
                lbSaveGroups.CommandArgument = item.ListID;

                CheckBoxList cblGroups = e.Item.FindControl( "cblGroups" ) as CheckBoxList;

                try
                {
                    // Create a checkbox for each Interest group if MC Groups is enabled.
                    if ( EnableMCGroupsSetting )
                    {
                        lbSaveGroups.Visible = false;
                        try
                        {
                            MCInterestGroups mcGroups = api.listInterestGroups( item.ListID );
                            cblGroups.Visible = true;
                            cblGroups.RepeatColumns = ( MaxColumnsSetting ) ? NumRowsColsSetting : ( mcGroups.groups.Count() + NumRowsColsSetting - 1 ) / NumRowsColsSetting;
                            cblGroups.DataSource = mcGroups.groups;
                            cblGroups.DataBind();
                        }
                        catch ( XmlRpcFaultException ex )
                        {
                            if ( ex.FaultCode != MailChimpErrorCodes.List_InterestGroups_NotEnabled )
                            {
                                AddMsg( string.Format( " {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode ) );
                            }
                        }
                    }

                    // Try to determine if the email address is subscribed/unsubscribed from the MailChimp list
                    MCMemberInfo info = api.listMemberInfo( item.ListID, GetPerson().Emails.FirstActive );

                    // Set the user's groups if "MailChimp groups" is enabled.
                    if ( EnableMCGroupsSetting )
                    {
                        lbSaveGroups.Visible = true;
                        // now check the interests that are selected for this user
                        string interests = (from m in info.merges where m.tag == "INTERESTS" select m).FirstOrDefault().val;
                        if ( !string.IsNullOrEmpty( interests ) )
                        {
                            foreach ( ListItem interestCheckbox in cblGroups.Items )
                            {
                                if ( interests.Contains( interestCheckbox.Value ) )
                                {
                                    interestCheckbox.Selected = true;
                                }
                            }
                        }
                    }

                    string hoverInfo = string.Format( " {0}: {1} on {2} EST/EDT", item.Name, info.status, info.timestamp );
                    if ( "subscribed".Equals( info.status ) )
                    {
                        btnUnsubscribe.ToolTip = hoverInfo;
                        btnUnsubscribe.Visible = true;
                    }
                    else
                    {
                        btnSubscribe.ToolTip = hoverInfo;
                        btnSubscribe.Visible = true;
                    }
                }
                catch ( XmlRpcFaultException ex )
                {
                    if ( ex.FaultCode == MailChimpErrorCodes.Email_NotExists )
                    {
                        btnSubscribe.Visible = true;
                    }
                    else if ( ex.FaultCode == MailChimpErrorCodes.List_NotSubscribed )
                    {
                        btnSubscribe.ToolTip = "Person no longer subscribed.";
                        btnSubscribe.Visible = true;
                    }
                    else
                    {
                        AddMsg( string.Format( " {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode ) );
                    }
                }
            }
        }
        /// <summary>
        /// Used when binding the lists to the MailChimp actual subscribers.  It will use the
        /// API to dynamically query each potential subscriber against each configured list.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void dlLists_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                MailChimpLookup item = new MailChimpLookup(e.Item.DataItem as Lookup);

                if (item.ImageUrl != string.Empty)
                {
                    Image image = e.Item.FindControl("imgBG") as Image;
                    image.ImageUrl = item.ImageUrl;
                }
                else
                {
                    Literal itemName = e.Item.FindControl("liListName") as Literal;
                    itemName.Text = item.Name;
                }

                ImageButton btnSubscribe = e.Item.FindControl("btnSubscribe") as ImageButton;
                btnSubscribe.CommandName     = "Subscribe";
                btnSubscribe.CommandArgument = item.ListID;

                ImageButton btnUnsubscribe = e.Item.FindControl("btnUnsubscribe") as ImageButton;
                btnUnsubscribe.CommandName     = "Unsubscribe";
                btnUnsubscribe.CommandArgument = item.ListID;

                LinkButton lbSaveGroups = e.Item.FindControl("lbSaveGroups") as LinkButton;
                lbSaveGroups.CommandName     = "SaveGroups";
                lbSaveGroups.CommandArgument = item.ListID;

                CheckBoxList cblGroups = e.Item.FindControl("cblGroups") as CheckBoxList;

                try
                {
                    // Create a checkbox for each Interest group if MC Groups is enabled.
                    if (EnableMCGroupsSetting)
                    {
                        lbSaveGroups.Visible = false;
                        try
                        {
                            MCInterestGroups mcGroups = api.listInterestGroups(item.ListID);
                            cblGroups.Visible       = true;
                            cblGroups.RepeatColumns = (MaxColumnsSetting) ? NumRowsColsSetting : (mcGroups.groups.Count() + NumRowsColsSetting - 1) / NumRowsColsSetting;
                            cblGroups.DataSource    = mcGroups.groups;
                            cblGroups.DataBind();
                        }
                        catch (XmlRpcFaultException ex)
                        {
                            if (ex.FaultCode != MailChimpErrorCodes.List_InterestGroups_NotEnabled)
                            {
                                AddMsg(string.Format(" {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode));
                            }
                        }
                    }

                    // Try to determine if the email address is subscribed/unsubscribed from the MailChimp list
                    MCMemberInfo info = api.listMemberInfo(item.ListID, GetPerson().Emails.FirstActive);

                    // Set the user's groups if "MailChimp groups" is enabled.
                    if (EnableMCGroupsSetting)
                    {
                        lbSaveGroups.Visible = true;
                        // now check the interests that are selected for this user
                        string interests = (from m in info.merges where m.tag == "INTERESTS" select m).FirstOrDefault().val;
                        if (!string.IsNullOrEmpty(interests))
                        {
                            foreach (ListItem interestCheckbox in cblGroups.Items)
                            {
                                if (interests.Contains(interestCheckbox.Value))
                                {
                                    interestCheckbox.Selected = true;
                                }
                            }
                        }
                    }

                    string hoverInfo = string.Format(" {0}: {1} on {2} EST/EDT", item.Name, info.status, info.timestamp);
                    if ("subscribed".Equals(info.status))
                    {
                        btnUnsubscribe.ToolTip = hoverInfo;
                        btnUnsubscribe.Visible = true;
                    }
                    else
                    {
                        btnSubscribe.ToolTip = hoverInfo;
                        btnSubscribe.Visible = true;
                    }
                }
                catch (XmlRpcFaultException ex)
                {
                    if (ex.FaultCode == MailChimpErrorCodes.Email_NotExists)
                    {
                        btnSubscribe.Visible = true;
                    }
                    else if (ex.FaultCode == MailChimpErrorCodes.List_NotSubscribed)
                    {
                        btnSubscribe.ToolTip = "Person no longer subscribed.";
                        btnSubscribe.Visible = true;
                    }
                    else
                    {
                        AddMsg(string.Format(" {0}: {1} (err:{2})", item.Name, ex.FaultString, ex.FaultCode));
                    }
                }
            }
        }