private static void read_map_street(XmlReader Input_XmlReader, Map_Info mapInfo)
        {
            string id_string = String.Empty;
            string name = String.Empty;
            if (Input_XmlReader.MoveToAttribute("id"))
                id_string = Input_XmlReader.Value;
            if (Input_XmlReader.MoveToAttribute("name"))
                name = Input_XmlReader.Value;

            // Determine the street id
            long streetid = -1;
            try
            {
                streetid = Convert.ToInt64(id_string.Replace("STR", "").Replace("E", "").Replace("T", ""));
            }
            catch
            {
            }

            while (Input_XmlReader.Read())
            {
                if ((Input_XmlReader.NodeType == XmlNodeType.EndElement) && (Input_XmlReader.Name == "map:street"))
                    return;

                if ((Input_XmlReader.NodeType == XmlNodeType.Element) && (Input_XmlReader.Name == "map:segment"))
                {
                    long sheetid = -1;
                    long start = -1;
                    long end = -1;
                    string direction = String.Empty;
                    string side = String.Empty;
                    string desc = String.Empty;

                    for (int i = 0; i < Input_XmlReader.AttributeCount; i++)
                    {
                        Input_XmlReader.MoveToAttribute(i);
                        switch (Input_XmlReader.Name)
                        {
                            case "sheetid":
                                try
                                {
                                    sheetid = Convert.ToInt64(Input_XmlReader.Value.Replace("MS", "").Replace("SHEET", ""));
                                }
                                catch
                                {
                                }
                                break;

                            case "side":
                                side = Input_XmlReader.Value;
                                break;

                            case "direction":
                                direction = Input_XmlReader.Value;
                                break;

                            case "start":
                                try
                                {
                                    start = Convert.ToInt64(Input_XmlReader.Value.Trim());
                                }
                                catch
                                {
                                }
                                break;

                            case "end":
                                try
                                {
                                    start = Convert.ToInt64(Input_XmlReader.Value.Trim());
                                }
                                catch
                                {
                                }
                                break;
                        }
                    }

                    Input_XmlReader.MoveToElement();
                    if (!Input_XmlReader.IsEmptyElement)
                    {
                        Input_XmlReader.Read();
                        desc = Input_XmlReader.Value;
                    }

                    // Add this street segment information
                    if (sheetid > 0)
                    {
                        mapInfo.Add_Street(streetid, sheetid, name, desc, direction, start, end, side);
                    }
                }
            }
        }