private bool HasDataChanged()
        {
            if (SlotRecordChanged == true)
            {
                return(true);
            }

            if (EnhancementRecordChanged == true)
            {
                return(true);
            }

            if (RankRequirementsRP1.HaveRecordsChanged() == true || RankRequirementsRP2.HaveRecordsChanged() == true || RankRequirementsRP2.HaveRecordsChanged() == true)
            {
                return(true);
            }

            if (RankModifiersMP1.HaveRecordsChanged() == true || RankModifiersMP2.HaveRecordsChanged() == true || RankModifiersMP3.HaveRecordsChanged() == true)
            {
                return(true);
            }

            //no data has changed, so return false.
            return(false);
        }
        private void PopulateRankFields()
        {
            int rankCount;
            int enhancementIndex;

            enhancementIndex = EnhancementIconListControl.SelectedIndex;
            rankCount        = RankModels[enhancementIndex].Count;

            //lets reset what tabs are shown based on number of ranks
            tabControl1.TabPages.Remove(tpRank2);
            tabControl1.TabPages.Remove(tpRank3);
            tabControl1.TabPages.Remove(tpNewRank);


            //Rank 1 data
            RankDescriptionHE1.Text = RankModels[enhancementIndex][0].Description;
            RankRequirementsRP1.Clear();
            RankRequirementsRP1.RecordId = RankModels[enhancementIndex][0].Id;
            RankRequirementsRP1.Initialize();
            RankModifiersMP1.Clear();
            RankModifiersMP1.RecordId = RankModels[enhancementIndex][0].Id;
            RankModifiersMP1.Initialize();

            //Rank 2 data
            if (rankCount > 1)
            {
                tabControl1.TabPages.Add(tpRank2);
                RankDescriptionHE2.Text = RankModels[enhancementIndex][1].Description;
                RankRequirementsRP2.Clear();
                RankRequirementsRP2.RecordId = RankModels[enhancementIndex][1].Id;
                RankRequirementsRP2.Initialize();
                RankModifiersMP2.Clear();
                RankModifiersMP2.RecordId = RankModels[enhancementIndex][1].Id;
                RankModifiersMP2.Initialize();
            }

            //Rank 3 data
            if (rankCount == 3)
            {
                tabControl1.TabPages.Add(tpRank3);
                RankDescriptionHE3.Text = RankModels[enhancementIndex][2].Description;
                RankRequirementsRP3.Clear();
                RankRequirementsRP3.RecordId = RankModels[enhancementIndex][2].Id;
                RankRequirementsRP3.Initialize();
                RankModifiersMP3.Clear();
                RankModifiersMP3.RecordId = RankModels[enhancementIndex][2].Id;
                RankModifiersMP3.Initialize();
            }
            if (rankCount < 3)
            {
                tabControl1.TabPages.Add(tpNewRank);
            }
        }
        private void SaveRecord()
        {
            if (EnhancementRecordChanged == true || HasDataChanged() == true)
            {
                //Update the Enhancement Record
                if (NewEnhancementRecord == true)
                {
                    EnhancementModels[EnhancementIndexLoaded].EnhancementSlotId = SlotModel.Id;
                }

                EnhancementModels[EnhancementIndexLoaded].Save();

                //Update the Enhancement Rank Record(s)
                for (int i = 0; i < RankModels[EnhancementIndexLoaded].Count; i++)
                {
                    RankModels[EnhancementIndexLoaded][i].EnhancementId = EnhancementModels[EnhancementIndexLoaded].Id;
                    RankModels[EnhancementIndexLoaded][i].Rank          = (byte)(i + 1);
                    RankModels[EnhancementIndexLoaded][i].Save();
                    switch (i)
                    {
                    case 0:
                    {
                        if (RankRequirementsRP1.HaveRecordsChanged() == true)
                        {
                            RankRequirementsRP1.RecordId = RankModels[EnhancementIndexLoaded][i].Id;
                            RankRequirementsRP1.SaveRecords();
                        }
                        if (RankModifiersMP1.HaveRecordsChanged() == true)
                        {
                            RankModifiersMP1.RecordId = RankModels[EnhancementIndexLoaded][i].Id;
                            RankModifiersMP1.SaveRecords();
                        }
                        break;
                    }

                    case 1:
                    {
                        if (RankRequirementsRP2.HaveRecordsChanged() == true)
                        {
                            RankRequirementsRP2.RecordId = RankModels[EnhancementIndexLoaded][i].Id;
                            RankRequirementsRP2.SaveRecords();
                        }
                        if (RankModifiersMP2.HaveRecordsChanged() == true)
                        {
                            RankModifiersMP2.RecordId = RankModels[EnhancementIndexLoaded][i].Id;
                            RankModifiersMP2.SaveRecords();
                        }
                        break;
                    }

                    case 2:
                    {
                        if (RankRequirementsRP3.HaveRecordsChanged() == true)
                        {
                            RankRequirementsRP3.RecordId = RankModels[EnhancementIndexLoaded][i].Id;
                            RankRequirementsRP3.SaveRecords();
                        }
                        if (RankModifiersMP3.HaveRecordsChanged() == true)
                        {
                            RankModifiersMP3.RecordId = RankModels[EnhancementIndexLoaded][i].Id;
                            RankModifiersMP3.SaveRecords();
                        }
                        break;
                    }
                    }
                }
            }
        }