public Artifact(XmlNode node)
        {
            // initialize for english/french language
            mArticleName = new string[2];

            mMaterials = new List<Material>();
            mKeywords = new List<KeywordPair>();
            mStems = new List<StemPair>();

            // start pulling data from XML into this artifact

            // catalog number (non-language specific)
            mCatalogNumber = node.ChildNodes[0].InnerText;

            // the date it was added to the catalog
            float catalogYear = Convert.ToSingle(mCatalogNumber.Substring(0, mCatalogNumber.IndexOf(".")));
            catalogDate = new VagueDate(catalogYear, catalogYear, 0, VagueDate.Qualifier.Exact);

            // manufacture date
            float yearStart = 0;
            float yearEnd = 0;
            string qualifier = "";

            // get manufacture date
            try
            {
                yearStart = Convert.ToSingle(node.ChildNodes[6].InnerText);
                if (node.ChildNodes[7].InnerText != "")
                {
                    yearEnd = Convert.ToSingle(node.ChildNodes[7].InnerText);
                }
                qualifier = ExtractLanguage(LANGUAGE_ENGLISH, node.ChildNodes[5].InnerText);
            }
            catch (Exception e) { }
            manufactureDate = new VagueDate(yearStart, yearEnd, 0, VagueDate.ParseQualifier(qualifier));

            // use date
            useDate = node.ChildNodes[14].InnerText;

            // article name
            mArticleName[LANGUAGE_ENGLISH] = ExtractLanguage(LANGUAGE_ENGLISH, node.ChildNodes[1].InnerText);
            mArticleName[LANGUAGE_FRENCH] = ExtractLanguage(LANGUAGE_FRENCH, node.ChildNodes[1].InnerText);

            // materials
            if (node.ChildNodes[23] == null)
            {
                // no secondary materials
                PopulateMaterials(node.ChildNodes[22].InnerText, "");
            }
            else
            {
                // secondary materials exist
                PopulateMaterials(node.ChildNodes[22].InnerText, node.ChildNodes[23].InnerText);
            }

            // keywords
            AddKeywordsStems(node.ChildNodes[8].InnerText);
            AddKeywordsStems(node.ChildNodes[9].InnerText);
            AddKeywordsStems(node.ChildNodes[10].InnerText);
        }
        public Artifact(XmlNode node)
        {
            // initialize for english/french language
            mArticleName = new string[2];

            mMaterials = new List<Material>();
            mKeywords = new List<KeywordPair>();
            mStems = new List<StemPair>();

            text = new SelectableText[2];

            // start pulling data from XML into this artifact

            // catalog number (non-language specific)
            mCatalogNumber = node.ChildNodes[0].InnerText;
            texture = XNA.LoadTexture(BohemianArtifact.TexturePath + "artifacts\\" + mCatalogNumber + ".jpg");

            // the date it was added to the catalog
            float catalogYear = Convert.ToSingle(mCatalogNumber.Substring(0, mCatalogNumber.IndexOf(".")));
            catalogDate = new VagueDate(catalogYear, catalogYear, 0, 0);

            // manufacture date
            float yearStart = 0;
            float yearEnd = 0;
            string qualifier = "";

            // get manufacture date
            try
            {
                yearStart = Convert.ToSingle(node.ChildNodes[6].InnerText);
                if (node.ChildNodes[7].InnerText != "")
                {
                    yearEnd = Convert.ToSingle(node.ChildNodes[7].InnerText);
                }
                else
                {
                    yearEnd = yearStart;
                }
                qualifier = ExtractLanguage(LANGUAGE_ENGLISH, node.ChildNodes[5].InnerText);
            }
            catch (Exception e) { }
            manufactureDate = new VagueDate(yearStart, yearEnd, VagueDate.ParseQualifier(qualifier));

            // get use date
            yearStart = 0;
            yearEnd = 0;
            qualifier = "";
            try
            {
                yearStart = Convert.ToSingle(node.ChildNodes[26].InnerText);
                if (node.ChildNodes[27].InnerText != "" && node.ChildNodes[27].InnerText != " ")
                {
                    yearEnd = Convert.ToSingle(node.ChildNodes[27].InnerText);
                }
                else
                {
                    yearEnd = yearStart;
                }
                qualifier = ExtractLanguage(LANGUAGE_ENGLISH, node.ChildNodes[25].InnerText);
            }
            catch (Exception e) { }
            useDate = new VagueDate(yearStart, yearEnd, VagueDate.ParseQualifier(qualifier));

            // article name
            mArticleName[LANGUAGE_ENGLISH] = ExtractLanguage(LANGUAGE_ENGLISH, node.ChildNodes[1].InnerText);
            mArticleName[LANGUAGE_FRENCH] = ExtractLanguage(LANGUAGE_FRENCH, node.ChildNodes[1].InnerText);

            text[LANGUAGE_ENGLISH] = new SelectableText(XNA.Font, mArticleName[LANGUAGE_ENGLISH]);
            text[LANGUAGE_FRENCH] = new SelectableText(XNA.Font, mArticleName[LANGUAGE_FRENCH]);

            string col = node.ChildNodes[28].InnerText;
            int r = Convert.ToInt32(col.Substring(1, 3));
            int g = Convert.ToInt32(col.Substring(5, 3));
            int b = Convert.ToInt32(col.Substring(9, 3));
            color = new Color(r, g, b);
            //r12rg456b789
            //012345678901

            // materials
            if (node.ChildNodes[23] == null)
            {
                // no secondary materials
                PopulateMaterials(node.ChildNodes[22].InnerText, "");
            }
            else
            {
                // secondary materials exist
                PopulateMaterials(node.ChildNodes[22].InnerText, node.ChildNodes[23].InnerText);
            }

            // keywords
            AddKeywordsStems(node.ChildNodes[8].InnerText);
            AddKeywordsStems(node.ChildNodes[9].InnerText);
            AddKeywordsStems(node.ChildNodes[10].InnerText);

            function = node.ChildNodes[11].InnerText;
            canadianSignificance = node.ChildNodes[12].InnerText;
            techSignificance = node.ChildNodes[13].InnerText;
        }