public void FormControlAddress_StateReferenceCompleted(Object sender, Server.Application.StateReferenceCompletedEventArgs e)
        {
            // FINISH LINKING REFERENCE CONTROLS

            foreach (Client.Core.Forms.Control currentControl in form.GetAllControls())
            {
                if (currentControl.ControlType == Mercury.Server.Application.FormControlType.Address)
                {
                    Client.Core.Forms.Controls.Address addressControl = (Client.Core.Forms.Controls.Address)currentControl;

                    Telerik.Windows.Controls.RadComboBox stateComboBox = (Telerik.Windows.Controls.RadComboBox)FindName(addressControl.ControlId.ToString() + "_State");

                    if (stateComboBox != null)
                    {
                        stateComboBox.ItemsSource = e.Result.ResultList;

                        // stateComboBox.SelectedValue = addressControl.State;

                        stateComboBox.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValueProperty, renderEngine.PropertyDataBinding("State", addressControl, System.Windows.Data.BindingMode.OneWay));
                    }
                }
            }

            return;
        }
        public void FormControlAddress_CityReferenceByStateCompleted(Object sender, Server.Application.CityReferenceByStateCompletedEventArgs e)
        {
            // RELINK CITY REFERENCES

            foreach (Client.Core.Forms.Control currentControl in form.GetAllControls())
            {
                if (currentControl.ControlType == Mercury.Server.Application.FormControlType.Address)
                {
                    Client.Core.Forms.Controls.Address addressControl = (Client.Core.Forms.Controls.Address)currentControl;

                    Telerik.Windows.Controls.RadComboBox cityComboBox = (Telerik.Windows.Controls.RadComboBox)FindName(addressControl.ControlId.ToString() + "_City");

                    Telerik.Windows.Controls.RadComboBox stateComboBox = (Telerik.Windows.Controls.RadComboBox)FindName(addressControl.ControlId.ToString() + "_State");

                    if ((stateComboBox != null) && (cityComboBox != null))
                    {
                        cityComboBox.ItemsSource = e.Result.Collection;

                        cityComboBox.DisplayMemberPath = "City";

                        cityComboBox.SelectedValuePath = "City";

                        cityComboBox.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValueProperty, renderEngine.PropertyDataBinding("City", addressControl, System.Windows.Data.BindingMode.OneWay));
                    }
                }
            }

            return;
        }
        public void FormControlAddress_StateSelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
        {
            Telerik.Windows.Controls.RadComboBox stateComboBox = (Telerik.Windows.Controls.RadComboBox)sender;

            if (stateComboBox == null)
            {
                return;
            }

            if (stateComboBox.SelectedValue == null)
            {
                return;
            }

            Client.Core.Forms.Controls.Address addressControl = (Client.Core.Forms.Controls.Address)stateComboBox.Tag;

            if (addressControl == null)
            {
                return;
            }


            Boolean valueChanged = (stateComboBox.SelectedValue.ToString() != addressControl.State);

            valueChanged = ((valueChanged) && (addressControl.EnabledAndNotReadOnly));


            if (valueChanged)
            {
                addressControl.State = stateComboBox.SelectedValue.ToString();

                addressControl.AddressId = 0;

                stateComboBox.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValueProperty, renderEngine.PropertyDataBinding("State", addressControl, System.Windows.Data.BindingMode.OneWay));

                if ((addressControl.HasEventHandler("AddressChanged")) || (addressControl.HasDependencyDataBinding))
                {
                    FormServerProcessing_ControlPanelDisable(addressControl, Mercury.Client.Core.Forms.ServerProcessRequestType.ValueChanged);

                    form.ValueChanged(addressControl, FormServerProcessCompleted);
                }
            }

            // MAKE SURE TO UPDATE CITY REFERENCE (INDEPENDENT OF CHANGE)

            // THIS COULD BE FROM A POSTBACK/SERVER-UPDATE THAT NEEDS TO RESET THE STATE TO MAINTAIN THE CITY INFORMATION

            MercuryApplication.CityReferenceByState(addressControl.State, true, FormControlAddress_CityReferenceByStateCompleted);

            return;
        }
        public void FormControlAddress_CitySelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
        {
            Telerik.Windows.Controls.RadComboBox cityComboBox = (Telerik.Windows.Controls.RadComboBox)sender;

            if (cityComboBox == null)
            {
                return;
            }

            if (cityComboBox.SelectedValue == null)
            {
                return;
            }

            Client.Core.Forms.Controls.Address addressControl = (Client.Core.Forms.Controls.Address)cityComboBox.Tag;

            if (addressControl == null)
            {
                return;
            }


            Boolean valueChanged = (cityComboBox.SelectedValue.ToString() != addressControl.City);

            valueChanged = ((valueChanged) && (addressControl.EnabledAndNotReadOnly));


            if (valueChanged)
            {
                addressControl.City = cityComboBox.SelectedValue.ToString();

                addressControl.AddressId = 0;

                cityComboBox.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValueProperty, renderEngine.PropertyDataBinding("City", addressControl, System.Windows.Data.BindingMode.OneWay));

                if ((addressControl.HasEventHandler("AddressChanged")) || (addressControl.HasDependencyDataBinding))
                {
                    FormServerProcessing_ControlPanelDisable(addressControl, Mercury.Client.Core.Forms.ServerProcessRequestType.ValueChanged);

                    form.ValueChanged(addressControl, FormServerProcessCompleted);
                }
            }

            return;
        }