/// <summary>
        /// Build an error message for manual email, event log, and simple message boxes
        /// </summary>
        /// <returns></returns>
        private string BuildErrorMessage()
        {
            StringBuilder sb = new StringBuilder(4096);

            sb.Append("Program Name:  ");
            sb.Append(ProgramName);
            sb.Append("\n");

            sb.Append("Assembly Name:  ");
            sb.Append(AssemblyName);
            sb.Append("\n");

            sb.Append("Class:  ");
            sb.Append(ClassName);
            sb.Append("\n");

            sb.Append("Procedure:  ");
            sb.Append(ProcedureName);
            sb.Append("\n");

            sb.Append("Version:  ");
            sb.Append(Version);
            sb.Append("\n");

            sb.Append("Error Message:  ");
            sb.Append(GUIException.Message);
            sb.Append("\n");

            sb.Append("Stack Trace:  ");
            sb.Append(GUIException.StackTrace);
            sb.Append("\n");

            sb.Append("Additional Info:  ");
            sb.Append(AdditionalInfo);
            sb.Append("\n");

            sb.Append("Steps:  ");
            sb.Append(Steps);
            sb.Append("\n");

            sb.Append("Source:  ");
            sb.Append(GUIException.Source);
            sb.Append("\n");

            sb.Append("Target:  ");
            sb.Append(GUIException.TargetSite);
            sb.Append("\n");

            sb.Append("Exception Type:  ");
            sb.Append(GUIException.GetType());
            sb.Append("\n");

            sb.Append("Error Date:  ");
            sb.Append(FormatUtil.FormatUSDateTime(DateTime.Now));
            sb.Append("  (");
            sb.Append(SystemUtil.GetCurrentTimeZone());
            sb.Append(")\n");

            return(sb.ToString());
        }
        /// <summary>
        /// Get an XML Message to send in the email
        /// </summary>
        /// <returns></returns>
        public string GetXMLMessage()
        {
            //Write XML file to a memory stream
            MemoryStream  memStream  = new MemoryStream();
            XmlTextWriter textWriter = new XmlTextWriter(memStream, Encoding.ASCII);

            textWriter.Formatting = Formatting.Indented;

            // Opens the document
            textWriter.WriteStartDocument();

            // Write first element
            textWriter.WriteStartElement("Error");

            //Error XML Version
            textWriter.WriteStartElement("ErrorXMLVersion", "");
            textWriter.WriteString("1.0");
            textWriter.WriteEndElement();

            //Error Information
            textWriter.WriteStartElement("ProgramName", "");
            textWriter.WriteString(ProgramName);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("AssemblyName", "");
            textWriter.WriteString(AssemblyName);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Class", "");
            textWriter.WriteString(ClassName);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Procedure", "");
            textWriter.WriteString(ProcedureName);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Version", "");
            textWriter.WriteString(Version);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("ErrorMessage", "");
            textWriter.WriteString(GUIException.Message);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("StackTrace", "");
            textWriter.WriteString(GUIException.StackTrace);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("AdditionalInfo", "");
            textWriter.WriteString(AdditionalInfo);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Source", "");
            textWriter.WriteString(GUIException.Source);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Target", "");
            textWriter.WriteString(GUIException.TargetSite.ToString());
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("ExceptionType", "");
            textWriter.WriteString(GUIException.GetType().ToString());
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("ErrorDate", "");
            textWriter.WriteString(FormatUtil.FormatUSDateTime(DateTime.Now) + "  (" + SystemUtil.GetCurrentTimeZone() + ")");
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Steps", "");
            textWriter.WriteString(Steps);
            textWriter.WriteEndElement();

            //System Information
            textWriter.WriteStartElement("UserName", "");
            textWriter.WriteString(UserName);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("PCName", "");
            textWriter.WriteString(Environment.MachineName);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Culture", "");
            textWriter.WriteString(Culture);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("OS", "");
            textWriter.WriteString(SystemInfo.GetOSVersion());
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("CPU", "");
            textWriter.WriteString(SystemInfo.GetCPUInfo());
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("RAM", "");
            textWriter.WriteString(SystemInfo.GetTotalRAM());
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("HD", "");
            textWriter.WriteString(SystemInfo.GetFreeSpace(Path.GetPathRoot(Environment.CurrentDirectory)));
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("Framework", "");
            textWriter.WriteString(Environment.Version.ToString());
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("SystemDirectory", "");
            textWriter.WriteString(Environment.SystemDirectory);
            textWriter.WriteEndElement();

            textWriter.WriteStartElement("CurrentDirectory", "");
            textWriter.WriteString(FileUtil.GetCurrentDirectory());
            textWriter.WriteEndElement();

            //Write Final element
            textWriter.WriteEndElement();

            // Ends the document.
            textWriter.WriteEndDocument();

            // close writer
            textWriter.Close();

            return(Encoding.ASCII.GetString(memStream.ToArray()));
        }