source: trunk/mapbender/http/nav/alkisnav_adr.php @ 356

Revision 356, 15.4 KB checked in by frank.jaeger, 8 years ago (diff)

ALKIS-Mapbender-Navigation umgestellt von .ico- auf .png-Grafiken.
Weitere kleine Korrekturen an ALKIS-Mapbender-Navigation.

RevLine 
[66]1<?php
[85]2/* Version vom
[278]3        2013-04-26      "import_request_variables" entfÀllt in PHP 5.4.
[356]4                                ZurÃŒck-Link, Titel der Transaktion anzeigen
[280]5        2013-04-29      Test mit IE
[356]6        2013-05-07      Strukturierung des Programms
7        2013-05-14      Feinkorrekturen
8        2013-05-15      Gruppierung nach Gemeinde, mehrfache HsNr (ap_pto.advstandardmodell) unterdrÃŒcken, Icon f. Straße
[306]9        2014-01-23      Link zum Auskunft-Modul fÃŒr Straße
[356]10        2014-09-03      PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
11        2014-09-15      Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL"
12        2014-09-30      RÃŒckbau substring(gml_id)
13        2015-12-10      Umstellen .ico auf .png, Vermeidung nicht initialisierter Variable
[330]14
[140]15        ToDo:
[306]16        -       Gruppierung (mit Zeile) der Straßenliste nach Gemeinde
[140]17        -       Eingabe aus "Balken" von Buchauskunft "Lage" zulassen: Numerisch: Gem-Str-Haus-lfd
[306]18                -- lfd (NebengebÀude) als Untergliederung der geklickten Haus-Nr anzeigen
[140]19                Analog zur Zerlegung des FS-Kennz in _fls
[197]20        -       Mouse-Over in Straßenliste soll Position zeigen.
21                Dazu in der DB eine Tabelle mit Koordinate zum StraßenschlÃŒssel aufbauen.
[85]22*/
[356]23
24// Variable Initialisieren
25$str_schl="";
26$skey="";
27
[276]28$cntget = extract($_GET);
[187]29include("../../conf/alkisnav_conf.php");
[306]30include("alkisnav_fkt.php"); // Funktionen
[187]31$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
[105]32$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$$dbname.$dbvers.$gkz);
[356]33
[278]34echo <<<END
[66]35
[187]36<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
37<html>
38<head>
39        <meta http-equiv="cache-control" content="no-cache">
40        <meta http-equiv="pragma" content="no-cache">
41        <meta http-equiv="expires" content="0">
42        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
43        <title>ALKIS-Suche Adressen</title>
44        <link rel="stylesheet" type="text/css" href="alkisnav.css">
[278]45        <script type='text/javascript'>
46                function transtitle (trans) { // Titel der letzten Transaktion anzeigen
47                        document.getElementById('transaktiontitle').innerHTML = trans;
48                }
[306]49                function imFenster(dieURL) {
50                        var link = encodeURI(dieURL);
51                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
52                }
[278]53        </script>
[187]54</head>
[66]55<body>
[280]56<a href='javascript:history.back()'>
[356]57        <img src="ico/zurueck.png" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck">
58</a>&nbsp;
59<span title='zuletzt ausgef&uuml;hrte Aktion'>
60        <dfn class='title' id='transaktiontitle'></dfn>
61</span>
[66]62
[278]63END;
64
[306]65function suchStrName() { // Strassen nach Name(-nsanfang)
66        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath;
[66]67        $linelimit=120;  // -> in die Conf?
[356]68        $str_schl=""; // Loeschen vorheriges Ergebnis
[187]69        preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz echo "match: ".$matches[1].",".$matches[2].",".$matches[3];
70        $matches[1] = preg_replace("/strasse/i","str", $matches[1]);
[66]71        $matches[1] = preg_replace("/str\./i","str", $matches[1]);
[187]72        if(preg_match("/\*/",$matches[1])){
73                $match=trim(preg_replace("/\*/i","%", strtoupper($matches[1])));
74        } else {
75                $match=trim($matches[1])."%";
[66]76        }
[334]77        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage
78        FROM ax_lagebezeichnungkatalogeintrag k
79        JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde
80        WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL ";
[85]81        switch ($gfilter) {
82                case 1: // Einzelwert
[330]83                        $sql.="AND k.gemeinde='".$gemeinde."' ";
[85]84                        break;
85                case 2: // Liste
[330]86                        $sql.="AND k.gemeinde in (".str_replace(",", "','", $gemeinde).") ";
[85]87                        break;
88                default: // kein Filter
89                        break;
[66]90        }
[306]91        $sql.="ORDER BY g.bezeichnung, k.bezeichnung, k.lage LIMIT $2 ;";
[68]92        $v=array($match,$linelimit);
93        $res=pg_prepare("", $sql);
94        $res=pg_execute("", $v);
[330]95
96        if (!$res) {
97                echo "\n<p class='err'>Fehler bei Name</p>";
98                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<p>";}
99                return;
100        }
101
[187]102        $cnt = 0;
[306]103        $gwgem="";
[66]104        while($row = pg_fetch_array($res)) {
[306]105                $gemname=$row["gemname"];
106                $gemnr=$row["gemeinde"] ;
107                if ($gwgem != $gemname) {
108                        if ($gfilter != 1) {
109                                zeile_gemeinde($gemnr, $gemname, false); // ToDo: aber ohne Link oder Link verarbeiten können
110                        }
111                        $gwgem=$gemname;
112                }
113                $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Strasse - fÃŒr weitere Suche
114                $skey=$row["lage"]; // Nur Str.-schl. daraus
115                $kgml=$row["gml_id"]; // ID von Katalog
116
117// +++ in function_zeile_strasse()
118                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
[68]119                echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>";
[306]120                // Icon -> Buchnachweis
121                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>";
[356]122                        echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Stra&szlig;e'>";
[306]123                echo "\n\t</a>";
124                echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."'>".$sname."</a>";
[66]125                echo "</div>";
[306]126// +++ function ende
[187]127                $cnt++;
128        }
[356]129
[66]130        if($cnt == 0) {
[278]131                echo "<pclass='anz'>Keine Stra&szlig;e</p>";
[66]132        } elseif($cnt == 1) { // Eindeutig
[68]133                $str_schl=$gkey; // dann gleich weiter
[66]134        } elseif($cnt >= $linelimit) {
[278]135                echo "<p class='anz'>".$cnt." Stra&szlig;en ... und weitere</p>";                       
136        } elseif ($cnt > 1) {
137                echo "\n<p class='anz'>".$cnt." Stra&szlig;en</p>";     
138        }
[187]139        return;
140}
[66]141
[306]142function suchStrKey() { // Strassen nach num. Schluessel
143        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath;
144        $linelimit=60;
[187]145        if(preg_match("/\*/",$street)) {
[68]146                $match=trim(preg_replace("/\*/i","%",$street));
[306]147                // fuehrende Nullen eingeben oder fuehrende Wildcard
[187]148        } else {
149                $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten
[68]150        }
[334]151        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage
152        FROM ax_lagebezeichnungkatalogeintrag as k
153        JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde
154        WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL ";
[85]155        switch ($gfilter) {
156                case 1: // Einzelwert
[330]157                        $sql.="AND k.gemeinde='".$gemeinde."' ";
[85]158                        break;
159                case 2: // Liste
[330]160                        $sql.="AND k.gemeinde in ('".str_replace(",", "','", $gemeinde)."') ";
[85]161                        break;
[68]162        }
[187]163        $sql.="ORDER BY k.lage, k.bezeichnung LIMIT $2 ;";
[330]164
[68]165        $v=array($match,$linelimit);
166        $res=pg_prepare("", $sql);
167        $res=pg_execute("", $v);
[330]168        if (!$res) {
169                echo "\n<p class='err'>Fehler bei Schl&uuml;ssel</p>";
170                return;
171        }
[187]172        $cnt = 0;
[68]173        while($row = pg_fetch_array($res)) {
174                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");         
175                $gkey=$row["schluesselgesamt"];
176                $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8");
177                $skey=$row["lage"];
[306]178                $kgml=$row["gml_id"]; // ID von Katalog
179               
180// +++ in function_zeile_strasse()
[68]181                echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>";
[306]182
183                        // Icon -> Buchnachweis
184                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>";
[356]185                                echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Stra&szlig;e'>";
[309]186                        echo "\n\t</a>";
[306]187               
[86]188                        echo $skey." <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='".$gemname."'>".$sname;
[68]189                        echo "</a>";
[85]190                        switch ($gfilter) {
191                                case 0: // Kein Filter
192                                        echo " in ".$gemname;
193                                        break;
194                                case 2: // Liste
195                                        echo " in ".$gemname;
196                                        break;
197                        }
[68]198                echo "</div>";
[306]199// function ende
[330]200
[187]201                $cnt++;
202        }
[68]203        if($cnt == 0) {
[278]204                echo "\n<p class='anz'>Keine Stra&szlig;e mit Schl&uuml;ssel ".$match."</p>";
[68]205        } elseif($cnt == 1) { // Eindeutig
206                $str_schl=$gkey; // dann gleich weiter
[278]207        } elseif ($cnt >= $linelimit) {
208                echo "\n<p>".$cnt." Stra&szlig;en ... und weitere</p>";                 
209        } elseif ($cnt > 1) {
210                echo "\n<p class='anz'>".$cnt." Stra&szlig;en</p>";     
[68]211        }       
[187]212        return;
[68]213}
214
[306]215function suchHausZurStr($showParent) { // Haeuser zu einer Strasse
[309]216        global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath;
[306]217
218        // Head
[66]219        // Strasse zum Strassenschluessel
[334]220        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage
221        FROM ax_lagebezeichnungkatalogeintrag as k
222        JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde
223        WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";
[330]224
[306]225        $v=array($str_schl);    // Schluessel-Gesamt ..
[66]226        $res=pg_prepare("", $sql);
227        $res=pg_execute("", $v);
[330]228        if (!$res) {
229                echo "\n<p class='err'>Fehler bei Name zum Stra&szlig;enschl&uuml;ssel</p>";
230                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<p>";}
231                return;
232        }
233
[306]234        if($row = pg_fetch_array($res)) { // .. gefunden
[309]235                $kgml=$row["kgml"]; // ID aus Katalog
[66]236                $sname=$row["bezeichnung"];
[306]237                $land =$row["land"];    // Einzel-Felder fÃŒr JOIN _lagebezeichnung_
[66]238                $regb =$row["regierungsbezirk"];
239                $kreis=$row["kreis"];
240                $gemnd=$row["gemeinde"];
[306]241                $nr=$row["lage"];
[83]242                $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8");
243                if ($showParent) {
[306]244                        // EINE Koordinate zur Strasse besorgen
[309]245                        // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer
[197]246                        $sqlko ="SELECT ";
[86]247                        if($epsg == "25832") { // Transform nicht notwendig
[188]248                                $sqlko.="st_x(st_Centroid(f.wkb_geometry)) AS x, ";
249                                $sqlko.="st_y(st_Centroid(f.wkb_geometry)) AS y ";
[197]250                        } else {
[188]251                                $sqlko.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
[197]252                                $sqlko.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";
[86]253                        }
[83]254                        $sqlko.="FROM ax_lagebezeichnungohnehausnummer o ";
[339]255                        $sqlko.="JOIN ax_flurstueck f ON o.gml_id=ANY(f.zeigtauf) ";
[83]256                        $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";       
[330]257                        $sqlko.="LIMIT 1;"; // die erstbeste Koordinate
[83]258                        $v=array($land,$regb,$kreis,$gemnd,$nr);
259                        $resko=pg_prepare("", $sqlko);
260                        $resko=pg_execute("", $v);
261                        if ($resko) {
262                                $rowko=pg_fetch_array($resko);
263                                $x=$rowko["x"];
264                                $y=$rowko["y"];
265                        } else {               
266                                echo "\n<p class='err'>Fehler bei Koordinate zur Stra&szlig;e</p>";
267                        }
[309]268
269                        // Icon -> Buchnachweis
[356]270                        echo "\n\t<br><a href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>";
271                                echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Buchauskunft zur Stra&szlig;e'>";
[309]272                        echo "\n\t</a>";
273
[83]274                        if ($x > 0) { // Koord. bekommen?
[115]275                                echo "\n\t<a title='Positionieren 1:".$scalestr."' href='javascript:"; // mit Link
[278]276                                                echo "transtitle(\"auf Stra&szlig;e positioniert\"); ";
[115]277                                                echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr."); ";
278                                                echo "parent.parent.showHighlight(".$x.",".$y."); ";
[306]279                                        //      echo "document.location.href=\"".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$str_schl."\"";
[278]280                                        echo "' "; // end href
[187]281                                        echo "\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' ";
[83]282                                        echo "\n\t\tonmouseout='parent.parent.hideHighlight()'";
283                                echo ">\n\t\t".$sname." (".$nr.")\n\t</a>";
[197]284                        } else { // keine Koord. gefunden
[83]285                                echo $sname." (".$nr.")"; // nur Anzeige, ohne Link
286                        }
[85]287                        switch ($gfilter) {
288                                case 0: // Kein Filter
289                                        echo " in ".$gemname;
290                                        break;
291                                case 2: // Liste
292                                        echo " in ".$gemname;
293                                        break;
294                        }                       
[66]295                }
[83]296                echo "\n<hr>";
[306]297
298                // Body
[66]299                // Haeuser zum Strassenschluessel
[306]300                $sql="SELECT min(replace(h.hausnummer,' ','')) AS hsnr, ";
[86]301                if($epsg == "25832") { // Transform nicht notwendig
[306]302                        $sql.="avg (st_x(p.wkb_geometry)) AS x, ";
303                        $sql.="avg (st_y(p.wkb_geometry)) AS y ";               
[197]304                } else { 
[306]305                        $sql.="avg (st_x(st_transform(p.wkb_geometry,".$epsg."))) AS x, ";
306                        $sql.="avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y ";               
[86]307                }
[339]308                $sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id=ANY(p.dientzurdarstellungvon)
[334]309                WHERE p.art='HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5
310                AND p.endet IS NULL AND h.endet IS NULL
311                GROUP BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2)
312                ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);";
[356]313                // Problem: In der Datenbank gibt es mehrere hausnummern-Koordinaten fÃŒr verschiedene
314                // MaßstÀbe der Kartendarstellung
315                // Diese sollten nicht mehrfach gelistet werden. FÃŒr die Positionierung "irgendeine" nehmen.
[306]316                // Lösung: ÃŒber GROUP BY in SQL. Alternative Lösungen wÀren:
317                //  1. Gruppenwechsel bei Abarbeitung des Result
318                //  2. Subquery mit LIMIT 1 statt JOIN
[356]319                //  3. Koordinate aus dem Mittelpunkt der GebÀude-Geometrie verwenden statt aus dem PrÀsentationsobjekt der Hausnummer
[197]320
[83]321                $v=array($land,$regb,$kreis,$gemnd,$nr);
[68]322                $resh=pg_prepare("", $sql);
323                $resh=pg_execute("", $v);
[330]324                if (!$resh) {
325                        echo "\n<p class='err'>Fehler bei H&auml;user zum Stra&szlig;enschl&uuml;ssel</p>";
326                        if ($debug > 2) {echo "<p class='dbg'>SQL='".$sql."'<br>Array=".$v."</p>";}
327                        return;
328                }
[306]329
[187]330                $cnt=0;
331                $count=0;
332                echo "\n<table>";
[197]333                while($rowh = pg_fetch_array($resh)) { // mehrere HsNr je Zeile
[356]334                        if($count == 0) {echo "\n<tr>";}       
[197]335                        $hsnr=$rowh["hsnr"];
[187]336                        $x=$rowh["x"];
337                        $y=$rowh["y"];
[66]338                        echo "\n\t<td class='hsnr'>";
339                                echo "<a href='";
[278]340                                        echo "javascript:";
[306]341                                        echo "transtitle(\"auf Haus ".$hsnr." positioniert\"); ";
[278]342                                        echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); ";
[115]343                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
[187]344                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
[66]345                                echo "onmouseout='parent.parent.hideHighlight()";
[187]346                                echo "'>".$hsnr."</a>";
347                        echo "</td>";
348                        $cnt++;
349                        $count++;
[356]350                        if($count == 7) { // Max. Hausnummern je Zeile (Test: 3stellige HsNr mit Zusatz)
[66]351                                echo "\n</tr>";
352                                $count = 0;
[187]353                        }
354                }
[66]355                if($count > 0) {echo "\n</tr>";}
356                echo "\n</table>";
[306]357                if ($cnt > 1) {
358                        echo "\n<p class='anz'>".$cnt." Hausnummern</p>";
359                }
[66]360        } else {
[278]361                echo "\n<p class='anz'>Keine Stra&szlig;e</p>";
[187]362        }
363        return;
364}
[66]365// ===========
366// Start hier!
367// ===========
368if(isset($epsg)) {
[86]369        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
[66]370} else {
371        $epsg=$gui_epsg; // aus Conf
372}
[85]373if ($gemeinde == "") {
374        $gfilter = 0; // ungefiltert
375} elseif(strpos($gemeinde, ",") === false) {
376        $gfilter = 1; // Einzelwert
377} else {
378        $gfilter = 2; // Liste
379}
[306]380
381// +++  Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage":
[330]382//              Numerisch: Gem-Str-Haus-lfd
[306]383
384if ($str_schl != "") { // aus Link
[278]385        $trans="Hausnummern zur Stra&szlig;e";
[83]386        suchHausZurStr(true);
[306]387} elseif($street != "") { // Eingabe in Form
[278]388        if (trim($street, "*,0..9") == "") { // Zahl, ggf. mit Wildcard
389                $trans="Suche Stra&szlig;enschl&uuml;ssel \"".$street."\"";
390                suchStrKey();
[66]391        } else {
[356]392                $trans="Suche Stra&szlig;enname \"".$street."*\"";
[278]393                suchStrName();
[187]394        }
[356]395        if($str_schl != "") { // EINdeutiges Ergebnis
[278]396                $trans="1 Stra&szlig;e gefunden, Hausnummern";
[187]397                suchHausZurStr(false);
[83]398        }
[356]399} else {
400        $trans="keine Eingabe";
[68]401}
[356]402
403// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion
404// im Kopf des Ergebnisrahmens anzeigen.
405// Dazu die im HTML-Header definierte Javascript-Function benutzen.
406// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt.
[283]407echo "
408<script type='text/javascript'>
409        transtitle ('".$trans."') ;
410</script>";
[278]411
[66]412?>
[68]413
[187]414</body>
415</html>
Note: See TracBrowser for help on using the repository browser.