// todo Define remainder of vars
        public override void LoadDetails(XmlNode node, KmlRoot owner)
        {
            if (node["name"] != null)
            {
                Name = node["name"].InnerText;
            }

            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.Name == "Style")
                {
                    KmlStyle style = new KmlStyle();
                    style.LoadDetails(child, owner);
                    Style = style;
                    if (!string.IsNullOrEmpty(style.ID))
                    {
                        owner.Styles.Add(style.ID, style);
                    }
                }
                if (child.Name == "StyleMap")
                {
                    KmlStyleMap style = new KmlStyleMap();
                    style.LoadDetails(child, owner);
                    if (!string.IsNullOrEmpty(style.ID))
                    {
                        owner.Styles.Add(style.ID, style);
                    }
                }
            }

            base.LoadDetails(node, owner);

            if (node["open"] != null)
            {
                open = node["open"].InnerText.Trim() == "1";
            }

            if (node["visibility"] != null)
            {
                visibility = node["visibility"].InnerText.Trim() == "1";
            }

            if (node["atom:author"] != null)
            {
                atom_author = node["atom:author"].InnerText;
            }

            if (node["atom:link"] != null)
            {
                atom_link = node["atom:link"].InnerText;
            }

            if (node["address"] != null)
            {
                address = node["address"].InnerText;
            }

            if (node["xal:AddressDetails"] != null)
            {
                xal_AddressDetails = node["xal:AddressDetails"].InnerText;
            }

            if (node["description"] != null)
            {
                description = node["description"].InnerText;
            }

            if (node["Snippet"] != null)
            {
                Snippet = node["Snippet"].InnerText;
            }

            if (node["Region"] != null)
            {
                region = new KmlRegion();
                region.LoadDetails(node["Region"], owner);
            }
            if (node["LookAt"] != null)
            {
                LookAt = new KmlLookAt();
                LookAt.LoadDetails(node["LookAt"], owner);
            }

            if (node["TimeSpan"] != null)
            {
                Time = new KmlTimeSpan();
                Time.LoadDetails(node["TimeSpan"], owner);
                owner.UpdateTimeSpanRange(Time);
            }

            if (node["TimeStamp"] != null)
            {
                Time = new KmlTimeSpan();
                Time.LoadDetails(node["TimeStamp"], owner);
                owner.UpdateTimeSpanRange(Time);
            }

            if (node["styleUrl"] != null)
            {
                string url = node["styleUrl"].InnerText;

                if (url.StartsWith("#"))
                {
                    // Internal reference
                    if (owner != null)
                    {
                        if (owner.Document != null)
                        {
                            this.Style = owner.Styles[url.Remove(0, 1)];
                        }
                    }
                }
            }

            if (node["StyleSelector"] != null)
            {
                Style = new KmlStyle();
                if (node["StyleSelector"]["Style"] != null)
                {
                    Style.LoadDetails(node["StyleSelector"]["Style"], owner);
                }

                //todo add stle options

            }
            //todo finish up all of this ! Missing fields and types galore
        }