Index: main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js
===================================================================
--- main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js	(revision 33313)
+++ main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js	(revision 33317)
@@ -357,9 +357,9 @@
 function toggleMapSection(options)
 {
-	
 	var sectionID = options["nodeID"];
 	
 	var titleClassifierEl = document.getElementById("title"+sectionID);
 	var jsonNodesStr = titleClassifierEl.getAttribute("data-gps-map-json");
+	//alert("@@@@ got jsonNodesStr |" + jsonNodesStr + "|");
 	var jsonNodes = JSON.parse(jsonNodesStr);
 	
@@ -703,6 +703,25 @@
 
 function createOverlayItems(doc, options) {
-	if(doc.mapoverlay) {
-		//console.log("Have shapes: " + doc.mapoverlay.toString());
+	var loopCounter = 0;
+	if(doc.mapoverlay || doc.childrenMapoverlays) {
+		if(doc.mapoverlay) {
+			// append any child section's mapoverlays onto doc.mapoverlay
+			if(doc.childrenMapoverlays) {				
+				for(loopCounter = 0; loopCounter < doc.childrenMapoverlays.length; loopCounter++) {
+					//console.log("Pushing next child mapoverlay onto doc.mapoverlay: ", doc.childrenMapoverlays[loopCounter]);
+					Array.prototype.push.apply(doc.mapoverlay, doc.childrenMapoverlays[loopCounter]);					
+				}
+				delete doc.childrenMapoverlays; // served its purpose
+			}
+		} else if (doc.childrenMapoverlays) { // no doc.mapoverlay
+			// construct doc.mapoverlay to contain each child section's mapoverlay
+			doc.mapoverlay = [];
+			for(loopCounter = 0; loopCounter < doc.childrenMapoverlays.length; loopCounter++) {
+				//console.log("Pushing next child mapoverlay onto originally empty doc.mapoverlay: ", doc.childrenMapoverlays[loopCounter]);
+				Array.prototype.push.apply(doc.mapoverlay, doc.childrenMapoverlays[loopCounter]);
+			}			
+			delete doc.childrenMapoverlays;  // no more use for this
+		}
+		//console.log("@@@@ Have shapes: ", doc.mapoverlay);		
 		createShapes(doc, options);
 	} else { // backwards compatible to deal with Lat and Lng meta stored for doc
Index: main/trunk/greenstone3/web/interfaces/default/transform/map-tools.xsl
===================================================================
--- main/trunk/greenstone3/web/interfaces/default/transform/map-tools.xsl	(revision 33313)
+++ main/trunk/greenstone3/web/interfaces/default/transform/map-tools.xsl	(revision 33317)
@@ -21,5 +21,5 @@
       <xsl:text>[</xsl:text>
       <xsl:for-each select="//documentNode">
-	<xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate'] or metadataList/metadata[@name = 'GPS.mapOverlay']">
+	<xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate'] or metadataList/metadata[@name = 'GPS.mapOverlay'] or metadataList/metadata[@name = 'children_GPS.mapOverlay']">
 	  <xsl:text>{</xsl:text>
 	  <xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text>
@@ -56,4 +56,17 @@
 		<xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name = 'GPS.mapOverlay']"/>
 	  </xsl:if>
+	  
+	  <xsl:if test="metadataList/metadata[@name = 'children_GPS.mapOverlay']">
+		<xsl:variable name="count"><xsl:value-of select="count(metadataList/metadata[@name = 'children_GPS.mapOverlay'])"/></xsl:variable>
+		<xsl:text disable-output-escaping="yes">,</xsl:text>
+		<xsl:text disable-output-escaping="yes">"childrenMapoverlays":[</xsl:text>
+		<xsl:for-each select="metadataList/metadata[@name = 'children_GPS.mapOverlay']">
+			<xsl:value-of disable-output-escaping="yes" select="current()"/>
+			<xsl:if test="not(position() = $count)">
+				<xsl:text disable-output-escaping="yes">,</xsl:text>
+			</xsl:if>
+		</xsl:for-each>
+		<xsl:text disable-output-escaping="yes">]</xsl:text>
+	  </xsl:if>
 							
 	  <xsl:text>}</xsl:text>
@@ -71,4 +84,5 @@
 	<gsf:metadata name="Coordinate" hidden="true"/>
 	<gsf:metadata name="GPS.mapOverlay" hidden="true"/>
+	<gsf:metadata name="GPS.mapOverlay" select="children" hidden="true"/>
 <!--  these were included in version in query. don't think we need them...
     <gsf:metadata name="Image" hidden="true"/>
Index: main/trunk/greenstone3/web/interfaces/default/transform/pages/document.xsl
===================================================================
--- main/trunk/greenstone3/web/interfaces/default/transform/pages/document.xsl	(revision 33313)
+++ main/trunk/greenstone3/web/interfaces/default/transform/pages/document.xsl	(revision 33317)
@@ -844,5 +844,5 @@
 				<xsl:when test="count(//documentNode) > 0">
 					<xsl:for-each select="//documentNode">
-						<xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate'] or metadataList/metadata[@name = 'GPS.mapOverlay']">
+						<xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate'] or metadataList/metadata[@name = 'GPS.mapOverlay'] or metadataList/metadata[@name = 'children_GPS.mapOverlay']">
 							<xsl:text>{</xsl:text>
 							<xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">",</xsl:text>
@@ -874,4 +874,17 @@
 							</xsl:if>
 							
+							<xsl:if test="metadataList/metadata[@name = 'children_GPS.mapOverlay']">
+								<xsl:variable name="count"><xsl:value-of select="count(metadataList/metadata[@name = 'children_GPS.mapOverlay'])"/></xsl:variable>
+								<xsl:text disable-output-escaping="yes">,</xsl:text>
+								<xsl:text disable-output-escaping="yes">"childrenMapoverlays":[</xsl:text>
+								<xsl:for-each select="metadataList/metadata[@name = 'children_GPS.mapOverlay']">
+									<xsl:value-of disable-output-escaping="yes" select="current()"/>
+									<xsl:if test="not(position() = $count)">
+										<xsl:text disable-output-escaping="yes">,</xsl:text>
+									</xsl:if>
+								</xsl:for-each>
+								<xsl:text disable-output-escaping="yes">]</xsl:text>
+							</xsl:if>
+							
 							<xsl:text>}</xsl:text>
 							
@@ -886,5 +899,5 @@
 				<xsl:otherwise>
 					<xsl:for-each select="/page/pageResponse/document">
-						<xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate']  or metadataList/metadata[@name = 'GPS.mapOverlay']">
+						<xsl:if test="(metadataList/metadata[@name = 'Latitude'] and metadataList/metadata[@name = 'Longitude']) or metadataList/metadata[@name = 'Coordinate']  or metadataList/metadata[@name = 'GPS.mapOverlay'] or metadataList/metadata[@name = 'children_GPS.mapOverlay']">
 							<xsl:text>{</xsl:text>
 							<xsl:text disable-output-escaping="yes">"nodeID":"</xsl:text><xsl:value-of select="@selectedNode"/><xsl:text disable-output-escaping="yes">",</xsl:text>
@@ -916,4 +929,17 @@
 							</xsl:if>
 							
+							<xsl:if test="metadataList/metadata[@name = 'children_GPS.mapOverlay']">
+								<xsl:variable name="count"><xsl:value-of select="count(metadataList/metadata[@name = 'children_GPS.mapOverlay'])"/></xsl:variable>
+								<xsl:text disable-output-escaping="yes">,</xsl:text>
+								<xsl:text disable-output-escaping="yes">"childrenMapoverlays":[</xsl:text>
+								<xsl:for-each select="metadataList/metadata[@name = 'children_GPS.mapOverlay']">
+									<xsl:value-of disable-output-escaping="yes" select="current()"/>									
+									<xsl:if test="not(position() = $count)">
+										<xsl:text disable-output-escaping="yes">,</xsl:text>
+									</xsl:if>
+								</xsl:for-each>
+								<xsl:text disable-output-escaping="yes">]</xsl:text>
+							</xsl:if>
+							
 							<xsl:text>}</xsl:text>
 						</xsl:if>
@@ -928,5 +954,6 @@
 			search|browse|doc display view has mapEnabled=true -->
 		<gsf:metadata name="Coordinate" hidden="true"/>
-		<gsf:metadata name="GPS.mapOverlay" hidden="true"/>		
+		<gsf:metadata name="GPS.mapOverlay" hidden="true"/>
+		<gsf:metadata name="GPS.mapOverlay" select="true" hidden="true"/>
 	</xsl:template>
 	
