[geneagrapher] 196/226: Adding test data grabbed using the get_data.py script.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Sat Jul 11 17:11:09 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch master
in repository geneagrapher.

commit c5d8006033932af0244d82a60e7ca7ddb468cb93
Author: David Alber <alber.david at gmail.com>
Date:   Sat Dec 24 00:11:04 2011 -0800

    Adding test data grabbed using the get_data.py script.
---
 tests/geneagrapher/testdata/10275.html       | 297 +++++++++++++++++++
 tests/geneagrapher/testdata/12681.html       | 277 +++++++++++++++++
 tests/geneagrapher/testdata/127470.html      | 278 +++++++++++++++++
 tests/geneagrapher/testdata/127946.html      | 279 +++++++++++++++++
 tests/geneagrapher/testdata/137705.html      | 282 ++++++++++++++++++
 tests/geneagrapher/testdata/137717.html      | 276 +++++++++++++++++
 tests/geneagrapher/testdata/143630.html      | 275 +++++++++++++++++
 tests/geneagrapher/testdata/15165.html       | 280 ++++++++++++++++++
 tests/geneagrapher/testdata/151876.html      | 260 ++++++++++++++++
 tests/geneagrapher/testdata/17851.html       | 299 +++++++++++++++++++
 tests/geneagrapher/testdata/17946.html       | 293 ++++++++++++++++++
 tests/geneagrapher/testdata/18230.html       | 284 ++++++++++++++++++
 tests/geneagrapher/testdata/18231.html       | 295 ++++++++++++++++++
 tests/geneagrapher/testdata/18232.html       | 261 ++++++++++++++++
 tests/geneagrapher/testdata/18233.html       | 260 ++++++++++++++++
 tests/geneagrapher/testdata/18603.html       | 276 +++++++++++++++++
 tests/geneagrapher/testdata/19953.html       | 260 ++++++++++++++++
 tests/geneagrapher/testdata/28292.html       | 293 ++++++++++++++++++
 tests/geneagrapher/testdata/29458.html       | 276 +++++++++++++++++
 tests/geneagrapher/testdata/29642.html       | 276 +++++++++++++++++
 tests/geneagrapher/testdata/30484.html       | 263 +++++++++++++++++
 tests/geneagrapher/testdata/36991.html       | 279 +++++++++++++++++
 tests/geneagrapher/testdata/47064.html       | 298 +++++++++++++++++++
 tests/geneagrapher/testdata/51261.html       | 302 +++++++++++++++++++
 tests/geneagrapher/testdata/51907.html       | 358 ++++++++++++++++++++++
 tests/geneagrapher/testdata/52965.html       | 275 +++++++++++++++++
 tests/geneagrapher/testdata/52996.html       | 261 ++++++++++++++++
 tests/geneagrapher/testdata/53658.html       | 261 ++++++++++++++++
 tests/geneagrapher/testdata/55175.html       | 260 ++++++++++++++++
 tests/geneagrapher/testdata/62547.html       | 288 ++++++++++++++++++
 tests/geneagrapher/testdata/7298.html        | 427 +++++++++++++++++++++++++++
 tests/geneagrapher/testdata/7383.html        | 298 +++++++++++++++++++
 tests/geneagrapher/testdata/79297.html       | 261 ++++++++++++++++
 tests/geneagrapher/testdata/79562.html       | 260 ++++++++++++++++
 tests/geneagrapher/testdata/79568.html       | 281 ++++++++++++++++++
 tests/geneagrapher/testdata/79568583832.html |   1 +
 tests/geneagrapher/testdata/84016.html       | 303 +++++++++++++++++++
 tests/geneagrapher/testdata/89841.html       | 260 ++++++++++++++++
 tests/geneagrapher/testdata/99457.html       | 263 +++++++++++++++++
 tests/geneagrapher/testdata/999999999.html   |   1 +
 40 files changed, 10777 insertions(+)

diff --git a/tests/geneagrapher/testdata/10275.html b/tests/geneagrapher/testdata/10275.html
new file mode 100644
index 0000000..502ccde
--- /dev/null
+++ b/tests/geneagrapher/testdata/10275.html
@@ -0,0 +1,297 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Stefan Drobot</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Stefan  Drobot </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=209857&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1939</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=10275&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=10071">Konrad Heuvers</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1969</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=9980">William Huffman III</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1979</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=10018">Robert Johnson</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1975</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=10085">Kenneth Kimble</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1969</td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=10067">John Logan</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1970</td><td style="text-align: center">7</td></tr>
+
+<tr ><td><a href="id.php?id=10023">David Mayer</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1974</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=10091">Benjamin Plybon</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1968</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=132163">Adam Rybarski</a></td><td>Institute of Mathematics, Polish Academy of Science</td><td style="padding-left: 2px; padding-right: 2px">1957</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=96562">Eugene Santos</a></td><td>The Ohio State University</td><td style="padding-left: 2px; padding-right: 2px">1965</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=132164">Leonard Sulski</a></td><td>University of Notre Dame</td><td style="padding-left: 2px; padding-right: 2px">1963</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Stefan Drobot has 10 <a href="javascript:var x=window.open('students.php?name=Stefan Drobot','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 18 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=10275&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/12681.html b/tests/geneagrapher/testdata/12681.html
new file mode 100644
index 0000000..f8f8a19
--- /dev/null
+++ b/tests/geneagrapher/testdata/12681.html
@@ -0,0 +1,277 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Stefan Banach</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Stefan  Banach </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-groups.dcs.st-andrews.ac.uk/history/Mathematicians/Banach.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=30300&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1920</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Sur les opérations dans les ensembles abstraits et leur application aux équations intégrales</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br>Advisor 2: <a href="id.php?id=13344">Kazimierz  Twardowski</a><br></p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=13056">Stanislaw Mazur</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1932</td><td style="text-align: center">132</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Stefan Banach has 1 <a href="javascript:var x=window.open('students.php?name=Stefan Banach','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 133 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=12681&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/127470.html b/tests/geneagrapher/testdata/127470.html
new file mode 100644
index 0000000..ef329c2
--- /dev/null
+++ b/tests/geneagrapher/testdata/127470.html
@@ -0,0 +1,278 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Józef Łukaszewicz</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Józef  Łukaszewicz </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Uniwersytet Wrocławski</span> 1957</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 00—General </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84593">Tomasz Rolski</a></td><td></td><td style="padding-left: 2px; padding-right: 2px"> </td><td style="text-align: center">6</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Józef Łukaszewicz has 1 <a href="javascript:var x=window.open('students.php?name=Józef Łukaszewicz','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 7 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=127470&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/127946.html b/tests/geneagrapher/testdata/127946.html
new file mode 100644
index 0000000..ba69a17
--- /dev/null
+++ b/tests/geneagrapher/testdata/127946.html
@@ -0,0 +1,279 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Christian  Thomasius</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Christian   Thomasius </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">M. Phil. <span style="color:
+  #006633; margin-left: 0.5em"></span> 1672</span>
+
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=137717">Valentin  Alberti</a><br>Advisor 2: <a href="id.php?id=137705">Jakob  Thomasius</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=127946&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=144155">Nicolaus Gundling</a></td><td>Martin-Luther-Universität Halle-Wittenberg</td><td style="padding-left: 2px; padding-right: 2px">1703</td><td style="text-align: center">3934</td></tr>
+
+<tr ><td><a href="id.php?id=127803">Johann  von Ludewig</a></td><td>Martin-Luther-Universität Halle-Wittenberg</td><td style="padding-left: 2px; padding-right: 2px">1690</td><td style="text-align: center">2223</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Christian  Thomasius has 2 <a href="javascript:var x=window.open('students.php?name=Christian  Thomasius','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 6116 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height= [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=127946&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/137705.html b/tests/geneagrapher/testdata/137705.html
new file mode 100644
index 0000000..196c461
--- /dev/null
+++ b/tests/geneagrapher/testdata/137705.html
@@ -0,0 +1,282 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Jakob Thomasius</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Jakob  Thomasius </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Magister der Philosophie <span style="color:
+  #006633; margin-left: 0.5em">Universität Leipzig</span> 1643</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=143630">Friedrich  Leibniz</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=137705&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=60985">Gottfried Leibniz</a></td><td>Universität Leipzig</td><td style="padding-left: 2px; padding-right: 2px">1666</td><td style="text-align: center">66195</td></tr>
+
+<tr ><td><a href="id.php?id=21235">Otto Mencke</a></td><td>Universität Leipzig</td><td style="padding-left: 2px; padding-right: 2px">1665</td><td style="text-align: center">65676</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=127946">Christian  Thomasius</a></td><td></td><td style="padding-left: 2px; padding-right: 2px">1672</td><td style="text-align: center">6116</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Jakob Thomasius has 3 <a href="javascript:var x=window.open('students.php?name=Jakob Thomasius','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 91248 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=137705&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/137717.html b/tests/geneagrapher/testdata/137717.html
new file mode 100644
index 0000000..6c500b2
--- /dev/null
+++ b/tests/geneagrapher/testdata/137717.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Valentin Alberti</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Valentin  Alberti </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Dr. theol. <span style="color:
+  #006633; margin-left: 0.5em">Universität Leipzig</span> 1678</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center">Advisor: Unknown</p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=127946">Christian  Thomasius</a></td><td></td><td style="padding-left: 2px; padding-right: 2px">1672</td><td style="text-align: center">6116</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Valentin Alberti has 1 <a href="javascript:var x=window.open('students.php?name=Valentin Alberti','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 6117 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=137717&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/143630.html b/tests/geneagrapher/testdata/143630.html
new file mode 100644
index 0000000..b7ca282
--- /dev/null
+++ b/tests/geneagrapher/testdata/143630.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Friedrich Leibniz</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Friedrich  Leibniz </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em"> <span style="color:
+  #006633; margin-left: 0.5em"></span> </span>
+
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center">Advisor: Unknown</p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=137705">Jakob Thomasius</a></td><td>Universität Leipzig</td><td style="padding-left: 2px; padding-right: 2px">1643</td><td style="text-align: center">91248</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Friedrich Leibniz has 1 <a href="javascript:var x=window.open('students.php?name=Friedrich Leibniz','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 91249 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descend [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=143630&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/15165.html b/tests/geneagrapher/testdata/15165.html
new file mode 100644
index 0000000..6fdbcb7
--- /dev/null
+++ b/tests/geneagrapher/testdata/15165.html
@@ -0,0 +1,280 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Aleksander Rajchman</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Aleksander  Rajchman </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1921</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=15165&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=106715">Zygmunt Zalcwasser</a></td><td>Uniwersytet Warszawski</td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=6388">Antoni Zygmund</a></td><td>Uniwersytet Warszawski</td><td style="padding-left: 2px; padding-right: 2px">1923</td><td style="text-align: center">986</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Aleksander Rajchman has 2 <a href="javascript:var x=window.open('students.php?name=Aleksander Rajchman','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 988 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225') [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=15165&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/151876.html b/tests/geneagrapher/testdata/151876.html
new file mode 100644
index 0000000..efffac8
--- /dev/null
+++ b/tests/geneagrapher/testdata/151876.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Karl von Staudt</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Karl Georg Christian von Staudt </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Von_Staudt.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Friedrich-Alexander-Universität Erlangen-Nürnberg</span> 1822</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=151876&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/17851.html b/tests/geneagrapher/testdata/17851.html
new file mode 100644
index 0000000..612368b
--- /dev/null
+++ b/tests/geneagrapher/testdata/17851.html
@@ -0,0 +1,299 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Mark Kac</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Mark  Kac </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Kac.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=193014&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1937</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=17851&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=33562">Wayne Barrett</a></td><td>New York University</td><td style="padding-left: 2px; padding-right: 2px">1975</td><td style="text-align: center">2</td></tr>
+
+<tr ><td><a href="id.php?id=64884">Ronald Fox</a></td><td>The Rockefeller University</td><td style="padding-left: 2px; padding-right: 2px">1969</td><td style="text-align: center">13</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=68043">Anatole Joffe</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1959</td><td style="text-align: center">8</td></tr>
+
+<tr ><td><a href="id.php?id=81481">Talbot Katz</a></td><td>The Rockefeller University</td><td style="padding-left: 2px; padding-right: 2px">1982</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=30598">Harry Kesten</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1958</td><td style="text-align: center">91</td></tr>
+
+<tr ><td><a href="id.php?id=7719">William LeVeque</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1948</td><td style="text-align: center">5</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=31297">Abraham Mark</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1948</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=101351">William Newcomb</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1952</td><td style="text-align: center">3</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=62285">Daniel Ray</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1953</td><td style="text-align: center">18</td></tr>
+
+<tr ><td><a href="id.php?id=11769">Murray Rosenblatt</a></td><td>Cornell University</td><td style="padding-left: 2px; padding-right: 2px">1949</td><td style="text-align: center">88</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=18843">Daniel Stroock</a></td><td>The Rockefeller University</td><td style="padding-left: 2px; padding-right: 2px">1967</td><td style="text-align: center">14</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Mark Kac has 11 <a href="javascript:var x=window.open('students.php?name=Mark Kac','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 253 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=17851&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/17946.html b/tests/geneagrapher/testdata/17946.html
new file mode 100644
index 0000000..060e214
--- /dev/null
+++ b/tests/geneagrapher/testdata/17946.html
@@ -0,0 +1,293 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Gustav Dirichlet</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Gustav Peter Lejeune Dirichlet </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Dirichlet.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=208401&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Honorary <span style="color:
+  #006633; margin-left: 0.5em">Rheinische Friedrich-Wilhelms-Universität Bonn</span> 1827</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Partial Results on Fermat's Last Theorem, Exponent 5 (He studied with Poisson and Fourier before returning to Germany)</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 11—Number theory </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=17865">Simeon Denis Poisson</a><br>Advisor 2: <a href="id.php?id=17981">Jean-Baptiste Joseph Fourier</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=17946&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=17983">Ferdinand Eisenstein</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1845</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=156729">August Kramer</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1839</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=17982">Leopold Kronecker</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1845</td><td style="text-align: center">3598</td></tr>
+
+<tr ><td><a href="id.php?id=19964">Rudolf Lipschitz</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1853</td><td style="text-align: center">35115</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=156723">Gustav Michaelis</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1837</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=76438">Johann Roethig</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1857</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=63736">Leo Wituski</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1853</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Gustav Dirichlet has 7 <a href="javascript:var x=window.open('students.php?name=Gustav Dirichlet','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 36753 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=17946&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/18230.html b/tests/geneagrapher/testdata/18230.html
new file mode 100644
index 0000000..2af2e4a
--- /dev/null
+++ b/tests/geneagrapher/testdata/18230.html
@@ -0,0 +1,284 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Johann Pfaff</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Johann Friedrich Pfaff </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Pfaff.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Dr. phil. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1786</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Commentatio de ortibus et occasibus siderum apud auctores classicos commemoratis</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=66476">Abraham Gotthelf Kästner</a><br>Advisor 2: <a href="id.php?id=127710">Johann Elert Bode</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=18230&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=151180">Johann Bartels</a></td><td>Friedrich-Schiller-Universität Jena</td><td style="padding-left: 2px; padding-right: 2px">1799</td><td style="text-align: center">8328</td></tr>
+
+<tr ><td><a href="id.php?id=18231">Carl Gauß</a></td><td>Universität Helmstedt</td><td style="padding-left: 2px; padding-right: 2px">1799</td><td style="text-align: center">50586</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=35953">August Möbius</a></td><td>Universität Leipzig</td><td style="padding-left: 2px; padding-right: 2px">1815</td><td style="text-align: center">3311</td></tr>
+
+<tr ><td><a href="id.php?id=140135">Karl Mollweide</a></td><td>Universität Helmstedt</td><td style="padding-left: 2px; padding-right: 2px">1796</td><td style="text-align: center">91</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Johann Pfaff has 4 <a href="javascript:var x=window.open('students.php?name=Johann Pfaff','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 57244 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=18230&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/18231.html b/tests/geneagrapher/testdata/18231.html
new file mode 100644
index 0000000..3f5faa6
--- /dev/null
+++ b/tests/geneagrapher/testdata/18231.html
@@ -0,0 +1,295 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Carl Gauß</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Carl Friedrich Gauß </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Gauss.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=71920&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Universität Helmstedt</span> 1799</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Demonstratio nova theorematis omnem functionem algebraicam rationalem integram unius variabilis in factores reales primi vel secundi gradus resolvi posse</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18230">Johann Friedrich Pfaff</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=18231&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=18603">Friedrich Bessel</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1810</td><td style="text-align: center">22365</td></tr>
+
+<tr ><td><a href="id.php?id=18233">J. W. Richard Dedekind</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1852</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=62547">Johann Encke</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1844</td><td style="text-align: center">6407</td></tr>
+
+<tr ><td><a href="id.php?id=29642">Christian Gerling</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1812</td><td style="text-align: center">35116</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=55175">Sophie Germain</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1830</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=29458">Christoph Gudermann</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1841</td><td style="text-align: center">18955</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=19953">Johann Listing</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1834</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=18232">Georg Riemann</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1851</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=151876">Karl von Staudt</a></td><td>Friedrich-Alexander-Universität Erlangen-Nürnberg</td><td style="padding-left: 2px; padding-right: 2px">1822</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Carl Gauß has 9 <a href="javascript:var x=window.open('students.php?name=Carl Gauß','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 50586 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=18231&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/18232.html b/tests/geneagrapher/testdata/18232.html
new file mode 100644
index 0000000..b9a4ce7
--- /dev/null
+++ b/tests/geneagrapher/testdata/18232.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Georg Riemann</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Georg Friedrich Bernhard Riemann </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Riemann.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=148180&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1851</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Grundlagen für eine allgemeine Theorie der Funktionen einer veränderlichen complexen Größe</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=18232&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/18233.html b/tests/geneagrapher/testdata/18233.html
new file mode 100644
index 0000000..1405d21
--- /dev/null
+++ b/tests/geneagrapher/testdata/18233.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - J. W. Richard Dedekind</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+J. W. Richard (Julius Wilhelm) Dedekind </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Dedekind.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1852</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Über die Theorie der Eulerschen Integrale</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=18233&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/18603.html b/tests/geneagrapher/testdata/18603.html
new file mode 100644
index 0000000..398e5fd
--- /dev/null
+++ b/tests/geneagrapher/testdata/18603.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Friedrich Bessel</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Friedrich Wilhelm Bessel </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Bessel.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1810</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=25484">Heinrich Scherk</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1823</td><td style="text-align: center">22364</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Friedrich Bessel has 1 <a href="javascript:var x=window.open('students.php?name=Friedrich Bessel','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 22365 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=18603&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/19953.html b/tests/geneagrapher/testdata/19953.html
new file mode 100644
index 0000000..1a715e9
--- /dev/null
+++ b/tests/geneagrapher/testdata/19953.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Johann Listing</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Johann Benedict Listing </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Listing.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1834</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+De Superficiebus secundi ordinis</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=19953&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/28292.html b/tests/geneagrapher/testdata/28292.html
new file mode 100644
index 0000000..ef871a1
--- /dev/null
+++ b/tests/geneagrapher/testdata/28292.html
@@ -0,0 +1,293 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Z. W. (Bill) Birnbaum</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Z. W. (Bill) (Zygmunt William) Birnbaum </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Birnbaum.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=37195&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1929</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=28292&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=27995">Orval Klose</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1956</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=27996">Bennet Lientz</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1968</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=27997">Albert Marshall</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1958</td><td style="text-align: center">9</td></tr>
+
+<tr ><td><a href="id.php?id=27999">Ronald Pyke</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1956</td><td style="text-align: center">60</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=28000">John Raymond</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1949</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=28001">Roger Shorack</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1969</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=28002">Monroe Sirken</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1950</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=28003">Fred Tingey</a></td><td>University of Washington</td><td style="padding-left: 2px; padding-right: 2px">1951</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Z. W. (Bill) Birnbaum has 8 <a href="javascript:var x=window.open('students.php?name=Z. W. (Bill) Birnbaum','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 77 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225'); [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=28292&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/29458.html b/tests/geneagrapher/testdata/29458.html
new file mode 100644
index 0000000..442afbc
--- /dev/null
+++ b/tests/geneagrapher/testdata/29458.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Christoph Gudermann</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Christoph  Gudermann </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Gudermann.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1841</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Über die Entwicklung der Modularfunctionen</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7486">Karl Weierstraß</a></td><td>Universität Königsberg</td><td style="padding-left: 2px; padding-right: 2px">1854</td><td style="text-align: center">18954</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Christoph Gudermann has 1 <a href="javascript:var x=window.open('students.php?name=Christoph Gudermann','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 18955 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=2 [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=29458&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/29642.html b/tests/geneagrapher/testdata/29642.html
new file mode 100644
index 0000000..b55005c
--- /dev/null
+++ b/tests/geneagrapher/testdata/29642.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Christian Gerling</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Christian Ludwig Gerling </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Dr. phil. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1812</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Methodi proiectionis orthographicae usum ad calculos parallacticos facilitandos explicavit simulque eclipsin solarem die</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7402">Julius Plücker</a></td><td>Philipps-Universität Marburg</td><td style="padding-left: 2px; padding-right: 2px">1823</td><td style="text-align: center">35115</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Christian Gerling has 1 <a href="javascript:var x=window.open('students.php?name=Christian Gerling','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 35116 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descen [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=29642&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/30484.html b/tests/geneagrapher/testdata/30484.html
new file mode 100644
index 0000000..531366a
--- /dev/null
+++ b/tests/geneagrapher/testdata/30484.html
@@ -0,0 +1,263 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Peter Pappas</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Peter Chris Pappas </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=216283&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">The Pennsylvania State University</span> 1982</span>
+
+<img src="img/flags/UnitedStates.gif" alt="UnitedStates" width="57" height="30" style="border: 0; vertical-align: middle" title="UnitedStates">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+The Model Theoretic Structure of Group Rings</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 16—Associative rings and algebras </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=22617">Stephen George Simpson</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=30484&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/36991.html b/tests/geneagrapher/testdata/36991.html
new file mode 100644
index 0000000..94e3e2e
--- /dev/null
+++ b/tests/geneagrapher/testdata/36991.html
@@ -0,0 +1,279 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Marek Fisz</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Marek  Fisz </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=257656&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Politechnika Wrocławska</span> 1950</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Quality Control of Mass Production by Variables</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 60—Probability theory and stochastic processes </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br>Advisor 2: <a href="id.php?id=25112">Edward  Marczewski</a><br></p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=36992">Ignacy Kotlarski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1950</td><td style="text-align: center">3</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Marek Fisz has 1 <a href="javascript:var x=window.open('students.php?name=Marek Fisz','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 4 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=36991&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/47064.html b/tests/geneagrapher/testdata/47064.html
new file mode 100644
index 0000000..c84b528
--- /dev/null
+++ b/tests/geneagrapher/testdata/47064.html
@@ -0,0 +1,298 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Martin Ohm</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Martin  Ohm </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Ohm_Martin.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Dr. phil. <span style="color:
+  #006633; margin-left: 0.5em">Friedrich-Alexander-Universität Erlangen-Nürnberg</span> 1811</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+De elevatione serierum infinitarum secundi ordinis ad potestatem exponentis indeterminati</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=47025">Karl Christian von Langsdorf</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=47064&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=58045">Friedrich August</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1862</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=58046">Friedrich Bachmann</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1861</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=18598">Paul Bachmann</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1862</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=58056">Joseph Brutkowski</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1859</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=45117">Eduard Heine</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1842</td><td style="text-align: center">3</td></tr>
+
+<tr ><td><a href="id.php?id=19964">Rudolf Lipschitz</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1853</td><td style="text-align: center">35115</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51692">Leo Pochhammer</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1863</td><td style="text-align: center">2</td></tr>
+
+<tr ><td><a href="id.php?id=51693">Friedrich Prym</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1863</td><td style="text-align: center">1483</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=63741">Wilhelm Wagner</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1855</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=63742">Hermann Waldaestel</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1860</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=63740">Wilhelm Wernicke</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1863</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Martin Ohm has 11 <a href="javascript:var x=window.open('students.php?name=Martin Ohm','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 35147 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=47064&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/51261.html b/tests/geneagrapher/testdata/51261.html
new file mode 100644
index 0000000..2954ce1
--- /dev/null
+++ b/tests/geneagrapher/testdata/51261.html
@@ -0,0 +1,302 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Antonio Ambrosetti</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Antonio  Ambrosetti </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=25420&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em"></span> </span>
+
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center">Advisor: Unknown</p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=51261&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=141973">Pietro Baldi</a></td><td>Scuola Internazionale Superiore di Studi Avanzati, Trieste</td><td style="padding-left: 2px; padding-right: 2px">2007</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=56380">Massimiliano Berti</a></td><td>Università di Pisa</td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center">3</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=101578">Luca Biasco</a></td><td>Scuola Internazionale Superiore di Studi Avanzati</td><td style="padding-left: 2px; padding-right: 2px">2002</td><td style="text-align: center">1</td></tr>
+
+<tr ><td><a href="id.php?id=133764">Marco Calahorrano</a></td><td>Scuola Normale Superiore di Pisa and Escuela Politécnica Nacional-Quito</td><td style="padding-left: 2px; padding-right: 2px">2009</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=53658">S. Cingolani</a></td><td>Scuola Normale Superiore di Pisa</td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51266">Vittorio Coti Zelati</a></td><td>Università degli Studi di Trieste</td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=145198">Veronica Felli</a></td><td>Scuola Internazionale Superiore di Studi Avanzati, Trieste</td><td style="padding-left: 2px; padding-right: 2px">2003</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=119100">Pietro Majer</a></td><td>Università di Pisa</td><td style="padding-left: 2px; padding-right: 2px"> </td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51231">Andrea Malchiodi</a></td><td>Scuola Internazionale Superiore di Studi Avanzati</td><td style="padding-left: 2px; padding-right: 2px">2000</td><td style="text-align: center">1</td></tr>
+
+<tr ><td><a href="id.php?id=53468">P. Mayer</a></td><td>Università di Pisa</td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=108651">Simone Secchi</a></td><td>Scuola Internazionale Superiore di Studi Avanzati, Trieste</td><td style="padding-left: 2px; padding-right: 2px">2002</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=52627">S. Solomini</a></td><td>Università degli Studi di Trieste</td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=124451">Enzo Vitillaro</a></td><td></td><td style="padding-left: 2px; padding-right: 2px"></td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Antonio Ambrosetti has 13 <a href="javascript:var x=window.open('students.php?name=Antonio Ambrosetti','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 17 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');">  [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=51261&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/51907.html b/tests/geneagrapher/testdata/51907.html
new file mode 100644
index 0000000..0e7a342
--- /dev/null
+++ b/tests/geneagrapher/testdata/51907.html
@@ -0,0 +1,358 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Władysław Orlicz</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Władysław Roman Orlicz </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Orlicz.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1928</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Z teorii szeregów ortogonalnych (On the Theory of Orthogonal Series)</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 46—Functional analysis </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor 1: <a href="id.php?id=85756">Eustachy I. Żyliński</a><br>Advisor 2: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=51907&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51934">Jerzy Albrycht</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1959</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51928">Andrzej Alexiewicz</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1944</td><td style="text-align: center">15</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51933">Feliks Barański</a></td><td></td><td style="padding-left: 2px; padding-right: 2px">1958</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51939">Dobiesław Bobrowski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1962</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=11319">Victor Bogdan</a></td><td>Polish Academy of Sciences</td><td style="padding-left: 2px; padding-right: 2px">1960</td><td style="text-align: center">45</td></tr>
+
+<tr ><td><a href="id.php?id=51961">Czeslaw Bylka</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1976</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51938">Quan-Fu Ci</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1960</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51966">Jaroslaw Ciemnoczołowski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1984</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51936">Zbigniew Ciesielski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1960</td><td style="text-align: center">56</td></tr>
+
+<tr ><td><a href="id.php?id=51955">Lech Drewnowski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1971</td><td style="text-align: center">4</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51948">Maria Filar</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1966</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51956">Barbara Firlej</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1972</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51963">Wojciech Friedrich</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1979</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51965">Danuta Jach</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1980</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51943">Marian Jarosz</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1963</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51958">Marek Karpiński</a></td><td>Institute of Mathematics, Polish Academy of Science</td><td style="padding-left: 2px; padding-right: 2px">1973</td><td style="text-align: center">12</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51954">Franciszek Klorek</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1970</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51930">Stanisław Knapowski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1957</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51952">Bogdan Kotkowski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1969</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51960">Przemysław Kranz</a></td><td>Institute of Mathematics, Polish Academy of Science</td><td style="padding-left: 2px; padding-right: 2px">1975</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51959">Iwo Labuda</a></td><td>Institute of Mathematics, Polish Academy of Science</td><td style="padding-left: 2px; padding-right: 2px">1973</td><td style="text-align: center">2</td></tr>
+
+<tr ><td><a href="id.php?id=51951">Ryszard Leśniewicz</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1967</td><td style="text-align: center">9</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51964">Lech Maligranda</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1979</td><td style="text-align: center">5</td></tr>
+
+<tr ><td><a href="id.php?id=51937">Wanda Matuszewska</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1960</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51932">Józef Meder</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1958</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51931">Julian Musielak</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1958</td><td style="text-align: center">39</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51944">Jadwiga Pawłowska</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1964</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51940">Zbigniew Polniakowski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1962</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51941">Jerzy Radecki</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1962</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51946">Zbigniew Ratajczak</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1964</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51942">Henryk Ratajski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1962</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51949">Jurand Ryterski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1966</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51953">Henryk Sampławski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1969</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51962">Ryszard Serafin</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1978</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51957">Stanisław Szufla</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1972</td><td style="text-align: center">3</td></tr>
+
+<tr ><td><a href="id.php?id=51935">Roman Taberski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1959</td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51929">Eustachy Tarnawski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1951</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51947">Adam Wachułka</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1965</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=51950">Aleksander Waszak</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1967</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=51945">Henryk Wiśniewski</a></td><td>Uniwersytet im. Adama Mickiewicza Poznań</td><td style="padding-left: 2px; padding-right: 2px">1964</td><td style="text-align: center">4</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Władysław Orlicz has 40 <a href="javascript:var x=window.open('students.php?name=Władysław Orlicz','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 235 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=51907&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/52965.html b/tests/geneagrapher/testdata/52965.html
new file mode 100644
index 0000000..34413bc
--- /dev/null
+++ b/tests/geneagrapher/testdata/52965.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Walter Mayer</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Walter  Mayer </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em"></span> </span>
+
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center">Advisor: Unknown</p>
+
+<p style="text-align: center">Student:
+<br>
+
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=52996">Gustav Bergmann</a></td><td>Universität Wien</td><td style="padding-left: 2px; padding-right: 2px">1928</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Walter Mayer has 1 <a href="javascript:var x=window.open('students.php?name=Walter Mayer','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">student</a> and 1 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendant</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=52965&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/52996.html b/tests/geneagrapher/testdata/52996.html
new file mode 100644
index 0000000..56b8c5f
--- /dev/null
+++ b/tests/geneagrapher/testdata/52996.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Gustav Bergmann</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Gustav  Bergmann </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=296394&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Universität Wien</span> 1928</span>
+
+<img src="img/flags/Austria.gif" alt="Austria" width="45" height="30" style="border: 0; vertical-align: middle" title="Austria">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Zwei Beiträge zur mehrdimensionalen Differentialgeometrie</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=52965">Walter  Mayer</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=52996&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/53658.html b/tests/geneagrapher/testdata/53658.html
new file mode 100644
index 0000000..ccd2393
--- /dev/null
+++ b/tests/geneagrapher/testdata/53658.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - S. Cingolani</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+S.  Cingolani </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=367917&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Scuola Normale Superiore di Pisa</span> </span>
+
+<img src="img/flags/Italy.gif" alt="Italy" width="45" height="30" style="border: 0; vertical-align: middle" title="Italy">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=51261">Antonio  Ambrosetti</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=53658&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/55175.html b/tests/geneagrapher/testdata/55175.html
new file mode 100644
index 0000000..a2aacd2
--- /dev/null
+++ b/tests/geneagrapher/testdata/55175.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Sophie Germain</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Sophie  Germain </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Germain.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1830</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Honorary degree awarded by Gottingen under pressure from Gauss</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=55175&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/62547.html b/tests/geneagrapher/testdata/62547.html
new file mode 100644
index 0000000..5ea1228
--- /dev/null
+++ b/tests/geneagrapher/testdata/62547.html
@@ -0,0 +1,288 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Johann Encke</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Johann Franz Friedrich Encke </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em"> <span style="color:
+  #006633; margin-left: 0.5em">Universität Berlin</span> 1844</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+From 1811 on Encke studied mathematics in Goettingen as pupil of C.F. Gauss. In May 1816 he moved to Seeberg near Gotha to work as observer at the observatory there. In 1822 he was promoted Director of that observatory and in 1825 followed a call to be the Director of the Observatory at Berlin. He supervised the new construction of the observatory from 1832 -35. In 1844 he became ordinary professor at the University of Berlin and was allowed to lecture without receiving a doctorate. Clos [...]
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 85—Astronomy and astrophysics </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=18231">Carl Friedrich Gauß</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=62547&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=65029">Carl Bruhns</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1856</td><td style="text-align: center">2845</td></tr>
+
+<tr ><td><a href="id.php?id=156729">August Kramer</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1839</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=17982">Leopold Kronecker</a></td><td>Universität Berlin</td><td style="padding-left: 2px; padding-right: 2px">1845</td><td style="text-align: center">3598</td></tr>
+
+<tr ><td><a href="id.php?id=62590">Joseph Raatz</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1861</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=63737">Franz Woepcke</a></td><td>Humboldt-Universität zu Berlin</td><td style="padding-left: 2px; padding-right: 2px">1847</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Johann Encke has 5 <a href="javascript:var x=window.open('students.php?name=Johann Encke','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 6407 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=62547&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/7298.html b/tests/geneagrapher/testdata/7298.html
new file mode 100644
index 0000000..9b7b746
--- /dev/null
+++ b/tests/geneagrapher/testdata/7298.html
@@ -0,0 +1,427 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - David Hilbert</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+David  Hilbert </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Hilbert.html">Biography</a> <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=85745&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Universität Königsberg</span> 1885</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Über invariante Eigenschaften specieller binärer Formen, insbesondere der Kugelfunctionen</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7404">C. L. Ferdinand (Carl Louis) Lindemann</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=7298&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7396">Wilhelm Ackermann</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1925</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7359">Albert Andrae</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1903</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7389">Bernhard Baule</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1914</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7336">Fritz Beer</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1899</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7392">Heinrich Behmann</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1922</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7346">Felix Bernstein</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center">48</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=53459">Sergej Bernstein</a></td><td>Université Paris IV-Sorbonne</td><td style="padding-left: 2px; padding-right: 2px">1904</td><td style="text-align: center">53</td></tr>
+
+<tr ><td><a href="id.php?id=7299">Otto Blumenthal</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1898</td><td style="text-align: center">5</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7387">Hans Bolza</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1913</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7338">Anne Bosworth</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1899</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7348">Werner Boy</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7368">Ugo Broggi</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1907</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7370">William Cairns</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1907</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7378">Richard Courant</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1910</td><td style="text-align: center">3972</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7367">Arthur Crathorne</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1907</td><td style="text-align: center">9</td></tr>
+
+<tr ><td><a href="id.php?id=7398">Haskell Curry</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1930</td><td style="text-align: center">10</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7339">Max Dehn</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1900</td><td style="text-align: center">753</td></tr>
+
+<tr ><td><a href="id.php?id=7301">Heinrich Dörrie</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1898</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7335">Michael Feldblum</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1899</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7385">Ludwig Föppl</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1912</td><td style="text-align: center">18</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7356">Rudolf Fueter</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1903</td><td style="text-align: center">29</td></tr>
+
+<tr ><td><a href="id.php?id=7384">Paul Funk</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1911</td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7350">Nadeschda Gernet</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1902</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7365">David Gillespie</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1906</td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7380">Kurt Grelling</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1910</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7388">Jakob Grommer</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1914</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7375">Alfred Haar</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1909</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7349">Georg Hamel</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center">252</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7369">Charles Haseman</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1907</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7379">Erich Hecke</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1910</td><td style="text-align: center">2306</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7345">Earle Hedrick</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center">1</td></tr>
+
+<tr ><td><a href="id.php?id=7372">Ernst Hellinger</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1907</td><td style="text-align: center">3</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=67547">Paul Hertz</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1904</td><td style="text-align: center">1</td></tr>
+
+<tr ><td><a href="id.php?id=7340">Karl Hilbert</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1900</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7381">Wallie Hurwitz</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1910</td><td style="text-align: center">218</td></tr>
+
+<tr ><td><a href="id.php?id=19613">Gerhard Janßen</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1913</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7376">Grete Kahn</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1909</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=37342">Edward Kasner</a></td><td>Columbia University</td><td style="padding-left: 2px; padding-right: 2px">1899</td><td style="text-align: center">584</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7355">Oliver Kellogg</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1902</td><td style="text-align: center">153</td></tr>
+
+<tr ><td><a href="id.php?id=7354">Paul Kirchberger</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1902</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7363">Hugo Kistler</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1905</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7394">Hellmuth Kneser</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1921</td><td style="text-align: center">1207</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7371">Robert König</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1907</td><td style="text-align: center">676</td></tr>
+
+<tr ><td><a href="id.php?id=7358">Albert Kraft</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1903</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7366">Wera Lebedeff</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1906</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7360">Karl Julius Lietzmann</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1904</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7377">Klara Löbenstein</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1910</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=66157">Georg Lütkemeyer</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1902</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7341">Sophus Marxsen</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1900</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7357">Charles Mason</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1903</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7382">Otto Mühlendyck</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1911</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=65944">Johann Müller</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1902</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7364">Alexander Myller</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1906</td><td style="text-align: center">74</td></tr>
+
+<tr ><td><a href="id.php?id=13669">Otto Neugebauer</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1926</td><td style="text-align: center">18</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7347">Charles Noble</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7391">George Prange</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1915</td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7337">Legh Reid</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1899</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7395">Walther Rosemann</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1923</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7344">Gottfried Rückle</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7342">Ljubowj Sapolsky</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1900</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7300">Hans von Schaper</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1898</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7390">Kurt Schellenberg</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1915</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=46077">Rudolf Schimmack</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1908</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=7399">Arnold Schmidt</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1934</td><td style="text-align: center">9</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7361">Erhard Schmidt</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1905</td><td style="text-align: center">7677</td></tr>
+
+<tr ><td><a href="id.php?id=7400">Kurt Schütte</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1934</td><td style="text-align: center">148</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7374">Andreas Speiser</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1909</td><td style="text-align: center">19</td></tr>
+
+<tr ><td><a href="id.php?id=7383">Władysław Hugo Steinhaus</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1911</td><td style="text-align: center">1701</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7397">Gabriel Sudan</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1925</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=55699">Teiji Takagi</a></td><td>Tokyo Imperial University</td><td style="padding-left: 2px; padding-right: 2px">1903</td><td style="text-align: center">400</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7343">Edgar Townsend</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1900</td><td style="text-align: center">2</td></tr>
+
+<tr ><td><a href="id.php?id=7362">Wilhelmus Westfall</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1905</td><td style="text-align: center">3</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7373">Hermann Weyl</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1908</td><td style="text-align: center">1560</td></tr>
+
+<tr ><td><a href="id.php?id=7393">Willi Windau</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1921</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=7351">Otto Zoll</a></td><td>Georg-August-Universität Göttingen</td><td style="padding-left: 2px; padding-right: 2px">1901</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, David Hilbert has 75 <a href="javascript:var x=window.open('students.php?name=David Hilbert','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 20385 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=7298&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/7383.html b/tests/geneagrapher/testdata/7383.html
new file mode 100644
index 0000000..cdc9ca8
--- /dev/null
+++ b/tests/geneagrapher/testdata/7383.html
@@ -0,0 +1,298 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Władysław Hugo Steinhaus</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Władysław Hugo Dyonizy Steinhaus </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Steinhaus.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Georg-August-Universität Göttingen</span> 1911</span>
+
+<img src="img/flags/Germany.gif" alt="Germany" width="50" height="30" style="border: 0; vertical-align: middle" title="Germany">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Neue Anwendungen des Dirichlet'schen Prinzips</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7298">David  Hilbert</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=7383&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=12681">Stefan Banach</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1920</td><td style="text-align: center">133</td></tr>
+
+<tr ><td><a href="id.php?id=28292">Z. W. (Bill) Birnbaum</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1929</td><td style="text-align: center">77</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=10275">Stefan Drobot</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1939</td><td style="text-align: center">18</td></tr>
+
+<tr ><td><a href="id.php?id=79297">Henryk Fast</a></td><td>Institute of Mathematics, Polish Academy of Science</td><td style="padding-left: 2px; padding-right: 2px">1958</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=36991">Marek Fisz</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1950</td><td style="text-align: center">4</td></tr>
+
+<tr ><td><a href="id.php?id=17851">Mark Kac</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1937</td><td style="text-align: center">253</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=127470">Józef Łukaszewicz</a></td><td>Uniwersytet Wrocławski</td><td style="padding-left: 2px; padding-right: 2px">1957</td><td style="text-align: center">7</td></tr>
+
+<tr ><td><a href="id.php?id=51907">Władysław Orlicz</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1928</td><td style="text-align: center">235</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=15165">Aleksander Rajchman</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1921</td><td style="text-align: center">988</td></tr>
+
+<tr ><td><a href="id.php?id=89841">Juliusz Schauder</a></td><td>University of Lwów</td><td style="padding-left: 2px; padding-right: 2px">1923</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84016">Stanislaw Trybula</a></td><td>Uniwersytet Wrocławski</td><td style="padding-left: 2px; padding-right: 2px">1960, 1968</td><td style="text-align: center">21</td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Władysław Hugo Steinhaus has 11 <a href="javascript:var x=window.open('students.php?name=Władysław Hugo Steinhaus','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 1701 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width [...]
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=7383&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/79297.html b/tests/geneagrapher/testdata/79297.html
new file mode 100644
index 0000000..797e937
--- /dev/null
+++ b/tests/geneagrapher/testdata/79297.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Henryk Fast</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Henryk  Fast </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=299042&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Institute of Mathematics, Polish Academy of Science</span> 1958</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=79297&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/79562.html b/tests/geneagrapher/testdata/79562.html
new file mode 100644
index 0000000..7a729f4
--- /dev/null
+++ b/tests/geneagrapher/testdata/79562.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - C. Ramalingam</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+C. S. Ramalingam </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Rhode Island</span> 1995</span>
+
+<img src="img/flags/UnitedStates.gif" alt="UnitedStates" width="57" height="30" style="border: 0; vertical-align: middle" title="UnitedStates">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Analysis of Non-Stationary, Multi-Component Signals with Application to Speech</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=79568">Ramdas  Kumaresan</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=79562&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/79568.html b/tests/geneagrapher/testdata/79568.html
new file mode 100644
index 0000000..509f11f
--- /dev/null
+++ b/tests/geneagrapher/testdata/79568.html
@@ -0,0 +1,281 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Ramdas Kumaresan</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Ramdas  Kumaresan </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=297915&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Rhode Island</span> 1982</span>
+
+<img src="img/flags/UnitedStates.gif" alt="UnitedStates" width="57" height="30" style="border: 0; vertical-align: middle" title="UnitedStates">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Estimating the Parameters of Exponentially Damped or Undamped Sinusoidal Signals in Noise</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=13301">Donald Winston Tufts</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=79568&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=79562">C. Ramalingam</a></td><td>University of Rhode Island</td><td style="padding-left: 2px; padding-right: 2px">1995</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=99457">Yadong Wang</a></td><td>University of Rhode Island</td><td style="padding-left: 2px; padding-right: 2px">2003</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Ramdas Kumaresan has 2 <a href="javascript:var x=window.open('students.php?name=Ramdas Kumaresan','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 2 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=79568&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/79568583832.html b/tests/geneagrapher/testdata/79568583832.html
new file mode 100644
index 0000000..b6f0a60
--- /dev/null
+++ b/tests/geneagrapher/testdata/79568583832.html
@@ -0,0 +1 @@
+<p>You have specified an ID that does not exist in the database. Please back up and try again.</p>
\ No newline at end of file
diff --git a/tests/geneagrapher/testdata/84016.html b/tests/geneagrapher/testdata/84016.html
new file mode 100644
index 0000000..7a34f09
--- /dev/null
+++ b/tests/geneagrapher/testdata/84016.html
@@ -0,0 +1,303 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Stanislaw Trybula</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Stanislaw  Trybula </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=174695&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D., Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">Uniwersytet Wrocławski</span> 1960, 1968</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+On Minmax Estimation, Sequential Estimation in Processes with Independent Increments</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 62—Statistics </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p>
+
+<p style="text-align: center">Students:
+<br>
+
+Click <a href="id.php?id=84016&fChrono=1">
+                here</a> to see the students listed in chronological order.
+</p>
+
+
+<table style="margin-left: auto; margin-right: auto">
+<tr><th>Name</th><th>School</th><th>Year</th><th>Descendants</th></tr><tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84026">Andrzej Cegielski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1981</td><td style="text-align: center">2</td></tr>
+
+<tr ><td><a href="id.php?id=84027">Andrzej Grzybowski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1991</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84020">Gabriel Lemiesz</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1979</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=84017">Ryszard Magiera</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1976</td><td style="text-align: center">1</td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84023">Krzysztof Orlowski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1978</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=84025">Zdzislaw Porosinski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1986</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84022">Tadeusz Radzik</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1978</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=84021">Roman Rozanski</a></td><td>Uniwersytet Wrocławski</td><td style="padding-left: 2px; padding-right: 2px">1980</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84019">Magdalena Rutkowska</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1975</td><td style="text-align: center"></td></tr>
+
+<tr ><td><a href="id.php?id=84018">Antoni Styszynski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1976</td><td style="text-align: center"></td></tr>
+
+<tr style="background-color: #E5E6CF;"><td><a href="id.php?id=84024">Krzysztof Szajowski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1979</td><td style="text-align: center">6</td></tr>
+
+<tr ><td><a href="id.php?id=84059">Maciej Wilczyñski</a></td><td>Politechnika Wrocławska</td><td style="padding-left: 2px; padding-right: 2px">1984</td><td style="text-align: center"></td></tr>
+
+
+</table>
+
+<p style="text-align: center">According to our current on-line database, Stanislaw Trybula has 12 <a href="javascript:var x=window.open('students.php?name=Stanislaw Trybula','popup','width=250,height=120,menubar=no,scrollbars=yes,resizable=no,location=no');">students</a> and 21 <a href="javascript:var x=window.open('descendants.php','popup','menubar=no,location=no,width=450,scrollbars=yes,height=225');"> descendants</a>.
+<br>
+We welcome any additional information.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=84016&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/89841.html b/tests/geneagrapher/testdata/89841.html
new file mode 100644
index 0000000..d06988c
--- /dev/null
+++ b/tests/geneagrapher/testdata/89841.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Juliusz Schauder</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Juliusz Pawel Schauder </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+<a href="http://www-history.mcs.st-andrews.ac.uk/Mathematicians/Schauder.html">Biography</a></p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Lwów</span> 1923</span>
+
+<img src="img/flags/Poland.gif" alt="Poland" width="48" height="30" style="border: 0; vertical-align: middle" title="Poland">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+A Bayesian Approach to the Design and Analysis of Case-Control Studies</span></div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=7383">Władysław Hugo Dyonizy Steinhaus</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=89841&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/99457.html b/tests/geneagrapher/testdata/99457.html
new file mode 100644
index 0000000..3b4793f
--- /dev/null
+++ b/tests/geneagrapher/testdata/99457.html
@@ -0,0 +1,263 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
+<title>The Mathematics Genealogy Project - Yadong Wang</title>
+<style type="text/css"> 
+body  {
+	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
+	padding: 0;
+	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
+	color: #000000;
+	font-family: Arial, Helvetica, sans-serif;
+	font-size: 100%;
+	background-color: #5E8059;
+}
+.twoColFixLtHdr #container {
+	width: 780px;  /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */
+	background: #FFFFFF; /* the auto margins (in conjunction with a width) center the page */
+	border: 1px solid #000000;
+	text-align: left; /* this overrides the text-align: center on the body element. */
+	margin-top: 0;
+	margin-right: auto;
+	margin-bottom: 0;
+	margin-left: auto;
+} 
+.twoColFixLtHdr #header {
+	padding: 0 10px 0 20px;  /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */
+	text-align: right;
+	background-color: #CACC8F;
+	height: 57px;
+} 
+.twoColFixLtHdr #header h1 {
+	margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */
+	padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */
+}
+
+.twoColFixLtHdr #main-tile { background: #8BBC83; }
+.twoColFixLtHdr #column-tile { padding-right: 550px; background: white; width: 180px }
+.twoColFixLtHdr #sidebar1 {
+	float: left; /* since this element is floated, a width must be given */
+	width: 160px; /* the background color will be displayed for the length of the content in the column, but no further */
+	padding: 15px 10px 15px 10px;
+	background: #8BBC83;
+	font-size: small;
+	text-align: center;
+}
+   .twoColFixLtHdr #sidebar1 p a:link {
+ color: navy;
+    }
+.twoColFixLtHdr #mainContent { 
+  float: left;
+ width: 600px;
+  margin-right: -600px;
+ position: relative;
+
+
+} 
+   .twoColFixLtHdr #paddingWrapper {
+      padding: 5px 20px;
+	}
+.twoColFixLtHdr #footer {
+	padding: 10px 10px 0 10px;
+	text-align: center;
+	font-size: small;
+	font-weight: normal;
+	background-color: #CACC8F;
+} 
+.clearfix:after {
+    content: "."; 
+    display: block; 
+    height: 0; 
+    clear: both; 
+    visibility: hidden;
+}
+
+.clearfix {display: inline-table;}
+
+
+.twoColFixLtHdr #footer p {
+	margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */
+	padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */
+}
+.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
+	float: right;
+	margin-left: 8px;
+}
+.fltlft { /* this class can be used to float an element left in your page */
+	float: left;
+	margin-right: 8px;
+}
+.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
+	clear:both;
+    height:0;
+    font-size: 1px;
+    line-height: 0px;
+}
+th {
+    text-align: center;
+}
+
+</style>
+<!--[if IE 5]>
+<style type="text/css"> 
+/* place css box model fixes for IE 5* in this conditional comment */
+.twoColFixLtHdr #sidebar1 { width: 190px; }
+</style>
+<![endif]--><!--[if IE]>
+<style type="text/css"> 
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColFixLtHdr #sidebar1 { padding-top: 30px; }
+.twoColFixLtHdr #mainContent { zoom: 1; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+<script src="SpryAssets/SpryMenuBar.js" type="text/javascript">//</script>
+<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css">
+<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css">
+  <script type="text/javascript"> 
+</script>
+
+<script type="text/javascript">
+
+    var _gaq = _gaq || [];
+_gaq.push(['_setAccount', 'UA-16329138-2']);
+_gaq.push(['_setDomainName','none']);
+_gaq.push(['setAllowLinker',true]);
+_gaq.push(['_trackPageview']);
+
+(function() {
+  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+</script></head>
+
+<body class="twoColFixLtHdr">
+
+<div id="container">
+  <div id="header">
+    <a href="index.php"><img src="images/tree-small.gif" alt="Tree" width="46" height="57" style="border: 0" class="fltlft" title="tree"></a>
+    <h1>Mathematics Genealogy Project</h1>
+  <!-- end #header --></div>
+  <div id="column-tile">
+  <div id="main-tile" class="clearfix">
+  <div id="sidebar1">
+    <ul id="MenuBar1" class="MenuBarVertical">
+      <li><a href="index.php">Home</a></li>
+      <li><a href="search.php">Search</a></li>
+      <li><a href="extrema.php">Extrema</a></li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+        <ul>
+          <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php">Acknowledgments</a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+      <li><a href="mirrors.php" class="MenuBarItemSubmenu">Mirrors</a>
+        <ul>
+
+          <li><a href="http://www.genealogy.math.ndsu.nodak.edu/" onclick="pageTracker._link(this.href); return false;">NDSU (main)</a></li>
+          <li><a href="http://www.genealogy.ams.org/" onclick="pageTracker._link(this.href); return false;">AMS</a></li>
+          <li><a href="http://www.math.uni-bielefeld.de/genealogy" onclick="pageTracker._link(this.href); return false;">Bielefeld</a></li>
+          <li><a href="http://genealogy.impa.br/" onclick="pageTracker._link(this.href); return false;">IMPA</a></li>
+        </ul>
+      </li>
+    </ul>
+
+<p>A 
+service of the <a href="http://www.ndsu.edu/">NDSU</a> <a href="http://www.math.ndsu.nodak.edu/">Department of Mathematics</a>, in association with the <a href="http://www.ams.org/">American Mathematical Society</a>.</p>
+    <p>Please <a href="mailto:project@genealogy.math.ndsu.nodak.edu">email us</a> with feedback.</p>
+  <!-- end #sidebar1 --></div>
+  <div id="mainContent"><div id="paddingWrapper">
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="mathjax/MathJax.js">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+    tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
+  });
+
+</script>
+<h2 style="text-align: center; margin-bottom: 0.5ex; margin-top: 1ex">
+Yadong  Wang </h2>
+
+<p style="text-align: center; margin-top: 0; margin-bottom: 0px; font-size: small">
+ <a href="http://www.ams.org/mathscinet/search/author.html?mrauthid=617324&Submit=Search">MathSciNet</a>
+</p>
+
+<div style="margin-left: auto; margin-right: auto; width: 300px"><hr style="width: 300px; height: 0; border-style: solid; border-width: 2px 0 0 0; color: gray; background-color: gray"></div>
+
+<div style="line-height: 30px; text-align: center; margin-bottom: 1ex">
+  <span style="margin-right: 0.5em">Ph.D. <span style="color:
+  #006633; margin-left: 0.5em">University of Rhode Island</span> 2003</span>
+
+<img src="img/flags/UnitedStates.gif" alt="UnitedStates" width="57" height="30" style="border: 0; vertical-align: middle" title="UnitedStates">
+</div>
+
+
+<div style="text-align: center"><span style="color: #000066">Dissertation:</span> <span style="font-style:italic" id="thesisTitle">
+
+Representing Signals Using Only Timing Information and Feature Extraction for Automatic Speech Recognition</span></div>
+
+<div style="text-align: center; margin-top: 1ex">Mathematics Subject Classification: 94—Information and communication, circuits </div>
+
+<p style="text-align: center; line-height: 2.75ex">Advisor: <a href="id.php?id=79568">Ramdas  Kumaresan</a><br></p><p style="text-align: center">No students known.</p>
+<p style="font-size: small; text-align: center">If you have additional information or
+ corrections regarding this mathematician, please use the <a
+ href="submit-data.php?id=99457&edit=0">update form</a>. To submit students of this
+ mathematician, please use the <a href="submit-data.php?id=NEW&edit=0">new
+ data form</a>.</p>
+
+</div><!-- end #paddingWrapper -->
+
+  <!-- end #mainContent --></div>
+	<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
+</div></div>	
+  <div id="footer">
+<ul id="MenuBar2" class="MenuBarHorizontal">
+      <li><a href="search.php">Search</a>        </li>
+      <li><a href="extrema.php">Extrema</a> </li>
+      <li><a href="about.php" class="MenuBarItemSubmenu">About MGP</a>
+          <ul>
+            <li><a href="mission.php">Mission</a></li>
+            <li><a href="news.php" title="Announcements">News</a></li>
+            <li><a href="staff.php">Staff</a></li>
+            <li><a href="recognition.php">Recognition</a></li>
+            <li><a href="acknowledgments.php"><span style="font-size: x-small">Acknowledgments</span></a></li>
+          </ul>
+      </li>
+      <li><a href="links.php">Links</a></li>
+      <li><a href="faq.php" title="Frequently Asked Questions">FAQs</a></li>
+      <li><a href="posters.php">Posters</a></li>
+      <li><a href="submit.php">Submit Data</a></li>
+ 
+</ul>
+<br>
+<p>The Mathematics Genealogy Project is in need of funds 
+to help pay for student help and other associated costs. If you would like to 
+contribute, please <a href="https://epayment.ndus.nodak.edu/C22800_ustores/web/product_detail.jsp?PRODUCTID=2989&SINGLESTORE=true">donate online</a> using credit card or bank transfer or mail  your tax-deductible contribution to:</p>
+
+<p>
+Mathematics Genealogy Project<br> 
+Department of Mathematics<br>
+North Dakota State University<br>
+P. O. Box 6050<br>
+  Fargo, North Dakota 58108-6050</p>
+
+</div>
+<!-- end #container --></div>
+<script type="text/javascript">
+var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+var MenuBar2 = new Spry.Widget.MenuBar("MenuBar2", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
+</script>
+
+</body>
+<!-- InstanceEnd --></html>
diff --git a/tests/geneagrapher/testdata/999999999.html b/tests/geneagrapher/testdata/999999999.html
new file mode 100644
index 0000000..b6f0a60
--- /dev/null
+++ b/tests/geneagrapher/testdata/999999999.html
@@ -0,0 +1 @@
+<p>You have specified an ID that does not exist in the database. Please back up and try again.</p>
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/geneagrapher.git



More information about the debian-science-commits mailing list