private static Topic DBMapping(DBTopic dbItem)
        {
            if (dbItem == null)
                return null;

            Topic item = new Topic();
            item.TopicID = dbItem.TopicID;
            item.Name = dbItem.Name;
            item.MetaDescription = dbItem.MetaDescription;
            item.MetaKeywords = dbItem.MetaKeywords;
            item.MetaTitle = dbItem.MetaTitle;

            return item;
        }
        public Topic SaveInfo()
        {
            //system info
            Topic topic = this.TopicService.GetTopicById(this.TopicId);
            if (topic != null)
            {
                topic.Name = txtSystemName.Text;
                topic.IsPasswordProtected = cbIsPasswordProtected.Checked;
                topic.Password = txtPassword.Text.Trim();
                topic.IncludeInSitemap = cbIncludeInSitemap.Checked;

                this.TopicService.UpdateTopic(topic);
            }
            else
            {
                topic = new Topic()
                {
                    Name = txtSystemName.Text,
                    IsPasswordProtected = cbIsPasswordProtected.Checked,
                    Password = txtPassword.Text.Trim(),
                    IncludeInSitemap = cbIncludeInSitemap.Checked
                };

                this.TopicService.InsertTopic(topic);
            }

            //localizable info
            DateTime nowDT = DateTime.UtcNow;
            foreach (RepeaterItem item in rptrLanguageDivs.Items)
            {
                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                {
                    var txtTitle = (TextBox)item.FindControl("txtTitle");
                    var txtBody = (FCKeditor)item.FindControl("txtBody");
                    var lblLanguageId = (Label)item.FindControl("lblLanguageId");

                    int languageId = int.Parse(lblLanguageId.Text);
                    string title = txtTitle.Text;
                    string body = txtBody.Value;

                    var content = this.TopicService.GetLocalizedTopic(topic.Name, languageId);
                    if (content == null)
                    {
                        content = new LocalizedTopic()
                        {
                            TopicId = topic.TopicId,
                            LanguageId = languageId,
                            Title = title,
                            Body = body,
                            CreatedOn = nowDT,
                            UpdatedOn = nowDT
                        };

                        this.TopicService.InsertLocalizedTopic(content);
                    }
                    else
                    {
                        content.LanguageId = languageId;
                        content.Title = title;
                        content.Body = body;
                        content.UpdatedOn = nowDT;

                        this.TopicService.UpdateLocalizedTopic(content);
                    }
                }
            }
            foreach (RepeaterItem item in rptrLanguageDivs_SEO.Items)
            {
                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                {
                    var txtMetaKeywords = (TextBox)item.FindControl("txtMetaKeywords");
                    var txtMetaDescription = (TextBox)item.FindControl("txtMetaDescription");
                    var txtMetaTitle = (TextBox)item.FindControl("txtMetaTitle");
                    var lblLanguageId = (Label)item.FindControl("lblLanguageId");

                    int languageId = int.Parse(lblLanguageId.Text);
                    string metaKeywords = txtMetaKeywords.Text;
                    string metaDescription = txtMetaDescription.Text;
                    string metaTitle = txtMetaTitle.Text;

                    var content = this.TopicService.GetLocalizedTopic(topic.Name, languageId);
                    if (content == null)
                    {
                        //localized topic should be already created on the previous step
                    }
                    else
                    {
                        content.UpdatedOn = nowDT;
                        content.MetaKeywords = metaKeywords;
                        content.MetaDescription = metaDescription;
                        content.MetaTitle = metaTitle;

                        this.TopicService.UpdateLocalizedTopic(content);
                    }
                }
            }

            return topic;
        }