private void SetColors()
        {
            ChemicalGroup group = null;

            ///
            /// The background colors were selected by looking
            /// at http://www.chemicalelements.com/show/mass.html
            /// I chose two random colors fro the Rare Earths
            /// -FCT
            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Alkali Metals"); });
            group.SetBackground(Brushes.MediumAquamarine);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Alkaline Earth Metals"); });
            group.SetBackground(Brushes.Red);
            group.SetGlowBrush(Brushes.YellowGreen);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Transition Metals"); });
            group.SetBackground(Brushes.Yellow);
            group.SetGlowBrush(Brushes.MediumVioletRed);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Other Metals"); });
            group.SetBackground(Brushes.Aquamarine);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Metalloids"); });
            group.SetBackground(Brushes.Purple);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Non-Metals"); });
            group.SetBackground(Brushes.LawnGreen);
            group.SetGlowBrush(Brushes.Red);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Halogens"); });
            group.SetBackground(Brushes.Orchid);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Noble Gases"); });
            group.SetBackground(Brushes.Orange);
            group.SetGlowBrush(Brushes.Green);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Lanthanide Series"); });
            group.SetBackground(Brushes.DarkRed);

            group = Selector.ChemicalElementFactory.ChemicalGroups.First(g => { return(g.GroupName == "Actinide Series"); });
            group.SetBackground(Brushes.DarkOliveGreen);
        }
        protected virtual void BuildStandardGroups()
        {
            ChemicalGroup group = null;

            // All Elements
            group           = new ChemicalGroup(this, false);
            group.GroupName = "All Chemical Elements";
            foreach (var chem in this.Elements)
            {
                group.AddChemicalElement(chem.AtomicNumber);
            }
            this.ChemicalGroups.Add(group);

            // Alkali Metals
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Alkali Metals";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Lithium");
            group.AddChemicalElement("Sodium");
            group.AddChemicalElement("Potassium");
            group.AddChemicalElement("Rubidium");
            group.AddChemicalElement("Caesium");
            group.AddChemicalElement("Francium");

            group.LockGroupMembers();


            // Alkaline Earth Metals
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Alkaline Earth Metals";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Beryllium");
            group.AddChemicalElement("Magnesium");
            group.AddChemicalElement("Calcium");
            group.AddChemicalElement("Strontium");
            group.AddChemicalElement("Barium");
            group.AddChemicalElement("Radium");

            group.LockGroupMembers();


            // Transition Metals
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Transition Metals";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Scandium");
            group.AddChemicalElement("Titanium");
            group.AddChemicalElement("Vanadium");
            group.AddChemicalElement("Chromium");
            group.AddChemicalElement("Manganese");

            group.AddChemicalElement("Iron");
            group.AddChemicalElement("Cobalt");
            group.AddChemicalElement("Nickel");
            group.AddChemicalElement("Copper");
            group.AddChemicalElement("Zinc");

            group.AddChemicalElement("Yttrium");
            group.AddChemicalElement("Zirconium");
            group.AddChemicalElement("Niobium");
            group.AddChemicalElement("Molybdenum");
            group.AddChemicalElement("Technetium");

            group.AddChemicalElement("Ruthenium");
            group.AddChemicalElement("Rhodium");
            group.AddChemicalElement("Palladium");
            group.AddChemicalElement("Silver");
            group.AddChemicalElement("Cadmium");

            group.AddChemicalElement("Hafnium");
            group.AddChemicalElement("Tantalum");
            group.AddChemicalElement("Tungsten");
            group.AddChemicalElement("Rhenium");
            group.AddChemicalElement("Osmium");

            group.AddChemicalElement("Iridium");
            group.AddChemicalElement("Platinum");
            group.AddChemicalElement("Gold");
            group.AddChemicalElement("Mercury");
            group.AddChemicalElement("Rutherfordium");

            group.AddChemicalElement("Dubnium");
            group.AddChemicalElement("Seaborgium");
            group.AddChemicalElement("Bohrium");
            group.AddChemicalElement("Hassium");
            group.AddChemicalElement("Meitnerium");

            group.AddChemicalElement("Darmstadtium");
            group.AddChemicalElement("Roetgenium");
            group.AddChemicalElement("Copernicium");

            group.LockGroupMembers();


            // Other Metals
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Other Metals";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Aluminium");
            group.AddChemicalElement("Gallium");
            group.AddChemicalElement("Indium");
            group.AddChemicalElement("Tin");
            group.AddChemicalElement("Thallium");
            group.AddChemicalElement("Lead");
            group.AddChemicalElement("Bismuth");
            group.AddChemicalElement("Ununtrium");
            group.AddChemicalElement("Flerovium");
            group.AddChemicalElement("Ununpentium");
            group.AddChemicalElement("Livermorium");

            group.LockGroupMembers();


            // Metalloids
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Metalloids";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Boron");
            group.AddChemicalElement("Silicon");
            group.AddChemicalElement("Germanium");
            group.AddChemicalElement("Arsenic");
            group.AddChemicalElement("Antimony");
            group.AddChemicalElement("Tellurium");
            group.AddChemicalElement("Polonium");
            group.AddChemicalElement("Ununseptium");

            group.LockGroupMembers();


            // Non-Metals
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Non-Metals";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Hydrogen");
            group.AddChemicalElement("Carbon");
            group.AddChemicalElement("Nitrogen");
            group.AddChemicalElement("Oxygen");
            group.AddChemicalElement("Phosphorus");
            group.AddChemicalElement("Sulfur");
            group.AddChemicalElement("Selenium");

            group.LockGroupMembers();


            // Halogens
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Halogens";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Fluorine");
            group.AddChemicalElement("Chlorine");
            group.AddChemicalElement("Bromine");
            group.AddChemicalElement("Iodine");
            group.AddChemicalElement("Astatine");

            group.LockGroupMembers();


            // Noble Gases
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Noble Gases";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Helium");
            group.AddChemicalElement("Neon");
            group.AddChemicalElement("Argon");
            group.AddChemicalElement("Krypton");
            group.AddChemicalElement("Xenon");
            group.AddChemicalElement("Radon");
            group.AddChemicalElement("Ununoctium");

            group.LockGroupMembers();


            ///
            /// Rare Earth Elements
            ///

            // Lanthanum Series
            var lanthanide = new ChemicalGroup(this, false);

            group           = lanthanide;
            group.GroupName = "Lanthanide Series";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Lanthanum");
            group.AddChemicalElement("Cerium");
            group.AddChemicalElement("Praseodymium");
            group.AddChemicalElement("Neodymium");
            group.AddChemicalElement("Promethium");

            group.AddChemicalElement("Samarium");
            group.AddChemicalElement("Europium");
            group.AddChemicalElement("Gadolinium");
            group.AddChemicalElement("Terbium");
            group.AddChemicalElement("Dysprosium");

            group.AddChemicalElement("Holmium");
            group.AddChemicalElement("Erbium");
            group.AddChemicalElement("Thulium");
            group.AddChemicalElement("Ytterbium");
            group.AddChemicalElement("Lutetium");

            group.LockGroupMembers();


            // Actinide Series
            var actinium = new ChemicalGroup(this, false);

            group           = actinium;
            group.GroupName = "Actinide Series";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElement("Actinium");
            group.AddChemicalElement("Thorium");
            group.AddChemicalElement("Protactinium");
            group.AddChemicalElement("Uranium");
            group.AddChemicalElement("Neptunium");

            group.AddChemicalElement("Plutonium");
            group.AddChemicalElement("Americium");
            group.AddChemicalElement("Curium");
            group.AddChemicalElement("Berkelium");
            group.AddChemicalElement("Californium");

            group.AddChemicalElement("Einsteinium");
            group.AddChemicalElement("Fermium");
            group.AddChemicalElement("Mendelevium");
            group.AddChemicalElement("Nobelium");
            group.AddChemicalElement("Lawrencium");

            group.LockGroupMembers();


            // Rare Earth Elements
            group           = new ChemicalGroup(this, false);
            group.GroupName = "Rare Earth Elements";
            this.ChemicalGroups.Add(group);

            group.AddChemicalElements(lanthanide);
            group.AddChemicalElements(actinium);

            group.LockGroupMembers();
        }