Index: trunk/data/mapbender/http/nav/alkisnav_grd.php
===================================================================
--- trunk/data/mapbender/http/nav/alkisnav_grd.php	(revision 68)
+++ trunk/data/mapbender/http/nav/alkisnav_grd.php	(revision 86)
@@ -1,4 +1,8 @@
 <?php
-// Version vom 13.01.2011  
+/* Version vom
+	14.01.2011
+	12.04.2011 epsg in Link, transform nur wenn notwendig, 
+	neue Suchstrategie bei Leer-Eingabe (Liste Amtsgerichte), Icon GB-Bez.
+*/
 import_request_variables("PG");
 include("../../conf/alkisnav_conf.php");
@@ -27,5 +31,5 @@
 function ZerlegungGBKennz($gbkennz) {
 	// Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR)
-	// Return: 0=Fehler, 1=Such Bezirk-Name oder Listen alle Bezirke
+	// Return: 9=Fehler, 0=Listen alle Bezirke 1=Such Bezirk-Name
 	//         2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr
 	global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;	
@@ -35,5 +39,5 @@
 	$zbvnr=trim($arr[2]);
 	if ($zgbbez == "") { // keine Eingabe
-		return 1; // alle Bezirke listen
+		return 0; // Amtsgerichte oder Bezirke listen
 	} elseif ( ! is_ne_zahl($zgbbez)) { // Alphabetische Eingabe
 		return 1; // Such Bezirk-NAME
@@ -49,10 +53,10 @@
 				$zblattn=substr($zblatt,0,$len-1);
 				$zblattz=strtoupper(substr($zblatt,$len-1,1)); 
-				if ( (trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) {
+				if ((trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) {
 					$zblatt=$zblattn.$zblattz;
 					$zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen
 				} else {
 					echo "<p class='err>Format 'Blatt': bis zu 6 Zahlen und ggf. ein Buchstabe</p>";	
-					return 0;
+					return 9;
 				}
 			}
@@ -65,11 +69,83 @@
 			} else {
 				echo "<p class='err>Die Buchungsstelle (BVNR) '".$zbvnr."' ist nicht numerisch</p>";
-				return 0;
+				return 9;
 			}
 		} else {
 			echo "<p class='err>Das Grundbuch-Blatt '".$zblatt."' ist ung&uuml;ltig.</p>";
-			return 0;
-		}
-	}
+			return 9;
+		}
+	}
+}
+
+function ListAG($liste_ag) {
+	// Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste aus conf
+	global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz;
+	$linelimit=40;
+	$sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a ";
+	$sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste
+	$sql.="ORDER BY a.bezeichnung LIMIT $1 ;";
+	$res = pg_prepare("", $sql);
+	$res = pg_execute("", array($linelimit));
+	if (!$res) {
+		echo "\n<p class='err'>Fehler bei Amtsgerichte</p>";
+		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		return 0;
+	}
+	$cnt = 0;
+	while($row = pg_fetch_array($res)) { // Loop AG 
+		$anr=$row["stelle"];
+		$ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");		
+		echo "\n<div class='ga' title='Amtsgricht'>";
+			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
+			echo "AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";		
+				echo $ag."</a> (".$anr.")";
+		echo "\n</div>";
+		$cnt++;
+	}
+	if($cnt == 0){ // falsch configuriert!
+		echo "\n<p class='err'>Kein Amtsgericht aus Liste ".$$liste_ag.".</p>";
+	} elseif ($cnt >= $linelimit) {
+		echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
+	}
+	return 0;
+}
+
+function ListGBBez($liste_ag, $mit_ag) {
+	// Grundbuch-Bezirke auflisten.
+	global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz;
+	$linelimit=70;
+	$sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
+	$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
+	$sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgericht aus Liste
+	$sql.="ORDER BY g.bezeichnung LIMIT $1 ;";
+	$res = pg_prepare("", $sql);
+	$res = pg_execute("", array($linelimit));
+	if (!$res) {
+		echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
+		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		return 0;
+	}
+	$cnt = 0;
+	while($row = pg_fetch_array($res)) { // Loop  B E Z I R K
+		$gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
+		$gnr=$row["bezirk"];
+		$ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");
+		$anr=$row["stelle"];
+		echo "\n<div class='gk' title='GB-Bezirk'>";
+			echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
+			echo "Bezirk <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$gnr."'>";		
+				echo $gnam."</a> (".$gnr.")";
+				if ($mit_ag) {
+					echo " AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";
+				}
+		echo "\n</div>";
+		$cnt++;
+	}
+	if($cnt == 0){ // falsch configuriert
+		echo "\n<p class='err'>Kein Grundbuchbezirk zu den Amtsgerichten ".$liste_ag.".</p>";
+	} elseif ($cnt >= $linelimit) {
+		echo "\n<p title='Bitte eindeutiger qualifizieren'>... und weitere</p>";
+	}
+	return 0;
 }
 
@@ -78,5 +154,5 @@
 	global $con, $gkz, $gemeinde, $debug, $gbkennz;
 	$linelimit=50;
-	$sql ="SELECT a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
+	$sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
 	$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
 	$sql.="WHERE g.bezeichnung ILIKE $1 "; //	"AND a.stellenart=1000 " // Amtsgericht
@@ -100,14 +176,15 @@
 	}
 	$cnt = 0;
-	// Loop  B E Z I R K	 
-	// +++ Sortierung und Gruppierung nach Amtsgericht ??
+	// Loop  B E Z I R K
 	while($row = pg_fetch_array($res)) {
 		$gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
 		$gnr=$row["bezirk"];
 		$ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");		
+		$anr=$row["stelle"];
 		echo "\n<div class='gk' title='GB-Bezirk'>";
-			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Gemkg'> ";
-			echo "<a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$gnr."'>";		
-				echo $gnam."</a> (".$gnr.") AG ".$ag;
+			echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
+			echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$gnr."'>";		
+				echo $gnam."</a> (".$gnr.")";
+				echo " AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";
 		echo "\n</div>";
 		$cnt++;
@@ -125,5 +202,5 @@
 function EinBezirk($showParent) {
 	// Kennzeichen bestehend nur aus GB-Bezirk-SchlÃŒssel wurde eingegeben
-	global $con, $gkz, $gemeinde, $debug, $zgbbez, $auskpath;
+	global $con, $gkz, $gemeinde, $epsg, $debug, $zgbbez, $auskpath;
 	$linelimit=200; // max. Blatt je Bezirk
 	// Dies linelimit ist nicht ausreichend fuer alle Blaetter eines Bezirks, aber ...
@@ -131,5 +208,5 @@
 	// Es nutzt also nichts, hier Tausende Nummern aufzulisten.
 	if ($showParent) {
-		$sql ="SELECT a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
+		$sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
 		$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
 		$sql.="WHERE g.bezirk= $1 ;";
@@ -146,18 +223,27 @@
 			$gnr=$row["bezirk"];
 			$ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");	
+			$anr=$row["stelle"];
 			$zgmk++;
 		}
 		if ($zgmk == 0) {
 			echo "\n<div class='gk' title='Grundbuchbezirk'>";
-				echo "\n\t\t<p class='err'><img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'>";
+				echo "\n\t\t<p class='err'><img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'>";
 					echo  " Bezirk ".$zgbbez." ist unbekannt.</p>";
 			echo "\n</div>";
 			return;
 		}
-		// > 1 auch mÃ¶glich?
+
+		// AG-Knoten davor setzen
+		echo "\n<div class='ga' title='Amtsgricht'>";
+			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
+			echo "AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";		
+				echo $ag."</a> (".$anr.")";
+		echo "\n</div>";
 		echo "\n<div class='gk' title='GB-Bezirk'>";
-			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'> ";
-			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
-			echo $gnam."</a> (".$zgbbez.") AG ".$ag;
+			echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
+			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";		
+			echo $gnam."</a> (".$zgbbez.")";
+			// alternativ AG-Link hinter dem Bezirk
+		//	echo " des AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";			
 		echo "\n</div>";
 	}
@@ -180,5 +266,5 @@
 				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
 			echo "\n\t</a> ";
-			echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gblatt=".$gml."&amp;gbkennz=".$zgbbez."-".$blatt."'>&nbsp;".$blatt."&nbsp;</a>";
+			echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gblatt=".$gml."&amp;gbkennz=".$zgbbez."-".$blatt."'>&nbsp;".$blatt."&nbsp;</a>";
 		echo "\n</div>";
 		$cntbl++;
@@ -218,5 +304,4 @@
 	if($cntbl == 0) { 
 		echo "\n<p class='err'>Grundbuchblatt '".$zgbbez."-".$zblatt."' nicht gefunden.</p>";
-		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
 	} elseif($cntbl == 1) {
 		return $bl_gml;
@@ -227,11 +312,11 @@
 function EinBlatt($showParent) {
 	// Kennzeichen Bezirk + Blatt wurde eingegeben
-	global $con, $gkz, $debug, $gemeinde, $auskpath, $zgbbez, $zblatt, $gblatt, $zbvnr;
+	global $con, $gkz, $debug, $gemeinde, $epsg, $auskpath, $zgbbez, $zblatt, $zblattn, $zblattz, $gblatt, $zbvnr;
 
 	if ($showParent) {	
 		echo "\n<div class='gk' title='GB-Bezirk'>";
-			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'> ";
-			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
-			echo "Bezirk ".$zgbbez."</a>";
+			echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
+			echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";		
+			echo $zgbbez."</a>";
 			// Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln?
 		echo "\n</div>";
@@ -240,5 +325,5 @@
 				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
 			echo "\n\t</a> ";
-			echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gblatt=".$gblatt."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
+			echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gblatt=".$gblatt."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
 		echo "\n</div>";
 	}
@@ -263,5 +348,5 @@
 		echo "\n<div class='gs'>";
 			echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
-			echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbuchung=".$bs_gml."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$lfd."'>&nbsp;".$lfd."&nbsp;</a>";
+			echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbuchung=".$bs_gml."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$lfd."'>&nbsp;".$lfd."&nbsp;</a>";
 		echo "\n</div>";
 		$cntbu++;
@@ -271,5 +356,13 @@
 	} elseif($cntbu == 1) {
 		//echo "\n<p>genau EINE Buchung gefunden".$lfd."</p>";
-		$zbvnr=$lfd; // mit dieser BVNR gleich weiter machen 
+		$zbvnr=$lfd; // mit dieser BVNR gleich weiter machen
+		// Blatt zerteilen (benoetigt in gml_buchungsstelle)
+		if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen
+			$zblattn= ltrim($zblatt, "0");
+			$zblattz="";
+		} else { // Sonderfall: Zusatz-Buchstabe am Ende
+			$zblattn=ltrim(substr($zblatt,0,$len-1), "0"); // ohne fuehrende Nullen
+			$zblattz=strtoupper(substr($zblatt,$len-1,1)); 
+		}
 	}
 	return $cntbu;
@@ -278,5 +371,5 @@
 function gml_buchungsstelle() {
 	// Kennzeichen "Bezirk + Blatt + BVNR" eingegeben. Dazu die gml_id der Buchungsstelle ermitteln.
-	global $con, $gkz, $debug, $zgbbez, $zblatt, $zbvnr;
+	global $con, $gkz, $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
 	// Blatt ->  B u c h u n g s s t e l l e
 	$sql ="SELECT s.gml_id FROM ax_buchungsstelle s ";
@@ -284,6 +377,7 @@
 	$sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu "; 
 	$sql.="WHERE v.beziehungsart='istBestandteilVon' ";
-	$sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung= $2 AND s.laufendenummer= $3 ;";
-	$v=array($zgbbez, $zblatt, $zbvnr);
+	$sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung IN ( $2, $3 ) AND s.laufendenummer= $4 ;";
+	$zblatt0v=str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz;	// mit 0 vorne
+	$v=array($zgbbez, $zblattn.$zblattz, $zblatt0v, $zbvnr);
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
@@ -298,5 +392,5 @@
 	}
 	if($zbs == 0) { 
-		echo "\n<p class='err'>Buchung ".$zgbbez."-".$zblatt."-".$zbvnr." nicht gefunden.</p>";
+		echo "\n<p class='err'>Buchung ".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr." nicht gefunden.</p>";
 		return;
 	} elseif($zbs > 1) { // nur TEST
@@ -310,16 +404,17 @@
 function EinGrundstueck($showParent) {
 	// Die gml_id der Buchungsstelle ist bekannt.
-	global $con, $gkz, $debug, $gemeinde, $scalefs, $epsg, $auskpath, $gbuchung, $zgbbez, $zblatt, $zbvnr;
+	global $con, $gkz, $debug, $gemeinde, $epsg, $scalefs, $epsg, $auskpath, $gbuchung, $zgbbez, $zblatt, $zbvnr, $gfilter;
 	if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
 		if (isset($zgbbez) and isset($zblatt)) {
 			echo "\n<div class='gk' title='GB-Bezirk'>";
-				echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'> ";
-				echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
+				echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
+				echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";		
 				echo "Bezirk ".$zgbbez."</a>";
 				// Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln?
+				// ++++ Namen als &bez= ÃŒbermitteln?
 			echo "\n</div>";			
 			echo "\n<div class='gb' title='GB-Blatt'>";
 				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt.ico' width='16' height='16' alt='Blatt'> ";
-				echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
+				echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
 			echo "\n</div>";
 		} else {
@@ -328,5 +423,5 @@
 		echo "\n<div class='gs'>";
 			echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
-			echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbuchung=".$gbuchung."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$zbvnr."'>&nbsp;".$zbvnr."&nbsp;</a>";
+			echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbuchung=".$gbuchung."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$zbvnr."'>&nbsp;".$zbvnr."&nbsp;</a>";
 		echo "\n</div>";
 	}
@@ -338,6 +433,15 @@
 	// Buchungsstelle -> Flurstueck
 	$sql ="SELECT t.gemeinde, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
-	$sql.="x(st_transform (st_centroid(f.wkb_geometry),".$epsg.")) AS x, ";
-	$sql.="y(st_transform (st_centroid(f.wkb_geometry),".$epsg.")) AS y ";
+
+	//	$sql.="x(st_transform (st_centroid(f.wkb_geometry),".$epsg.")) AS x, ";
+	//	$sql.="y(st_transform (st_centroid(f.wkb_geometry),".$epsg.")) AS y ";
+	if($epsg == "25832") { // Transform nicht notwendig
+		$sql.="x(st_Centroid(f.wkb_geometry)) AS x, ";
+		$sql.="y(st_Centroid(f.wkb_geometry)) AS y ";
+	}
+	else {  
+		$sql.="x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
+		$sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";			
+	}
 	$sql.="FROM ax_gemarkung g ";
 	$sql.="JOIN ax_flurstueck f ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
@@ -363,7 +467,8 @@
 		$x=$row["x"];
 		$y=$row["y"];
-		if($gemeinde > 0 and $gemeinde != $gemei) { // ex-territorial
+		if($gemeinde > 0 and $gemeinde != $gemei and $gfilter == 1) { // ex-territorial 
+		// +++ Wie Abgleich mit Filter=Gemeinde-Liste? Als Array aufbereiten?
 			echo "\n<div class='fs' title='Kein Zugriff! Liegt au&szlig;erhalb des Gebietes.'>";
-				echo "\n\t\t<img class='nwlink' src='ico/Flurstueck.ico' width='16' height='16' alt='FS'> ".$gmkg." ".$flur."-".$fskenn;
+				echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Leer.ico' width='16' height='16' alt='FS'> (".$gmkg." ".$flur."-".$fskenn." )";
 			echo "\n</div>";			
 		} else {
@@ -391,7 +496,7 @@
 if(isset($epsg)) {
 	if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
-	If (substr($epsg, 0, 5) == "EPSG:") {$epsg=substr($epsg, 5);}
+	$epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);	
 } else {
-	if ($debug >= 2) {echo "<p class='err'>kein EPSG gesetzt</p>";}	
+	if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}	
 	$epsg=$gui_epsg; // aus Conf
 }
@@ -400,4 +505,11 @@
 	} else {echo "<p>Kein Filter Gemeinde</p>";}
 }
+if ($gemeinde == "") {
+	$gfilter = 0; // ungefiltert
+} elseif(strpos($gemeinde, ",") === false) {
+	$gfilter = 1; // Einzelwert
+} else {
+	$gfilter = 2; // Liste
+}
 
 // Auch wenn redundant: Das Kennzeichen fÃŒr Anzeige und weitere Links zerlegen
@@ -407,5 +519,5 @@
 // Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
 // Dann hat das Prioritaet, nicht nach $gbkennz suchen.
-If (isset($gbuchung)) { // gml der Buchungsstelle
+if (isset($gbuchung)) { // gml der Buchungsstelle
 	if ($debug >= 2) {echo "<p>Link Buchung(gml)=".$gbuchung."</p>";}
 	EinGrundstueck(true);
@@ -415,40 +527,49 @@
 		$gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
 		EinGrundstueck(false);
-	};
-} else {
-	// Kein internes Kennzeichen (gml_id), die (manuelle) Eingabe interpretieren.
-	switch ($kennztyp) {
-	// +++ Ersten Schritt "Suche Amtsgericht" voranstellen?
-	// +++ Wie kann Filter "Gemeinde" berÃŒcksichtigt werden?
-	case 0: // Fehler
-		echo "<p class='err'>Bitte ein Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
-		break;
-	case 1: // Eingabe Bezirk-Name (-Teil) -> Liste der Bezirke
-		if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez."</p>";}
-		$beznr=SuchGBBezName();
-		if ($beznr > 0) {
-			$zgbbez=$beznr;
-			EinBezirk(false);
-		};	
-		break;
-	case 2: // Eingabe Bezirk-Nummer -> Liste der BlÃ€tter
-		if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez."</p>";}	
-		EinBezirk(true);
-		break;
-	case 3: // Eingabe Blatt -> Liste der Buchungen
-		if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez." Blatt ".$zblatt."</p>";}
-		$gblatt=gml_blatt(); // gml_id zum Blatt suchen
-		if ($gblatt != "") { // gefunden		
-			if (EinBlatt(true) == 1) { // darauf genau eine Buchung
-				$gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
-				EinGrundstueck(false);
+	}
+} elseif(isset($ag)) { // Key 'stelle' des Amtsgerichtes
+	if ($debug >= 2) {echo "<p>Link Amtsgericht=".$ag."</p>";}
+	ListAG( "'".$ag."'" ); // noch mal Kopfzeile
+	ListGBBez("'".$ag."'", false);
+} else { // Kein Self-Link
+	// (manuelle) Eingabe im Formular interpretieren.
+	switch ($kennztyp) { // +++ Wie kann Filter "Gemeinde" berÃŒcksichtigt werden?
+		case 0: // keine Eingabe, 2 Alternativen
+			// +++ Alternativen-Auswahl konfigurieren?
+		//	ListGBBez($ag_liste, true); // gefilterte Liste der Bezirke
+			ListAG($ag_liste); // gefilterte Liste der Amtsgerichte
+			break;
+		case 1: // Eingabe Bezirk-Name (-Teil) -> gefilterte Liste der Bezirke
+			if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez."</p>";}
+			$beznr=SuchGBBezName();
+			if ($beznr > 0) {  // eindeutig
+				$zgbbez=$beznr;
+				EinBezirk(false); // gleich weiter
+			};	
+			break;
+		case 2: // Eingabe Bezirk-Nummer -> Liste der BlÃ€tter
+			if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez."</p>";}	
+			EinBezirk(true);
+			break;
+		case 3: // Eingabe Blatt -> Liste der Buchungen
+			if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez." Blatt ".$zblatt."</p>";}
+			$gblatt=gml_blatt(); // gml_id zum Blatt suchen
+			if ($gblatt != "") { // gefunden		
+				if (EinBlatt(true) == 1) { // darauf genau eine Buchung
+					$gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
+					EinGrundstueck(false);
+				}
 			}
-		}
-		break;
-	case 4: // Eingabe Buchung (Grundstueck) -> Liste der Flurstuecke
-		if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez." Blatt ".$zblatt." BVNR ".$zbvnr."</p>";}
-		$gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
-		EinGrundstueck(true);
-		break;
+			break;
+		case 4: // Eingabe Buchung (Grundstueck) -> Liste der Flurstuecke
+			if ($debug >= 2) {echo "<p>Eingabe Bez. ".$zgbbez." Blatt ".$zblatt." BVNR ".$zbvnr."</p>";}
+			$gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
+			if ($gbuchung != "") { // .. wurde geliefert 
+				EinGrundstueck(true);
+			}
+			break;
+		case 9: // Fehler
+			echo "<p class='err'>Bitte ein Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
+			break;
 	}
 }
