diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog
index dd410eb1b..7f12b5c98 100644
--- a/gramps2/ChangeLog
+++ b/gramps2/ChangeLog
@@ -1,3 +1,14 @@
+2006-06-03  Brian Matherly  <brian@gramps-project.org>
+	* src/docgen/ODFDoc.py: add Table of Contents mark
+	* src/docgen/OpenOfficeDoc.py: add Table of Contents mark
+	* src/plugins/DetDecendantReport: add Table of Contents marks
+	* src/plugins/AncestorReport.py: add Table of Contents marks
+	* src/plugins/DetAncestralReport.py: add Table of Contents marks
+	* src/plugins/DecendReport.py: add Table of Contents marks
+	* src/plugins/IndivComplete.py: add Table of Contents marks
+	* src/plugins/FamilyGroup.py: add Table of Contents marks
+	* src/BaseDoc.py: add TOC levels
+
 2006-06-03  Don Allingham  <don@gramps-project.org>
 	* src/DisplayTabs/_BackRefList.py (BackRefList.right_click): 
 	override right click, because Remove and Add have no relevence
diff --git a/gramps2/src/BaseDoc.py b/gramps2/src/BaseDoc.py
index 537524932..dec3141bd 100644
--- a/gramps2/src/BaseDoc.py
+++ b/gramps2/src/BaseDoc.py
@@ -1161,12 +1161,13 @@ class IndexMark:
     """
     Defines a mark to be associated with text for indexing.
     """
-    def __init__(self, key="", type=INDEX_TYPE_ALP):
+    def __init__(self, key="", type=INDEX_TYPE_ALP, level=1):
         """
         Initialize the object with default values, unless values are specified.
         """
-        self.type = type
         self.key = key
+        self.type = type
+        self.level = level
 
 #------------------------------------------------------------------------
 #
diff --git a/gramps2/src/docgen/ODFDoc.py b/gramps2/src/docgen/ODFDoc.py
index 66ddbe285..57c3d9d7f 100644
--- a/gramps2/src/docgen/ODFDoc.py
+++ b/gramps2/src/docgen/ODFDoc.py
@@ -835,9 +835,11 @@ class ODFDoc(BaseDoc.BaseDoc):
             key = key.replace('"','&quot;')
             if mark.type == BaseDoc.INDEX_TYPE_ALP:
                 self.cntnt.write('<text:alphabetical-index-mark ')
+                self.cntnt.write('text:string-value="%s" />' % key)
             elif mark.type == BaseDoc.INDEX_TYPE_TOC:
                 self.cntnt.write('<text:toc-mark ')
-            self.cntnt.write('text:string-value="%s" />' % key)
+                self.cntnt.write('text:string-value="%s" ' % key)
+                self.cntnt.write('text:outline-level="%d" />' % mark.level)
         self.cntnt.write(escape(text,_esc_map))
 
     def _write_manifest(self):
diff --git a/gramps2/src/docgen/OpenOfficeDoc.py b/gramps2/src/docgen/OpenOfficeDoc.py
index 6f5ce7f60..06237c996 100644
--- a/gramps2/src/docgen/OpenOfficeDoc.py
+++ b/gramps2/src/docgen/OpenOfficeDoc.py
@@ -738,9 +738,11 @@ class OpenOfficeDoc(BaseDoc.BaseDoc):
             key = key.replace('"','&quot;')
             if mark.type == BaseDoc.INDEX_TYPE_ALP:
                 self.cntnt.write('<text:alphabetical-index-mark ')
+                self.cntnt.write('text:string-value="%s" />' % key)
             elif mark.type == BaseDoc.INDEX_TYPE_TOC:
                 self.cntnt.write('<text:toc-mark ')
-            self.cntnt.write('text:string-value="%s" />' % key)
+                self.cntnt.write('text:string-value="%s" ' % key)
+                self.cntnt.write('text:outline-level="%d" />' % mark.level)
         self.cntnt.write(escape(text,_esc_map))
 
     def _write_manifest(self):
diff --git a/gramps2/src/plugins/AncestorReport.py b/gramps2/src/plugins/AncestorReport.py
index 9601f857e..7f0e37bd4 100644
--- a/gramps2/src/plugins/AncestorReport.py
+++ b/gramps2/src/plugins/AncestorReport.py
@@ -98,8 +98,10 @@ class AncestorReport(Report):
         self.apply_filter(self.start_person.get_handle(),1)
 
         name = NameDisplay.displayer.display_formal(self.start_person)
+        title = _("Ahnentafel Report for %s") % name
+        mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1)        
         self.doc.start_paragraph("AHN-Title")
-        self.doc.write_text(_("Ahnentafel Report for %s") % name)
+        self.doc.write_text(title,mark)
         self.doc.end_paragraph()
     
         keys = self.map.keys()
@@ -111,8 +113,9 @@ class AncestorReport(Report):
                 if self.pgbrk and generation > 0:
                     self.doc.page_break()
                 generation += 1
+                mark =  BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,2)  
                 self.doc.start_paragraph("AHN-Generation")
-                self.doc.write_text(_("Generation %d") % generation)
+                self.doc.write_text(_("Generation %d") % generation,mark)
                 self.doc.end_paragraph()
 
             self.doc.start_paragraph("AHN-Entry","%d." % key)
@@ -166,7 +169,8 @@ class AncestorOptions(ReportOptions):
         para.set_font(font)
         para.set_header_level(1)
         para.set_top_margin(0.25)
-        para.set_bottom_margin(0.25)        
+        para.set_bottom_margin(0.25)
+        para.set_alignment(BaseDoc.PARA_ALIGN_CENTER)       
         #para.set(pad=0.5)
         para.set_description(_('The style used for the title of the page.'))
         default_style.add_style("AHN-Title",para)
diff --git a/gramps2/src/plugins/DescendReport.py b/gramps2/src/plugins/DescendReport.py
index 82068fac5..cca2f591a 100644
--- a/gramps2/src/plugins/DescendReport.py
+++ b/gramps2/src/plugins/DescendReport.py
@@ -150,7 +150,9 @@ class DescendantReport(Report):
     def write_report(self):
         self.doc.start_paragraph("DR-Title")
         name = NameDisplay.displayer.display(self.start_person)
-        self.doc.write_text(_("Descendants of %s") % name)
+        title = _("Descendants of %s") % name
+        mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1)
+        self.doc.write_text(title,mark)
         self.doc.end_paragraph()
         self.dump(1,self.start_person)
 
diff --git a/gramps2/src/plugins/DetAncestralReport.py b/gramps2/src/plugins/DetAncestralReport.py
index 6e8756f30..2b53f1e4c 100644
--- a/gramps2/src/plugins/DetAncestralReport.py
+++ b/gramps2/src/plugins/DetAncestralReport.py
@@ -149,7 +149,8 @@ class DetAncestorReport(Report):
         name = _nd.display_name(self.start_person.get_primary_name())
         self.doc.start_paragraph("DAR-Title")
         title = _("Ancestral Report for %s") % name
-        self.doc.write_text(title)
+        mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1)
+        self.doc.write_text(title,mark)
         self.doc.end_paragraph()
 
         keys = self.map.keys()
@@ -163,7 +164,8 @@ class DetAncestorReport(Report):
                     self.doc.page_break()
                 self.doc.start_paragraph("DAR-Generation")
                 text = _("Generation %d") % (generation+1)
-                self.doc.write_text(text)
+                mark = BaseDoc.IndexMark(text,BaseDoc.INDEX_TYPE_TOC,2)
+                self.doc.write_text(text,mark)
                 self.doc.end_paragraph()
                 generation = generation + 1
                 if self.childRef:
@@ -666,6 +668,7 @@ class DetAncestorOptions(ReportOptions):
         para.set_header_level(1)
         para.set_top_margin(0.25)
         para.set_bottom_margin(0.25)
+        para.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
         para.set_description(_('The style used for the title of the page.'))
         default_style.add_style("DAR-Title",para)
 
diff --git a/gramps2/src/plugins/DetDescendantReport.py b/gramps2/src/plugins/DetDescendantReport.py
index 9dc8cd941..2620b1513 100644
--- a/gramps2/src/plugins/DetDescendantReport.py
+++ b/gramps2/src/plugins/DetDescendantReport.py
@@ -181,7 +181,8 @@ class DetDescendantReport(Report):
 
         title = _("Descendant Report for %(person_name)s") % {
                     'person_name' : name }
-        self.doc.write_text(title)
+        mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1)
+        self.doc.write_text(title,mark)
         self.doc.end_paragraph()
 
         keys = self.map.keys()
@@ -194,7 +195,8 @@ class DetDescendantReport(Report):
                 self.doc.page_break()
             self.doc.start_paragraph("DDR-Generation")
             text = _("Generation %d") % (generation+1)
-            self.doc.write_text(text)
+            mark = BaseDoc.IndexMark(text,BaseDoc.INDEX_TYPE_TOC,2)
+            self.doc.write_text(text,mark)
             self.doc.end_paragraph()
             if self.childRef:
                 self.prev_gen_handles = self.gen_handles.copy()
@@ -701,6 +703,7 @@ class DetDescendantOptions(ReportOptions):
         para.set_header_level(1)
         para.set_top_margin(0.25)
         para.set_bottom_margin(0.25)
+        para.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
         para.set_description(_('The style used for the title of the page.'))
         default_style.add_style("DDR-Title",para)
 
diff --git a/gramps2/src/plugins/FamilyGroup.py b/gramps2/src/plugins/FamilyGroup.py
index c89de5873..8fd6fa6ae 100644
--- a/gramps2/src/plugins/FamilyGroup.py
+++ b/gramps2/src/plugins/FamilyGroup.py
@@ -607,9 +607,11 @@ class FamilyGroup(Report):
     def dump_family(self,family_handle,generation):
         self.doc.start_paragraph('FGR-Title')
         if self.recursive and self.generations:
-            self.doc.write_text(_("Family Group Report - Generation %d") % generation)
+            title=_("Family Group Report - Generation %d") % generation
         else:
-            self.doc.write_text(_("Family Group Report") )
+            title=_("Family Group Report")
+        mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1)
+        self.doc.write_text( title, mark )
         self.doc.end_paragraph()
 	
         family = self.database.get_family_from_handle(family_handle)
@@ -866,6 +868,7 @@ class FamilyGroupOptions(ReportOptions):
         font.set_bold(1)
         para = BaseDoc.ParagraphStyle()
         para.set_font(font)
+        para.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
         para.set_description(_("The style used for the title of the page."))
         default_style.add_style('FGR-Title',para)
 
diff --git a/gramps2/src/plugins/IndivComplete.py b/gramps2/src/plugins/IndivComplete.py
index 4e7c5359c..33a472442 100644
--- a/gramps2/src/plugins/IndivComplete.py
+++ b/gramps2/src/plugins/IndivComplete.py
@@ -416,9 +416,10 @@ class IndivCompleteReport(Report):
         
         media_list = self.start_person.get_media_list()
         name = self.start_person.get_primary_name().get_regular_name()
-        mark = ReportUtils.get_person_mark(self.database,self.start_person)
+        title = _("Summary of %s") % name
+        mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1)
         self.doc.start_paragraph("IDS-Title")
-        self.doc.write_text(_("Summary of %s") % name,mark)
+        self.doc.write_text(title,mark)
         self.doc.end_paragraph()
 
         self.doc.start_paragraph("IDS-Normal")