Esempio n. 1
0
        // The main method that causes the front page to be created.
        public void Create()
        {
            string keywords = "family tree history " + GMConfig.Instance.OwnersName;
            string title    = GMConfig.Instance.SiteTitle;

            HTMLFile f = null;

            try {
                f = new HTMLFile(GMConfig.Instance.FrontPageURL, title, PageDescription, keywords); // Creates a new file, and puts standard header html into it.
                f.WriteLine("  <div id=\"page\"> <!-- page -->");
                f.WriteLine("    <div id=\"cover\"> <!-- cover -->");

                f.WriteLine("<h1>{0}</h1>", EscapeHTML(title, false));

                if (!string.IsNullOrEmpty(GMConfig.Instance.FrontPageImageFilename))
                {
                    Rectangle newArea     = new Rectangle(0, 0, 0, 0);
                    string    pictureFile = CopyMultimedia(GMConfig.Instance.FrontPageImageFilename, "", 0, 0, ref newArea, null);
                    if (!string.IsNullOrEmpty(pictureFile))
                    {
                        f.WriteLine("<p><img src=\"{0}\" alt=\"Front page image\" /></p>", pictureFile);
                    }
                }

                if (!string.IsNullOrEmpty(GMConfig.Instance.CommentaryText))
                {
                    if (GMConfig.Instance.CommentaryIsHtml)
                    {
                        f.WriteLine("<p>{0}</p>", GMConfig.Instance.CommentaryText);
                    }
                    else
                    {
                        f.WriteLine("<p>{0}</p>", EscapeHTML(GMConfig.Instance.CommentaryText, false));
                    }
                }

                if (GMConfig.Instance.ShowFrontPageStats)
                {
                    string individuals = fStats.Individuals == 0 ? "no" : fStats.Individuals.ToString();
                    individuals += " individual";
                    if (fStats.Individuals != 1)
                    {
                        individuals += "s";
                    }

                    string sources = fStats.Sources == 0 ? "" : string.Concat(", cross-referenced to ", fStats.Sources.ToString(), " source");
                    if (fStats.Sources > 1)
                    {
                        sources += "s";
                    }

                    string fileType   = fStats.NonPicturesIncluded ? "multimedia file" : "image";
                    string multimedia = fStats.MultimediaFiles == 0 ? "" : string.Concat(". There are links to ", fStats.MultimediaFiles.ToString(), " ", fileType);

                    if (fStats.MultimediaFiles > 1)
                    {
                        multimedia += "s";
                    }

                    f.WriteLine(string.Concat("       <p>This website contains records on ", individuals, sources, multimedia, ".</p>"));
                }

                f.WriteLine("       <div id=\"links\"> <!-- links -->");
                f.WriteLine(string.Concat("         <p><a href=\"individuals1.", GMConfig.Instance.HtmlExtension, "\">", GMConfig.Instance.IndexTitle, "</a></p>"));
                f.WriteLine("       </div> <!-- links -->");
                if (GMConfig.Instance.KeyIndividuals != null && GMConfig.Instance.KeyIndividuals.Count > 0)
                {
                    // Although in theory you might want a restricted individual as a key individual, (they still form part of the tree), in practice this isn't allowed:
                    var censoredKeyIndividuals = new List <string>(GMConfig.Instance.KeyIndividuals.Count);

                    foreach (string keyXref in GMConfig.Instance.KeyIndividuals)
                    {
                        GDMIndividualRecord air = fTree.XRefIndex_Find(keyXref) as GDMIndividualRecord;
                        if (air != null)
                        {
                            censoredKeyIndividuals.Add(MakeLink(air));
                        }
                    }

                    if (censoredKeyIndividuals.Count > 0)
                    {
                        string plural = "";
                        if (censoredKeyIndividuals.Count > 1)
                        {
                            plural = "s";
                        }
                        f.WriteLine("<div id=\"keyindividuals\">");
                        f.WriteLine("<p>Key Individual{0}:</p>", plural);
                        f.WriteLine("<ul>");
                        foreach (string air_link in censoredKeyIndividuals)
                        {
                            f.WriteLine("<li>{0}</li>", air_link);
                        }
                        f.WriteLine("</ul>");
                        f.WriteLine("</div> <!-- keyindividuals -->");
                    }
                }

                string byEmail = "";
                // Email contact address
                if (!string.IsNullOrEmpty(GMConfig.Instance.UserEmailAddress))
                {
                    byEmail = string.Concat(" by <a href=\"mailto:", GMConfig.Instance.UserEmailAddress, "\">", EscapeHTML(GMConfig.Instance.UserEmailAddress, false), "</a>");
                }

                // Add brand and contact label
                f.WriteLine("<p>Website created{0} using GEDmill.</p>", byEmail);
                // Add last update string
                if (GMConfig.Instance.AddHomePageCreateTime)
                {
                    f.WriteLine("<p>Created on {0}.</p>", GMHelper.GetNowDateStr());
                }

                // Add link to users main website
                if (!string.IsNullOrEmpty(GMConfig.Instance.MainWebsiteLink))
                {
                    f.WriteLine("<p><a href=\"{0}\">Return to main site</a></p>", GMConfig.Instance.MainWebsiteLink);
                }

                f.WriteLine("    </div> <!-- cover -->");
                f.WriteLine("  </div> <!-- page -->");
            } catch (IOException e) {
                fLogger.WriteError("Caught IO Exception(7) : ", e);
            } catch (ArgumentException e) {
                fLogger.WriteError("Caught Argument Exception(7) : ", e);
            } finally {
                if (f != null)
                {
                    // Add standard footer to the file
                    f.Close();
                }
            }
        }
Esempio n. 2
0
        // Constructor. Creates a file with the given name and writes a standard HTML header.
        public HTMLFile(string filename, string title, string description, string keywords)
        {
            // This is for CJ who ended up with 17000 files plastered all over her desktop...
            if (GMHelper.IsDesktop(filename))
            {
                throw new HTMLException("A problem occurred when creating an HTML file:\r\nGEDmill will not place files onto the Desktop.");
            }

            fLogger.WriteInfo("HTMLFile : " + filename);

            if (File.Exists(filename))
            {
                // Delete any current file
                File.SetAttributes(filename, FileAttributes.Normal);
                File.Delete(filename);
            }
            fStream = null;
            try {
                fStream = new FileStream(filename, FileMode.Create, FileAccess.Write);
            } catch (NotSupportedException) {
                throw new HTMLException(string.Format("A problem occurred when creating an HTML file:\r\nThe path or filename {0} is not valid.", filename));
            }

            if (fStream != null)
            {
                var encoding = new UTF8EncodingWithoutPreamble();
                fWriter = new StreamWriter(fStream, encoding);

                fWriter.WriteLine("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
                fWriter.WriteLine("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">");
                fWriter.WriteLine("  <head>");
                fWriter.WriteLine("    <link rel=\"stylesheet\" type=\"text/css\" href=\"" + GMConfig.Instance.StylesheetFilename + ".css\" />");
                if (GMConfig.Instance.AllowMultipleImages) // Multiple images feature is currently (10Dec08) the only thing that uses javascript
                {
                    fWriter.WriteLine("    <script type=\"text/javascript\" src=\"gedmill.js\"></script>");
                }
                fWriter.WriteLine("    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
                fWriter.WriteLine("    <meta http-equiv=\"imagetoolbar\" content=\"no\" />");
                fWriter.WriteLine(string.Concat("    <meta name=\"Title\" content=\"", title, "\" />"));
                fWriter.WriteLine(string.Concat("    <meta name=\"Description\" content=\"", description, "\" />"));
                fWriter.WriteLine(string.Concat("    <meta name=\"Keywords\" content=\"", keywords, "\" />"));
                fWriter.WriteLine("    <meta name=\"Version\" content=\"1.00\" />");
                fWriter.WriteLine(string.Concat("    <meta name=\"VersionDate\" content=\"", GMHelper.GetNowDateStr(), "\" />"));
                fWriter.WriteLine(string.Concat("    <title>", title, "</title>"));
                fWriter.WriteLine("  </head>");
                fWriter.WriteLine("  ");
                fWriter.WriteLine("  <body>");
            }
        }
Esempio n. 3
0
        public void Create()
        {
            fLogger.WriteInfo("CCreatorStylesheet::Create()");

            StreamWriter sw = null;

            try {
                if (File.Exists(fCssFilename))
                {
                    // Delete any current file
                    File.SetAttributes(fCssFilename, FileAttributes.Normal);
                    File.Delete(fCssFilename);
                }

                var fs = new FileStream(string.Concat(GMConfig.Instance.OutputFolder, "\\", GMConfig.Instance.StylesheetFilename, ".css"), FileMode.Create, FileAccess.Write);
                sw = new StreamWriter(fs);

                sw.WriteLine(string.Concat("/* CSS file generated by ", GMConfig.SoftwareName, " on ", GMHelper.GetNowDateStr(), " */"));
                sw.WriteLine("BODY {");
                sw.WriteLine("  background-color: #f1f4e9;");
                if (fBackgroundImageFilename != "")
                {
                    sw.WriteLine(string.Concat("  background-image: url(", fBackgroundImageFilename, ");"));
                }
                sw.WriteLine("  color: #000000;");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif;   ");
                sw.WriteLine("  font-size:8pt;");
                sw.WriteLine("}");

                sw.WriteLine("IMG {");
                sw.WriteLine("  border: none;");
                sw.WriteLine("}");

                sw.WriteLine("H1 {");
                sw.WriteLine("  margin:10px 0 4px 0; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  font-size:26pt;");
                sw.WriteLine("  font-weight: bold;");
                sw.WriteLine("}");

                sw.WriteLine("#summary {");
                sw.WriteLine("  margin-bottom:40px;");
                sw.WriteLine("}");

                sw.WriteLine("#parents H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("}");

                sw.WriteLine("#parents P {");
                sw.WriteLine("  margin:4px 4px 4px 11px;");
                sw.WriteLine("}");

                sw.WriteLine("#parents {");
                sw.WriteLine("  margin-bottom:25px;");
                sw.WriteLine("}");

                sw.WriteLine("#events H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("}");

                sw.WriteLine("#facts H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("}");

                sw.WriteLine("#notes H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("}");

                sw.WriteLine("#citations H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("}");

                sw.WriteLine("#citations {");
                sw.WriteLine("  font-family:  Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("  margin-top: 22px;");
                sw.WriteLine("}");

                sw.WriteLine("#text H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("}");

                sw.WriteLine("#references H1 {");
                sw.WriteLine("  font-size:14pt;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("}");

                sw.WriteLine("H2 {");
                sw.WriteLine("  margin:0 0 4px 0; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  font-size:12pt;");
                sw.WriteLine("  font-weight: normal;");
                sw.WriteLine("}");

                sw.WriteLine("H3 {");
                sw.WriteLine("  margin:0 0 4px 0; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("  font-weight: normal;");
                sw.WriteLine("}");

                sw.WriteLine("P {");
                sw.WriteLine("  margin:0; ");
                sw.WriteLine("  text-align:left; ");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("}");

                sw.WriteLine("A {");
                sw.WriteLine("  text-decoration: none;");
                sw.WriteLine("}");

                sw.WriteLine("A:link {");
                sw.WriteLine("  color:#1344e9;");
                sw.WriteLine("  background-color: inherit;");
                sw.WriteLine("}");

                sw.WriteLine("A:visited {");
                sw.WriteLine("  color:#0c2d9a;");
                sw.WriteLine("  background-color: inherit;");
                sw.WriteLine("}");

                sw.WriteLine("A:hover {");
                sw.WriteLine("  color:#0000ff;");
                sw.WriteLine("  background-color: inherit;");
                sw.WriteLine("}");

                sw.WriteLine("A:active {");
                sw.WriteLine("  color:#0c2d9a;");
                sw.WriteLine("  background-color: inherit;");
                sw.WriteLine("}");

                sw.WriteLine("A.email {");
                sw.WriteLine("  font-family: 'Courier New',monospace;");
                sw.WriteLine("}");

                sw.WriteLine("UL {");
                sw.WriteLine("  padding-top: 0;");
                sw.WriteLine("  margin-top: 0;");
                sw.WriteLine("  border-top: 0;");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  list-style-type: none;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#cover H1 {");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("  padding-bottom:38px;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#cover P {");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("  padding-bottom:28px;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#cover DIV#links P {");
                sw.WriteLine("  font-size:12pt;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#page {");
                sw.WriteLine("  width:800px; ");
                sw.WriteLine("  margin:0 auto;");
                sw.WriteLine("  position:relative;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#header {");
                sw.WriteLine("  width:800px;");
                sw.WriteLine("  margin:0 auto;");

                sw.WriteLine("}");
                sw.WriteLine("#header ul {");
                sw.WriteLine("  padding: 0;");
                sw.WriteLine("  margin: 0;");

                sw.WriteLine("}");
                sw.WriteLine("#header li {");
                sw.WriteLine("  display:inline;");
                sw.WriteLine("  font-size:14px;");
                sw.WriteLine("  padding:2px 4px 2px 6px;");
                sw.WriteLine("  line-height:20px;");
                sw.WriteLine("}");

                // For multiple images we like to keep a constant margin down the rhs to accomodate them (IE). Otherwise we just let images float and text spread around them.
                if (GMConfig.Instance.AllowMultipleImages)
                {
                    sw.WriteLine("DIV#main {");
                    int nMainWidth = (760 - GMConfig.Instance.MaxImageWidth);
                    if (nMainWidth < 0)
                    {
                        nMainWidth = 600;
                    }
                    sw.WriteLine("  width: " + nMainWidth + "px;");
                    sw.WriteLine("}");
                }

                sw.WriteLine("DIV#individualSummary P {");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  font-size:22pt;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#photos {");
                sw.WriteLine("  position:relative;");
                sw.WriteLine("  float:right;");
                sw.WriteLine("  margin-top:16px;");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#mainphoto {");
                sw.WriteLine("  width:" + (GMConfig.Instance.MaxImageWidth + 2) + "px;");
                sw.WriteLine("  height:" + (GMConfig.Instance.MaxImageHeight + 40) + "px;");
                sw.WriteLine("  overflow:auto;");
                sw.WriteLine("}");

                sw.WriteLine("IMG#mainphoto_img {");
                sw.WriteLine("  border:1px solid black;");
                sw.WriteLine("}");

                sw.WriteLine("P#mainphoto_title {");
                sw.WriteLine("  font-family:serif;");
                sw.WriteLine("  font-weight:bold;");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("}");

                sw.WriteLine("P#sourcepic_title {");
                sw.WriteLine("  font-family:serif;");
                sw.WriteLine("  font-weight:bold;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#miniphotos {");
                sw.WriteLine("  width:" + (GMConfig.Instance.MaxImageWidth + 2) + "px;");
                sw.WriteLine("  text-align:left;");
                sw.WriteLine("}");

                sw.WriteLine("DIV.miniphoto {");
                sw.WriteLine("  float:left;");
                sw.WriteLine("  width:" + (GMConfig.Instance.MaxThumbnailImageWidth + 3) + "px;");
                sw.WriteLine("  height:" + (GMConfig.Instance.MaxThumbnailImageHeight + 3) + "px;");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("}");

                sw.WriteLine("IMG.miniphoto_img {");
                sw.WriteLine("  border: 1px solid blue;");
                sw.WriteLine("  width:" + (GMConfig.Instance.MaxThumbnailImageWidth + 3) + "px;");
                sw.WriteLine("  height:" + (GMConfig.Instance.MaxThumbnailImageHeight + 3) + "px;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#names {");
                sw.WriteLine("}");

                sw.WriteLine("DIV#references {");
                sw.WriteLine("}");

                sw.WriteLine(".reference {");
                sw.WriteLine("  font-size:8pt;");
                sw.WriteLine("  vertical-align:super;");
                sw.WriteLine("  font-weight:normal;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  line-height: 6pt;");
                sw.WriteLine("}");

                sw.WriteLine(".nicknames {");
                sw.WriteLine("  font-size:12pt;");
                sw.WriteLine("  font-weight: normal;");
                sw.WriteLine("  font-style: italic;");
                sw.WriteLine("}");

                sw.WriteLine(".centred {");
                sw.WriteLine("  text-align: center;");
                sw.WriteLine("}");

                sw.WriteLine("#index {");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("}");

                sw.WriteLine("P.plain {");
                sw.WriteLine("  font-size:11px;");
                sw.WriteLine("  text-align:right;");
                sw.WriteLine("}");

                sw.WriteLine("P.plain A {");
                sw.WriteLine("  text-decoration: none;");
                sw.WriteLine("  color:inherit;");
                sw.WriteLine("}");

                sw.WriteLine("#headingsLinks P {");
                sw.WriteLine("  margin-bottom: 18px;");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  font-size:12pt;");
                sw.WriteLine("  font-weight: bold;");
                sw.WriteLine("  text-align: center;");
                sw.WriteLine("  border-top: 1px solid gray;");
                sw.WriteLine("  border-bottom: 1px solid gray;  ");
                sw.WriteLine("}");

                sw.WriteLine("#index TD {");
                sw.WriteLine("  width:360px;");
                sw.WriteLine("}");

                sw.WriteLine("#events {");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  line-height: 14pt;");
                sw.WriteLine("}");

                sw.WriteLine(".eventNote {");
                sw.WriteLine("  font-style: italic; ");
                sw.WriteLine("}");

                sw.WriteLine("#text {");
                sw.WriteLine("  font-family: 'Times New Roman', serif; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-size:13pt;");
                sw.WriteLine("  margin: 22px 0 0 0;");
                sw.WriteLine("}");

                sw.WriteLine("#notes {");
                sw.WriteLine("  font-family: 'Times New Roman', serif; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-size:13pt;");
                sw.WriteLine("  margin-top: 22px;");
                sw.WriteLine("}");

                sw.WriteLine("#references {");
                sw.WriteLine("  font-family:  Verdana, Arial, Helvetica, sans-serif; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("  margin-top: 22px;");
                sw.WriteLine("}");

                sw.WriteLine("#references UL {");
                sw.WriteLine("  margin: 0 0 0 8px;");
                sw.WriteLine("}");

                sw.WriteLine("#notes UL {");
                sw.WriteLine("  list-style-type: disc;");
                sw.WriteLine("  margin-left:8px;");
                sw.WriteLine("  padding-left:0px;");
                sw.WriteLine("}");

                sw.WriteLine("#notes LI {");
                sw.WriteLine("  text-align:left; ");
                sw.WriteLine("  font-family: Verdana, Arial, Helvetica, sans-serif;");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("}");

                sw.WriteLine("#sourcePics {");
                sw.WriteLine("  margin: 20px 0 24px 0;");
                sw.WriteLine("}");

                sw.WriteLine("P.pretext {");
                sw.WriteLine("  font-family: \"Courier New\", monospace; ");
                sw.WriteLine("  text-align: left;");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("  font-weight:normal;");
                sw.WriteLine("  margin: 0 0 0 0;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#footer {");
                sw.WriteLine("  margin-top: 64px;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#footer P {");
                sw.WriteLine("  font-size:11px;");
                sw.WriteLine("  text-align:right;");
                sw.WriteLine("}");

                sw.WriteLine("#events TD {");
                sw.WriteLine("  padding: 0 0 6px 8px;");
                sw.WriteLine("  vertical-align: top;");
                sw.WriteLine("}");

                sw.WriteLine("#facts TD {");
                sw.WriteLine("  padding: 0 0 6px 8px;");
                sw.WriteLine("  vertical-align: top;");
                sw.WriteLine("}");

                sw.WriteLine("#events TD.date {");
                sw.WriteLine("  width:160px;");
                sw.WriteLine("}");

                sw.WriteLine("#facts TD.date {");
                sw.WriteLine("  width:160px;");
                sw.WriteLine("}");

                sw.WriteLine("TD.date P {");
                sw.WriteLine("  font-weight:normal;");
                sw.WriteLine("}");

                sw.WriteLine("TD.event P {");
                sw.WriteLine("  font-weight:normal;");
                sw.WriteLine("  line-height: 14pt;"); // Stops IE truncating bottom of gedcomLine
                sw.WriteLine("  margin-bottom:2px;"); // No this does actually.
                sw.WriteLine("}");

                sw.WriteLine("TD P.important {");
                sw.WriteLine("  font-weight:bold;");
                sw.WriteLine("}");

                sw.WriteLine("#minitree {");
                sw.WriteLine("  position:relative;");
                sw.WriteLine("  width:100%;");
                sw.WriteLine("  overflow:auto;");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#keyindividuals P {");
                sw.WriteLine("  padding-bottom: 8px;");
                sw.WriteLine("}");

                sw.WriteLine("DIV#keyindividuals UL {");
                sw.WriteLine("  text-align:center;");
                sw.WriteLine("  margin-left:auto;");
                sw.WriteLine("  margin-right:auto;");
                sw.WriteLine("  font-size:10pt;");
                sw.WriteLine("}");

                sw.WriteLine("DIV.hr {");
                sw.WriteLine("  height:0;");
                sw.WriteLine("  border-top:1px solid #eee;");
                sw.WriteLine("  border-bottom:1px solid #aaa;");
                sw.WriteLine("}");
            } catch (IOException e) {
                fLogger.WriteError("Caught IO Exception(5) : ", e);
            } catch (ArgumentException e) {
                fLogger.WriteError("Caught Argument Exception(5) : ", e);
            } catch (UnauthorizedAccessException e) {
                fLogger.WriteError("Caught UnauthorizedAccessException(5) : ", e);
            } finally {
                if (sw != null)
                {
                    sw.Close();
                }
            }
        }