private bool RestoreTab(TabInfo tab)
		{
			var success = true;

			if (tab != null)
			{
				if (!Null.IsNull(tab.ParentId) && DeletedTabs.Any(t => t.TabID == tab.ParentId))
				{
					Skin.AddModuleMessage(this,
												   string.Format(Localization.GetString("ChildTab.ErrorMessage", LocalResourceFile), tab.TabName),
												   ModuleMessage.ModuleMessageType.YellowWarning);
					success = false;
				}
				else
				{
				    var tabController = new TabController();
                    tabController.RestoreTab(tab, PortalSettings);
					DeletedTabs.Remove(tab);

					//restore modules in this tab
					modulesListBox.Items.Cast<ListItem>().ToList().ForEach(i =>
					                                                   	{
																			var values = i.Value.Split('-');
																			var tabId = int.Parse(values[0]);
																			var moduleId = int.Parse(values[1]);
																			if(tabId == tab.TabID)
																			{
																				RestoreModule(moduleId, tabId);
																			}
					                                                   	});
				}
			}
			return success;
		}
        protected void enabledCheckbox_CheckChanged(object sender, EventArgs e)
        {
            try
            {
                if ((sender) is DnnCheckBox)
                {
                    var enabledCheckbox = (DnnCheckBox) sender;
                    int languageId = int.Parse(enabledCheckbox.CommandArgument);
                    Locale locale = LocaleController.Instance.GetLocale(languageId);
                    Locale defaultLocale = LocaleController.Instance.GetDefaultLocale(PortalId);

                    Dictionary<string, Locale> enabledLanguages = LocaleController.Instance.GetLocales(PortalId);

                    var tabController = new TabController();
                    var localizedTabs = PortalSettings.ContentLocalizationEnabled ?
                        tabController.GetTabsByPortal(PortalId).WithCulture(locale.Code, false).AsList() : new List<TabInfo>();

                    var redirectUrl = string.Empty;
                    if (enabledCheckbox.Enabled)
                    {
                        // do not touch default language
                        if (enabledCheckbox.Checked)
                        {
                            if (!enabledLanguages.ContainsKey(locale.Code))
                            {
                                //Add language to portal
                                Localization.AddLanguageToPortal(PortalId, languageId, true);
                            }

                            //restore the tabs and modules
                            var moduleController = new ModuleController();
                            foreach (var tab in localizedTabs)
                            {
                                tabController.RestoreTab(tab, PortalSettings);
                                moduleController.GetTabModules(tab.TabID).Values.ToList().ForEach(moduleController.RestoreModule);
                            }
                        }
                        else
                        {
                            //remove language from portal
                            Localization.RemoveLanguageFromPortal(PortalId, languageId);

                            //if the disable language is current language, should redirect to default language.
                            if(locale.Code.Equals(Thread.CurrentThread.CurrentUICulture.ToString(), StringComparison.InvariantCultureIgnoreCase))
                            {
                                redirectUrl = Globals.NavigateURL(PortalSettings.ActiveTab.TabID,
                                                                    PortalSettings.ActiveTab.IsSuperTab,
                                                                    PortalSettings, "", defaultLocale.Code);
                            }

                            //delete the tabs in this language
                            foreach (var tab in localizedTabs)
                            {
                                tab.DefaultLanguageGuid = Guid.Empty;
                                tabController.SoftDeleteTab(tab.TabID, PortalSettings);
                            }
                        }
                    }

                    //Redirect to refresh page (and skinobjects)
                    if (string.IsNullOrEmpty(redirectUrl))
                    {
                        redirectUrl = Globals.NavigateURL();
                    }

                    Response.Redirect(redirectUrl, true);
                }
            }
            catch (Exception ex)
            {
                Exceptions.ProcessModuleLoadException(this, ex);
            }
        }