/**
  * Display 2nd level reference maps -- i.e. create HTML tags, push data into JavaScript to create Google Maps dynamically
  */
 protected function _displaySecondLevelReferenceMaps($args, $overlays)
 {
     $js = "";
     $itemReferencesConfiguration = SELF::_retrieveReferenceElementConfiguration();
     if (!SELF::_needsMaps($itemReferencesConfiguration)) {
         return;
     }
     if (SELF::$_withGeoLoc and SELF::$_secondLevelGeoLocations) {
         $output = "<h2>" . __("Geolocations of Second Level References Items") . "</h2>\n";
         $itemReferencesMapHeight = intval(get_option('item_references_map_height'));
         if (!$itemReferencesMapHeight) {
             $itemReferencesMapHeight = ITEM_REFERENCES_MAP_HEIGHT_DEFAULT;
         }
         $secondLevelMapsData = array();
         $db = get_db();
         foreach (SELF::$_secondLevelGeoLocations as $elementId => $firstLevelRef) {
             if ($firstLevelRef and $itemReferencesConfiguration[$elementId][0] > 0) {
                 $sql = "SELECT name FROM {$db->Elements} WHERE id = {$elementId}";
                 $elementName = $db->fetchOne($sql);
                 $output .= "<h4>{$elementName}</h4>\n";
                 $data = array("mapId" => "mapTwo" . $elementId, "line" => intval($itemReferencesConfiguration[$elementId][0] == 2), "refMaps" => array());
                 $reqOverlays = array();
                 foreach ($firstLevelRef as $firstLevelRefId => $referenceMap) {
                     $firstLevelRefData = SELF::getDataForId($firstLevelRefId);
                     if ($firstLevelRefData !== false) {
                         $firstLevelRefTitle = $firstLevelRefData["title"];
                         $firstLevelRefUrl = url('items/show/' . $firstLevelRefId);
                         $data["refMaps"][$firstLevelRefId] = array("title" => $firstLevelRefTitle, "url" => $firstLevelRefUrl, "coords" => array());
                         foreach ($referenceMap as $secondLevelRefId => $pin) {
                             if ($pin) {
                                 $data["refMaps"][$firstLevelRefId]["coords"][] = array("title" => $pin["geo_title"], "lat" => $pin["latitude"], "lng" => $pin["longitude"], "url" => $pin["url"], "ovl" => $pin["overlay"], "zl" => $pin["zoom_level"]);
                                 if (isset($reqOverlays[$pin["overlay"]])) {
                                     $reqOverlays[$pin["overlay"]]++;
                                 } else {
                                     $reqOverlays[$pin["overlay"]] = 1;
                                 }
                             }
                             # if ($pin)
                         }
                         # foreach($referenceMap
                     }
                     # if ($firstLevelRefTitle
                 }
                 # foreach($firstLevelRef
                 $ovlDefault = -1;
                 if (count($reqOverlays) == 1) {
                     $ovlDefault = array_keys($reqOverlays)[0];
                 }
                 $output .= "<div id='" . $data["mapId"] . "' style='height:" . $itemReferencesMapHeight . "px; width:100%;'></div>\n";
                 $curSecondCount = count($secondLevelMapsData);
                 if ($overlays) {
                     $output .= '<div class="reference_ovl_options"><strong>' . __("Select Map Overlay:") . '</strong> ' . get_view()->formSelect($data["mapId"] . "_ovl", $ovlDefault, array("class" => "refMapOvlSel", "data-map-two-arr" => $curSecondCount), $overlays["jsSelect"]) . "<span class='refMapOvlSlider' id='" . $data["mapId"] . "_slider' data-map-two-arr='" . $curSecondCount . "'></span>" . "</div>";
                 }
                 $output .= "<div id='" . $data["mapId"] . "_legend' class='itemRefTwoMapLegend'></div>";
                 $secondLevelMapsData[] = $data;
             }
             # if ( ($firstLevelRef)
         }
         # foreach(SELF::$_secondLevelGeoLocations
         if ($secondLevelMapsData) {
             echo $output;
             $js .= "var mapsTwoData=" . json_encode($secondLevelMapsData) . ";\n";
         }
     }
     # if ( (SELF::$_withGeoLoc) AND (SELF::$_secondLevelGeoLocations) )
     return $js;
 }