private void Save()
    {
        txtLabel.Text = cbLabel.Value;
        if ((container != null) || (container == null && ddlContainerGroups.SelectedIndex != 0))
        {
            Page.Validate();
            if (Page.IsValid)
            {
                // Retrieve the new text in the templated columns
                // Prepare the command text
                lbError.Text = "";
                int  lookupValueId          = -1;
                bool isContainerTypeChanged = false;
                if (dlLookupField.SelectedIndex > 0)
                {
                    lookupValueId = Convert.ToInt32(dlLookupField.SelectedValue);
                }

                if (ViewState["action"].ToString() == "update")
                {
                    container.Tag            = txtTag.Text;
                    container.Name           = txtContainerName.Text;
                    container.Definition     = txtDefinition.Text;
                    container.EntryRule      = txtEntryRule.Text;
                    container.DataTypeCode   = Convert.ToChar(dlDataType.SelectedValue);
                    container.MaxLength      = Convert.ToInt32(txtMaxLength.Value);
                    container.ValidationMask = string.Empty;
                    container.Sample         = txtSample.Text;
                    container.Mecd           = cbMECD.Checked;
                    container.Mmd            = cbMMD.Checked;
                    container.Cdm            = cbCDM.Checked;
                    container.GroupId        = Convert.ToInt32(ddlContainerGroups.SelectedValue);
                    container.InputMask      = txtInputMask.Text;
                    container.LookupId       = lookupValueId;
                    container.DataTypeCode   = Convert.ToChar(dlDataType.SelectedValue);

                    // Note: When the container type is changed from or to features, then we will reload the complete page
                    if (container.ContainerTypeCode != Convert.ToChar(dlContainerType.SelectedValue) && (dlContainerType.SelectedValue == "F" || container.ContainerTypeCode.ToString() == "F"))
                    {
                        isContainerTypeChanged = true;
                    }
                    container.ContainerTypeCode   = Convert.ToChar(dlContainerType.SelectedValue);
                    container.Translatable        = cbTranslatable.Checked;
                    container.ModifierId          = SessionState.User.Id;
                    container.InheritanceMethodId = Convert.ToInt32(dlInheritanceMethod.SelectedValue);
                    container.Publishable         = cbPublishable.Checked;
                    container.Regionalizable      = cbRegionalizable.Checked;
                    container.Localizable         = cbLocalizable.Checked;
                    container.ReadOnly            = cbReadOnly.Checked;
                    container.Sort           = Convert.ToInt32(txtSort.Value);
                    container.Label          = cbLabel.Value;
                    container.LabelId        = -1; // The label is Always recreate
                    container.WWXPath        = tbWWXPath.Text;
                    container.KeepIfObsolete = cbKeepIfObsolete.Checked;
                    container.SegmentId      = Convert.ToInt32(ddlSegments.SelectedValue);
                }
                else
                {
                    container = new HyperCatalog.Business.Container(-1,
                                                                    txtTag.Text,
                                                                    txtContainerName.Text,
                                                                    txtDefinition.Text,
                                                                    txtEntryRule.Text,
                                                                    string.Empty,
                                                                    txtSample.Text,
                                                                    txtInputMask.Text,
                                                                    Convert.ToChar(dlDataType.SelectedValue),
                                                                    cbTranslatable.Checked,
                                                                    Convert.ToChar(dlContainerType.SelectedValue),
                                                                    Convert.ToInt32(txtMaxLength.Value),
                                                                    lookupValueId,
                                                                    Convert.ToInt32(txtSort.Value),
                                                                    SessionState.User.Id,
                                                                    -1,
                                                                    Convert.ToInt32(ddlContainerGroups.SelectedValue),
                                                                    DateTime.UtcNow,
                                                                    null,
                                                                    cbPublishable.Checked, false,
                                                                    Convert.ToInt32(dlInheritanceMethod.SelectedValue),
                                                                    cbRegionalizable.Checked,
                                                                    cbLocalizable.Checked,
                                                                    cbReadOnly.Checked,
                                                                    cbLabel.Value.ToString(),
                                                                    -1,
                                                                    tbWWXPath.Text,
                                                                    cbKeepIfObsolete.Checked,
                                                                    Convert.ToInt32(ddlSegments.SelectedValue),
                                                                    dlDataType.Text,
                                                                    dlContainerType.Text,
                                                                    cbMECD.Checked,
                                                                    cbMMD.Checked,
                                                                    cbCDM.Checked
                                                                    );
                }
                if (container.Save())
                {
                    SessionState.ClearAppContainers();
                    SessionState.ClearAppContainerGroups();
                    if (txtMaxLength.ValueDouble > 0)
                    {
                        txtMaxLength.MinValue = txtMaxLength.ValueDouble;
                    }

                    if (ViewState["action"].ToString() == "create")
                    {
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript1", "<script>UpdateTabs(" + container.Id + ");</script>");
                    }
                    else if (isContainerTypeChanged)
                    {
                        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript2", "<script>UpdateTabsAfterUpdate(" + container.Id + ");</script>");
                    }
                    else
                    {
                        container        = HyperCatalog.Business.Container.GetByKey(containerId);
                        lbError.CssClass = "hc_success";
                        lbError.Text     = "Data saved!";
                        lbError.Visible  = true;

                        if (container.Modifier != null && container.ModifyDate.HasValue)
                        {
                            hlModifier.NavigateUrl = "mailto:" + UITools.GetDisplayEmail(container.Modifier.Email);
                            hlModifier.Text        = "Modified by " + container.Modifier.FullName + " on " + SessionState.User.FormatUtcDate(container.ModifyDate.Value, true, SessionState.User.FormatDate + ' ' + SessionState.User.FormatTime) + "<br/><br/>";
                            hlModifier.Visible     = true;
                        }
                    }
                }
                else
                {
                    lbError.CssClass = "hc_error";
                    lbError.Text     = HyperCatalog.Business.Container.LastError;
                    lbError.Visible  = true;
                }
            }
            else
            {
                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "alertmissing", "<script>alert('Label is mandatory');</script>");
            }
        }
        else
        {
            Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "alertmissing", "<script>alert('Please choose a container group');</script>");
        }
        chianti();
    }