/// <summary>
        /// Handles the SaveClick event of the dlgField control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void dlgField_SaveClick( object sender, EventArgs e )
        {
            var formGuid = hfFormGuid.Value.AsGuid();
            var attributeGuid = hfAttributeGuid.Value.AsGuid();

            var form = FormState.FirstOrDefault( f => f.Guid == formGuid );
            if ( form != null )
            {
                var field = form.Fields.FirstOrDefault( a => a.Guid.Equals( attributeGuid ) );
                if ( field == null )
                {
                    field = new AttributeFormField();
                    field.Order = form.Fields.Any() ? form.Fields.Max( a => a.Order ) + 1 : 0;
                    field.Guid = attributeGuid;
                    form.Fields.Add( field );
                }

                field.PreText = ceAttributePreText.Text;
                field.PostText = ceAttributePostText.Text;

                field.AttributeId = ddlPersonAttributes.SelectedValueAsInt();
                field.ShowCurrentValue = cbUsePersonCurrentValue.Checked;
                field.IsRequired = cbRequireInInitialEntry.Checked;
            }

            HideDialog();

            BuildEditControls( true );
        }
        /// <summary>
        /// Shows the form field edit.
        /// </summary>
        /// <param name="formGuid">The form unique identifier.</param>
        /// <param name="formFieldGuid">The form field unique identifier.</param>
        private void ShowFormFieldEdit( Guid formGuid, Guid formFieldGuid )
        {
            var form = FormState.FirstOrDefault( f => f.Guid == formGuid );
            if ( form != null )
            {
                var field = form.Fields.FirstOrDefault( a => a.Guid.Equals( formFieldGuid ) );
                if ( field == null )
                {
                    field = new AttributeFormField();
                    field.Guid = formFieldGuid;
                    field.ShowCurrentValue = true;
                    field.IsRequired = false;
                }

                ceAttributePreText.Text = field.PreText;
                ceAttributePostText.Text = field.PostText;

                ddlPersonAttributes.Items.Clear();
                var person = new Person();
                person.LoadAttributes();
                foreach ( var attr in person.Attributes
                    .OrderBy( a => a.Value.Name )
                    .Select( a => a.Value ) )
                {
                    if ( attr.IsAuthorized( Authorization.VIEW, CurrentPerson ) )
                    {
                        ddlPersonAttributes.Items.Add( new ListItem( attr.Name, attr.Id.ToString() ) );
                    }
                }

                ddlPersonAttributes.SetValue( field.AttributeId );

                cbRequireInInitialEntry.Checked = field.IsRequired;
                cbUsePersonCurrentValue.Checked = field.ShowCurrentValue;

                hfFormGuid.Value = formGuid.ToString();
                hfAttributeGuid.Value = formFieldGuid.ToString();

                ShowDialog( "Attributes" );
            }

            BuildEditControls( true );
        }