[Mapbender-commits] r9484 - trunk/mapbender/http/geoportal

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Fri May 27 00:01:49 PDT 2016


Author: armin11
Date: 2016-05-27 00:01:49 -0700 (Fri, 27 May 2016)
New Revision: 9484

Removed:
   trunk/mapbender/http/geoportal/breitband_splash.php
   trunk/mapbender/http/geoportal/cr_mobile.php
   trunk/mapbender/http/geoportal/demo_table_jui.css
   trunk/mapbender/http/geoportal/gaz_geom_alt.php
   trunk/mapbender/http/geoportal/gaz_geom_mobile.php.trunk
   trunk/mapbender/http/geoportal/gaz_geom_mobile2.php
   trunk/mapbender/http/geoportal/gaz_geom_mobile_alt.php
   trunk/mapbender/http/geoportal/gaz_geom_mobile_alt_neu.php
   trunk/mapbender/http/geoportal/geoportal_mobile.html
   trunk/mapbender/http/geoportal/logo_breitband.png
   trunk/mapbender/http/geoportal/mobile-base_rlp.js
   trunk/mapbender/http/geoportal/mobile-jq_rlp.js
   trunk/mapbender/http/geoportal/mod_digitize_tab_komserv.php
   trunk/mapbender/http/geoportal/mod_digitize_tab_komserv_orga.php
   trunk/mapbender/http/geoportal/mod_fplanid.php
   trunk/mapbender/http/geoportal/mod_initialStartWmc_new.php
   trunk/mapbender/http/geoportal/mod_statistik.php
Log:
Rewind wrong commit

Deleted: trunk/mapbender/http/geoportal/breitband_splash.php
===================================================================
--- trunk/mapbender/http/geoportal/breitband_splash.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/breitband_splash.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,3 +0,0 @@
-<?php
-echo "<table width='100%' style='background-color:#FFFFFF'><tr align='center'><td><br><br><br><br><img alt='ajax-loader' src='../img/ajax-loader.gif'>"."&nbsp&nbsp&nbsp&nbsp"."<img alt='logo'src='../geoportal/logo_breitband.png'>"."&nbsp&nbsp&nbsp&nbsp"."<img alt='ajax-loader' src='../img/ajax-loader.gif'></td></tr><tr align='center'><td><br><strong>"._mb('please wait ... ')."</strong></td></tr>"."<tr  align='center'><td><br>"._mb('Loading application: ')."" . $this->guiId . "</td></tr></table>";	
-?>

Deleted: trunk/mapbender/http/geoportal/cr_mobile.php
===================================================================
--- trunk/mapbender/http/geoportal/cr_mobile.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/cr_mobile.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,5 +0,0 @@
-<?php
-require_once dirname(__FILE__) . "/../extensions/phpqrcode/phpqrcode.php";
-$invokeLink = "http://www.geoportal.rlp.de/mapbender/geoportal/geoportal_mobile.html";
-QRcode::png($invokeLink);
-?>

Deleted: trunk/mapbender/http/geoportal/demo_table_jui.css
===================================================================
--- trunk/mapbender/http/geoportal/demo_table_jui.css	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/demo_table_jui.css	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,476 +0,0 @@
-/*
- *  File:         demo_table_jui.css
- *  CVS:          $Id$
- *  Description:  CSS descriptions for DataTables demo pages
- *  Author:       Allan Jardine
- *  Created:      Tue May 12 06:47:22 BST 2009
- *  Modified:     $Date$ by $Author$
- *  Language:     CSS
- *  Project:      DataTables
- *
- *  Copyright 2009 Allan Jardine. All Rights Reserved.
- *
- * ***************************************************************************
- * DESCRIPTION
- *
- * The styles given here are suitable for the demos that are used with the standard DataTables
- * distribution (see www.datatables.net). You will most likely wish to modify these styles to
- * meet the layout requirements of your site.
- *
- * Common issues:
- *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is
- *     no conflict between the two pagination types. If you want to use full_numbers pagination
- *     ensure that you either have "example_alt_pagination" as a body class name, or better yet,
- *     modify that selector.
- *   Note that the path used for Images is relative. All images are by default located in
- *     ../images/ - relative to this CSS file.
- */
-
-
-/*
- * jQuery UI specific styling
- */
-
-.paging_two_button .fg-button {
-	float: left;
-	cursor: pointer;
-	* cursor: hand;
-}
-
-.paging_full_numbers .fg-button {
-	padding: 2px 6px;
-	cursor: pointer;
-	* cursor: hand;
-}
-
-.paging_full_numbers {
-	width: 350px !important;
-}
-
-.fg-toolbar {
-	padding: 5px;
-}
-
-.dataTables_paginate {
-	width: auto;
-}
-
-table.display thead th {
-	padding: 3px 0px 3px 10px;
-	cursor: pointer;
-	* cursor: hand;
-}
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Everything below this line is the same as demo_table.css. This file is
- * required for 'cleanliness' of the markup
- *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * DataTables features
- */
-
-.dataTables_wrapper {
-	position: relative;
-	min-height: 302px;
-	_height: 302px;
-	clear: both;
-}
-
-.dataTables_processing {
-	position: absolute;
-	top: 0px;
-	left: 50%;
-	width: 250px;
-	margin-left: -125px;
-	border: 1px solid #ddd;
-	text-align: center;
-	color: #999;
-	font-size: 11px;
-	padding: 2px 0;
-}
-
-.dataTables_length {
-	width: 40%;
-	float: left;
-}
-
-.dataTables_filter {
-	width: 50%;
-	float: right;
-	text-align: right;
-}
-
-.dataTables_info {
-	width: 50%;
-	float: left;
-}
-
-.dataTables_paginate {
-	float: right;
-	text-align: right;
-}
-
-/* Pagination nested */
-.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next {
-	height: 19px;
-	width: 19px;
-	margin-left: 3px;
-	float: left;
-}
-
-.paginate_disabled_previous {
-	background-image: url('../images/back_disabled.jpg');
-}
-
-.paginate_enabled_previous {
-	background-image: url('../images/back_enabled.jpg');
-}
-
-.paginate_disabled_next {
-	background-image: url('../images/forward_disabled.jpg');
-}
-
-.paginate_enabled_next {
-	background-image: url('../images/forward_enabled.jpg');
-}
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * DataTables display
- */
-table.display {
-	margin: 0 auto;
-	width: 100%;
-	clear: both;
-}
-
-table.display tfoot th {
-	padding: 3px 10px;
-	border-top: 1px solid black;
-	font-weight: bold;
-}
-
-table.display tr.heading2 td {
-	border-bottom: 1px solid #aaa;
-}
-
-table.display td {
-	padding: 3px 10px;
-}
-
-table.display td.center {
-	text-align: center;
-}
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * DataTables sorting
- */
-
-.sorting_asc {
-	background: url('../images/sort_asc.jpg') no-repeat center right;
-}
-
-.sorting_desc {
-	background: url('../images/sort_desc.jpg') no-repeat center right;
-}
-
-.sorting {
-	background: url('../images/sort_both.jpg') no-repeat center right;
-}
-
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * DataTables row classes
- */
-table.display tr.odd.gradeA {
-	background-color: #ddffdd;
-}
-
-table.display tr.even.gradeA {
-	background-color: #eeffee;
-}
-
-
-
-
-table.display tr.odd.gradeA {
-	background-color: #ddffdd;
-}
-
-table.display tr.even.gradeA {
-	background-color: #eeffee;
-}
-
-table.display tr.odd.gradeC {
-	background-color: #ddddff;
-}
-
-table.display tr.even.gradeC {
-	background-color: #eeeeff;
-}
-
-table.display tr.odd.gradeX {
-	background-color: #ffdddd;
-}
-
-table.display tr.even.gradeX {
-	background-color: #ffeeee;
-}
-
-table.display tr.odd.gradeU {
-	background-color: #ddd;
-}
-
-table.display tr.even.gradeU {
-	background-color: #eee;
-}
-
-
-tr.odd {
-	background-color: #cfcfcf;
-}
-
-tr.even {
-	background-color: white;
-}
-
-
-
-
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Misc
- */
-.top, .bottom {
-	padding: 15px;
-	background-color: #F5F5F5;
-	border: 1px solid #CCCCCC;
-}
-
-.top .dataTables_info {
-	float: none;
-}
-
-.clear {
-	clear: both;
-}
-
-.dataTables_empty {
-	text-align: center;
-}
-
-tfoot input {
-	margin: 0.5em 0;
-	width: 100%;
-	color: #444;
-}
-
-tfoot input.search_init {
-	color: #999;
-}
-
-td.group {
-	background-color: #d1cfd0;
-	border-bottom: 2px solid #A19B9E;
-	border-top: 2px solid #A19B9E;
-}
-
-td.details {
-	background-color: #d1cfd0;
-	border: 2px solid #A19B9E;
-}
-
-
-.example_alt_pagination div.dataTables_info {
-	width: 40%;
-}
-
-.paging_full_numbers span.paginate_button,
- 	.paging_full_numbers span.paginate_active {
-	border: 1px solid #aaa;
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	padding: 2px 5px;
-	margin: 0 3px;
-	cursor: pointer;
-	*cursor: hand;
-}
-
-.paging_full_numbers span.paginate_button {
-	background-color: #ddd;
-}
-
-.paging_full_numbers span.paginate_button:hover {
-	background-color: #ccc;
-}
-
-.paging_full_numbers span.paginate_active {
-	background-color: #99B3FF;
-}
-
-table.display tr.even.row_selected td {
-	background-color: #B0BED9;
-}
-
-table.display tr.odd.row_selected td {
-	background-color: #9FAFD1;
-}
-
-
-/*
- * Sorting classes for columns
- */
-/* For the standard odd/even */
-tr.odd td.sorting_1 {
-	background-color: #d4aeae;
-}
-
-tr.odd td.sorting_2 {
-	background-color: #DADCFF;
-}
-
-tr.odd td.sorting_3 {
-	background-color: #E0E2FF;
-}
-
-tr.even td.sorting_1 {
-	background-color: #EAEBFF;
-}
-
-tr.even td.sorting_2 {
-	background-color: #F2F3FF;
-}
-
-tr.even td.sorting_3 {
-	background-color: #F9F9FF;
-}
-
-
-/* For the Conditional-CSS grading rows */
-/*
- 	Colour calculations (based off the main row colours)
-  Level 1:
-		dd > c4
-		ee > d5
-	Level 2:
-	  dd > d1
-	  ee > e2
- */
-tr.odd.gradeA td.sorting_1 {
-	background-color: #c4ffc4;
-}
-
-tr.odd.gradeA td.sorting_2 {
-	background-color: #d1ffd1;
-}
-
-tr.odd.gradeA td.sorting_3 {
-	background-color: #d1ffd1;
-}
-
-tr.even.gradeA td.sorting_1 {
-	background-color: #d5ffd5;
-}
-
-tr.even.gradeA td.sorting_2 {
-	background-color: #e2ffe2;
-}
-
-tr.even.gradeA td.sorting_3 {
-	background-color: #e2ffe2;
-}
-
-tr.odd.gradeC td.sorting_1 {
-	background-color: #c4c4ff;
-}
-
-tr.odd.gradeC td.sorting_2 {
-	background-color: #d1d1ff;
-}
-
-tr.odd.gradeC td.sorting_3 {
-	background-color: #d1d1ff;
-}
-
-tr.even.gradeC td.sorting_1 {
-	background-color: #d5d5ff;
-}
-
-tr.even.gradeC td.sorting_2 {
-	background-color: #e2e2ff;
-}
-
-tr.even.gradeC td.sorting_3 {
-	background-color: #e2e2ff;
-}
-
-tr.odd.gradeX td.sorting_1 {
-	background-color: #ffc4c4;
-}
-
-tr.odd.gradeX td.sorting_2 {
-	background-color: #ffd1d1;
-}
-
-tr.odd.gradeX td.sorting_3 {
-	background-color: #ffd1d1;
-}
-
-tr.even.gradeX td.sorting_1 {
-	background-color: #ffd5d5;
-}
-
-tr.even.gradeX td.sorting_2 {
-	background-color: #ffe2e2;
-}
-
-tr.even.gradeX td.sorting_3 {
-	background-color: #ffe2e2;
-}
-
-tr.odd.gradeU td.sorting_1 {
-	background-color: #c4c4c4;
-}
-
-tr.odd.gradeU td.sorting_2 {
-	background-color: #d1d1d1;
-}
-
-tr.odd.gradeU td.sorting_3 {
-	background-color: #d1d1d1;
-}
-
-tr.even.gradeU td.sorting_1 {
-	background-color: #d5d5d5;
-}
-
-tr.even.gradeU td.sorting_2 {
-	background-color: #e2e2e2;
-}
-
-tr.even.gradeU td.sorting_3 {
-	background-color: #e2e2e2;
-}
-
-
-/*
- * Row highlighting example
- */
-.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {
-	background-color: #ECFFB3;
-}
-
-.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {
-	background-color: #E6FF99;
-}
\ No newline at end of file

Deleted: trunk/mapbender/http/geoportal/gaz_geom_alt.php
===================================================================
--- trunk/mapbender/http/geoportal/gaz_geom_alt.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/gaz_geom_alt.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,651 +0,0 @@
-<?php
-# $Id$
-# http://www.mapbender.org/index.php/gaz_service.php
-# Copyright (C) 2002 CCGIS 
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-(isset($_SERVER["argv"][1]))? ($user_id = $_SERVER["argv"][1]) : ($e = new mb_exception("geom: user lacks!"));
-(isset($_SERVER["argv"][2]))? ($sstr = $_SERVER["argv"][2]) : ($e = new mb_exception("geom: string lacks!"));
-(isset($_SERVER["argv"][3]))? ($epsg = $_SERVER["argv"][3]) : ($e = new mb_exception("geom: epsg lacks!"));
-
-
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../../conf/geoportal.conf");
-require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
-
-$con = pg_connect("host=".GEOMDB_HOST." port=".GEOMDB_PORT." dbname=".GEOMDB_NAME." user=".GEOMDB_USER." password=".GEOMDB_PASSWORD)
-or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
-
-function replaceChars($text){
-	$search = array( "ä",  "ö",  "ü",  "Ä",  "Ö",  "Ü",  "ß","tr." );
-	$repwith = array("ae", "oe", "ue", "AE", "OE", "UE", "ss","tr");
-	
-	if(CHARSET=="UTF-8")
-		$text = utf8_decode($text);
-
-	$ret = str_replace($search, $repwith, $text);
-
-	if(CHARSET=="UTF-8")
-		$ret = utf8_encode($ret);
-
-	return $ret;
-}
-/******* conf ***********************************/
-$factor = 1;
-if (intval($epsg) == 4326) $factor = 0.00001; 
-/******* wohnplätze *******************/
-$bufferWP = 1000*$factor;
-$arrayWP = array();
-$arrayWPKey = array();
-
-/******* gemeinde *********************/	
-$bufferG = 100*$factor;
-$arrayG = array();
-$toleranceG = 100*$factor;
-
-/******* kreis *********************/	
-$bufferK = 100*$factor;
-$arrayK = array();
-$toleranceK = 1000*$factor;
-/******* verbandsgemeinde *********************/	
-$bufferV = 100*$factor;
-$arrayV = array();
-$toleranceV = 1000*$factor;
-/******* strasse *********************/	
-$bufferSTR = 100*$factor;
-$arraySTR = array();
-$toleranceSTR = 100*$factor;
-/******* Strasse / Hsnr ****************/
-$bufferSH = 100*$factor;
-$arraySH = array();
-$toleranceSH = 1000*$factor;
-
-/****** Workflow *********************************/
-/**/
-$astr = split(",",replaceChars($sstr));
-if(count($astr) == 1){
-	$astr[0] = trim($astr[0]);
-	$plz = getPlz($astr[0]);
-	$hsnr = getNr($astr[0]);
-	if($plz != false){
-		//checkSize($astr[0]);
-		checkWP($plz, strtoupper(getCity($astr[0])));
-		checkGfromWP();
-	}
-	else if($hsnr != false){
-		
-	}
-	else if($hsnr == false && $plz == false){
-		checkWP(false,strtoupper($astr[0]));
-		checkG(strtoupper($astr[0]));
-		checkGfromWP();
-		checkK(strtoupper($astr[0]));
-		checkVg($astr[0]);
-	}
-}
-else if(count($astr) == 2){
-	$astr[0] = trim($astr[0]);
-	$astr[1] = trim($astr[1]);
-	$ckeys = array();
-	$cnames = array();
-	$cmissing = array();
-	
-	$myplz = false;
-	$mycity = false;
-	$mystr = false;
-	$mynr = false;
-	$myzs = false;
-	$both = array();
-	
-	// 1. 
-	if(getPlz($astr[0])){
-		$myplz = getPlz($astr[0]);
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-		}
-		else{
-			$mystr = trim($astr[1]);	
-		}
-	}
-	else if(getNr($astr[0])){
-		$mynr = getNr($astr[0]);
-		$myzs = getAppendix($astr[0]);
-		$mystr = getStrn($astr[0]);
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		else{
-			$mycity = trim($astr[1]);
-		}
-	}
-	else{
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-			$mycity = getCity($astr[0]);
-		}
-		else{
-			array_push($both,$astr[0]);
-			array_push($both,$astr[1]);	
-		}
-	}
-	// workflow
-	if(count($both) == 2){
-		$a = "%".strtoupper(trim($both[0]))."%";
-		$b = "%".strtoupper(trim($both[1]))."%";
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde AS gem FROM gis.verwaltungseinheit ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM gis.wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $b);
-		}
-		$v = array($b, $b);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde AS gem FROM gis.verwaltungseinheit ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM gis.wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $a);
-		}
-		
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], $cmissing[$i]);
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT str_name_ewois, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-				$sql .= "FROM gis.strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND (str_name_ewois_upper LIKE $2)";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					$show = encode($row["str_name_ewois"])."  ".$cnames[$i];
-					stack_it($arraySTR,"str",$show,"str",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-
-		}
-	}
-	else{
-//	echo $myplz ."#";
-//	echo $mycity ."#";
-//	echo $mystr ."#";
-//	echo $mynr ."#";
-//	echo $myzs ."#";
-//	print_r($both);	
-		checkSH($mystr,$mynr,$myzs,$myplz,$mycity);
-	}
-}	
-
- 
-
-//$fillSH = checkSH("Akazienweg",30,false,56075,"Koblenz"); 
-
-xml_output();
-
-function checkMinLength($str) {
-	if (strlen($str) < 3) {
-		//errorOutput();
-		null_output();
-		die();
-	} 
-}
-//Strasse Hausnummer
-function checkSH($s,$h,$z,$p,$o){
-	global $bufferSH, $arraySH, $epsg;
-	
-	if ($o && $s) {
-		$str_schl = array();
-		$str_schl_gem = array();
-		$ckeys = array();
-		$cnames = array();
-		$a = "%".strtoupper(trim($o))."%";
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde AS gem FROM gis.verwaltungseinheit ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM gis.wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, $row['gem']);
-		}
-	
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], "%". strtoupper(trim($s)). "%");
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT str_schl_alt ";
-				$sql .= "FROM gis.strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND str_name_ewois_upper ILIKE $2";
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					array_push($str_schl, $row['str_schl_alt']);
-					array_push($str_schl_gem, $cnames[$i]);
-				}
-			}
-			if (count($str_schl > 0)) {
-				$v = array($h);
-				$t = array('i');
-				$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-				$sql .= "FROM gis.hauskoordinaten ";
-				$sql .= "WHERE hausnummer = $1 AND strschl IN (";
-
-				for($i=0; $i<count($str_schl); $i++){	
-					if($i > 0){$sql .= ",";}
-					$sql .= "$".($i+2);
-					array_push($v,$str_schl[$i]);
-					array_push($t,'i');
-				}
-				$sql .= ")";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					
-
-#$show = $row["name"]." ".$row["hausnummer"];
-				if($row["zusatz"] != 'null'){
-				#	$show .= $row["zusatz"];
-				
-$show = utf8_decode($row["name"])." ".$row["hausnummer"].$row["zusatz"];
-//$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"]; TODO: exchange this, when the hauskoordinaten table is delivered in a homogenous encoding! 
-}
-	else
-{$show = $row["name"]." ".$row["hausnummer"];}	
-		$show .= ", " . $row["plz"]. " " . $row["post_ortsname"];
-			
-
-	stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-		}
-	
-	}
-	else {
-		//is this 'else' obsolete?
-		$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-		$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-		$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-		$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-		$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-		$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-		$sql .= "FROM gis.hauskoordinaten ";
-		$sql .= "WHERE name ILIKE $1 AND hausnummer = $2 ";
-		$v = array("%".$s."%",$h);
-		$t = array('s','i');
-		if($z){
-			$sql .= "AND zusatz = $" . (count($v)+1);
-			array_push($v,$z);
-			array_push($t,'s');
-		}
-		if($p){
-			$sql .= "AND plz = $" . (count($v)+1);
-			array_push($v,$p);
-			array_push($t,'i');
-		}
-		if($o){
-			$sql .= "AND post_ortsname ILIKE $" . (count($v)+1);
-			array_push($v,"%".$o."%");
-			array_push($t,'s');
-		}
-		#$sql .= " GROUP BY the_geom, name, hausnummer, zusatz, plz, post_ortsname";	
-		if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-			$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-		}				
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			
-			$show = utf8_encode($row["name"])." ".$row["hausnummer"];
-			//$show = $row["name"]." ".$row["hausnummer"]; TODO: see above
-			if($row["zusatz"] != null){
-				$show .= $row["zusatz"];	
-			}
-			$show .= ", " . $row["plz"]. " " . $row["post_ortsname"]; 
-			stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		}
-	}
-	return true;
-}
-//Wohnplatz
-function checkWP($plz,$name){	
-	global $bufferWP, $arrayWP, $arrayWPKey, $epsg;
-	$v = array();
-	$t = array();
-	checkMinLength($name);
-	$sql = "SELECT DISTINCT gemeinde_gem_teile, gem_schl_neu, postleitzahl,";
-	$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferWP.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferWP.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferWP.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferWP.") as maxy ";
-	$sql .= "FROM gis.wohnplatz WHERE ";
-	if($plz == false){
-		$sql .= "gemeinde_gem_teile_upper ILIKE $1 ";
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	else if($name == false){
-		$sql .= "postleitzahl = $1 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-	}
-	else{
-		$sql .= "postleitzahl = $1 AND gemeinde_gem_teile_upper ILIKE $2 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	$sql .= "GROUP BY the_geom, gemeinde_gem_teile, gem_schl_neu, postleitzahl";	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		$show = encode($row["gemeinde_gem_teile"]);
-		$show.= " (Wohnplatz)";
-		if(intval($row['postleitzahl'])> 1){ $show .= " (".$row['postleitzahl'].")"; }
-		stack_it($arrayWP,"wohnplatz",$show,"wp",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		if(!in_array($row["gem_schl_neu"],$arrayWPKey)){
-			array_push($arrayWPKey,$row["gem_schl_neu"]);
-		}
-	}
-	return true; 
-}
-function checkGfromWP(){
-	global $arrayWPKey, $bufferG, $arrayG, $toleranceG, $epsg;
-	if(count($arrayWPKey) == 0){
-		return false;	
-	}
-	$v = array();
-	$t = array();
-	$sql = "SELECT DISTINCT gemeinde, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gis.verwaltungseinheit WHERE gem_schl_neu IN(";
-	for($i=0; $i<count($arrayWPKey); $i++){
-		if($i > 0){$sql .= ",";}
-		$sql .= "$".($i+1);
-		array_push($v,$arrayWPKey[$i]);
-		array_push($t,'i');
-	}
-	$sql .= ") GROUP BY the_geom, gemeinde";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Wohnplatz)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkG($str){
-	global $bufferG, $arrayG, $toleranceG, $arrayWPKey, $epsg;
-	checkMinLength($str);
-	$tmp = array();
-	$sql = "SELECT DISTINCT gemeinde, gem_schl_neu, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gis.verwaltungseinheit WHERE gemeinde_upper ILIKE $1 ";
-	#$sql .= "GROUP BY the_geom, gemeinde, gem_schl_neu";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Gemeinde)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		$tmp[count($tmp)] = $row["gem_schl_neu"]; 
-	}
-	$arrayWPKey = array_diff($arrayWPKey,$tmp);
-}
-
-function checkK($str){
-	global $bufferK, $arrayK, $toleranceK, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT kreis, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceK.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferK.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferK.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferK.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferK.") as maxy ";
-	$sql .= "FROM gis.kreis_pl WHERE kreis_upper ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayK,"kreis",encode($row["kreis"]." (Landkreis)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkVg($str){
-	global $bufferV, $arrayV, $toleranceV, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT vg, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceV.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferV.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferV.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferV.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferV.") as maxy ";
-	$sql .= "FROM gis.vg_fl WHERE vg ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayV,"verbandsgemeinde",encode($row["vg"]." (Verbandsgemeinde)"),"vg",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function stack_it(&$stack,$category,$showtitle,$prefix,$srid,$minx,$miny,$maxx,$maxy,$gml){
-	$doc = new DOMDocument();
-	$member = $doc->createElement("member");
-	$doc->appendChild($member);
-	$member->setAttribute('id',$prefix.count($stack));
-	$fc = $doc->createElement("FeatureCollection");
-	$member->appendChild($fc);
-	$fc->setAttribute("xmlns:gml","http://www.opengis.net/gml");
-	$bb = $doc->createElement("boundedBy");
-	$fc->appendChild($bb);
-	$box = $doc->createElement("Box");
-	$bb->appendChild($box);
-	$box->setAttribute('srsName',"EPSG:".$srid);
-	$c = $doc->createElement("coordinates");
-	$box->appendChild($c);
-	$coords = $doc->createTextNode($minx.",".$miny." ".$maxx.",".$maxy);
-	$c->appendChild($coords);
-	$fm = $doc->createElement("featureMember");
-	$fc->appendChild($fm);
-	$wp = $doc->createElement($category);
-	$fm->appendChild($wp);
-	$title = $doc->createElement("title");
-	$wp->appendChild($title);
-	$ttitle = $doc->createTextNode($showtitle);
-	$title->appendChild($ttitle);
-	$geom = $doc->createElement("the_geom");
-	$wp->appendChild($geom);		
-	$myNode = @simplexml_load_string($gml);
-	$mySNode = dom_import_simplexml($myNode);
-	$domNode = $doc->importNode($mySNode, true);
-	$geom->appendChild($domNode);	 
-	array_push($stack,$member);		
-}
-
-function null_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	$doc = new DOMDocument('1.0');
-	$doc->encoding = CHARSET;
-	$result = $doc->createElement("result");
-	$doc->appendChild($result);
-	$ready = $doc->createElement('ready');
-	$result->appendChild($ready);
-	$tready = $doc->createTextNode("true");
-	$ready->appendChild($tready);
-	echo $doc->saveXML();
-}
-
-
-
-
-
-
-function xml_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	$doc = new DOMDocument('1.0');
-	$doc->encoding = CHARSET;
-	$result = $doc->createElement("result");
-	$doc->appendChild($result);
-	for($i=0; $i<count($arrayWP); $i++){
-		$domNode = $doc->importNode($arrayWP[$i], true);
-		$result->appendChild($domNode);
-	}
-	for($i=0; $i<count($arrayG); $i++){
-		$domNode = $doc->importNode($arrayG[$i], true);
-		$result->appendChild($domNode);
-	}
-	for($i=0; $i<count($arrayK); $i++){
-		$domNode = $doc->importNode($arrayK[$i], true);
-		$result->appendChild($domNode);
-	}
-	for($i=0; $i<count($arraySH); $i++){
-		$domNode = $doc->importNode($arraySH[$i], true);
-		$result->appendChild($domNode);
-	}
-	for($i=0; $i<count($arraySTR); $i++){
-		$domNode = $doc->importNode($arraySTR[$i], true);
-		$result->appendChild($domNode);
-	}
-	for($i=0; $i<count($arrayV); $i++){
-		$domNode = $doc->importNode($arrayV[$i], true);
-		$result->appendChild($domNode);
-	}
-	$ready = $doc->createElement('ready');
-	$result->appendChild($ready);
-	$tready = $doc->createTextNode("true");
-	$ready->appendChild($tready);
-	echo $doc->saveXML();
-}
-function encode($s){
-#	if(CHARSET == 'UTF-8'){
-#		$s = utf8_encode($s);
-#	}
-	return $s;
-}
-function getPlz($str){
-	$p = "/.*(\d{5}).*/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCity($str){
-	$p = "/(^\d{5}){0,1}(.*)/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[2]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getNr($str){
-	$p = "/.*[^0-9](\d{1,4})[^0-9]*/";
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[(count($am)-1)];
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getStrn($str){
-	$p = "/^(\D+)\d/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[1]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getAppendix($str){
-	$p = "/.*\d+.*(\D{1})/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCKeysByName($city){
-	global $ckeys;
-	$city = "%".strtoupper(trim($city))."%";
-	$sql = "SELECT gem_schl_neu FROM gis.wohnplatz ";
-	$sql .= "WHERE gemeinde_gem_teile_upper ILIKE $1 ";
-	$v = array($city);
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		array_push($ckeys, $row['gem_schl_neu']);
-	}
-}
-?>

Deleted: trunk/mapbender/http/geoportal/gaz_geom_mobile.php.trunk
===================================================================
--- trunk/mapbender/http/geoportal/gaz_geom_mobile.php.trunk	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/gaz_geom_mobile.php.trunk	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,849 +0,0 @@
-<?php
-# $Id$
-# http://www.mapbender.org/index.php/gaz_service.php
-# Copyright (C) 2002 CCGIS 
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../../conf/geoportal.conf");
-require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
-require_once(dirname(__FILE__)."/../classes/class_json.php");
-
-//Check if the result should be delivered as a webservice
-
-
-IF ($_REQUEST['resultTarget'] != 'web') {
-	(isset($_SERVER["argv"][1]))? ($user_id = $_SERVER["argv"][1]) : ($e = new mb_exception("geom: user lacks!"));
-	(isset($_SERVER["argv"][2]))? ($sstr = $_SERVER["argv"][2]) : ($e = new mb_exception("geom: string lacks!"));
-	(isset($_SERVER["argv"][3]))? ($epsg = $_SERVER["argv"][3]) : ($e = new mb_exception("geom: epsg lacks!"));
-	$searchThruWeb = false;
-} else {
-	$maxResults = 15; //set default
-	$outputFormat = 'json'; //set default
-	$epsg = 25832;
-	
-	if (isset($_REQUEST["maxResults"]) & $_REQUEST["maxResults"] != "") {
-		//validate integer to 100 - not more
-		$testMatch = $_REQUEST["maxResults"];
-		//give max 99 entries - more will be to slow
-		$pattern = '/^([0-9]{0,1})([0-9]{1})$/';		
- 		if (!preg_match($pattern,$testMatch)){ 
-			echo '<b>maxResults</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$maxResults = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
-		$testMatch = $_REQUEST["outputFormat"];	
- 		if (!($testMatch == 'json')){ 
-			echo '<b>outputFormat</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$outputFormat = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["searchEPSG"]) & $_REQUEST["searchEPSG"] != "") {
-		$testMatch = $_REQUEST["searchEPSG"];	
- 		if (!($testMatch == '31467' or $testMatch == '31466' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo '<b>searchEPSG</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$searchEPSG = $testMatch;
-		$testMatch = NULL;
-	}
-	/*if (isset($_REQUEST["callback"]) & $_REQUEST["callback"] != "") {
-		$testMatch = $_REQUEST["callback"];	
-		$pattern = '/^jQuery\d+_\d+$/';
-		if (!preg_match($pattern,$testMatch)){ 
- 		//if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo 'callback: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$callback = $testMatch;
-		$testMatch = NULL;
-	}*/
-	//for debugging
-	$callback = $_REQUEST["callback"];
-	//get searchText as a parameter
-	$searchText = $_REQUEST['searchText']; //TODO: filter for insecure texts
-	$sstr = $searchText;
-	$epsg = $searchEPSG;
-	$searchThruWeb = true;
-}
-
-
-$e = new mb_notice("maxResults: ".$maxResults);
-$con = pg_connect("host=".GEOMDB_HOST." port=".GEOMDB_PORT." dbname=".GEOMDB_NAME." user=".GEOMDB_USER." password=".GEOMDB_PASSWORD)
-or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
-
-function replaceChars($text){
-//	$search = array( "ä",  "ö",  "ü",  "Ä",  "Ö",  "Ü", "tr.", "ß" );
-//	$repwith = array("ae", "oe", "ue", "AE", "OE", "UE", "tr","ss");
-	
-	//if(CHARSET=="UTF-8")
-	//	$text = utf8_decode($text);
-
-//	$ret = str_replace($search, $repwith, $text);
-
-	//if(CHARSET=="UTF-8")
-	//	$ret = utf8_encode($ret);
-
-//	return $ret;
-
-	return $text;
-
-}
-
-
-/******* conf ***********************************/
-$factor = 1;
-if (intval($epsg) == 4326) $factor = 0.00001; 
-/******* wohnplätze *******************/
-$bufferWP = 1000*$factor;
-$arrayWP = array();
-$arrayWPKey = array();
-
-/******* gemeinde *********************/	
-$bufferG = 100*$factor;
-$arrayG = array();
-$toleranceG = 100*$factor;
-
-/******* kreis *********************/	
-$bufferK = 100*$factor;
-$arrayK = array();
-$toleranceK = 1000*$factor;
-/******* verbandsgemeinde *********************/	
-$bufferV = 100*$factor;
-$arrayV = array();
-$toleranceV = 1000*$factor;
-/******* strasse *********************/	
-$bufferSTR = 175*$factor;
-$arraySTR = array();
-$toleranceSTR = 100*$factor;
-/******* Strasse / Hsnr ****************/
-$bufferSH = 75*$factor;
-$arraySH = array();
-$toleranceSH = 1000*$factor;
-
-
-$e = new mb_notice("gaz_geom_mobile was invoked with string:".$sstr);
-/****** Workflow *********************************/
-/**/
-$test = str_replace("ß", "ss", $sstr);
-$e = new mb_notice("replaced test string: ".$test);
-$astr = split(",",replaceChars($sstr));
-$e = new mb_notice("replaced string: ".$astr[0]." ".$astr[1]." ".$astr[2]);
-//if only one string without any comma is given
-if(count($astr) == 1){
-
-	$astr[0] = trim($astr[0]);
-	$e = new mb_notice("gaz_geom_mobile: only one string detected: ".$astr[0]);
-	//check if there may be a postal code
-	$plz = getPlz($astr[0]);
-	//check if there is a housenumber
-	$hsnr = getNr($astr[0]);
-	if($plz != false){
-		
-		//checkSize($astr[0]);
-		checkWP($plz, strtoupper(getCity($astr[0])));
-		checkGfromWP();
-	}
-	else if($hsnr != false){
-		
-	}
-	else if($hsnr == false && $plz == false){
-		checkWP(false,strtoupper($astr[0]));
-		checkG(strtoupper($astr[0]));
-		checkGfromWP();
-		checkK(strtoupper($astr[0]));
-		checkVg($astr[0]);
-	}
-}
-//if 2 parts are given - the first one may be a combined or a single value
-// '56743 mendig' or 'ferdinand-sauerbruch-strasse 15' or 'koblenz' or 'mendig' or, or, or ...
-else if(count($astr) == 2){
-	$e = new mb_notice("gaz_geom_mobile: two strings detected: ".$astr[0]." and ".$astr[1]);
-	$astr[0] = trim($astr[0]);
-	$astr[1] = trim($astr[1]);
-	$ckeys = array();
-	$cnames = array();
-	$cmissing = array();
-	
-	$myplz = false;
-	$mycity = false;
-	$mystr = false;
-	$mynr = false;
-	$myzs = false;
-	$both = array();
-	
-	// check first entry for postal code
-	if(getPlz($astr[0])){
-		$myplz = getPlz($astr[0]);
-		$e = new mb_notice("gaz_geom_mobile: postalcode detected: ".$myplz);
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-		}
-		else{
-			$mystr = trim($astr[1]);	
-		}
-	}
-	//check first entry for number
-	else if(getNr($astr[0])){
-		$mynr = getNr($astr[0]);
-		$myzs = getAppendix($astr[0]);
-		$mystr = getStrn($astr[0]);
-		$e = new mb_notice('gaz_geom_mobile: search for streetname: '.$mystr);
-		//check if in second value there is a postalcode
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		//maybe it will be a city name
-		else{
-			$mycity = trim($astr[1]);
-			$e = new mb_notice('gaz_geom_mobile: search for city: '.$mycity);
-		}
-	}
-	//check second for postal code
-	else{
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-			$mycity = getCity($astr[0]);
-		}
-		else{
-			array_push($both,$astr[0]);
-			array_push($both,$astr[1]);	
-		}
-	}
-	// workflow
-	if(count($both) == 2){
-		$a = "%".strtoupper(trim($both[0]))."%";
-		$b = "%".strtoupper(trim($both[1]))."%";
-		//$a = strtoupper(trim($both[0]))."%";
-		//$b = strtoupper(trim($both[1]))."%";
-
-
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde_neu AS gem FROM gemeinden ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM wohnplatz ";
-		$sql .= "WHERE ewz_int IS NOT NULL AND  gemeinde_gem_teile_upper LIKE $2";
-		$sql .= ") AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $b);
-		}
-		$v = array($b, $b);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde_neu AS gem FROM gemeinden ";
-		$sql .= "WHERE gemeinde_upper LIKE $1 ";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM wohnplatz ";
-		$sql .= "WHERE ewz_int IS NOT NULL AND  gemeinde_gem_teile_upper LIKE $2";
-		$sql .= ") AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $a);
-		}
-		
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], $cmissing[$i]);
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT strassenname, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSTR.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSTR.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSTR.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSTR.") as maxy ";
-				$sql .= "FROM strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND (strassenname_upper LIKE $2)";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					$show = encode($row["strassenname"])."  ".$cnames[$i];
-					$e = new mb_notice('gaz_geom_mobile: street found: '.$row["strassenname"]);
-					stack_it($arraySTR,"str",$show,"str",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-
-		}
-	}
-	else{
-//	echo $myplz ."#";
-//	echo $mycity ."#";
-//	echo $mystr ."#";
-//	echo $mynr ."#";
-//	echo $myzs ."#";
-//	print_r($both);	
-		checkSH($mystr,$mynr,$myzs,$myplz,$mycity);
-	}
-}	
-
- 
-
-//$fillSH = checkSH("Akazienweg",30,false,56075,"Koblenz"); 
-
-xml_output();
-
-function checkMinLength($str) {
-	global $searchThruWeb;
-	if (strlen($str) < 3) {
-		if ($searchThruWeb) {
-		//errorOutput();
-			null_json_output();
-		} else {
-			null_output();
-		}
-		die();
-	} 
-}
-//Strasse Hausnummer
-function checkSH($s,$h,$z,$p,$o){
-	global $bufferSH, $arraySH, $epsg;
-	
-	if ($o && $s) {
-		$str_schl = array();
-		$str_schl_gem = array();
-		$ckeys = array();
-		$cnames = array();
-		$a = "%".strtoupper(trim($o))."%";
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde_neu AS gem FROM gemeinden ";
-		$sql .= "WHERE gemeinde_upper LIKE $1 ";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM wohnplatz ";
-		$sql .= "WHERE ewz_int IS NOT NULL AND gemeinde_gem_teile_upper LIKE $2";
-		$sql .=") AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, $row['gem']);
-		}
-	
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], "%". strtoupper(trim($s)). "%");
-				//$v = array($ckeys[$i], strtoupper(trim($s)). "%");
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT strassenschluessel ";
-				$sql .= "FROM strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND strassenname_upper ILIKE $2";
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					array_push($str_schl, $row['strassenschluessel']);
-					$e = new mb_notice('gaz_geom_mobile: strassenschluessel: '.$row["strassenname"].' for '.$s.' found' );	
-					array_push($str_schl_gem, $cnames[$i]);
-				}
-			}
-			//select all streetkeys
-			if (count($str_schl > 0)) {
-				$v = array($h);
-				$t = array('i');
-				$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-				$sql .= "FROM hauskoordinaten ";
-				$sql .= "WHERE hausnummer = $1 AND strschl_gesamt IN (";
-
-				for($i=0; $i<count($str_schl); $i++){	
-					if($i > 0){$sql .= ",";}
-					$sql .= "$".($i+2);
-					array_push($v,$str_schl[$i]);
-					array_push($t,'i');
-				}
-				$sql .= ")";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					
-
-#$show = $row["name"]." ".$row["hausnummer"];
-				if($row["zusatz"] != 'null'){
-				#	$show .= $row["zusatz"];
-				
-$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"];
-//$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"]; TODO: exchange this, when the hauskoordinaten table is delivered in a homogenous encoding! 
-}
-	else
-{$show =  $row["name"]." ".$row["hausnummer"];}	
-		$show .= ", " . $row["plz"]. " " . $row["post_ortsname"];
-			
-
-	stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-		}
-	
-	}
-	else {
-		//is this 'else' obsolete?
-		$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-		$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-		$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-		$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-		$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-		$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-		$sql .= "FROM hauskoordinaten ";
-		$sql .= "WHERE name ILIKE $1 AND hausnummer = $2 ";
-		$v = array("%".$s."%",$h);
-		//$v = array($s."%",$h);
-		$t = array('s','i');
-		if($z){
-			$sql .= "AND zusatz = $" . (count($v)+1);
-			array_push($v,$z);
-			array_push($t,'s');
-		}
-		if($p){
-			$sql .= "AND plz = $" . (count($v)+1);
-			array_push($v,$p);
-			array_push($t,'i');
-		}
-		if($o){
-			$sql .= "AND post_ortsname ILIKE $" . (count($v)+1);
-			array_push($v,"%".$o."%");
-			array_push($t,'s');
-		}
-		#$sql .= " GROUP BY the_geom, name, hausnummer, zusatz, plz, post_ortsname";	
-		if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-			$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-		}				
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			
-			$show = $row["name"]." ".$row["hausnummer"];
-			$e = new mb_notice('gaz_geom_mobile.php: streetname2: '.$row["name"]);
-			//$show = $row["name"]." ".$row["hausnummer"]; TODO: see above
-			if($row["zusatz"] != null){
-				$show .= $row["zusatz"];	
-			}
-			$show .= ", " . $row["plz"]. " " . $row["post_ortsname"]; 
-			stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		}
-	}
-	return true;
-}
-//Wohnplatz
-function checkWP($plz,$name){	
-	global $bufferWP, $arrayWP, $arrayWPKey, $epsg;
-	$v = array();
-	$t = array();
-	checkMinLength($name);
-	$sql = "SELECT DISTINCT gemeinde_gem_teile, gem_schl_neu, postleitzahl,";
-	$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferWP.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferWP.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferWP.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferWP.") as maxy ";
-	$sql .= "FROM wohnplatz WHERE ";
-	if($plz == false){
-		$sql .= "gemeinde_gem_teile_upper ILIKE $1 ";
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	else if($name == false){
-		$sql .= "postleitzahl = $1 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-	}
-	else{
-		$sql .= "postleitzahl = $1 AND gemeinde_gem_teile_upper ILIKE $2 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	$sql .= "GROUP BY the_geom, gemeinde_gem_teile, gem_schl_neu, postleitzahl";	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		$show = encode($row["gemeinde_gem_teile"]);
-		$show.= " (Wohnplatz)";
-		if(intval($row['postleitzahl'])> 1){ $show .= " (".$row['postleitzahl'].")"; }
-		stack_it($arrayWP,"wohnplatz",$show,"wp",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		if(!in_array($row["gem_schl_neu"],$arrayWPKey)){
-			array_push($arrayWPKey,$row["gem_schl_neu"]);
-		}
-	}
-	return true; 
-}
-function checkGfromWP(){
-	global $arrayWPKey, $bufferG, $arrayG, $toleranceG, $epsg;
-	if(count($arrayWPKey) == 0){
-		return false;	
-	}
-	$v = array();
-	$t = array();
-	$sql = "SELECT DISTINCT gemeinde_neu, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gemeinden WHERE gem_schl_neu IN(";
-	for($i=0; $i<count($arrayWPKey); $i++){
-		if($i > 0){$sql .= ",";}
-		$sql .= "$".($i+1);
-		array_push($v,$arrayWPKey[$i]);
-		array_push($t,'i');
-	}
-	$sql .= ") GROUP BY the_geom, gemeinde_neu";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde_neu",encode($row["gemeinde_neu"]." (Wohnplatz)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkG($str){
-	global $bufferG, $arrayG, $toleranceG, $arrayWPKey, $epsg;
-	checkMinLength($str);
-	$tmp = array();
-	$sql = "SELECT DISTINCT gemeinde_neu, gem_schl_neu, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gemeinden WHERE gemeinde_upper ILIKE $1 ";
-	#$sql .= "GROUP BY the_geom, gemeinde, gem_schl_neu";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde_neu",encode($row["gemeinde_neu"]." (Gemeinde)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		$tmp[count($tmp)] = $row["gem_schl_neu"]; 
-	}
-	$arrayWPKey = array_diff($arrayWPKey,$tmp);
-}
-
-function checkK($str){
-	global $bufferK, $arrayK, $toleranceK, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT kreis, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceK.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferK.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferK.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferK.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferK.") as maxy ";
-	$sql .= "FROM kreis_fl WHERE kreis_upper ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayK,"kreis",encode($row["kreis"]." (Landkreis)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkVg($str){
-	global $bufferV, $arrayV, $toleranceV, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT vg, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceV.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferV.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferV.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferV.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferV.") as maxy ";
-	$sql .= "FROM vg_fl WHERE vg ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 25832) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayV,"verbandsgemeinde",encode($row["vg"]." (Verbandsgemeinde)"),"vg",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function stack_it(&$stack,$category,$showtitle,$prefix,$srid,$minx,$miny,$maxx,$maxy,$gml){
-	global $searchThruWeb;
-	if (!$searchThruWeb) {
-	$doc = new DOMDocument();
-	$member = $doc->createElement("member");
-	$doc->appendChild($member);
-	$member->setAttribute('id',$prefix.count($stack));
-	$fc = $doc->createElement("FeatureCollection");
-	$member->appendChild($fc);
-	$fc->setAttribute("xmlns:gml","http://www.opengis.net/gml");
-	$bb = $doc->createElement("boundedBy");
-	$fc->appendChild($bb);
-	$box = $doc->createElement("Box");
-	$bb->appendChild($box);
-	$box->setAttribute('srsName',"EPSG:".$srid);
-	$c = $doc->createElement("coordinates");
-	$box->appendChild($c);
-	$coords = $doc->createTextNode($minx.",".$miny." ".$maxx.",".$maxy);
-	$c->appendChild($coords);
-	$fm = $doc->createElement("featureMember");
-	$fc->appendChild($fm);
-	$wp = $doc->createElement($category);
-	$fm->appendChild($wp);
-	$title = $doc->createElement("title");
-	$wp->appendChild($title);
-	$ttitle = $doc->createTextNode($showtitle);
-	$title->appendChild($ttitle);
-	$geom = $doc->createElement("the_geom");
-	$wp->appendChild($geom);		
-	$myNode = @simplexml_load_string($gml);
-	$mySNode = dom_import_simplexml($myNode);
-	$domNode = $doc->importNode($mySNode, true);
-	$geom->appendChild($domNode);	 
-	array_push($stack,$member);
-	} else {
-		//generate simple json objects as array elements
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		$returnJSON->title = $showtitle;
-		$returnJSON->category = $category;
-		$returnJSON->minx = $minx;
-		$returnJSON->miny = $miny;
-		$returnJSON->maxx = $maxx;
-		$returnJSON->maxy = $maxy;
-		$returnJSON = $classJSON->encode($returnJSON);
-		array_push($stack,$returnJSON);	
-	}		
-}
-
-function null_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	$doc = new DOMDocument('1.0');
-	$doc->encoding = CHARSET;
-	$result = $doc->createElement("result");
-	$doc->appendChild($result);
-	$ready = $doc->createElement('ready');
-	$result->appendChild($ready);
-	$tready = $doc->createTextNode("true");
-	$ready->appendChild($tready);
-	echo $doc->saveXML();
-}
-
-function null_json_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	echo "{\"totalResultsCount\":0,\"geonames\":[]}";
-}
-
-
-
-
-
-function xml_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV, $searchThruWeb, $callback, $maxResults;
-	if (!$searchThruWeb) {
-		$doc = new DOMDocument('1.0');
-		$doc->encoding = CHARSET;
-		$result = $doc->createElement("result");
-		$doc->appendChild($result);
-
-		for($i=0; $i<count($arrayWP); $i++){
-			$domNode = $doc->importNode($arrayWP[$i], true); 
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayG); $i++){
-			$domNode = $doc->importNode($arrayG[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayK); $i++){
-			$domNode = $doc->importNode($arrayK[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arraySH); $i++){
-			$domNode = $doc->importNode($arraySH[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arraySTR); $i++){
-			$domNode = $doc->importNode($arraySTR[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayV); $i++){
-			$domNode = $doc->importNode($arrayV[$i], true);
-			$result->appendChild($domNode);
-		}
-		$ready = $doc->createElement('ready');
-		$result->appendChild($ready);
-		$tready = $doc->createTextNode("true");
-		$ready->appendChild($tready);
-		//if ($searchThruWeb) {
-		//	header("Content-type: application/xhtml+xml; charset=UTF-8");
-		//}
-		echo $doc->saveXML();
-	} else {
-		//generate json object with gml content
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		
-		$countGeonames = 0;
-		$returnJSON->totalResultsCount = 0;
-
-		for($i=0; $i<count($arrayK); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayK[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-
-		for($i=0; $i<count($arrayV); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayV[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arrayG); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayG[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arraySTR); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySTR[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arrayWP); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayWP[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arraySH); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySH[$i]);
-			$countGeonames++;
-		}
-		$returnJSON->totalResultsCount = $countGeonames;
-		if ($returnJSON->totalResultsCount == 0) {
-			$returnJSON->geonames = array();
-		}
-		if (isset($callback) && $callback != '') {
-			 $returnJSON = $callback."(".$classJSON->encode($returnJSON).")";
-		} else {
-			  $returnJSON = $classJSON->encode($returnJSON);
-		}
-
-	       	echo $returnJSON;	
-	}
-	
-}
-function encode($s){
-#	if(CHARSET == 'UTF-8'){
-#		$s = utf8_encode($s);
-#	}
-	return $s;
-}
-function getPlz($str){
-	$p = "/.*(\d{5}).*/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCity($str){
-	$p = "/(^\d{5}){0,1}(.*)/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[2]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getNr($str){
-	$p = "/.*[^0-9](\d{1,4})[^0-9]*/";
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[(count($am)-1)];
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getStrn($str){
-	$p = "/^(\D+)\d/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[1]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getAppendix($str){
-	$p = "/.*\d+.*(\D{1})/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCKeysByName($city){
-	global $ckeys;
-	$city = "%".strtoupper(trim($city))."%";
-	$sql = "SELECT gem_schl_neu FROM gis.wohnplatz ";
-	$sql .= "WHERE gemeinde_gem_teile_upper ILIKE $1 ";
-	$v = array($city);
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		array_push($ckeys, $row['gem_schl_neu']);
-	}
-}
-?>

Deleted: trunk/mapbender/http/geoportal/gaz_geom_mobile2.php
===================================================================
--- trunk/mapbender/http/geoportal/gaz_geom_mobile2.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/gaz_geom_mobile2.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,848 +0,0 @@
-<?php
-
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../../conf/geoportal.conf");
-require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
-require_once(dirname(__FILE__)."/../classes/class_json.php");
-
-IF ($_REQUEST['resultTarget'] != 'web') {
-	(isset($_SERVER["argv"][1]))? ($user_id = $_SERVER["argv"][1]) : ($e = new mb_exception("geom: user lacks!"));
-	(isset($_SERVER["argv"][2]))? ($sstr = $_SERVER["argv"][2]) : ($e = new mb_exception("geom: string lacks!"));
-	(isset($_SERVER["argv"][3]))? ($epsg = $_SERVER["argv"][3]) : ($e = new mb_exception("geom: epsg lacks!"));
-	$searchThruWeb = false;
-} else {
-	$maxResults = 15; 
-	$outputFormat = 'json';
-	$epsg = 25832;
-	
-	if (isset($_REQUEST["maxResults"]) & $_REQUEST["maxResults"] != "") {
-		$testMatch = $_REQUEST["maxResults"];
-		$pattern = '/^([0-9]{0,1})([0-9]{1})$/';		
- 		if (!preg_match($pattern,$testMatch)){ 
-			echo 'maxResults: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$maxResults = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
-		$testMatch = $_REQUEST["outputFormat"];	
- 		if (!($testMatch == 'json')){ 
-			echo 'outputFormat: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$outputFormat = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["searchEPSG"]) & $_REQUEST["searchEPSG"] != "") {
-		$testMatch = $_REQUEST["searchEPSG"];	
- 		if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo 'searchEPSG: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$searchEPSG = $testMatch;
-		$testMatch = NULL;
-	}
-	
-	$callback = $_REQUEST["callback"];
-	$searchText = $_REQUEST['searchText']; 
-	$sstr = $searchText;
-	$epsg = $searchEPSG;
-	$searchThruWeb = true;
-}
-
-$e = new mb_notice("maxResults: ".$maxResults);
-$con = pg_connect("host=".GEOMDB_HOST." port=".GEOMDB_PORT." dbname=".GEOMDB_NAME." user=".GEOMDB_USER." password=".GEOMDB_PASSWORD)
-or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
-
-function replaceChars($text){
-	return $text;
-}
-
-$factor = 1;
-if (intval($epsg) == 25832) $factor = 1.0;
-
-//StreetOnly
-$bufferAB = 300*$factor;
-$arrayAB = array();
-$toleranceAB = 100*$factor;
-
-$bufferCD = 300*$factor;
-$arrayCD = array();
-$toleranceCD = 100*$factor;
-
-$bufferEF = 300*$factor;
-$arrayEF = array();
-$toleranceEF = 100*$factor;
-
-$bufferGH = 300*$factor;
-$arrayGH = array();
-$toleranceGH = 100*$factor;
-
-$bufferIJK = 300*$factor;
-$arrayIJK = array();
-$toleranceIJK = 100*$factor;
-
-$bufferLM = 300*$factor;
-$arrayLM = array();
-$toleranceLM = 100*$factor;
-
-$bufferNOP = 300*$factor;
-$arrayNOP = array();
-$toleranceNOP = 100*$factor;
-
-$bufferQRT = 300*$factor;
-$arrayQRT = array();
-$toleranceQRT = 100*$factor;
-
-$bufferS = 300*$factor;
-$arrayS = array();
-$toleranceS = 100*$factor;
-
-$bufferRes = 300*$factor;  // = U,V,X,Y,Z,Ü,Ö,Ä
-$arrayRes = array();
-$toleranceRes = 100*$factor;
-
-$bufferW = 300*$factor;
-$arrayW = array();
-$toleranceW = 100*$factor; 
-
-//Streets
-$bufferOnly = 800*$factor;
-$arrayOnly = array();
-$toleranceOnly = 100*$factor;
-
-//GemeindeSuche
-$bufferG = 15000*$factor;
-$arrayG = array();
-$toleranceG = 100*$factor;
-
-//KreisSuche
-$bufferK = 33000*$factor;
-$arrayK = array();
-$toleranceK = 1000*$factor;
-
-//PLZSuche
-$bufferPLZ = 6000*$factor;
-$arrayPLZ = array();
-$tolerancePLZ = 100*$factor;
-
-//Sights
-$bufferSights = 600*$factor;
-$arraySights = array();
-$toleranceSights = 1000*$factor;
-
-
-$e = new mb_notice("gaz_geom_mobile was invoked with string:".$sstr);
-
-$test = str_replace("ß", "ss", $sstr);
-$e = new mb_notice("replaced test string: ".$test);
-
-$astr = split(",",replaceChars($sstr));
-$e = new mb_notice("replaced string: ".$astr[0]." ".$astr[1]." ".$astr[2]." ".$astr[3]." ".$astr[4]);
-
-$astr[0] = trim($astr[0]);
-$astr[1] = trim($astr[1]);
-	
-$e = new mb_notice("gaz_geom_mobile: only one string detected: ".$astr[0]);
-		
-		//Funktionen
-
-		GemeindeSuche($astr[0]);
-		KreisSuche($astr[0]);
-		PLZSuche($astr[0]);
-		StreetOnly($astr[0]);
-		SightsSearch($astr[0]);
-	
-		StreetAB($astr[0]);
-		StreetCD($astr[0]);
-		StreetEF($astr[0]);
-		StreetGH($astr[0]);
-		StreetIJK($astr[0]);
-		StreetLM($astr[0]);
-		StreetNOP($astr[0]);
-		StreetQRT($astr[0]);
-		StreetS($astr[0]);
-		StreetRest($astr[0]);
-		StreetW($astr[0]);
-	
-xml_output();
-
-function checkMinLength($str) {
-	global $searchThruWeb;
-	if (strlen($str) < 3) {
-		if ($searchThruWeb) {
-			null_json_output();
-		} else {
-			null_output();
-		}
-		die();
-	} 
-}
-
-function GemeindeSuche($str){
-	global $bufferG, $arrayG, $toleranceG, $epsg;
-	checkMinLength($str);
-	
-	$sql = "SELECT DISTINCT gemeinde, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceG.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferG.") as maxy ";
-	$sql .= "FROM gemeinden WHERE gemeinde_upper ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Gemeinde)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function KreisSuche($str){
-	global $bufferK, $arrayK, $toleranceK, $epsg;
-	checkMinLength($str);
-
-	$sql = "SELECT DISTINCT kreis, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceK.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferK.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferK.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferK.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferK.") as maxy ";
-	$sql .= "FROM kreis_fl WHERE kreis_upper ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayK,"kreis",encode($row["kreis"]." (Landkreis)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function PLZSuche($str){
-	global $bufferPLZ, $arrayPLZ, $tolerancePLZ, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT plz, gemeinde, ortsteil,";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$tolerancePLZ.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferPLZ.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferPLZ.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferPLZ.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferPLZ.") as maxy ";
-	$sql .= "FROM plz ";
-	$sql .= "WHERE plz ILIKE $1 OR ortsteil ILIKE $1 OR gemeinde ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayPLZ,"plz",encode($row["plz"].', '.$row["gemeinde"].', '.$row["ortsteil"]." (PLZ, Gemeinde, Ortsteil)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetOnly($str){
-	global $bufferOnly, $arrayOnly, $toleranceOnly, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT name, gemeinde, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceOnly.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferOnly.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferOnly.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferOnly.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferOnly.") as maxy ";
-	$sql .= "FROM strassen ";
-	$sql .= "WHERE strgem ILIKE $1 OR name_ext ILIKE $1 OR name_str ILIKE $1 OR name_ss ILIKE $1 ";
-	//$sql .= "WHERE (name || ' ' || gemeinde) ILIKE $1 ";
-	//$sql .= "OR (name || ' ' || gemeinde) ILIKE $1 ";
-	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayOnly,"name",encode($row["name"].', '.$row["gemeinde"]." (Strasse, Gemeinde)"),
-		"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-} 
-
-function SightsSearch($str){
-	global $bufferSights, $arraySights, $toleranceSights, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT name, type, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceSights.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferSights.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferSights.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferSights.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferSights.") as maxy ";
-	$sql .= "FROM sights ";
-	$sql .= "WHERE name ILIKE $1  ";
-	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arraySights,"name",encode($row["name"].', '.$row["type"]),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-} 
-
-function StreetAB($str){
-	global $bufferAB, $arrayAB, $toleranceAB, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceAB.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferAB.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferAB.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferAB.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferAB.") as maxy ";
-	$sql .= "FROM strassenab ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-	//$sql .= "WHERE (name || ' ' || hausnummer) ILIKE $1 ";	
-	//$sql .= "OR (name || ' ' || hausnummer || '' || zusatz) ILIKE $1 ";
-	//$sql .= "OR (name || ' ' || hausnummer || ' ' || gemeinde) ILIKE $1 ";
-	//$sql .= "OR (name || ' ' || hausnummer || '' || zusatz || ' ' || gemeinde) ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayAB,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-
-function StreetCD($str){
-	global $bufferCD, $arrayCD, $toleranceCD, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceCD.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferCD.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferCD.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferCD.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferCD.") as maxy ";
-	$sql .= "FROM strassencd ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayCD,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayCD,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetEF($str){
-	global $bufferEF, $arrayEF, $toleranceEF, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceEF.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferEF.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferEF.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferEF.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferEF.") as maxy ";
-	$sql .= "FROM strassenef ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";	
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayEF,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayEF,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetGH($str){
-	global $bufferGH, $arrayGH, $toleranceGH, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceGH.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferGH.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferGH.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferGH.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferGH.") as maxy ";
-	$sql .= "FROM strassengh ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";	
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayGH,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayGH,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetIJK($str){
-	global $bufferIJK, $arrayIJK, $toleranceIJK, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceIJK.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferIJK.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferIJK.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferIJK.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferIJK.") as maxy ";
-	$sql .= "FROM strassenijk ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayIJK,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayIJK,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetLM($str){
-	global $bufferLM, $arrayLM, $toleranceLM, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceLM.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferLM.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferLM.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferLM.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferLM.") as maxy ";
-	$sql .= "FROM strassenlm ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayLM,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayLM,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetNOP($str){
-	global $bufferNOP, $arrayNOP, $toleranceNOP, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceNOP.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferNOP.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferNOP.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferNOP.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferNOP.") as maxy ";
-	$sql .= "FROM strassennop ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayNOP,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayNOP,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetQRT($str){
-	global $bufferQRT, $arrayQRT, $toleranceQRT, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceQRT.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferQRT.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferQRT.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferQRT.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferQRT.") as maxy ";
-	$sql .= "FROM strassenqrt ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayQRT,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayQRT,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-function StreetS($str){
-	global $bufferS, $arrayS, $toleranceS, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceS.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferS.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferS.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferS.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferS.") as maxy ";
-	$sql .= "FROM strassens ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayS,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayS,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-
-	}
-}
-	
-function StreetRest($str){
-	global $bufferRes, $arrayRes, $toleranceRes, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceRes.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferRes.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferRes.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferRes.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferRes.") as maxy ";
-	$sql .= "FROM strassenrest ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayRes,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayRes,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-} 
-
-function StreetW($str){
-	global $bufferW, $arrayW, $toleranceW, $epsg;
-	checkMinLength($str);
-	
-	$sql .= "SELECT DISTINCT strnumzusgem, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceW.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferW.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferW.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferW.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferW.") as maxy ";
-	$sql .= "FROM strassenw ";
-	$sql .= "WHERE strnumzusgem ILIKE $1 ";
-	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}		
-	$v = array($str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		//stack_it($arrayW,"name",encode($row["name"].' '.$row["hausnummer"].''.$row["zusatz"].', '.$row["gemeinde"]." (Strasse, Hausnummer, Gemeinde)"),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		stack_it($arrayW,"strnumzusgem",encode($row["strnumzusgem"]),"s",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-
-
-function stack_it(&$stack,$category,$showtitle,$prefix,$srid,$minx,$miny,$maxx,$maxy,$gml){
-	global $searchThruWeb;
-	if (!$searchThruWeb) {
-	$doc = new DOMDocument();
-	$member = $doc->createElement("member");
-	$doc->appendChild($member);
-	$member->setAttribute('id',$prefix.count($stack));
-	$fc = $doc->createElement("FeatureCollection");
-	$member->appendChild($fc);
-	$fc->setAttribute("xmlns:gml","http://www.opengis.net/gml");
-	$bb = $doc->createElement("boundedBy");
-	$fc->appendChild($bb);
-	$box = $doc->createElement("Box");
-	$bb->appendChild($box);
-	$box->setAttribute('srsName',"EPSG:".$srid);
-	$c = $doc->createElement("coordinates");
-	$box->appendChild($c);
-	$coords = $doc->createTextNode($minx.",".$miny." ".$maxx.",".$maxy);
-	$c->appendChild($coords);
-	$fm = $doc->createElement("featureMember");
-	$fc->appendChild($fm);
-	$wp = $doc->createElement($category);
-	$fm->appendChild($wp);
-	$title = $doc->createElement("title");
-	$wp->appendChild($title);
-	$ttitle = $doc->createTextNode($showtitle);
-	$title->appendChild($ttitle);
-	$geom = $doc->createElement("the_geom_line");
-	$wp->appendChild($geom);		
-	$myNode = @simplexml_load_string($gml);
-	$mySNode = dom_import_simplexml($myNode);
-	$domNode = $doc->importNode($mySNode, true);
-	$geom->appendChild($domNode);	 
-	array_push($stack,$member);
-	} else {
-
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		$returnJSON->title = $showtitle;
-		$returnJSON->category = $category;
-		$returnJSON->minx = $minx;
-		$returnJSON->miny = $miny;
-		$returnJSON->maxx = $maxx;
-		$returnJSON->maxy = $maxy;
-		$returnJSON = $classJSON->encode($returnJSON);
-		array_push($stack,$returnJSON);	
-	}		
-}
-
-function null_output(){
-	global $sstr, $arrayG, $arraySights, $arrayK, $arrayPLZ, $arrayOnly, $arrayAB, $arrayCD, $arrayEF, $arrayGH, $arrayIJK, $arrayLM, $arrayNOP, $arrayQRT, $arrayS, $arrayRes, $arrayW;
-	$doc = new DOMDocument('1.0');
-	$doc->encoding = CHARSET;
-	$result = $doc->createElement("result");
-	$doc->appendChild($result);
-	$ready = $doc->createElement('ready');
-	$result->appendChild($ready);
-	$tready = $doc->createTextNode("true");
-	$ready->appendChild($tready);
-	echo $doc->saveXML();
-}
-
-function null_json_output(){
-	global $sstr, $arrayG, $arraySights, $arrayK, $arrayPLZ, $arrayOnly, $arrayAB, $arrayCD, $arrayEF, $arrayGH, $arrayIJK, $arrayLM, $arrayNOP, $arrayQRT, $arrayS, $arrayRes, $arrayW;
-	echo "{\"totalResultsCount\":0,\"geonames\":[]}";
-}
-
-function xml_output(){
-	global $sstr, $searchThruWeb, $callback, $maxResults, $arrayG, $arraySights, $arrayK, $arrayPLZ, $arrayOnly, $arrayAB, $arrayCD, $arrayEF, $arrayGH, $arrayIJK, $arrayLM, $arrayNOP, $arrayQRT, $arrayS, $arrayRes, $arrayW;
-	
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		
-		$countGeonames = 0;
-		$returnJSON->totalResultsCount = 0;
-		
-		for($i=0; $i<count($arrayG); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayG[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayK); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayK[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayPLZ); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayPLZ[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayOnly); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayOnly[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-
-		for($i=0; $i<count($arraySights); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySights[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayAB); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayAB[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		} 
-		
-		for($i=0; $i<count($arrayCD); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayCD[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayEF); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayEF[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayGH); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayGH[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		for($i=0; $i<count($arrayIJK); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayIJK[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-				
-		for($i=0; $i<count($arrayLM); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayLM[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-						
-		for($i=0; $i<count($arrayNOP); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayNOP[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-								
-		for($i=0; $i<count($arrayQRT); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayQRT[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-		
-		
-		for($i=0; $i<count($arrayS); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayS[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}	
-				
-		for($i=0; $i<count($arrayRes); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayRes[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-						
-		for($i=0; $i<count($arrayW); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayW[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		} 
-		
-							
-		$returnJSON->totalResultsCount = $countGeonames;
-		if ($returnJSON->totalResultsCount == 0) {
-			$returnJSON->geonames = array();
-		}
-		if (isset($callback) && $callback != '') {
-			 $returnJSON = $callback."(".$classJSON->encode($returnJSON).")";
-		} else {
-			  $returnJSON = $classJSON->encode($returnJSON);
-		}
-
-	       	echo $returnJSON;	
-	
-	
-}
-
-function encode($s){
-	return $s;
-}
-
-?>

Deleted: trunk/mapbender/http/geoportal/gaz_geom_mobile_alt.php
===================================================================
--- trunk/mapbender/http/geoportal/gaz_geom_mobile_alt.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/gaz_geom_mobile_alt.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,839 +0,0 @@
-<?php
-# $Id$
-# http://www.mapbender.org/index.php/gaz_service.php
-# Copyright (C) 2002 CCGIS 
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../../conf/geoportal.conf");
-require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
-require_once(dirname(__FILE__)."/../classes/class_json.php");
-
-//Check if the result should be delivered as a webservice
-
-
-IF ($_REQUEST['resultTarget'] != 'web') {
-	(isset($_SERVER["argv"][1]))? ($user_id = $_SERVER["argv"][1]) : ($e = new mb_exception("geom: user lacks!"));
-	(isset($_SERVER["argv"][2]))? ($sstr = $_SERVER["argv"][2]) : ($e = new mb_exception("geom: string lacks!"));
-	(isset($_SERVER["argv"][3]))? ($epsg = $_SERVER["argv"][3]) : ($e = new mb_exception("geom: epsg lacks!"));
-	$searchThruWeb = false;
-} else {
-	$maxResults = 15; //set default
-	$outputFormat = 'json'; //set default
-	$epsg = 31466;
-	
-	if (isset($_REQUEST["maxResults"]) & $_REQUEST["maxResults"] != "") {
-		//validate integer to 100 - not more
-		$testMatch = $_REQUEST["maxResults"];
-		//give max 99 entries - more will be to slow
-		$pattern = '/^([0-9]{0,1})([0-9]{1})$/';		
- 		if (!preg_match($pattern,$testMatch)){ 
-			echo 'maxResults: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$maxResults = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
-		$testMatch = $_REQUEST["outputFormat"];	
- 		if (!($testMatch == 'json')){ 
-			echo 'outputFormat: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$outputFormat = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["searchEPSG"]) & $_REQUEST["searchEPSG"] != "") {
-		$testMatch = $_REQUEST["searchEPSG"];	
- 		if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo 'searchEPSG: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$searchEPSG = $testMatch;
-		$testMatch = NULL;
-	}
-	/*if (isset($_REQUEST["callback"]) & $_REQUEST["callback"] != "") {
-		$testMatch = $_REQUEST["callback"];	
-		$pattern = '/^jQuery\d+_\d+$/';
-		if (!preg_match($pattern,$testMatch)){ 
- 		//if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo 'callback: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$callback = $testMatch;
-		$testMatch = NULL;
-	}*/
-	//for debugging
-	$callback = $_REQUEST["callback"];
-	//get searchText as a parameter
-	$searchText = $_REQUEST['searchText']; //TODO: filter for insecure texts
-	$sstr = $searchText;
-	$epsg = $searchEPSG;
-	$searchThruWeb = true;
-}
-
-$con = pg_connect("host=".GEOMDB_HOST." port=".GEOMDB_PORT." dbname=".GEOMDB_NAME." user=".GEOMDB_USER." password=".GEOMDB_PASSWORD)
-or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
-
-function replaceChars($text){
-	$search = array( "ä",  "ö",  "ü",  "Ä",  "Ö",  "Ü", "tr.", "ß" );
-	$repwith = array("ae", "oe", "ue", "AE", "OE", "UE", "tr","ss");
-	
-	//if(CHARSET=="UTF-8")
-	//	$text = utf8_decode($text);
-
-	$ret = str_replace($search, $repwith, $text);
-
-	//if(CHARSET=="UTF-8")
-	//	$ret = utf8_encode($ret);
-
-	return $ret;
-}
-/******* conf ***********************************/
-$factor = 1;
-if (intval($epsg) == 4326) $factor = 0.00001; 
-/******* wohnplätze *******************/
-$bufferWP = 1000*$factor;
-$arrayWP = array();
-$arrayWPKey = array();
-
-/******* gemeinde *********************/	
-$bufferG = 100*$factor;
-$arrayG = array();
-$toleranceG = 100*$factor;
-
-/******* kreis *********************/	
-$bufferK = 100*$factor;
-$arrayK = array();
-$toleranceK = 1000*$factor;
-/******* verbandsgemeinde *********************/	
-$bufferV = 100*$factor;
-$arrayV = array();
-$toleranceV = 1000*$factor;
-/******* strasse *********************/	
-$bufferSTR = 100*$factor;
-$arraySTR = array();
-$toleranceSTR = 100*$factor;
-/******* Strasse / Hsnr ****************/
-$bufferSH = 100*$factor;
-$arraySH = array();
-$toleranceSH = 1000*$factor;
-
-
-$e = new mb_exception("gaz_geom_mobile was invoked with string:".$sstr);
-/****** Workflow *********************************/
-/**/
-$test = str_replace("ß", "ss", $sstr);
-$e = new mb_notice("replaced test string: ".$test);
-$astr = split(",",replaceChars($sstr));
-$e = new mb_notice("replaced string: ".$astr[0]." ".$astr[1]." ".$astr[2]);
-//if only one string without any comma is given
-if(count($astr) == 1){
-
-	$astr[0] = trim($astr[0]);
-	$e = new mb_notice("gaz_geom_mobile: only one string detected: ".$astr[0]);
-	//check if there may be a postal code
-	$plz = getPlz($astr[0]);
-	//check if there is a housenumber
-	$hsnr = getNr($astr[0]);
-	if($plz != false){
-		
-		//checkSize($astr[0]);
-		checkWP($plz, strtoupper(getCity($astr[0])));
-		checkGfromWP();
-	}
-	else if($hsnr != false){
-		
-	}
-	else if($hsnr == false && $plz == false){
-		checkWP(false,strtoupper($astr[0]));
-		checkG(strtoupper($astr[0]));
-		checkGfromWP();
-		checkK(strtoupper($astr[0]));
-		checkVg($astr[0]);
-	}
-}
-//if 2 parts are given - the first one may be a combined or a single value
-// '56743 mendig' or 'ferdinand-sauerbruch-strasse 15' or 'koblenz' or 'mendig' or, or, or ...
-else if(count($astr) == 2){
-	$e = new mb_notice("gaz_geom_mobile: two strings detected: ".$astr[0]." and ".$astr[1]);
-	$astr[0] = trim($astr[0]);
-	$astr[1] = trim($astr[1]);
-	$ckeys = array();
-	$cnames = array();
-	$cmissing = array();
-	
-	$myplz = false;
-	$mycity = false;
-	$mystr = false;
-	$mynr = false;
-	$myzs = false;
-	$both = array();
-	
-	// check first entry for postal code
-	if(getPlz($astr[0])){
-		$myplz = getPlz($astr[0]);
-		$e = new mb_notice("gaz_geom_mobile: postalcode detected: ".$myplz);
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-		}
-		else{
-			$mystr = trim($astr[1]);	
-		}
-	}
-	//check first entry for number
-	else if(getNr($astr[0])){
-		$mynr = getNr($astr[0]);
-		$myzs = getAppendix($astr[0]);
-		$mystr = getStrn($astr[0]);
-		$e = new mb_notice('gaz_geom_mobile: search for streetname: '.$mystr);
-		//check if in second value there is a postalcode
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		//maybe it will be a city name
-		else{
-			$mycity = trim($astr[1]);
-			$e = new mb_notice('gaz_geom_mobile: search for city: '.$mycity);
-		}
-	}
-	//check second for postal code
-	else{
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-			$mycity = getCity($astr[0]);
-		}
-		else{
-			array_push($both,$astr[0]);
-			array_push($both,$astr[1]);	
-		}
-	}
-	// workflow
-	if(count($both) == 2){
-		//$a = "%".strtoupper(trim($both[0]))."%";
-		//$b = "%".strtoupper(trim($both[1]))."%";
-		$a = strtoupper(trim($both[0]))."%";
-		$b = strtoupper(trim($both[1]))."%";
-
-
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde AS gem FROM gis.verwaltungseinheit ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM gis.wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $b);
-		}
-		$v = array($b, $b);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde AS gem FROM gis.verwaltungseinheit ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM gis.wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $a);
-		}
-		
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], $cmissing[$i]);
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT str_name_ewois, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-				$sql .= "FROM gis.strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND (str_name_ewois_upper LIKE $2)";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					$show = encode($row["str_name_ewois"])."  ".$cnames[$i];
-					$e = new mb_notice('gaz_geom_mobile: street found: '.$row["str_name_ewois"]);
-					stack_it($arraySTR,"str",$show,"str",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-
-		}
-	}
-	else{
-//	echo $myplz ."#";
-//	echo $mycity ."#";
-//	echo $mystr ."#";
-//	echo $mynr ."#";
-//	echo $myzs ."#";
-//	print_r($both);	
-		checkSH($mystr,$mynr,$myzs,$myplz,$mycity);
-	}
-}	
-
- 
-
-//$fillSH = checkSH("Akazienweg",30,false,56075,"Koblenz"); 
-
-xml_output();
-
-function checkMinLength($str) {
-	global $searchThruWeb;
-	if (strlen($str) < 3) {
-		if ($searchThruWeb) {
-		//errorOutput();
-			null_json_output();
-		} else {
-			null_output();
-		}
-		die();
-	} 
-}
-//Strasse Hausnummer
-function checkSH($s,$h,$z,$p,$o){
-	global $bufferSH, $arraySH, $epsg;
-	
-	if ($o && $s) {
-		$str_schl = array();
-		$str_schl_gem = array();
-		$ckeys = array();
-		$cnames = array();
-		$a = "%".strtoupper(trim($o))."%";
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde AS gem FROM gis.verwaltungseinheit ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM gis.wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, $row['gem']);
-		}
-	
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				//$v = array($ckeys[$i], "%". strtoupper(trim($s)). "%");
-				$v = array($ckeys[$i], strtoupper(trim($s)). "%");
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT str_schl_alt ";
-				$sql .= "FROM gis.strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND str_name_ewois_upper ILIKE $2";
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					array_push($str_schl, $row['str_schl_alt']);
-					$e = new mb_notice('gaz_geom_mobile: strassenschluessel: '.$row["str_schl_alt"].' for '.$s.' found' );	
-					array_push($str_schl_gem, $cnames[$i]);
-				}
-			}
-			//select all streetkeys
-			if (count($str_schl > 0)) {
-				$v = array($h);
-				$t = array('i');
-				$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-				$sql .= "FROM gis.hauskoordinaten ";
-				$sql .= "WHERE hausnummer = $1 AND strschl IN (";
-
-				for($i=0; $i<count($str_schl); $i++){	
-					if($i > 0){$sql .= ",";}
-					$sql .= "$".($i+2);
-					array_push($v,$str_schl[$i]);
-					array_push($t,'i');
-				}
-				$sql .= ")";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					
-
-#$show = $row["name"]." ".$row["hausnummer"];
-				if($row["zusatz"] != 'null'){
-				#	$show .= $row["zusatz"];
-				
-$show = utf8_decode($row["name"])." ".$row["hausnummer"].$row["zusatz"];
-//$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"]; TODO: exchange this, when the hauskoordinaten table is delivered in a homogenous encoding! 
-}
-	else
-{$show = utf8_decode( $row["name"])." ".$row["hausnummer"];}	
-		$show .= ", " . $row["plz"]. " " . $row["post_ortsname"];
-			
-
-	stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-		}
-	
-	}
-	else {
-		//is this 'else' obsolete?
-		$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-		$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-		$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-		$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-		$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-		$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-		$sql .= "FROM gis.hauskoordinaten ";
-		$sql .= "WHERE name ILIKE $1 AND hausnummer = $2 ";
-		//$v = array("%".$s."%",$h);
-		$v = array($s."%",$h);
-		$t = array('s','i');
-		if($z){
-			$sql .= "AND zusatz = $" . (count($v)+1);
-			array_push($v,$z);
-			array_push($t,'s');
-		}
-		if($p){
-			$sql .= "AND plz = $" . (count($v)+1);
-			array_push($v,$p);
-			array_push($t,'i');
-		}
-		if($o){
-			$sql .= "AND post_ortsname ILIKE $" . (count($v)+1);
-			array_push($v,"%".$o."%");
-			array_push($t,'s');
-		}
-		#$sql .= " GROUP BY the_geom, name, hausnummer, zusatz, plz, post_ortsname";	
-		if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-			$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-		}				
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			
-			$show = utf8_decode($row["name"])." ".$row["hausnummer"];
-			$e = new mb_notice('gaz_geom_mobile.php: streetname2: '.utf8_decode($row["name"]));
-			//$show = $row["name"]." ".$row["hausnummer"]; TODO: see above
-			if($row["zusatz"] != null){
-				$show .= $row["zusatz"];	
-			}
-			$show .= ", " . $row["plz"]. " " . utf8_decode($row["post_ortsname"]); 
-			stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		}
-	}
-	return true;
-}
-//Wohnplatz
-function checkWP($plz,$name){	
-	global $bufferWP, $arrayWP, $arrayWPKey, $epsg;
-	$v = array();
-	$t = array();
-	checkMinLength($name);
-	$sql = "SELECT DISTINCT gemeinde_gem_teile, gem_schl_neu, postleitzahl,";
-	$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferWP.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferWP.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferWP.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferWP.") as maxy ";
-	$sql .= "FROM gis.wohnplatz WHERE ";
-	if($plz == false){
-		$sql .= "gemeinde_gem_teile_upper ILIKE $1 ";
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	else if($name == false){
-		$sql .= "postleitzahl = $1 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-	}
-	else{
-		$sql .= "postleitzahl = $1 AND gemeinde_gem_teile_upper ILIKE $2 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	$sql .= "GROUP BY the_geom, gemeinde_gem_teile, gem_schl_neu, postleitzahl";	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		$show = encode($row["gemeinde_gem_teile"]);
-		$show.= " (Wohnplatz)";
-		if(intval($row['postleitzahl'])> 1){ $show .= " (".$row['postleitzahl'].")"; }
-		stack_it($arrayWP,"wohnplatz",$show,"wp",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		if(!in_array($row["gem_schl_neu"],$arrayWPKey)){
-			array_push($arrayWPKey,$row["gem_schl_neu"]);
-		}
-	}
-	return true; 
-}
-function checkGfromWP(){
-	global $arrayWPKey, $bufferG, $arrayG, $toleranceG, $epsg;
-	if(count($arrayWPKey) == 0){
-		return false;	
-	}
-	$v = array();
-	$t = array();
-	$sql = "SELECT DISTINCT gemeinde, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gis.verwaltungseinheit WHERE gem_schl_neu IN(";
-	for($i=0; $i<count($arrayWPKey); $i++){
-		if($i > 0){$sql .= ",";}
-		$sql .= "$".($i+1);
-		array_push($v,$arrayWPKey[$i]);
-		array_push($t,'i');
-	}
-	$sql .= ") GROUP BY the_geom, gemeinde";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Wohnplatz)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkG($str){
-	global $bufferG, $arrayG, $toleranceG, $arrayWPKey, $epsg;
-	checkMinLength($str);
-	$tmp = array();
-	$sql = "SELECT DISTINCT gemeinde, gem_schl_neu, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gis.verwaltungseinheit WHERE gemeinde_upper ILIKE $1 ";
-	#$sql .= "GROUP BY the_geom, gemeinde, gem_schl_neu";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde",encode($row["gemeinde"]." (Gemeinde)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		$tmp[count($tmp)] = $row["gem_schl_neu"]; 
-	}
-	$arrayWPKey = array_diff($arrayWPKey,$tmp);
-}
-
-function checkK($str){
-	global $bufferK, $arrayK, $toleranceK, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT kreis, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceK.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferK.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferK.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferK.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferK.") as maxy ";
-	$sql .= "FROM gis.kreis_pl WHERE kreis_upper ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayK,"kreis",encode($row["kreis"]." (Landkreis)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkVg($str){
-	global $bufferV, $arrayV, $toleranceV, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT vg, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceV.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferV.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferV.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferV.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferV.") as maxy ";
-	$sql .= "FROM gis.vg_fl WHERE vg ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayV,"verbandsgemeinde",encode($row["vg"]." (Verbandsgemeinde)"),"vg",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function stack_it(&$stack,$category,$showtitle,$prefix,$srid,$minx,$miny,$maxx,$maxy,$gml){
-	global $searchThruWeb;
-	if (!$searchThruWeb) {
-	$doc = new DOMDocument();
-	$member = $doc->createElement("member");
-	$doc->appendChild($member);
-	$member->setAttribute('id',$prefix.count($stack));
-	$fc = $doc->createElement("FeatureCollection");
-	$member->appendChild($fc);
-	$fc->setAttribute("xmlns:gml","http://www.opengis.net/gml");
-	$bb = $doc->createElement("boundedBy");
-	$fc->appendChild($bb);
-	$box = $doc->createElement("Box");
-	$bb->appendChild($box);
-	$box->setAttribute('srsName',"EPSG:".$srid);
-	$c = $doc->createElement("coordinates");
-	$box->appendChild($c);
-	$coords = $doc->createTextNode($minx.",".$miny." ".$maxx.",".$maxy);
-	$c->appendChild($coords);
-	$fm = $doc->createElement("featureMember");
-	$fc->appendChild($fm);
-	$wp = $doc->createElement($category);
-	$fm->appendChild($wp);
-	$title = $doc->createElement("title");
-	$wp->appendChild($title);
-	$ttitle = $doc->createTextNode($showtitle);
-	$title->appendChild($ttitle);
-	$geom = $doc->createElement("the_geom");
-	$wp->appendChild($geom);		
-	$myNode = @simplexml_load_string($gml);
-	$mySNode = dom_import_simplexml($myNode);
-	$domNode = $doc->importNode($mySNode, true);
-	$geom->appendChild($domNode);	 
-	array_push($stack,$member);
-	} else {
-		//generate simple json objects as array elements
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		$returnJSON->title = $showtitle;
-		$returnJSON->category = $category;
-		$returnJSON->minx = $minx;
-		$returnJSON->miny = $miny;
-		$returnJSON->maxx = $maxx;
-		$returnJSON->maxy = $maxy;
-		$returnJSON = $classJSON->encode($returnJSON);
-		array_push($stack,$returnJSON);	
-	}		
-}
-
-function null_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	$doc = new DOMDocument('1.0');
-	$doc->encoding = CHARSET;
-	$result = $doc->createElement("result");
-	$doc->appendChild($result);
-	$ready = $doc->createElement('ready');
-	$result->appendChild($ready);
-	$tready = $doc->createTextNode("true");
-	$ready->appendChild($tready);
-	echo $doc->saveXML();
-}
-
-function null_json_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	echo "{\"totalResultsCount\":0,\"geonames\":[]}";
-}
-
-
-
-
-
-function xml_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV, $searchThruWeb, $callback, $maxResults;
-	if (!$searchThruWeb) {
-		$doc = new DOMDocument('1.0');
-		$doc->encoding = CHARSET;
-		$result = $doc->createElement("result");
-		$doc->appendChild($result);
-
-		for($i=0; $i<count($arrayWP); $i++){
-			$domNode = $doc->importNode($arrayWP[$i], true); 
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayG); $i++){
-			$domNode = $doc->importNode($arrayG[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayK); $i++){
-			$domNode = $doc->importNode($arrayK[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arraySH); $i++){
-			$domNode = $doc->importNode($arraySH[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arraySTR); $i++){
-			$domNode = $doc->importNode($arraySTR[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayV); $i++){
-			$domNode = $doc->importNode($arrayV[$i], true);
-			$result->appendChild($domNode);
-		}
-		$ready = $doc->createElement('ready');
-		$result->appendChild($ready);
-		$tready = $doc->createTextNode("true");
-		$ready->appendChild($tready);
-		//if ($searchThruWeb) {
-		//	header("Content-type: application/xhtml+xml; charset=UTF-8");
-		//}
-		echo $doc->saveXML();
-	} else {
-		//generate json object with gml content
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		
-		$countGeonames = 0;
-		$returnJSON->totalResultsCount = 0;
-
-		for($i=0; $i<count($arrayK); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayK[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-
-		for($i=0; $i<count($arrayV); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayV[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arrayG); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayG[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arraySTR); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySTR[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arrayWP); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayWP[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arraySH); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySH[$i]);
-			$countGeonames++;
-		}
-		$returnJSON->totalResultsCount = $countGeonames;
-		if ($returnJSON->totalResultsCount == 0) {
-			$returnJSON->geonames = array();
-		}
-		if (isset($callback) && $callback != '') {
-			 $returnJSON = $callback."(".$classJSON->encode($returnJSON).")";
-		} else {
-			  $returnJSON = $classJSON->encode($returnJSON);
-		}
-
-	       	echo $returnJSON;	
-	}
-	
-}
-function encode($s){
-#	if(CHARSET == 'UTF-8'){
-#		$s = utf8_encode($s);
-#	}
-	return $s;
-}
-function getPlz($str){
-	$p = "/.*(\d{5}).*/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCity($str){
-	$p = "/(^\d{5}){0,1}(.*)/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[2]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getNr($str){
-	$p = "/.*[^0-9](\d{1,4})[^0-9]*/";
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[(count($am)-1)];
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getStrn($str){
-	$p = "/^(\D+)\d/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[1]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getAppendix($str){
-	$p = "/.*\d+.*(\D{1})/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCKeysByName($city){
-	global $ckeys;
-	$city = "%".strtoupper(trim($city))."%";
-	$sql = "SELECT gem_schl_neu FROM gis.wohnplatz ";
-	$sql .= "WHERE gemeinde_gem_teile_upper ILIKE $1 ";
-	$v = array($city);
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		array_push($ckeys, $row['gem_schl_neu']);
-	}
-}
-?>

Deleted: trunk/mapbender/http/geoportal/gaz_geom_mobile_alt_neu.php
===================================================================
--- trunk/mapbender/http/geoportal/gaz_geom_mobile_alt_neu.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/gaz_geom_mobile_alt_neu.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,847 +0,0 @@
-<?php
-# $Id$
-# http://www.mapbender.org/index.php/gaz_service.php
-# Copyright (C) 2002 CCGIS 
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../../conf/geoportal.conf");
-require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
-require_once(dirname(__FILE__)."/../classes/class_json.php");
-
-//Check if the result should be delivered as a webservice
-
-
-IF ($_REQUEST['resultTarget'] != 'web') {
-	(isset($_SERVER["argv"][1]))? ($user_id = $_SERVER["argv"][1]) : ($e = new mb_exception("geom: user lacks!"));
-	(isset($_SERVER["argv"][2]))? ($sstr = $_SERVER["argv"][2]) : ($e = new mb_exception("geom: string lacks!"));
-	(isset($_SERVER["argv"][3]))? ($epsg = $_SERVER["argv"][3]) : ($e = new mb_exception("geom: epsg lacks!"));
-	$searchThruWeb = false;
-} else {
-	$maxResults = 15; //set default
-	$outputFormat = 'json'; //set default
-	$epsg = 31466;
-	
-	if (isset($_REQUEST["maxResults"]) & $_REQUEST["maxResults"] != "") {
-		//validate integer to 100 - not more
-		$testMatch = $_REQUEST["maxResults"];
-		//give max 99 entries - more will be to slow
-		$pattern = '/^([0-9]{0,1})([0-9]{1})$/';		
- 		if (!preg_match($pattern,$testMatch)){ 
-			echo 'maxResults: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$maxResults = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
-		$testMatch = $_REQUEST["outputFormat"];	
- 		if (!($testMatch == 'json')){ 
-			echo 'outputFormat: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$outputFormat = $testMatch;
-		$testMatch = NULL;
-	}
-	if (isset($_REQUEST["searchEPSG"]) & $_REQUEST["searchEPSG"] != "") {
-		$testMatch = $_REQUEST["searchEPSG"];	
- 		if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo 'searchEPSG: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$searchEPSG = $testMatch;
-		$testMatch = NULL;
-	}
-	/*if (isset($_REQUEST["callback"]) & $_REQUEST["callback"] != "") {
-		$testMatch = $_REQUEST["callback"];	
-		$pattern = '/^jQuery\d+_\d+$/';
-		if (!preg_match($pattern,$testMatch)){ 
- 		//if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){ 
-			echo 'callback: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-			die(); 		
- 		}
-		$callback = $testMatch;
-		$testMatch = NULL;
-	}*/
-	//for debugging
-	$callback = $_REQUEST["callback"];
-	//get searchText as a parameter
-	$searchText = $_REQUEST['searchText']; //TODO: filter for insecure texts
-	$sstr = $searchText;
-	$epsg = $searchEPSG;
-	$searchThruWeb = true;
-}
-
-
-$e = new mb_exception("maxResults: ".$maxResults);
-$con = pg_connect("host=".GEOMDB_HOST." port=".GEOMDB_PORT." dbname=".GEOMDB_NAME." user=".GEOMDB_USER." password=".GEOMDB_PASSWORD)
-or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
-
-function replaceChars($text){
-//	$search = array( "ä",  "ö",  "ü",  "Ä",  "Ö",  "Ü", "tr.", "ß" );
-//	$repwith = array("ae", "oe", "ue", "AE", "OE", "UE", "tr","ss");
-	
-	//if(CHARSET=="UTF-8")
-	//	$text = utf8_decode($text);
-
-//	$ret = str_replace($search, $repwith, $text);
-
-	//if(CHARSET=="UTF-8")
-	//	$ret = utf8_encode($ret);
-
-//	return $ret;
-
-	return $text;
-
-}
-
-
-/******* conf ***********************************/
-$factor = 1;
-if (intval($epsg) == 4326) $factor = 0.00001; 
-/******* wohnplätze *******************/
-$bufferWP = 1000*$factor;
-$arrayWP = array();
-$arrayWPKey = array();
-
-/******* gemeinde *********************/	
-$bufferG = 100*$factor;
-$arrayG = array();
-$toleranceG = 100*$factor;
-
-/******* kreis *********************/	
-$bufferK = 100*$factor;
-$arrayK = array();
-$toleranceK = 1000*$factor;
-/******* verbandsgemeinde *********************/	
-$bufferV = 100*$factor;
-$arrayV = array();
-$toleranceV = 1000*$factor;
-/******* strasse *********************/	
-$bufferSTR = 175*$factor;
-$arraySTR = array();
-$toleranceSTR = 100*$factor;
-/******* Strasse / Hsnr ****************/
-$bufferSH = 75*$factor;
-$arraySH = array();
-$toleranceSH = 1000*$factor;
-
-
-$e = new mb_exception("gaz_geom_mobile was invoked with string:".$sstr);
-/****** Workflow *********************************/
-/**/
-$test = str_replace("ß", "ss", $sstr);
-$e = new mb_exception("replaced test string: ".$test);
-$astr = split(",",replaceChars($sstr));
-$e = new mb_exception("replaced string: ".$astr[0]." ".$astr[1]." ".$astr[2]);
-//if only one string without any comma is given
-if(count($astr) == 1){
-
-	$astr[0] = trim($astr[0]);
-	$e = new mb_exception("gaz_geom_mobile: only one string detected: ".$astr[0]);
-	//check if there may be a postal code
-	$plz = getPlz($astr[0]);
-	//check if there is a housenumber
-	$hsnr = getNr($astr[0]);
-	if($plz != false){
-		
-		//checkSize($astr[0]);
-		checkWP($plz, strtoupper(getCity($astr[0])));
-		checkGfromWP();
-	}
-	else if($hsnr != false){
-		
-	}
-	else if($hsnr == false && $plz == false){
-		checkWP(false,strtoupper($astr[0]));
-		checkG(strtoupper($astr[0]));
-		checkGfromWP();
-		checkK(strtoupper($astr[0]));
-		checkVg($astr[0]);
-	}
-}
-//if 2 parts are given - the first one may be a combined or a single value
-// '56743 mendig' or 'ferdinand-sauerbruch-strasse 15' or 'koblenz' or 'mendig' or, or, or ...
-else if(count($astr) == 2){
-	$e = new mb_exception("gaz_geom_mobile: two strings detected: ".$astr[0]." and ".$astr[1]);
-	$astr[0] = trim($astr[0]);
-	$astr[1] = trim($astr[1]);
-	$ckeys = array();
-	$cnames = array();
-	$cmissing = array();
-	
-	$myplz = false;
-	$mycity = false;
-	$mystr = false;
-	$mynr = false;
-	$myzs = false;
-	$both = array();
-	
-	// check first entry for postal code
-	if(getPlz($astr[0])){
-		$myplz = getPlz($astr[0]);
-		$e = new mb_exception("gaz_geom_mobile: postalcode detected: ".$myplz);
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-		}
-		else{
-			$mystr = trim($astr[1]);	
-		}
-	}
-	//check first entry for number
-	else if(getNr($astr[0])){
-		$mynr = getNr($astr[0]);
-		$myzs = getAppendix($astr[0]);
-		$mystr = getStrn($astr[0]);
-		$e = new mb_exception('gaz_geom_mobile: search for streetname: '.$mystr);
-		//check if in second value there is a postalcode
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		//maybe it will be a city name
-		else{
-			$mycity = trim($astr[1]);
-			$e = new mb_exception('gaz_geom_mobile: search for city: '.$mycity);
-		}
-	}
-	//check second for postal code
-	else{
-		if(getPlz($astr[1])){
-			$myplz = getPlz($astr[1]);
-		}
-		if(getNr($astr[1])){
-			$mynr = getNr($astr[1]);
-			$myzs = getAppendix($astr[1]);
-			$mystr = getStrn($astr[1]);
-			$mycity = getCity($astr[0]);
-		}
-		else{
-			array_push($both,$astr[0]);
-			array_push($both,$astr[1]);	
-		}
-	}
-	// workflow
-	if(count($both) == 2){
-		$a = "%".strtoupper(trim($both[0]))."%";
-		$b = "%".strtoupper(trim($both[1]))."%";
-		//$a = strtoupper(trim($both[0]))."%";
-		//$b = strtoupper(trim($both[1]))."%";
-
-
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde_neu AS gem FROM gemeinden ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $b);
-		}
-		$v = array($b, $b);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde_neu AS gem FROM gemeinden ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2) AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, encode($row['gem']));
-			array_push($cmissing, $a);
-		}
-		
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], $cmissing[$i]);
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT strassenname, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSTR.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSTR.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSTR.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSTR.") as maxy ";
-				$sql .= "FROM strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND (strassenname_upper LIKE $2)";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					$show = encode($row["strassenname"])."  ".$cnames[$i];
-					$e = new mb_exception('gaz_geom_mobile: street found: '.$row["strassenname"]);
-					stack_it($arraySTR,"str",$show,"str",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-
-		}
-	}
-	else{
-//	echo $myplz ."#";
-//	echo $mycity ."#";
-//	echo $mystr ."#";
-//	echo $mynr ."#";
-//	echo $myzs ."#";
-//	print_r($both);	
-		checkSH($mystr,$mynr,$myzs,$myplz,$mycity);
-	}
-}	
-
- 
-
-//$fillSH = checkSH("Akazienweg",30,false,56075,"Koblenz"); 
-
-xml_output();
-
-function checkMinLength($str) {
-	global $searchThruWeb;
-	if (strlen($str) < 3) {
-		if ($searchThruWeb) {
-		//errorOutput();
-			null_json_output();
-		} else {
-			null_output();
-		}
-		die();
-	} 
-}
-//Strasse Hausnummer
-function checkSH($s,$h,$z,$p,$o){
-	global $bufferSH, $arraySH, $epsg;
-	
-	if ($o && $s) {
-		$str_schl = array();
-		$str_schl_gem = array();
-		$ckeys = array();
-		$cnames = array();
-		$a = "%".strtoupper(trim($o))."%";
-		$v = array($a, $a);
-		$t = array('s', 's');
-		$sql = "SELECT DISTINCT * FROM (SELECT DISTINCT gem_schl_neu, gemeinde_neu AS gem FROM gemeinden ";
-		$sql .= "WHERE gemeinde_upper LIKE $1";
-		$sql .= "UNION SELECT DISTINCT gem_schl_neu, gemeinde_gem_teile AS gem FROM wohnplatz ";
-		$sql .= "WHERE gemeinde_gem_teile_upper LIKE $2)";
-		$sql .=" AS str";
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			array_push($ckeys, $row['gem_schl_neu']);
-			array_push($cnames, $row['gem']);
-		}
-	
-		if(count($ckeys)>0){
-			for($i=0; $i<count($ckeys); $i++){	
-				
-				$v = array($ckeys[$i], "%". strtoupper(trim($s)). "%");
-				//$v = array($ckeys[$i], strtoupper(trim($s)). "%");
-				$t = array('i', 's');
-				$sql = "SELECT DISTINCT strassenschluessel ";
-				$sql .= "FROM strassenschluessel WHERE gem_schl = $1 ";
-				$sql .= " AND strassenname_upper ILIKE $2";
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					array_push($str_schl, $row['strassenschluessel']);
-					$e = new mb_exception('gaz_geom_mobile: strassenschluessel: '.$row["strassenname"].' for '.$s.' found' );	
-					array_push($str_schl_gem, $cnames[$i]);
-				}
-			}
-			//select all streetkeys
-			if (count($str_schl > 0)) {
-				$v = array($h);
-				$t = array('i');
-				$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-				$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-				$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-				$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-				$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-				$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-				$sql .= "FROM hauskoordinaten ";
-				$sql .= "WHERE hausnummer = $1 AND strschl_gesamt IN (";
-
-				for($i=0; $i<count($str_schl); $i++){	
-					if($i > 0){$sql .= ",";}
-					$sql .= "$".($i+2);
-					array_push($v,$str_schl[$i]);
-					array_push($t,'i');
-				}
-				$sql .= ")";
-				if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-					$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-				}				
-
-				$res = db_prep_query($sql,$v,$t);
-				while($row = db_fetch_array($res)){
-					
-
-#$show = $row["name"]." ".$row["hausnummer"];
-				if($row["zusatz"] != 'null'){
-				#	$show .= $row["zusatz"];
-				
-$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"];
-//$show = $row["name"]." ".$row["hausnummer"].$row["zusatz"]; TODO: exchange this, when the hauskoordinaten table is delivered in a homogenous encoding! 
-}
-	else
-{$show =  $row["name"]." ".$row["hausnummer"];}	
-		$show .= ", " . $row["plz"]. " " . $row["post_ortsname"];
-			
-
-	stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-				}
-			}
-		}
-	
-	}
-	else {
-		//is this 'else' obsolete?
-		$sql = "SELECT DISTINCT name, hausnummer, zusatz, plz, post_ortsname, ";
-		$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-		$sql .= "(xmin(the_geom) - ".$bufferSH.") as minx, ";
-		$sql .= "(ymin(the_geom) - ".$bufferSH.") as miny, ";
-		$sql .= "(xmax(the_geom) + ".$bufferSH.") as maxx, ";
-		$sql .= "(ymax(the_geom) + ".$bufferSH.") as maxy ";
-		$sql .= "FROM hauskoordinaten ";
-		$sql .= "WHERE name ILIKE $1 AND hausnummer = $2 ";
-		$v = array("%".$s."%",$h);
-		//$v = array($s."%",$h);
-		$t = array('s','i');
-		if($z){
-			$sql .= "AND zusatz = $" . (count($v)+1);
-			array_push($v,$z);
-			array_push($t,'s');
-		}
-		if($p){
-			$sql .= "AND plz = $" . (count($v)+1);
-			array_push($v,$p);
-			array_push($t,'i');
-		}
-		if($o){
-			$sql .= "AND post_ortsname ILIKE $" . (count($v)+1);
-			array_push($v,"%".$o."%");
-			array_push($t,'s');
-		}
-		#$sql .= " GROUP BY the_geom, name, hausnummer, zusatz, plz, post_ortsname";	
-		if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-			$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-		}				
-		$res = db_prep_query($sql,$v,$t);
-		while($row = db_fetch_array($res)){
-			
-			$show = $row["name"]." ".$row["hausnummer"];
-			$e = new mb_exception('gaz_geom_mobile.php: streetname2: '.$row["name"]);
-			//$show = $row["name"]." ".$row["hausnummer"]; TODO: see above
-			if($row["zusatz"] != null){
-				$show .= $row["zusatz"];	
-			}
-			$show .= ", " . $row["plz"]. " " . $row["post_ortsname"]; 
-			stack_it($arraySH,"haus",$show,"sh",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		}
-	}
-	return true;
-}
-//Wohnplatz
-function checkWP($plz,$name){	
-	global $bufferWP, $arrayWP, $arrayWPKey, $epsg;
-	$v = array();
-	$t = array();
-	checkMinLength($name);
-	$sql = "SELECT DISTINCT gemeinde_gem_teile, gem_schl_neu, postleitzahl,";
-	$sql .= "SRID(the_geom) AS srid, AsGML(the_geom) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferWP.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferWP.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferWP.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferWP.") as maxy ";
-	$sql .= "FROM wohnplatz WHERE ";
-	if($plz == false){
-		$sql .= "gemeinde_gem_teile_upper ILIKE $1 ";
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	else if($name == false){
-		$sql .= "postleitzahl = $1 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-	}
-	else{
-		$sql .= "postleitzahl = $1 AND gemeinde_gem_teile_upper ILIKE $2 ";
-		array_push($v,$plz);
-		array_push($t,'i');
-		array_push($v,"%".$name."%");
-		array_push($t,'s');
-	}
-	$sql .= "GROUP BY the_geom, gemeinde_gem_teile, gem_schl_neu, postleitzahl";	
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		$show = encode($row["gemeinde_gem_teile"]);
-		$show.= " (Wohnplatz)";
-		if(intval($row['postleitzahl'])> 1){ $show .= " (".$row['postleitzahl'].")"; }
-		stack_it($arrayWP,"wohnplatz",$show,"wp",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		if(!in_array($row["gem_schl_neu"],$arrayWPKey)){
-			array_push($arrayWPKey,$row["gem_schl_neu"]);
-		}
-	}
-	return true; 
-}
-function checkGfromWP(){
-	global $arrayWPKey, $bufferG, $arrayG, $toleranceG, $epsg;
-	if(count($arrayWPKey) == 0){
-		return false;	
-	}
-	$v = array();
-	$t = array();
-	$sql = "SELECT DISTINCT gemeinde_neu, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gemeinden WHERE gem_schl_neu IN(";
-	for($i=0; $i<count($arrayWPKey); $i++){
-		if($i > 0){$sql .= ",";}
-		$sql .= "$".($i+1);
-		array_push($v,$arrayWPKey[$i]);
-		array_push($t,'i');
-	}
-	$sql .= ") GROUP BY the_geom, gemeinde_neu";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde_neu",encode($row["gemeinde_neu"]." (Wohnplatz)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkG($str){
-	global $bufferG, $arrayG, $toleranceG, $arrayWPKey, $epsg;
-	checkMinLength($str);
-	$tmp = array();
-	$sql = "SELECT DISTINCT gemeinde_neu, gem_schl_neu, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,$toleranceG)) AS gml ,";
-	$sql .= "(xmin(the_geom) - ".$bufferG.") as minx, ";
-	$sql .= "(ymin(the_geom) - ".$bufferG.") as miny, ";
-	$sql .= "(xmax(the_geom) + ".$bufferG.") as maxx, ";
-	$sql .= "(ymax(the_geom) + ".$bufferG.") as maxy ";
-	$sql .= "FROM gemeinden WHERE gemeinde_upper ILIKE $1 ";
-	#$sql .= "GROUP BY the_geom, gemeinde, gem_schl_neu";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayG,"gemeinde_neu",encode($row["gemeinde_neu"]." (Gemeinde)"),"g",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-		$tmp[count($tmp)] = $row["gem_schl_neu"]; 
-	}
-	$arrayWPKey = array_diff($arrayWPKey,$tmp);
-}
-
-function checkK($str){
-	global $bufferK, $arrayK, $toleranceK, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT kreis, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceK.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferK.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferK.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferK.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferK.") as maxy ";
-	$sql .= "FROM kreis_fl WHERE kreis_upper ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayK,"kreis",encode($row["kreis"]." (Landkreis)"),"k",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function checkVg($str){
-	global $bufferV, $arrayV, $toleranceV, $epsg;
-	checkMinLength($str);
-	$sql = "SELECT DISTINCT vg, ";
-	$sql .= "SRID(the_geom) AS srid, AsGML(Simplify(the_geom,".$toleranceV.")) AS gml ,";
-	$sql .= "(xmin(the_geom)-".$bufferV.") as minx, ";
-	$sql .= "(ymin(the_geom)-".$bufferV.") as miny, ";
-	$sql .= "(xmax(the_geom)+".$bufferV.") as maxx, ";
-	$sql .= "(ymax(the_geom)+".$bufferV.") as maxy ";
-	$sql .= "FROM vg_fl WHERE vg ILIKE $1 ";
-	if (isset($epsg) && is_numeric($epsg) && intval($epsg) != 31466) {
-		$sql = str_replace("the_geom", "transform(the_geom,".$epsg.")", $sql);
-	}				
-	$v = array("%".$str."%");
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		stack_it($arrayV,"verbandsgemeinde",encode($row["vg"]." (Verbandsgemeinde)"),"vg",$row["srid"],$row["minx"],$row["miny"],$row["maxx"],$row["maxy"],$row["gml"]);
-	}
-}
-function stack_it(&$stack,$category,$showtitle,$prefix,$srid,$minx,$miny,$maxx,$maxy,$gml){
-	global $searchThruWeb;
-	if (!$searchThruWeb) {
-	$doc = new DOMDocument();
-	$member = $doc->createElement("member");
-	$doc->appendChild($member);
-	$member->setAttribute('id',$prefix.count($stack));
-	$fc = $doc->createElement("FeatureCollection");
-	$member->appendChild($fc);
-	$fc->setAttribute("xmlns:gml","http://www.opengis.net/gml");
-	$bb = $doc->createElement("boundedBy");
-	$fc->appendChild($bb);
-	$box = $doc->createElement("Box");
-	$bb->appendChild($box);
-	$box->setAttribute('srsName',"EPSG:".$srid);
-	$c = $doc->createElement("coordinates");
-	$box->appendChild($c);
-	$coords = $doc->createTextNode($minx.",".$miny." ".$maxx.",".$maxy);
-	$c->appendChild($coords);
-	$fm = $doc->createElement("featureMember");
-	$fc->appendChild($fm);
-	$wp = $doc->createElement($category);
-	$fm->appendChild($wp);
-	$title = $doc->createElement("title");
-	$wp->appendChild($title);
-	$ttitle = $doc->createTextNode($showtitle);
-	$title->appendChild($ttitle);
-	$geom = $doc->createElement("the_geom");
-	$wp->appendChild($geom);		
-	$myNode = @simplexml_load_string($gml);
-	$mySNode = dom_import_simplexml($myNode);
-	$domNode = $doc->importNode($mySNode, true);
-	$geom->appendChild($domNode);	 
-	array_push($stack,$member);
-	} else {
-		//generate simple json objects as array elements
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		$returnJSON->title = $showtitle;
-		$returnJSON->category = $category;
-		$returnJSON->minx = $minx;
-		$returnJSON->miny = $miny;
-		$returnJSON->maxx = $maxx;
-		$returnJSON->maxy = $maxy;
-		$returnJSON = $classJSON->encode($returnJSON);
-		array_push($stack,$returnJSON);	
-	}		
-}
-
-function null_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	$doc = new DOMDocument('1.0');
-	$doc->encoding = CHARSET;
-	$result = $doc->createElement("result");
-	$doc->appendChild($result);
-	$ready = $doc->createElement('ready');
-	$result->appendChild($ready);
-	$tready = $doc->createTextNode("true");
-	$ready->appendChild($tready);
-	echo $doc->saveXML();
-}
-
-function null_json_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV;
-	echo "{\"totalResultsCount\":0,\"geonames\":[]}";
-}
-
-
-
-
-
-function xml_output(){
-	global $sstr, $arrayWP, $arrayG, $arrayK, $arraySH, $arraySTR, $arrayV, $searchThruWeb, $callback, $maxResults;
-	if (!$searchThruWeb) {
-		$doc = new DOMDocument('1.0');
-		$doc->encoding = CHARSET;
-		$result = $doc->createElement("result");
-		$doc->appendChild($result);
-
-		for($i=0; $i<count($arrayWP); $i++){
-			$domNode = $doc->importNode($arrayWP[$i], true); 
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayG); $i++){
-			$domNode = $doc->importNode($arrayG[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayK); $i++){
-			$domNode = $doc->importNode($arrayK[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arraySH); $i++){
-			$domNode = $doc->importNode($arraySH[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arraySTR); $i++){
-			$domNode = $doc->importNode($arraySTR[$i], true);
-			$result->appendChild($domNode);
-		}
-		for($i=0; $i<count($arrayV); $i++){
-			$domNode = $doc->importNode($arrayV[$i], true);
-			$result->appendChild($domNode);
-		}
-		$ready = $doc->createElement('ready');
-		$result->appendChild($ready);
-		$tready = $doc->createTextNode("true");
-		$ready->appendChild($tready);
-		//if ($searchThruWeb) {
-		//	header("Content-type: application/xhtml+xml; charset=UTF-8");
-		//}
-		echo $doc->saveXML();
-	} else {
-		//generate json object with gml content
-		$classJSON = new Mapbender_JSON;
-		$returnJSON = new stdClass;
-		
-		$countGeonames = 0;
-		$returnJSON->totalResultsCount = 0;
-
-		for($i=0; $i<count($arrayK); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-				$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayK[$i]);
-				$countGeonames++;
-				if (countGeonames >= $maxResults) {
-				}
-		}
-
-		for($i=0; $i<count($arrayV); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayV[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arrayG); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayG[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arraySTR); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySTR[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arrayWP); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arrayWP[$i]);
-			$countGeonames++;
-		}
-
-		for($i=0; $i<count($arraySH); $i++){
-				if ($countGeonames >= $maxResults) {
-					break;
-				}
-			$returnJSON->geonames[$countGeonames] = $classJSON->decode($arraySH[$i]);
-			$countGeonames++;
-		}
-		$returnJSON->totalResultsCount = $countGeonames;
-		if ($returnJSON->totalResultsCount == 0) {
-			$returnJSON->geonames = array();
-		}
-		if (isset($callback) && $callback != '') {
-			 $returnJSON = $callback."(".$classJSON->encode($returnJSON).")";
-		} else {
-			  $returnJSON = $classJSON->encode($returnJSON);
-		}
-
-	       	echo $returnJSON;	
-	}
-	
-}
-function encode($s){
-#	if(CHARSET == 'UTF-8'){
-#		$s = utf8_encode($s);
-#	}
-	return $s;
-}
-function getPlz($str){
-	$p = "/.*(\d{5}).*/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCity($str){
-	$p = "/(^\d{5}){0,1}(.*)/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[2]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getNr($str){
-	$p = "/.*[^0-9](\d{1,4})[^0-9]*/";
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[(count($am)-1)];
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getStrn($str){
-	$p = "/^(\D+)\d/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return trim($am[1]);
- 	}
- 	else{
- 		return false;
- 	} 
-}
-function getAppendix($str){
-	$p = "/.*\d+.*(\D{1})/";	
-	$am = array();
- 	if(preg_match($p, $str, $am)){
- 		return $am[1];
- 	}
- 	else{
- 		return false;
- 	}
-}
-function getCKeysByName($city){
-	global $ckeys;
-	$city = "%".strtoupper(trim($city))."%";
-	$sql = "SELECT gem_schl_neu FROM gis.wohnplatz ";
-	$sql .= "WHERE gemeinde_gem_teile_upper ILIKE $1 ";
-	$v = array($city);
-	$t = array('s');
-	$res = db_prep_query($sql,$v,$t);
-	while($row = db_fetch_array($res)){
-		array_push($ckeys, $row['gem_schl_neu']);
-	}
-}
-?>

Deleted: trunk/mapbender/http/geoportal/geoportal_mobile.html
===================================================================
--- trunk/mapbender/http/geoportal/geoportal_mobile.html	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/geoportal_mobile.html	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-        <title>GeoPortal.rlp Mobile</title>
-        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
-        <meta name="apple-mobile-web-app-capable" content="yes">
-        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css">
-        <script src="http://code.jquery.com/jquery-1.5.min.js"></script>
-        <script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script>
-        <link rel="stylesheet" href="http://www.openlayers.org/dev/examples/style.mobile.css" type="text/css">
-        <link rel="stylesheet" href="http://www.openlayers.org/dev/examples/style.mobile-jq.css" type="text/css">
-        <script src="http://www.openlayers.org/dev/OpenLayers.mobile.js"></script>
-	<script src="../extensions/proj4js/lib/proj4js-combined.js"></script>
-	<script src="../extensions/proj4js/lib/defs/EPSG25832.js"></script >
-	<script src="../extensions/proj4js/lib/defs/EPSG4326.js"></script >
-        <script src="mobile-base_rlp.js"></script>
-        <script src="mobile-jq_rlp.js"></script>
-    </head>
-    <body>
-        <h1 id="title">GeoPortal.rlp Mobile</h1>
-        <div id="tags">
-          mobile, jquery, geoportal.rlp, GeoPortal.rlp
-        </div>
-        <p id="shortdesc">
-          OpenLayers Version des GeoPortal.rlp für mobile Endgeräte
-        </p>
-
-        <div data-role="page" id="mappage">
-          <div data-role="content">
-            <div id="map"></div>
-          </div>
-
-          <div data-role="footer">
-            <a href="#searchpage" data-icon="search" data-role="button">Suche</a>
-            <a href="#" id="locate" data-icon="locate" data-role="button">Positionierung</a>
-            <a href="#layerspage" data-icon="layers" data-role="button">Ebenen</a>
-          </div>
-          <div id="navigation" data-role="controlgroup" data-type="vertical">
-            <a href="#" data-role="button" data-icon="plus" id="plus"
-               data-iconpos="notext"></a>
-            <a href="#" data-role="button" data-icon="minus" id="minus"
-               data-iconpos="notext"></a>
-          </div>
-        </div>
-
-        <div data-role="page" id="searchpage">
-          <div data-role="header">
-            <h1>Suche</h1>
-          </div>
-          <div data-role="fieldcontain">
-            <input type="search" name="query" id="query"
-                   value="" placeholder="Search for places"
-                   autocomplete="off"/>
-          </div>
-          <ul data-role="listview" data-inset="true" id="search_results"></ul> 
-        </div>
-
-        <div data-role="page" id="layerspage">
-          <div data-role="header">
-            <h1>Ebenen</h1>
-          </div>
-          <div data-role="content">
-            <ul data-role="listview" data-inset="true" data-theme="d" data-dividertheme="c" id="layerslist"> 
-          </div>
-        </div>
-
-        <div id="popup" data-role="dialog">
-            <div data-position="inline" data-theme="d" data-role="header">
-                <h1>Details</h1>
-            </div>
-            <div data-theme="c" data-role="content">
-                <ul id="details-list" data-role="listview">
-                </ul>
-            </div>
-        </div>
-    </body>
-</html>

Deleted: trunk/mapbender/http/geoportal/logo_breitband.png
===================================================================
--- trunk/mapbender/http/geoportal/logo_breitband.png	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/logo_breitband.png	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,28 +0,0 @@
-‰PNG
-
-   
-IHDR   ú   %   \Zõ   tEXtSoftware Adobe ImageReadyqÉe<   PLTE³:½@Ö¦³´³´››œôÛâÖz”Ùƒš‹‹‹j1BèµÃ½,Tééé´<R(âââõõõÌ\{ìÂÎë½Ê¬ '„„„¤¢£Á7]íííÊRsÛŒ¢ä©¹““”lklÜÜÜà›®æ®½ÓqŒ÷äéùíð꫼ÉÈÉîÊÔCAD¸E¶@æ²À¼„”SRUš[mòÖÞtsuùêîåååÙÙÚdbdýùúÞ™¬{z{ÖÖÖÎ`~Ïe‚àÑÖñÑÙLKM+*,Ði„üüüÒn‰ÇIk#!$ÍÍÍóóó[[[<:=¼&OÃ@díÅЫt„¿1XÁÁÁÆÅÆÑÑѸ?ª©ª®­®Â<a¹¸¹øøøÂD㤶Ɇ˜±4ß–ªƒjqûúû·C2136ðÍ×ê¹Æࡲ{7½¼½áßౚ¡¸Wq°2ܐ¥m)=ÇMm¸\vþýýûòô²7ÅEh»%N%&毿üôöÒdƒõßæˆJ\ðððíæèÕÎÐÁ¾À*66ÁMh–„ˆº JÕwÔÆ˽>º"L¡ix±2(')ÿÿÿ¨ ÎÅɹH͘§9FEÈOpúïò647!"Ú‡žG6:¯-¨B©3SROR979nmo€‚’,G㧸؀˜#-.þüýü÷ø//0†ŠŠÎÒÒ¿¾À}}맺HFH[QT:-,.¬#H⢳ËYxþûüùùù×–¼(Q'$'ˆ†ˆW[]㥶˜—˜¯ .yxy¸4GIK
-a_alpqNRT3;<qpr	ÄÃÄÔÓÔÏÏЧ¦§òñòNMO^\_¶"?fegYXYÑÔԏÇÇÈ»»»w{|º8‘‘뮿ñÓÛ»0M÷ðòå«»íèéÈRn÷æëççè÷èìëæçÊVv¸ E>>?áž±¼ KBGIÖ–¨ä¨¸ÂH`hghËÊË_^_wvwUGK,%&SVVŸ  ÒÓÔðÏØ×}–á¾È" ÆÈɬ«¬ê¢¶±3䡳µ>ÿÿÿ8 Uf   tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ S÷%  
- IDATxÚÄ™{\S×À/DÂ+h  &(¤Þ" b$bÊJeá±è‡Ù–
-¶iAX[Àúˆ´Z[zÁšXMëúP⋮κU76é,~6çck‡k;gçÞ$Ûsÿðó©å÷ù$¹÷þι÷~Ïïüç„€?‰DÖ×G–àåƒäòÓØ.g-õÉ«q
-ÿŽžØ.…iäs8…¡¸A¤ùþEâ§A7|QO&s±Ûr°}îæ“7‚pŠ°ä€7¶ËÅrp«)67(&Y$ŸìÆ‚ -…Ø.Ÿ÷’çñ ¯“õ>XEb,9’ˆÕð²õ»&	æô7°¸d:—GȃaXÃ‰U$t’¥‹°
-_ß7Ièpe/yrq?V8BÎÃœápÌÀ*Ν'G°šu|½d’Ðá’r*^3´ác]yÙ]‚g'.bA_“Ë‚ðìÙ2á$¡Ãèï¢ð}²Ô«˜e!wâ»#³–`[’Ÿe`5!fþåIB‡«ܦê\ŠÕ¬ÈwœÅß,™ìâ.ÎÙ5$/¸2Ièð2kV6BÎÏà.ŸüVŸ'—áAíÀÇM(ýû&	ÝÐMߊÕ,J#ñqN%[ðÖ
-ë"@Ž@w†C*à7IèŒ#Nçr†z|FÎ8O.Àw¹Yï¸È;Ž¿‹U´èË&	…:Þ ð6Ù‰ŸòåYä]®P·?‡‚FÈø.12cü$¡£$‹7ˆ)ù
-¾Ë]²_ÙÀAòׄ°à+X	:&}ß[\NýB}Ú_ñšen/Ù»¹­:É3Bä/â*nà‚jcÃe7ú»+Wäœb$çt÷—¬(œ˜[þ…9÷	\²±Ðµ¦ªþå†×üØ9§PyHJqRÜk3|¯ú”ªRÖ t•_)Ò3ÕjcqÝxƒ#äL®9äÀ/ï`™^éF÷´µ8Ŷ؛óÝýcÛo¢wè>Àìo9xŸèa]=®z­²¨ÈÌfŽ¤ÀSªªyEE¯–ßÓ+©)²/3^rÆËЙœùXg—º=$Gèø†4ೌh\èñt·Ï1Ÿtû®wšz;Â3tcûýí±÷‹Þã*U£D@&¢/™ˆS¼pálqI¯-\XÌÛ[+÷Z{o-2¤
- ˜˜HW_> ѵ¸:ß²«ˆþúD¥prE:³‡ÈÂ
-.«ÇÒ®EãêAE Y	0lÉ)vü—n<ÃfUƒBIPâ*Ki΢r¸­}1<·2':Ñ],—WX¸b{æ¿(&®(ÌItyϹEÑ9§—fìhq¢w Ða@<îz|ÐäÚEÈ‹Öþ+ÐÓ-3L‚†*•qÝŸ‹r3/íÖjMn.%ñå?ô!sØ¡_2ŽîÎŽóhc?yj1Mß@Ó;y¹%«Ýr0Õ˜[?I¼YÚBç§Ùæåd÷î´eYZ>]ÅÒØaëéI³ÝŠF÷³ôØû=iítÏ	vðΞ·Y²ló
 κÐ㬠¦m´4¹Ý5Š„nôƵÏœÔ@0ŠÈ Ø ³¯xMü!Æ|/ûšðö9ÌžÆåí2Ž~`#y'² O¾hiï<r$.:HwΈÎ96Bß^
-ý—ÓK¼§æ§ùä],Ya˲}˜·ßû¶ÅrÕ3éûWžŽ>Bô‡«?£-3>ž1B†Bì…üödïmgÏ·[zôCÈà~0I•T8ô¢µŽ´‰¦+" uZ GÖžI>Q$ÙêÖt¿bÞŽáüY\Uó
-³kâÜè–,FÚé,¦tØf£0ýn7=Ÿ]RÒÞpk,N[º–:›\`Êgƒ·Í²Þú²[»záênúCÖC¢é®@˜“Ÿ¶‘µÀN:AÕ-Z@üçÜ¦ú/þIz{d`v€*Anf\Q?¢7;#¢Œ/šàXÀµXI¨·qÊãpNôäUyHÎNïjG¾¾­½‹ùY]ôû‘DvÒó]è7ówø;Ãœ+iÞ ÑsKüWæ;’<hÙÁ¢;WZÖåå0™žé
-s¥ì„Wp•WVöЫ¹@iø!z®êqǸ¥¢²ÑòBŠ€þ¿ŽÔÿ
-^áUÞIÏlbòÁ„á£I®t³ŒäXôE5´VßæàFKË,¸?k=9c£c²xÞù{гλ=
-JOl{WìÁÎäØR„>“Îs¦½›vWì#-¿C±UÏZ-WîåjB0èOç[Ü3~ŠGæ3n†Ï¼ý\ªs´â¦ 7±é°4+Ÿ#/y“ð•J’J¿Î…îždå-í§×b×î}Ê°IɹY[a˜½k˜E_î|Açt$Ì£»V%¡‡Ä–ÎbÐÏN ï¤]+„^=€‚¥RùäÓ¯ ’ôt „·Ûœg¾Ù@v•i¬TÊ€¾
-ÍEî†ñhyžw®߃߫‚pÍ•×]è	'èO¶Ž£gì¤;ÙµÔ™óÇÿíBÿŽf×ûmô|Ö½}Ú[ß|çf;ãÝ÷¢¿a±±UëÒtÖQh0àŸ­ÎÝ¢{ÑÕo>÷ö#—®_?*d
-ž«›ÙÆÕñ›µ^@´¦Î ÷… ·±Öy·¸z™c#^ãÛп¡o}i`äkF>þdà©P)ým§+;Ìèù(ò‹öüæñ}ðO/}û34-ž:ùQä7ðÙM›ößéóú{'÷ =»gÓï½_ÿxSïÉ73>Xåôî“Ÿ ŠÜ{Sû{S}vþ­åäžòC­¹ã«å·642dÎAy=ĵ_,r½¬1W$xÔ:~¶iªÿžYëôZcUA
-ªmB<;°c˜ãŸ¿oÛªøñO²pÚÛ.yâaÅÜKL‹˜ñ¦â¡-Îˏ*.¡V]:Ê\™¶þ±€iºT¼¹oÖ>â<~î‘·¶¬ßðè¥ë»vÍ}1`Úß/ÍU¸ÛMxÑYÚ¯Ý9bèÒ–
-^Ð!‰šÝd»ÌE‰‰¹¹Ì•lÚ¡¡Vj«ÐÉÿ
-xGîr}­Xáñgʹ‘ú•x‹\kxŒZÛØèÕØØøÁèÛ=×Ë«(×ù//¯Fô)b®æ¢9úf~Ñ*Ä)*ÊrÙ#Ô¶±¨±‘øàrBÐdfš:»9oÁtó÷#îC¼îésuïDQ~›äX{”gqlðÀõ z?^mm-o¶öåôJ £æÆŠù¥*ëö˜RŠö² è(Ó]ÐîéØ—!¤CŠZ…¤×Yû*€mLÕR+àG•`µIת=,ÖQε|ó#D”¬ntŠéÎe
-U§“ÕšÐ5›³"]I	tTSEUúݘÞZC N¢Bž­o&ä„]`®m¯²³/Ci¾”šLW¾¬ÚÜjzk¡«¸º]=††Oð Ñ7’3ñI,ãk’c9ïËOaÐãLχ†>¯lÓŒÆS:­$D¡I¡tR¸¸X¢¶wŒ
-¨;e}CŠÌ—EñQ^j‡œ’ïÖ”ÕŠ¿4ÚbT¹¸®ãòæZ©À„ó2í­sD"aˆ§áɈ…͵5ç“!¾Z­fÐ/kï>Ü#~Ù/IZÓÔß`­;jýJ¯
-Õ\·—U÷7ð5BÂ/u¬jT-û­"Ʈޡ5§$Ûwùöó[cÚŒ.«—ªÆ”¨k2q”QVƒMkS ¯2ªwm÷úÊúãK¹vs9ö¼µzjD!nV†VŽ*´ªšoj3¥HÓCx¯Ï.¼VA…NI~£„<<Ezg4Æn¬6Ú›å¾&ku(aW·©åh^ÕvE[Y™0D,•Ö
-s+j¬‰£zE(!Žo<°	Ÿ¶¿;	Ï’Ç8ŠÜ*+;áýB+*ì}uâä¾áñ|S’)]•Þ‘®+[oëöÝëz³*õ°êé5šPc›qŒ2ûJùûŸׅªç	é;Sø:¡ÐN	¨1Á˜´No—2+SÑ„/­‰à}õ¼ýÁ¡öÐÃ\è[ß°µ†éÌu•(²ÙUñ‚J_„Þ¿]kõ½öGy¿°*tÄ®YÐ;|åqvE”LðËQ_enÏÓ5\9¬ãÕý¥)S³7ÓÎAÄhì íSâõ¡¼+¨ñhuCøv‘Ú7>¸ª?ÜL<@ô„ûEoBV×ÏN§§f5§,”šÕµ|»hHX[¦’Sâ):±Š4+e1¥’¬¹&UÜÕŠ(Jv-¸YV"ê¸îNnb±3ãé®öéu¢ë¨±Ia*d«4’!^Ù.>õc¢÷ïõ@ïHàúf'—ÕÍDfM¶Sj²­Ùn17‰
-ø²¦ñól¶‘9]5[µÍÌÚ­9+­V«–¯ågÿ˜R“îéë±ÿÓ»•,TŠþ/À 0í‹wPo    IEND®B`‚
\ No newline at end of file

Deleted: trunk/mapbender/http/geoportal/mobile-base_rlp.js
===================================================================
--- trunk/mapbender/http/geoportal/mobile-base_rlp.js	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mobile-base_rlp.js	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,181 +0,0 @@
-// initialize map when page ready
-var map;
-var mapProj = new OpenLayers.Projection("EPSG:25832");
-var mapProjEpsgCode = '25832';
-var boundsProj = '293000,5417000,471000,5650000';
-var projUnits = 'm';
-var logo = "<img src='geoportal_logo.png' height='26' width='150' alt='Geoportal Logo'/>";
-var init = function (onSelectFeatureFunction) {
-    var vector = new OpenLayers.Layer.Vector("Vector Layer", {});
-    var geolocate = new OpenLayers.Control.Geolocate({
-        id: 'locate-control',
-        geolocationOptions: {
-            enableHighAccuracy: false,
-            maximumAge: 0,
-            timeout: 7000
-        }
-    });
-    // create map
-    map = new OpenLayers.Map({
-        div: "map",
-        theme: null,
-        projection: mapProj,
-        units: projUnits,
-	minResolution: 0.01,
-        maxExtent: new OpenLayers.Bounds(
-		293000,5417000,471000,5650000
-        ),
-        controls: [
-            new OpenLayers.Control.Attribution(),
-            new OpenLayers.Control.TouchNavigation({
-                dragPanOptions: {
-                    interval: 100,
-                    enableKinetic: true
-                }
-            }),
-            geolocate
-           // selectControl
-        ],
-       /* layers: [
-            new OpenLayers.Layer.OSM("OpenStreetMap", null, {
-                transitionEffect: 'resize'
-            }),
-            new OpenLayers.Layer.Bing({
-                key: apiKey,
-                type: "Road",
-                // custom metadata parameter to request the new map style - only useful
-                // before May 1st, 2011
-                metadataParams: {
-                    mapVersion: "v1"
-                },
-                name: "Bing Road",
-                transitionEffect: 'resize'
-            }),
-            new OpenLayers.Layer.Bing({
-                key: apiKey,
-                type: "Aerial",
-                name: "Bing Aerial",
-                transitionEffect: 'resize'
-            }),
-            new OpenLayers.Layer.Bing({
-                key: apiKey,
-                type: "AerialWithLabels",
-                name: "Bing Aerial + Labels",
-                transitionEffect: 'resize'
-            }),
-            vector,
-            sprintersLayer
-        ],*/
-	layers : [
-		new OpenLayers.Layer.WMS( "Luftbild RP",
-		"http://geo4.service24.rlp.de/wms/dop40_geo4.fcgi?",
-		{
-		layers: "dop",
-		format: "image/jpeg",
-		transparent: "On",
-		transitionEffect: 'resize'
-		},
-		{
-		projection: mapProj,
-		units: projUnits,
-		numZoomLevels: 20,
-		minScale: 0.1,
-		maxScale: 10000000,
-		singleTile: false,
-		attribution: logo
-	} ),
-		new OpenLayers.Layer.WMS( "Relief RP",
-		"http://www.gdi-rp-dienste2.rlp.de/cgi-bin/mapserv.fcgi?map=/data/umn/geoportal/relief_rp/rlp_relief.map&",
-		{
-		layers: "relief",
-		format: "image/png; mode=24bit",
-		transparent: "TRUE",
-		transitionEffect: 'resize'
-		},
-		{
-		projection: mapProj,
-		units: projUnits,
-		singleTile: true,
-		minScale: 200000,
-		maxScale: 100000000,
-		'isBaseLayer': false,
-		alwaysInRange: true
-
-	} ),
-		new OpenLayers.Layer.WMS( "Rheinland-Pfalz Zusammenstellung",
-		"http://www.gdi-rp-dienste2.rlp.de/cgi-bin/mapserv.fcgi?map=/data/umn/geoportal/karte_rp/rheinland-pfalz-gesamt2.map&",
-		{
-		layers: "ATKIS-Praes",
-		format: "image/png",
-		transparent: "TRUE",
-		transitionEffect: 'resize'
-		},
-		{
-		projection: mapProj,
-		units: projUnits,
-		singleTile: true,
-		numZoomLevels: 20,
-		minScale: 0.1,
-		maxScale: 10000000,
-		'isBaseLayer': false,
-		alwaysInRange: true
-	} ),
-	new OpenLayers.Layer.WMS( "Liegenschaftskarte 02/2010",
-		"http://geo4.service24.rlp.de/wms/lika_basis.fcgi?",
-		{
-		layers: "likar:likar",
-		format: "image/png",
-		transparent: "TRUE",
-		transitionEffect: 'resize'
-		},
-		{
-		projection: mapProj,
-		units: projUnits,
-		singleTile: true,
-		numZoomLevels: 20,
-		minScale: 0.1,
-		maxScale: 8000,
-		'isBaseLayer': false,
-		alwaysInRange: true
-
-	} ),
-		vector
-	],
-        zoom: 1
-    });
-    map.addControl(new OpenLayers.Control.Attribution());
-    map.zoomToExtent(map.maxExtent);
-    var style = {
-        fillOpacity: 0.1,
-        fillColor: '#000',
-        strokeColor: '#f00',
-        strokeOpacity: 0.6
-    };
-    geolocate.events.register("locationupdated", this, function(e) {
-        vector.removeAllFeatures();
-        vector.addFeatures([
-            new OpenLayers.Feature.Vector(
-                e.point,
-                {},
-                {
-                    graphicName: 'cross',
-                    strokeColor: '#f00',
-                    strokeWidth: 2,
-                    fillOpacity: 0,
-                    pointRadius: 10
-                }
-            ),
-            new OpenLayers.Feature.Vector(
-                OpenLayers.Geometry.Polygon.createRegularPolygon(
-                    new OpenLayers.Geometry.Point(e.point.x, e.point.y),
-                    e.position.coords.accuracy / 2,
-                    50,
-                    0
-                ),
-                {},
-                style
-            )
-        ]);
-        map.zoomToExtent(vector.getDataExtent());
-    });
-};

Deleted: trunk/mapbender/http/geoportal/mobile-jq_rlp.js
===================================================================
--- trunk/mapbender/http/geoportal/mobile-jq_rlp.js	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mobile-jq_rlp.js	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,151 +0,0 @@
-var selectedFeature = null;
-
-$(document).ready(function() {
-
-    // Start with the map page
-    if (window.location.hash && window.location.hash!='#mappage') {
-        $.mobile.changePage('mappage');
-    }
-
-    // fix height of content
-    function fixContentHeight() {
-        var footer = $("div[data-role='footer']:visible"),
-        content = $("div[data-role='content']:visible:visible"),
-        viewHeight = $(window).height(),
-        contentHeight = viewHeight - footer.outerHeight();
-
-        if ((content.outerHeight() + footer.outerHeight()) !== viewHeight) {
-            contentHeight -= (content.outerHeight() - content.height());
-            content.height(contentHeight);
-        }
-        if (window.map) {
-            map.updateSize();
-        } else {
-            // initialize map
-            init(function(feature) { 
-                selectedFeature = feature; 
-                $.mobile.changePage($("#popup"), "pop"); 
-            });
-        }
-    }
-    $(window).bind("orientationchange resize pageshow", fixContentHeight);
-    fixContentHeight(); 
-    //init();
-
-    // Map zoom  
-    $("#plus").click(function(){
-        map.zoomIn();
-    });
-    $("#minus").click(function(){
-        map.zoomOut();
-    });
-    $("#locate").click(function(){
-        var control = map.getControlsBy("id", "locate-control")[0];
-        if (control.active) {
-            control.getCurrentLocation();
-        } else {
-            control.activate();
-        }
-    });
-    
-    $('div#popup').live('pageshow',function(event, ui){
-        var li = "";
-        for(var attr in selectedFeature.attributes){
-            li += "<li><div style='width:25%;float:left'>" + attr + "</div><div style='width:75%;float:right'>" 
-            + selectedFeature.attributes[attr] + "</div></li>";
-        }
-        $("ul#details-list").empty().append(li).listview("refresh");
-    });
-
-    $('#searchpage').live('pageshow',function(event, ui){
-        $('#query').bind('change', function(e){
-            $('#search_results').empty();
-            if ($('#query')[0].value === '') {
-                return;
-            }
-            $.mobile.pageLoading();
-
-            // Prevent form send
-            e.preventDefault();
-
-            var searchUrl = 'http://www.geoportal.rlp.de/mapbender/geoportal/gaz_geom_mobile.php?resultTarget=web&outputFormat=json&searchEPSG='+mapProjEpsgCode;
-            searchUrl += '&searchText=' + $('#query')[0].value;
-            $.getJSON(searchUrl, function(data) {
-                $.each(data.geonames, function() {
-                    var place = this;
-                    $('<li>')
-                        .hide()
-                        .append($('<h2 />', {
-                            text: place.title
-                        }))
-                        .append($('<p />', {
-                            html: '<b>' + place.category + '</b> '
-                        }))
-                        .appendTo('#search_results')
-                        .click(function() {
-                            $.mobile.changePage('mappage');
-			    //generate new extent
-			    var bounds = new OpenLayers.Bounds(place.minx, place.miny, place.maxx, place.maxy);
-			    map.zoomToExtent(bounds);
-                        })
-                        .show();
-                });
-                $('#search_results').listview('refresh');
-                $.mobile.pageLoading(true);
-            });
-        });
-        // only listen to the first event triggered
-        $('#searchpage').die('pageshow', arguments.callee);
-    });
-
-    $('#layerslist').listview();
-    $('<li>', {
-            "data-role": "list-divider",
-            text: "Base Layers"
-        })
-        .appendTo('#layerslist');
-    var baseLayers = map.getLayersBy("isBaseLayer", true);
-    $.each(baseLayers, function() {
-        addLayerToList(this);
-    });
-
-    $('<li>', {
-            "data-role": "list-divider",
-            text: "Overlay Layers"
-        })
-        .appendTo('#layerslist');
-    var overlayLayers = map.getLayersBy("isBaseLayer", false);
-    $.each(overlayLayers, function() {
-        addLayerToList(this);
-    });
-    $('#layerslist').listview('refresh');
-    
-    map.events.register("addlayer", this, function(e) {
-        addLayerToList(e.layer);
-    });
-});
-
-function addLayerToList(layer) {
-    var item = $('<li>', {
-            "data-icon": "check",
-            "class": layer.visibility ? "checked" : ""
-        })
-        .append($('<a />', {
-            text: layer.name
-        })
-            .click(function() {
-                $.mobile.changePage('mappage');
-                if (layer.isBaseLayer) {
-                    layer.map.setBaseLayer(layer);
-                } else {
-                    layer.setVisibility(!layer.getVisibility());
-                }
-            })
-        )
-        .appendTo('#layerslist');
-    layer.events.on({
-        'visibilitychanged': function() {
-            $(item).toggleClass('checked');
-        }
-    });
-}

Deleted: trunk/mapbender/http/geoportal/mod_digitize_tab_komserv.php
===================================================================
--- trunk/mapbender/http/geoportal/mod_digitize_tab_komserv.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mod_digitize_tab_komserv.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,3114 +0,0 @@
-<?php
-# License:
-# Copyright (c) 2009, Open Source Geospatial Foundation
-# This program is dual licensed under the GNU General Public License 
-# and Simplified BSD license.  
-# http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
-
-require_once(dirname(__FILE__) . "/../php/mb_validateSession.php");
-
-$e_target = $_GET["e_target"];
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="cache-control" content="no-cache">
-<meta http-equiv="pragma" content="no-cache">
-<meta http-equiv="expires" content="0">
-<?php
-echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';	
-?>
-<title>Digitize</title>
-<?php
-$digitize_conf_filename = "digitize_default.conf";
-include '../include/dyn_css.php';
-?>
-<script type='text/javascript' src='../extensions/jquery-ui-1.7.2.custom/js/jquery-1.3.2.min.js'></script>
-<script type='text/javascript'>
-/**
- * Package: digitize
- *
- * Description:
- * Allows the user to digitize polygons, lines and points.
- * 
- * Files:
- *  - http/javascripts/mod_digitize_tab.php
- *  - http/php/mod_digitize_messages.php
- *  - http/css/digitize.css
- *  - conf/digitize_default.conf
- *
- * SQL:
- * > INSERT INTO gui_element(fkey_gui_id, e_id, e_pos, e_public, e_comment, 
- * > e_title, e_element, e_src, e_attributes, e_left, e_top, e_width, 
- * > e_height, e_z_index, e_more_styles, e_content, e_closetag, e_js_file, 
- * > e_mb_mod, e_target, e_requires, e_url) VALUES ('<appId>','digitize',
- * > 2,1,'Digitize tool.','Digitize','iframe',
- * > '../javascripts/mod_digitize_tab.php?sessionID','frameborder = "0" ',
- * > 1,1,1,1,5,'','','iframe','','geometry.js','mapframe1','mapframe1',
- * > 'http://www.mapbender.org/Digitize');
- * >
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 'cssUrl', 
- * > '../css/digitize.css', 'url to the style sheet of the mapframe' ,
- * > 'var');
- * >
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 
- * > 'digitize_conf_filename', 'digitize_default.conf', '' ,'php_var');
- * >
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 
- * > 'text css', 
- * > 'digitizeGeometryList {position:absolute; top:50px; left:0px;} .digitizeGeometryListItem {color:#000000; font-size:10px;} body {font-family: Arial, Helvetica, sans-serif; font-size:12px; color:#ff00ff; background-color:#ffffff; margin-top: 0px; margin-left:0px;} .button {height:18px; width:32px;}', 
- * > 'text css' ,'text/css');
- * > 
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 
- * > 'wfsCssUrl', '../css/mapbender.css', 'var' ,'var');
- *
- * Help:
- * http://www.mapbender.org/Digitize
- *
- * Maintainer:
- * http://www.mapbender.org/User:Christoph_Baudson
- * 
- * Parameters:
- * cssUrl - path/filename of CSS which specifies the design of digitize 
- * 			objects in the map do not change the default file, create your 
- * 			own css file from the default file
- * text css - CSS text for the geometry list
- * wfsCssUrl - path/filename of CSS which specifies the design of the popup
- * 			which appears when a feature is saved or updated
- *
- * License:
- * Copyright (c) 2009, Open Source Geospatial Foundation
- * This program is dual licensed under the GNU General Public License 
- * and Simplified BSD license.  
- * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
- */
-
-//
-// Buttons
-//
-function addButtonDig(id, isOn, src, titleOff, titleOn, x, y) {
-	buttonDig_id.push(id);
-	buttonDig_on.push(isOn);
-	buttonDig_src.push(src);
-	buttonDig_title_off.push(titleOff);
-	buttonDig_title_on.push(titleOn);
-	buttonDig_x.push(x);
-	buttonDig_y.push(y);
-}
-
-function htmlspecialchars(p_string) {
-	p_string = p_string.replace(/&/g, '&');
-	p_string = p_string.replace(/</g, '<');
-	p_string = p_string.replace(/>/g, '>');
-	p_string = p_string.replace(/"/g, '"');
-	//	p_string = p_string.replace(/'/g, ''');
-	return p_string;
-};
-   
-//default definition of image directory for digitize buttons, might
-//be overwritten with digitize conf data
-var buttonDig_imgdir = "../img/button_digitize/";
-var buttonDig_id = [];
-var buttonDig_on = [];
-var buttonDig_src = [];
-var buttonDig_title_off = [];
-var buttonDig_title_on = [];
-var buttonDig_x = [];
-var buttonDig_y = [];	
-
-var mapWindow;
-var mapDomElement;
-var mapType = "";
-
-var DigitizeHistory = function () {
-	var historyItemArray = [];
-	var currentIndex = 0;
-	
-	this.addItem = function (obj) {
-		if (typeof obj == "object" 
-		&& obj.back && typeof obj.back === "function"
-		&& obj.forward && typeof obj.forward === "function"
-		) {
-			for (var i = currentIndex; i < historyItemArray.length; i++) {
-				delete historyItemArray[i];
-			}
-			historyItemArray.length = currentIndex;
-			historyItemArray.push({
-				back: obj.back,
-				forward: obj.forward
-			});
-			return true;
-		}
-		return false;
-	};
-	
-	this.back = function () {
-		if (currentIndex > 0) {
-			currentIndex --;
-			historyItemArray[currentIndex].back();
-			executeDigitizeSubFunctions();
-			return true;
-		}
-		return false;
-	};
-	
-	this.forward = function () {
-		if (currentIndex < historyItemArray.length) {
-			historyItemArray[currentIndex].forward();
-			currentIndex ++;
-			executeDigitizeSubFunctions();
-			return true;
-		}
-		return false;
-	};
-};
-
-var digitizeHistory = new DigitizeHistory();
-
-var registerAnotherFunction = function () {
-	var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-	mapDomElement = parent.mb_mapObj[mapIndex].getDomElement();
-	mapType = mapDomElement.tagName.toUpperCase();
-	if (mapType == "DIV") {
-		mapWindow = parent.window;
-	}
-	else if (mapType == "IFRAME") {
-		mapWindow = mapDomElement.window;
-	}
-	else {
-		new parent.Mb_warning("Could not set CSS for map in digitizing module.");
-	}
-
-	eventCloseGeometry = new parent.Mapbender.Event();
-	eventCloseGeometry.register(function (obj) {
-		d.close(obj.index);
-	});
-	if (openMetadataEditorAfterNewGeometryHasBeenCreated) {
-		eventCloseGeometry.register(function (obj) {
-			if (typeof obj !== "object") {
-				return;
-			}
-			if (typeof obj.index !== "number") {
-				return;
-			}
-			showWfs(obj.index);
-		});
-	}
-	
-	/**
-	 * Property: events
-	 * 
-	 * Description:
-	 * Your callback functions receive an object with the 
-	 * following attributes
-	 * - geometryIndex: index of feature in current feature collection
-	 * - feature: the <Mapbender.MultiGeometry>
-	 */
-	parent.Mapbender.modules[mod_digitize_elName].events = {
-		/**
-		 * Property: events.closeGeometry
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired after a new geometry has been 
-		 * digitized. 
-		 */
-		closeGeometry: eventCloseGeometry,
-		/**
-		 * Property: events.beforeUpdateOrInsert
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before a feature is updated
-		 * or inserted by WFS-T. 
-		 */
-		beforeUpdateOrInsert: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.beforeUpdate
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before a feature is updated
-		 * by WFS-T. 
-		 */
-		beforeUpdate: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.beforeInsert
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before a feature is inserted 
-		 * by WFS-T. 
-		 */
-		beforeInsert: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.openDialog
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before the user opens the dialog
-		 * for inserting or updating. Returning false in your callback prevents
-		 * the default dialog from popping up.
-		 */
-		openDialog: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.clickDelete
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired when the user clicks the button to 
-		 * delete features by WFS-T
-		 */
-		clickDelete: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.geometryInserted
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired after a feature has been inserted 
-		 * by WFS-T
-		 */
-		geometryInserted: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.afterWfs
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired after a feature has been inserted,
-		 * updated or deleted by WFS-T
-		 */
-		afterWfs: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.mergeLines
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired when 2 lines are merged to a single line,
-		 */
-		 mergeLines: new parent.Mapbender.Event()
-	};
-
-	eventCloseGeometry.register(function () {
-		_currentGeomIndex = -1;
-	});
-
-	parent.Mapbender.modules[mod_digitize_elName].cancelAjaxRequest = false;
-	parent.Mapbender.modules[mod_digitize_elName].cancelAjaxRequestMessage = "An error occured.";
-
-	parent.Mapbender.modules[mod_digitize_elName].dataCheck = false;
-};
-
-
-<?php
-echo "var mod_digitize_target = '".$e_target."';";
-$digitizeConfFilenameAndPath = dirname(__FILE__) . "/../../conf/" . $digitize_conf_filename;
-if ($digitize_conf_filename && file_exists($digitizeConfFilenameAndPath)) {
-	/*
-	 * @security_patch finc done
-	 */
-	include(secure($digitizeConfFilenameAndPath));
-}
-?>
-if (typeof snapping === "undefined") {
-	snapping = true;
-}
-
-var wfsWindow;	
-var wfsConf = [];
-var d;
-var mod_digitize_width;
-var mod_digitize_height;
-var mod_digitizeEvent = false;
-var nonTransactionalHighlight;
-
-var button_point;
-var button_line;
-var button_polygon;
-var button_line_continue = "lineContinue";
-var button_move = "dragBasePoint";
-var button_insert = "setBasePoint";
-var button_delete = "delBasePoint";
-var button_clear = "clear";
-var button_split = "digitizeSplit";
-var button_merge = "digitizeMerge";
-var button_difference = "digitizeDifference";
-var button_line_merge = "mergeLine";
-var _currentGeomIndex = -1;
-
-var digitizeDivTag;
-
-var GeometryArray;
-var MultiGeometry = parent.MultiGeometry;
-var Geometry;
-var Point;
-var geomType;
-
-var msgObj;
-var featureTypeElementFormId = "featureTypeElementForm";
-
-try {if(mod_digitize_elName){}}catch(e) {mod_digitize_elName = "digitize";}
-try {if(nonTransactionalEditable){}}catch(e) {nonTransactionalEditable = false;}
-try {if(updatePointGeometriesInstantly){}}catch(e) {updatePointGeometriesInstantly = false;}
-try {if(addCloneGeometryButton){}}catch(e) {addCloneGeometryButton = false;}
-
-if (typeof featuresMustHaveUniqueId === "undefined") {
-	var featuresMustHaveUniqueId = false;
-}
-
-if (typeof allowUndoPolygonBySnapping === "undefined") {
-	var allowUndoPolygonBySnapping = false;
-}
-
-if (typeof openMetadataEditorAfterNewGeometryHasBeenCreated === "undefined") {
-	var openMetadataEditorAfterNewGeometryHasBeenCreated = false;
-}
-
-
-var eventCloseGeometry;
-
-function toggleTabs(tabId) {
-	if(!initialTab) {
-		return;
-	}
-
-	var tabHeaders = wfsWindow.document.getElementsByTagName('a');
-	var tabs       = wfsWindow.document.getElementsByTagName('div');
-	
-	for(var i = 0; i < tabHeaders.length; i++) {
-		if(tabHeaders[i].id.indexOf('tabheader') != -1) {
-			tabHeaders[i].className = 'tabheader';
-		}
-	}
-	
-	for(var i = 0; i < tabs.length; i++) {
-		if(tabs[i].className === 'tabcontent') {
-			tabs[i].style.visibility = 'hidden';
-			tabs[i].style.display    = 'none';
-		}
-	}
-	
-	wfsWindow.document.getElementById('tabheader_' + tabId).className += ' active';
-	
-	wfsWindow.document.getElementById('tab_' + tabId).style.visibility = 'visible';
-	wfsWindow.document.getElementById('tab_' + tabId).style.display    = 'block';
-	
-	return false;
-}
-
-function showHelptext(helptextId) {
-	hideHelptext();
-	wfsWindow.document.getElementById('helptext' + helptextId).style.visibility = 'visible';
-	wfsWindow.document.getElementById('helptext' + helptextId).style.display    = 'block';
-
-	return false;
-}
-
-function hideHelptext(helptextId) {
-	if(helptextId) {
-		wfsWindow.document.getElementById('helptext' + helptextId).style.visibility = 'hidden';
-		wfsWindow.document.getElementById('helptext' + helptextId).style.display    = 'none';
-	}
-
-	var helptext = wfsWindow.document.getElementsByTagName('div');
-	
-	for(var i = 0; i < helptext.length; i++) {
-		if(helptext[i].className === 'helptext') {
-			helptext[i].style.visibility = 'hidden';
-			helptext[i].style.display    = 'none';
-		}
-	}
-
-	return false;
-}
-function getMousePosition(e) {
-	var map = parent.getMapObjByName(mod_digitize_target);
-
-	return map.getMousePosition(e);
-}
-
-
-function initializeDigitize () {
-	d = new parent.GeometryArray();
-	GeometryArray = parent.GeometryArray;
-	Geometry = parent.Geometry;
-	Point = parent.Point;
-	geomType = parent.geomType;
-	button_point = parent.geomType.point; //"Point";
-	button_line = parent.geomType.line; //"Line";
-	button_polygon = parent.geomType.polygon; //"Polygon";
-}
-
-/**
- * Append geometries from KML when KML has been loaded
- */
-function appendGeometryArrayFromKML () {
-	try {
-		parent.kmlHasLoaded.register(function(properties){
-			d = new parent.GeometryArray();
-			d.importGeoJSON(properties);		
-//			d = parent.geoJsonToGeometryArray(properties);
-			executeDigitizeSubFunctions();
-		});
-	}
-	catch (e) {
-		var exc = new parent.Mb_warning(e);
-	}
-}
-
-
-// ------------------------------------------------------------------------------------------------------------------------
-// --- polygon, line, point insertion (begin) ----------------------------------------------------------------------------------------------
-
-function appendGeometryArray(obj) {
-	executeDigitizePreFunctions();
-	d.union(obj, featuresMustHaveUniqueId);
-	executeDigitizeSubFunctions();
-}
-
-function mod_digitize_go(e){
-	// track mouse position
-	var currentPos = getMousePosition(e);
-	s.check(currentPos);
-}
-
-function mod_digitize_timeout(){
-	var el = mapDomElement;
-	$(el).unbind("mousedown")
-		.unbind("mouseup")
-		.unbind("mousemove");
-}
-
-var isLastLinePointSnapped = function (newPoint) {
-	return d.get(_currentGeomIndex).geomType === parent.geomType.line 
-		&& d.getGeometry(_currentGeomIndex,-1).count() > 1 
-		&& d.getGeometry(_currentGeomIndex,-1).get(-1).equals(newPoint);
-};
-
-var innerPointSnapped = function (newPoint) {
-	if (d.count() === 0) {
-		return null;
-	}
-	var start = 1;
-	if (d.getGeometry(_currentGeomIndex, -1).count() < 3) {
-		start = 0;
-	}
-	for (var i = start; i < d.getGeometry(_currentGeomIndex, -1).count(); i++) {
-		if (d.getGeometry(_currentGeomIndex,-1).get(i).equals(newPoint)) {
-			return i;
-		}
-	}
-	return null;
-};
-
-var isFirstPolygonPointSnapped = function (newPoint) {
-	return d.get(_currentGeomIndex).geomType == parent.geomType.polygon 
-		&& d.getGeometry(_currentGeomIndex,-1).count() >= 3 
-		&& d.getGeometry(_currentGeomIndex,-1).get(0).equals(newPoint);
-};
-
-var editingPolygonAndThreePointsHaveBeenInserted = function () {
-	return d.get(_currentGeomIndex).geomType == parent.geomType.polygon && d.getGeometry(_currentGeomIndex,-1).count() == 2;
-};
-
-var editingLineAndTwoPointsHaveBeenInserted = function () {
-	return d.get(_currentGeomIndex).geomType == parent.geomType.line && d.getGeometry(_currentGeomIndex,-1).count() >= 1;				
-};
-
-function mod_digitize_start(e){
-	if (mod_digitizeEvent !== button_point
-		&& mod_digitizeEvent !== button_line
-		&& mod_digitizeEvent !== button_line_continue
-		&& mod_digitizeEvent !== button_polygon) {
-
-		alert(msgObj.errorMessageNoGeometrySelected);
-		return false;
-	}
-	
-	(function () {
-		//
-		// get the last point the user digitized
-		//
-		var realWorldPos;
-		var isSnapped = s.isSnapped();
-		if (isSnapped) {
-			realWorldPos = s.getSnappedPoint(); 
-			s.clean();
-		}
-		else {
-			var currentPos = getMousePosition(e);
-			realWorldPos = parent.mapToReal(mod_digitize_target,currentPos);
-		}
-
-		var geometryType = mod_digitizeEvent;
-		var currentPoint = realWorldPos;
-		var currentEpsg = parent.mb_mapObj[parent.getMapObjIndexByName(mod_digitize_target)].epsg;
-		var currentGeomIndex = _currentGeomIndex;
-
-		if (mod_digitizeEvent === button_line_continue) {
-			if (isSnapped) {
-				// find corresponding line
-				for (var i = 0; i < d.count(); i++) {
-					var lastPointSnapped = false;
-					var firstPointSnapped = false;
-					if (d.get(i).geomType !== parent.geomType.line) {
-						continue;
-					}
-					if (d.getPoint(i, -1, -1) === realWorldPos) {
-						lastPointSnapped = true;
-					}
-					else if (d.getPoint(i, -1, 0) === realWorldPos) {
-						firstPointSnapped = true;
-					}
-					else {
-						continue;
-					}
-					if (firstPointSnapped) {
-						// reverse line!
-						// we can only add points to the end of the line, not insert them at the beginning
-						var oldLine = parent.Mapbender.cloneObject(d.getGeometry(i, -1));
-						var newLine = d.getGeometry(i, -1);
-						var len = oldLine.count();
-						for (var j = len-1; j >= 0; j--) {
-							newLine.updatePointAtIndex(oldLine.get(j), len-j-1);
-						}
-					}
-					// enable snapping to all points except 
-					// the ones from this line
-					s.resetPoints();
-					if (snapping) {
-						s.store(d);
-						for (var j = 0; j < d.get(i).count(); j++) {
-							var currentLine = d.getGeometry(i, j);
-							for (var k = 0; k < currentLine.count(); k++) {
-								s.removePoint(currentLine.get(k));
-							}
-						}
-					}
-
-
-					// delete last point, will be added again below, 
-					// as the event has changed to "button_line"
-					d.getGeometry(i, -1).del(-1);
-					d.getGeometry(i, -1).reopen();
-					currentGeomIndex = i;
-					_currentGeomIndex = i;
-					
-					parent.mb_enableButton(d.get(i).geomType);
-					break;
-				}
-			}
-			// check if event is still "line continue", 
-			// as it might have changed
-			if (mod_digitizeEvent === button_line_continue) {
-				return;
-			}
-		}
-		//
-		// A new geometry has to be created
-		//
-		if (d.count() === 0 || (d.get(currentGeomIndex).count()> 0 && d.getGeometry(currentGeomIndex, -1).isComplete())) {
-			digitizeHistory.addItem({
-				// remove the entire multigeometry
-				back: function () {
-					s.resetPoints();
-					d.del(currentGeomIndex);
-					if (snapping) {
-						s.store(d);
-					}
-				},
-				// add the multigeometry to the geometry array
-				forward: function () {
-					if (snapping) {
-						s.store(d);
-					}
-					parent.mb_enableButton(geometryType);
-					d.addMember(geometryType);
-					d.get(currentGeomIndex).addGeometry();
-					d.getGeometry(currentGeomIndex,-1).setEpsg(currentEpsg);
-					d.getGeometry(currentGeomIndex,-1).addPoint(realWorldPos);
-					if (geometryType == parent.geomType.point){
-						eventCloseGeometry.trigger({
-							index: currentGeomIndex,
-							geometry: d.get(currentGeomIndex)
-						});
-						parent.mb_disableThisButton(mod_digitizeEvent);
-					}
-				}
-			});
-		}
-		//
-		// a point is added to an existing multigeometry
-		//
-		else {
-			var innerPointIndex = innerPointSnapped(realWorldPos);
-			//
-			// editing polygon and first point is snapped -> close polygon
-			//
-			if (isFirstPolygonPointSnapped(realWorldPos)) {
-				digitizeHistory.addItem({
-					back: function () {
-						d.getGeometry(currentGeomIndex, -1).reopen();
-						parent.mb_enableButton(d.get(currentGeomIndex).geomType);
-						// activate button
-					},
-					forward: function () {
-						// close the polygon
-						eventCloseGeometry.trigger({
-							index: currentGeomIndex,
-							geometry: d.get(currentGeomIndex)
-						});
-						parent.mb_disableThisButton(mod_digitizeEvent);
-					}
-				});
-			}
-			//
-			// editing line and last point is snapped -> close line
-			//
-			else if (isLastLinePointSnapped(realWorldPos)) {
-				digitizeHistory.addItem({
-					back: function () {
-						d.getGeometry(currentGeomIndex, -1).reopen();
-						parent.mb_enableButton(d.get(currentGeomIndex).geomType);
-					},
-					forward: function () {
-						// close the polygon
-						eventCloseGeometry.trigger({
-							index: currentGeomIndex,
-							geometry: d.get(currentGeomIndex)
-						});
-						parent.mb_disableThisButton(mod_digitizeEvent);
-					}
-				});
-			}
-			//
-			// another point is snapped (undo for polygons!)
-			//
-			else if (innerPointIndex !== null && allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-				while (d.getGeometry(currentGeomIndex, -1).count() > innerPointIndex) {
-					digitizeHistory.back();
-				}
-				// avoids the history.forward()!
-				return;
-			}
-			//
-			// just add the point
-			//
-			else {
-				if (editingPolygonAndThreePointsHaveBeenInserted()) {
-					digitizeHistory.addItem({
-						back: function () {
-							s.removePoint(d.getPoint(currentGeomIndex, -1, 0));
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.removePoint(d.getPoint(currentGeomIndex, -1, -1));
-							}
-							d.getGeometry(currentGeomIndex, -1).del(-1);
-						},
-						forward: function () {
-							d.getGeometry(currentGeomIndex,-1).addPoint(realWorldPos);
-							s.add(d.getPoint(currentGeomIndex, -1, 0));
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.add(d.getPoint(currentGeomIndex, -1, -1));
-							}
-						}
-					});
-				}
-				else if (editingLineAndTwoPointsHaveBeenInserted()) {
-					digitizeHistory.addItem({
-						back: function () {
-							s.removePoint(d.getPoint(currentGeomIndex, -1, -1));
-							s.add(d.getPoint(currentGeomIndex, -1, -2));
-							d.getGeometry(currentGeomIndex, -1).del(-1);
-						},
-						forward: function () {
-							d.getGeometry(currentGeomIndex,-1).addPoint(realWorldPos);
-							s.removePoint(d.getPoint(currentGeomIndex, -1, -2));
-							s.add(d.getPoint(currentGeomIndex, -1, -1));
-						}
-					});
-				}
-				else {
-					digitizeHistory.addItem({
-						back: function () {
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.removePoint(d.getPoint(currentGeomIndex, -1, -1));
-							}
-							if (geometryType === parent.geomType.line) {
-								d.getGeometry(currentGeomIndex, -1).del(-1);
-							}
-							else {
-								d.getGeometry(currentGeomIndex, -1).del(-1);
-							}
-						},
-						forward: function () {
-							d.getGeometry(currentGeomIndex, -1).addPoint(realWorldPos);
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.add(d.getPoint(currentGeomIndex, -1, -1));
-							}
-						}
-					});
-				}
-			}
-		}
-		digitizeHistory.forward();
-	})();
-
-	return true;
-}
-// --- polygon, line, point insertion (begin) ----------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-
-// ------------------------------------------------------------------------------------------------------------------------
-// --- basepoint handling (begin) -----------------------------------------------------------------------------------------
-
-var basepointObject = false;
-var basepointMemberIndex = null;
-var basepointGeometryIndex = null;
-var basepointRingIndex = null;
-var basepointPointIndex = null;
-var basepointDragActive = false;
-
-function handleBasepoint(obj,memberIndex, geometryIndex, ringIndex, pointIndex){
-	if (!(
-		mod_digitizeEvent == button_move || 
-		mod_digitizeEvent == button_insert || 
-		mod_digitizeEvent == button_delete)
-	) { 
-		return false; 
-	}
-	
-	basepointObject = obj;
-	basepointMemberIndex = memberIndex;
-	basepointGeometryIndex = geometryIndex;
-
-	if (pointIndex == undefined) {
-		pointIndex = ringIndex;
-		basepointRingIndex = undefined;
-	}
-	else {
-		basepointRingIndex = ringIndex;
-	}
-	basepointPointIndex = pointIndex;
-	
-	if(mod_digitizeEvent == button_move){
-		mod_digitize_timeout();
-		basepointObject.style.cursor = 'move';
-		parent.$(basepointObject).bind("mousedown", parent.frames[mod_digitize_elName].selectBasepoint);
-	}
-
-	if(mod_digitizeEvent == button_delete){
-		mod_digitize_timeout();
-		basepointObject.style.cursor = 'crosshair';
-		parent.$(basepointObject).bind("mousedown", parent.frames[mod_digitize_elName].deleteBasepoint);
-	}
-}
-
-function convertLinepointToBasepoint(obj, memberIndex, geomIndex, ringIndex, pointIndex){
-	if(!(mod_digitizeEvent == button_insert)){ return false; }
-	
-	if(mod_digitizeEvent == button_insert){
-		mod_digitize_timeout();
-		obj.style.cursor = 'crosshair';
-		$(obj).unbind("click").click(function (e){
-			insertBasepoint(e);
-			return false;
-		});
-
-		basepointObject = obj;
-		basepointMemberIndex = memberIndex;
-		basepointGeometryIndex = geomIndex;
-		basepointRingIndex = ringIndex;
-		basepointPointIndex = pointIndex;
-	}
-}
-
-function insertBasepoint(e){
-	var i = basepointMemberIndex;
-	var j = basepointGeometryIndex;
-	var k = basepointRingIndex;
-	var l = basepointPointIndex;
-	
-	var currentPos = getMousePosition(e);
-
-	var ind = parent.getMapObjIndexByName(mod_digitize_target);
-	var p = parent.mb_mapObj[ind].convertPixelToReal(new Point(currentPos.x, currentPos.y));
-
-	if (k == undefined) {
-		d.getGeometry(i,j).addPointAtIndex(p, l);
-	}
-	else {
-		d.getGeometry(i,j).innerRings.get(k).addPointAtIndex(p, l);
-	}
-
-	executeDigitizeSubFunctions();
-}
-
-function deleteBasepoint(){
-	var i = basepointMemberIndex;
-	var j = basepointGeometryIndex;
-	var k = basepointRingIndex;
-	var l = basepointPointIndex;
-
-	if (k != undefined) {
-		d.delAllPointsLike(d.getPoint(i, j, k, l));
-	}
-	else {
-		d.delAllPointsLike(d.getPoint(i, j, l));
-	}
-
-	executeDigitizeSubFunctions();
-}
-
-function selectBasepoint(e){
-	if(!basepointDragActive && mod_digitizeEvent == button_move){
-		basepointDragActive = true;
-		if (snapping) {
-			s.store(d, d.getPoint(basepointMemberIndex, basepointGeometryIndex, basepointPointIndex));
-		}
-		// replace basepoint by transparent blob
-		basepointObject.style.width = mod_digitize_width + "px";
-		basepointObject.style.height = mod_digitize_height + "px";
-		basepointObject.style.left = "0px";
-		basepointObject.style.top = "0px";
-			
-		if (parent.ie) {
-			// ie cannot handle backgroundColor = 'transparent'
-			basepointObject.style.background = "url(../img/transparent.gif)";
-		}
-		else{
-			basepointObject.style.backgroundColor = 'transparent';
-		}
-
-		parent.$(basepointObject).bind("mouseup", releaseBasepoint);
-		parent.$(basepointObject).bind("mousemove", dragBasepoint);
-	}
-}
-
-function dragBasepoint(e){
-	if(basepointDragActive){
-		var currentPos = getMousePosition(e);
-		var res = s.check(currentPos);
-
-	}
-}
-	
-function updateAllPointsOfNonTransactionalLike(oldP, newP){ 
-	for (var i = 0; i < d.count(); i++) {
-		if (isTransactional(d.get(i))) {
-			d.get(i).updateAllPointsLike(oldP, newP);
-		}
-	}
-}
-
-	
-function releaseBasepoint(e){
-	
-	var i = basepointMemberIndex;
-	var j = basepointGeometryIndex;
-	var k = basepointRingIndex;
-	var l = basepointPointIndex;
-	basepointDragActive = false;
-	
-	var currentPos = getMousePosition(e);
-	var basepointDragEnd = currentPos;
-	parent.$(basepointObject).unbind("mousedown");
-	var ind = parent.getMapObjIndexByName(mod_digitize_target);
-	var p = parent.mb_mapObj[ind].convertPixelToReal(new Point(basepointDragEnd.x, basepointDragEnd.y));
-
-	var oldPoint;
-	if (k == undefined) {
-		oldPoint = parent.Mapbender.cloneObject(d.getPoint(i,j,l));
-	} 
-	else {
-		oldPoint = parent.Mapbender.cloneObject(d.getPoint(i,j,k,l));
-	}
-	if (s.isSnapped()) {
-		var snappedPoint = parent.Mapbender.cloneObject(s.getSnappedPoint());
-		if (!nonTransactionalEditable) {
-			updateAllPointsOfNonTransactionalLike(oldPoint, snappedPoint);
-		}
-		else {
-			d.updateAllPointsLike(oldPoint, snappedPoint);
-		}
-		s.clean();
-	}
-	else {
-		if (!nonTransactionalEditable) {
-			updateAllPointsOfNonTransactionalLike(oldPoint, p);
-		}
-		else {
-			d.updateAllPointsLike(oldPoint, p);
-		}
-	}
-	basepointMemberIndex = null;
-	basepointGeometryIndex = null;
-	basepointPointIndex = null;	
-		
-	executeDigitizeSubFunctions();
-
-	var isPoint = d.get(i).geomType === parent.geomType.point;
-	var hasFid = d.get(i).e.getElementValueByName("fid") !== false;
-	if (mod_digitizeEvent == button_move && 
-		updatePointGeometriesInstantly && 
-		isPoint && 
-		hasFid) {
-
-		dbGeom("update", i, function () {
-			d.del(i);
-		});
-	}		
-}
-// --- basepoint handling (end) -----------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-	
-// ------------------------------------------------------------------------------------------------------------------------
-// --- registered functions (begin) ---------------------------------------------------------------------------------------
-
-function registerDigitizePreFunctions(stringFunction){
-	mod_digitizePreFunctions[mod_digitizePreFunctions.length] = stringFunction;
-}
-
-function registerDigitizeSubFunctions(stringFunction){
-	mod_digitizeSubFunctions[mod_digitizeSubFunctions.length] = stringFunction;
-}
-
-function executeDigitizeSubFunctions(){
-	for(var i=0; i<mod_digitizeSubFunctions.length; i++){
-		eval(mod_digitizeSubFunctions[i]);
-	}
-}
-
-function executeDigitizePreFunctions(){
-	for(var i=0; i<mod_digitizePreFunctions.length; i++){
-		eval(mod_digitizePreFunctions[i]);
-	}
-}
-
-function completeInitialization() {
-	registerAnotherFunction();
-	initializeDigitize();
-	setStyleForTargetFrame();
-	checkDigitizeTag();
-	initialiseSnapping();
-//		appendGeometryArrayFromKML();
-	if (!nonTransactionalEditable) {
-		initialiseHighlight();
-	}
-	initialiseMeasure();
-	getMessages();
-}
-
-function registerFunctions(){
-	
-	mod_digitizePreFunctions = [];
-	mod_digitizeSubFunctions = [];
-	registerDigitizePreFunctions("updateExtent()");
-	registerDigitizePreFunctions("drawDashedLine()");
-	registerDigitizeSubFunctions("updateListOfGeometries()");
-	registerDigitizeSubFunctions("drawDashedLine()");
-
-	if (parent.Mapbender.events.init.done) {
-		completeInitialization();
-	}
-	else {
-		parent.Mapbender.events.init.register(completeInitialization);
-	}
-	parent.eventLocalize.register(function() {
-		getMessages();
-	});
-
-	parent.eventAfterMapRequest.register(function () {
-		updateExtent();
-	});
-	parent.mb_registerWfsWriteSubFunctions(function(){parent.zoom(mod_digitize_target, true, 0.999);});
-}
-
-function checkDigitizeTag(){
-	var digitizeTagName = "digitizeDiv";
-	var digitizeTagStyle;
-	
-
-	if (mapType == "DIV") {
-		
-		digitizeTagStyle = {"z-index":digitizeTransactionalZIndex, "font-size":"10px"};
-		digitizeDivTag = new parent.DivTag(digitizeTagName, "", digitizeTagStyle, mapDomElement);
-	}	 
-	else {
-		digitizeTagStyle = {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeTransactionalZIndex, "font-size":"10px"};
-		digitizeDivTag = new parent.DivTag(digitizeTagName, mod_digitize_target, digitizeTagStyle);
-	}
-	parent.mb_registerPanSubElement(digitizeTagName);
-	parent.mb_registerSubFunctions("window.frames['"+ mod_digitize_elName + "'].drawDashedLine()");
-}
-
-
-function setStyleForTargetFrame(){
-	var cssLink = mapWindow.document.createElement("link");
-	var cssHead = mapWindow.document.getElementsByTagName("head")[0]; 
-	cssLink.setAttribute("href", cssUrl); 
-	cssLink.setAttribute("type", "text/css"); 
-	cssLink.setAttribute("rel", "stylesheet"); 
-	cssHead.appendChild(cssLink);
-}
-
-function initialiseSnapping(){
-	s = new parent.Snapping(mod_digitize_target, snappingTolerance, snappingColor, snappingHighlightZIndex);
-}
-function initialiseHighlight(){
-	nonTransactionalHighlight = new parent.Highlight([mod_digitize_target], "nonTransactional", {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeNonTransactionalZIndex}, nonTransactionalLineWidth);
-}
-function initialiseMeasure(){
-	if (mapType == "DIV") {
-		measureDivTag = new parent.DivTag(measureTagName, "", measureTagStyle);
-	}
-	else {
-		measureDivTag = new parent.DivTag(measureTagName, measureTagTarget, measureTagStyle);
-	}
-	parent.mb_registerSubFunctions("window.frames['"+ mod_digitize_elName + "'].updateMeasureTag()");
-}
-// --- registered functions (end) -----------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-
-
-function updateMeasureTag () {
-	if (d.count() > 0 ) {
-		if (d.get(_currentGeomIndex).count() > 0) {
-			if (d.getGeometry(_currentGeomIndex, -1).count() > 0) {
-				if (mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon) {
-					var measureString = "";
-					measureString += msgObj.measureTagLabelCurrent + d.getGeometry(_currentGeomIndex, -1).getCurrentDist(measureNumberOfDigits) + "<br>";
-					measureString += msgObj.measureTagLabelTotal + d.getGeometry(_currentGeomIndex, -1).getTotalDist(measureNumberOfDigits);
-					measureDivTag.write(measureString);
-					return true;
-				}
-			}
-		}
-	}
-	measureDivTag.clean();
-}
-
-
-
-// ------------------------------------------------------------------------------------------------------------------------
-// --- button handling (begin) --------------------------------------------------------------------------------------------
-
-function displayButtons(){
-	for (var i = 0 ; i < buttonDig_id.length ; i ++) {
-		if (parseInt(buttonDig_on[i])==1) {
-			var divTag = document.createElement("div");
-			divTag.setAttribute("id", "div_" + buttonDig_id[i]);
-// FIREFOX 
-			document.getElementById("digButtons").appendChild(divTag);
-
-//IE WORKAROUND, WORKS ALSO FOR FIREFOX
-			var tagContent = "<div style='position:absolute; top:"+buttonDig_y[i]+"px; left:"+buttonDig_x[i]+"px;'><img name=\""+buttonDig_id[i]+"\" onmouseover=\"parent.mb_regButton_frame('initDigButton', mod_digitize_elName, "+i+");\" id=\""+buttonDig_id[i]+"\" title=\""+buttonDig_title_off[i]+"\" src=\""+buttonDig_imgdir+buttonDig_src[i]+"\"></div>";
-			parent.writeTag(mod_digitize_elName,"div_" + buttonDig_id[i],tagContent);
-		}
-	}
-}
-
-function updateButtons() {
-	for (var i = 0 ; i < buttonDig_id.length ; i ++) {
-		if (parseInt(buttonDig_on[i])==1) {
-			var currentButton = document.getElementById(buttonDig_id[i]);
-			var currentStatus = buttonDig_id[i].status;
-			var currentTitle = "";
-			switch (buttonDig_id[i]) {
-				case "point":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelPointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelPointOff;
-					}
-					break;
-				case "line":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelLineOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelLineOff;
-					}
-					break;
-				case "lineContinue":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelLineContinueOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelLineContinueOff;
-					}
-					break;
-				case "polygon":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelPolygonOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelPolygonOff;
-					}
-					break;
-				case "dragBasePoint":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelMoveBasepointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelMoveBasepointOff;
-					}
-					break;
-				case "setBasePoint":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelInsertBasepointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelInsertBasepointOff;
-					}
-					break;
-				case "delBasePoint":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelDeleteBasepointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelDeleteBasepointOff;
-					}
-					break;
-				case "clear":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelClearListOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelClearListOff;
-					}
-					break;
-				case "digitizeSplit":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelSplitOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelSplitOff;
-					}
-					break;
-				case "digitizeMerge":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelMergeOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelMergeOff;
-					}
-					break;
-				case "digitizeDifference":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelDifferenceOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelDifferenceOff;
-					}
-					break;
-				case "mergeLine":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelMergeLineOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelMergeLineOff;
-					}
-					break;	
-			}
-			currentButton.title = currentTitle;
-		}
-	}
-}
-
-function initDigButton(ind, pos){
-	parent.mb_button[ind] = document.getElementById(buttonDig_id[pos]);
-	parent.mb_button[ind].img_over = buttonDig_imgdir + buttonDig_src[pos].replace(/_off/,"_over");
-	parent.mb_button[ind].img_on = buttonDig_imgdir + buttonDig_src[pos].replace(/_off/,"_on");
-	parent.mb_button[ind].img_off = buttonDig_imgdir + buttonDig_src[pos];
-	parent.mb_button[ind].title_on = buttonDig_title_on[pos];
-	parent.mb_button[ind].title_off = buttonDig_title_off[pos];
-	parent.mb_button[ind].status = 0;
-	parent.mb_button[ind].elName = buttonDig_id[pos];
-	parent.mb_button[ind].fName = "";
-	parent.mb_button[ind].go = new Function ("digitizeEnable(parent.mb_button["+ind+"])");
-	parent.mb_button[ind].stop = new Function ("digitizeDisable(parent.mb_button["+ind+"])");
-}	
-
-function digitizeEnable(obj) {
-	if (obj.id == button_move || obj.id == button_insert || obj.id == button_delete) {
-		mod_digitizeEvent = obj.id;
-		executeDigitizePreFunctions();
-	}
-	else if (obj.id == button_point || obj.id == button_line || 
-			obj.id == button_polygon || obj.id == button_clear || 
-			obj.id == button_split || obj.id == button_merge ||
-			obj.id == button_difference || obj.id == button_line_continue ||
-			obj.id == button_line_merge){
-					
-		var el = mapDomElement;
-		$(el).mousemove(function (e) {
-			mod_digitize_go(e);
-		}).mousedown(function (e) {
-			mod_digitize_start(e);
-		});
-
-
-		mod_digitizeEvent = obj.id;
-
-		//get a first snapping point for digitizing
-		if (mod_digitizeEvent == button_point || mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon || mod_digitizeEvent == button_insert ) {
-			s.resetPoints();
-			if (snapping) {
-				s.store(d);
-			}
-		}
-		
-		if (mod_digitizeEvent == button_point || mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon || mod_digitizeEvent == button_insert ) {
-			//
-			// complete a previously unfinished geometry
-			//
-			(function () {
-				var currentGeometryDoesNotCorrespondToTheCurrentButton = 
-					(d.count() > 0 && d.get(_currentGeomIndex).count() > 0 &&
-					!d.get(_currentGeomIndex).get(-1).isComplete() &&
-					mod_digitizeEvent !== d.get(_currentGeomIndex).geomType);
-				var currentGeometryType = mod_digitizeEvent;
-				
-				if (currentGeometryDoesNotCorrespondToTheCurrentButton) {
-					var currentEpsg = parent.mb_mapObj[parent.getMapObjIndexByName(mod_digitize_target)].epsg;
-					digitizeHistory.addItem({
-						back: function(){
-							s.resetPoints();
-							d.del(_currentGeomIndex);
-							if (snapping) {
-								s.store(d);
-							}
-							d.getGeometry(_currentGeomIndex, -1).reopen();
-						},
-						forward: function(){
-							d.close(-1);
-							if (snapping) {
-								s.store(d);
-							}
-							d.addMember(currentGeometryType);
-							d.get(_currentGeomIndex).addGeometry();
-							d.getGeometry(_currentGeomIndex,-1).setEpsg(currentEpsg);
-						}
-					});
-					digitizeHistory.forward();
-				}
-			})();
-	
-		}
-
-		executeDigitizePreFunctions();
-		if (obj.id == button_polygon) {
-			// close previous open polygons
-			if (d.count() > 0 && d.get(_currentGeomIndex).count() > 0 && !d.get(_currentGeomIndex).get(-1).isComplete()) {
-				if (d.get(_currentGeomIndex).geomType !== parent.geomType.polygon) {
-//					d.close();
-//					executeDigitizeSubFunctions();
-				}
-				else {
-					s.add(d.getPoint(-1, -1, 0));
-				}
-			}
-		}
-		else if (obj.id == button_line) {
-			if (d.count() > 0 && d.get(_currentGeomIndex).count() > 0 && !d.get(_currentGeomIndex).get(-1).isComplete()) {
-				if (d.get(_currentGeomIndex).geomType != parent.geomType.line) {
-//					d.close();
-//					executeDigitizeSubFunctions();
-				}
-				else {
-//					s.add(d.getPoint(-1, -1, -1));
-				}
-			}
-		}
-		else if (obj.id == button_line_continue) {
-			s.resetPoints();
-			for (var i = 0; i < d.count(); i++) {
-				if (d.get(i).geomType !== parent.geomType.line) {
-					continue;
-				}
-				s.add(d.getPoint(i, -1, 0));
-				s.add(d.getPoint(i, -1, -1));
-			}
-		}
-		else if (obj.id == button_clear) {
-			var clear = confirm(msgObj.messageConfirmDeleteAllGeomFromList);
-			if (clear) {
-				d = new parent.GeometryArray();
-				s.resetPoints();
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				digitizeHistory = new DigitizeHistory();
-			}
-		}
-		else if (obj.id == button_merge) {
-			var applicable = (d.count() > 1);
-
-			var polygonTextArray = [];
-			for (var i = 0; i < d.count(); i++) {
-				if (d.get(i).geomType != parent.geomType.polygon) {
-					applicable = false;
-					polygonTextArray = [];
-					break;
-				}
-				polygonTextArray.push(d.get(i).toText());
-			}
-
-			if (!applicable) {
-				alert(msgObj.messageErrorMergeNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-			
-			parent.mb_ajax_post("../php/mod_digitize_mergePolygon.php", {polygons: polygonTextArray.join(";")}, function(json, status) {
-				var response = json;
-				var polygon = response.polygon;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				d.importGeometryFromText(polygon, parent.mb_mapObj[mapIndex].epsg);
-
-				// remove the original polygons
-				var len = d.count();
-				for (var i = 0; i < len-1; i++) {
-					d.del(0);
-				}
-				parent.mb_disableThisButton(mod_digitizeEvent);
-			});
-		}
-		else if (obj.id == button_split) {
-			var applicable = (d.count() == 2) && 
-				(
-					d.get(0).geomType == parent.geomType.polygon ||
-					d.get(0).geomType == parent.geomType.line
-				) && (d.get(1).geomType == parent.geomType.line);
-			if (!applicable) {
-				alert(msgObj.messageErrorSplitNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-			
-			var splitCallback = function (json, status) {
-				var response = json;
-				var resultArray = response.geometries;
-				var wfsConfId = d.get(0).wfs_conf;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				for (var i in resultArray) {
-					d.importGeometryFromText(resultArray[i], parent.mb_mapObj[mapIndex].epsg);
-					d.get(-1).wfs_conf = wfsConfId;
-					var wfsProperties = d.get(0).e;
-
-					for (var j = 0; j < wfsProperties.count(); j++) {
-						if (i > 0 && wfsProperties.getName(j) === "fid") {
-							continue;
-						}
-						d.get(-1).e.setElement(
-							wfsProperties.getName(j), 
-							wfsProperties.getValue(j)
-						);
-					}
-				}
-				// remove the original geometry and the temporary line
-				d.del(0);
-				d.del(0);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-			};
-
-			if (d.get(0).geomType == parent.geomType.polygon) {
-				var polygonText = d.get(0).toText();
-				var lineText = d.get(1).toText();
-				
-				parent.mb_ajax_post("../php/mod_digitize_splitPolygon.php", {
-					polygon: polygonText, 
-					line: lineText
-				}, splitCallback);
-			}
-			else {
-				var line1text = d.get(0).toText();
-				var line2text = d.get(1).toText();
-				
-				parent.mb_ajax_post("../php/mod_digitize_splitLine.php", {
-					line1: line1text, 
-					line2: line2text
-				}, splitCallback);
-			}
-		}
-		else if (obj.id == button_difference) {
-			var applicable = (d.count() == 2) && 
-							(d.get(0).geomType == parent.geomType.polygon) &&
-							(d.get(1).geomType == parent.geomType.polygon);
-			if (!applicable) {
-				alert(msgObj.messageErrorDifferenceNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-			
-			var polygon1Text = d.get(0).toText();
-			var polygon2Text = d.get(1).toText();
-			
-			parent.mb_ajax_post("../php/mod_digitize_differencePolygon.php", {polygon1: polygon1Text, polygon2: polygon2Text}, function(json, status) {
-				var response = json;
-				var polygonArray = response.polygons;
-				var wfsConfId = d.get(0).wfs_conf;
-				var wfsProperties = d.get(0).e;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				for (var i in polygonArray) {
-					d.importGeometryFromText(polygonArray[i], parent.mb_mapObj[mapIndex].epsg);
-					d.get(-1).wfs_conf = wfsConfId;
-					for (var i = 0; i < wfsProperties.count(); i++) {
-						if (wfsProperties.getName(i) === "fid") {
-							continue;
-						}
-						d.get(-1).e.setElement(wfsProperties.getName(i), wfsProperties.getValue(i));
-					}
-				}
-				// remove the original and the temporary polygon
-				d.del(0);
-				d.del(0);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-			});
-		}
-		else if (obj.id == button_line_merge) {
-			//var applicable = (d.count() > 1);
-			
-/*			var lineTextArray = [];
-			for (var i = 0; i < d.count(); i++) {
-				if (d.get(i).geomType != parent.geomType.line) {
-					applicable = false;
-					lineTextArray = [];
-					break;
-				}
-				lineTextArray.push(d.get(i).toText());
-			}
-*/
-			var applicable = (d.count() == 2) && 
-							(d.get(0).geomType == parent.geomType.line) &&
-							(d.get(1).geomType == parent.geomType.line);
-
-			if (!applicable) {
-				alert(msgObj.messageErrorMergeLineNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-
-			var line1Text = d.get(0).toText();
-			var line2Text = d.get(1).toText();
-				
-			parent.mb_ajax_post("../php/mod_digitize_mergeLines.php", {line1: line1Text, line2: line2Text}, function(json, status) {
-				var response = json;
-				var line = response.line;
-				if(line == "") {
-					alert(msgObj.errorMessageInvalidLineGeometries);
-					parent.mb_disableThisButton(mod_digitizeEvent);
-					return false;
-				}
-				var wfsConfId = d.get(-1).wfs_conf;
-				var wfsProperties = d.get(-1).e;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				
-				d.importGeometryFromText(line, parent.mb_mapObj[mapIndex].epsg);
-				d.get(-1).wfs_conf = wfsConfId;
-				for (var i = 0; i < wfsProperties.count(); i++) {
-					d.get(-1).e.setElement(wfsProperties.getName(i), wfsProperties.getValue(i));
-				}
-
-				var len = d.count();
-				var obsoleteFeatureArray = [];
-				wfsConf = parent.get_complete_wfs_conf();
-				for (var i = 0; i < len-2; i++) {
-					if(typeof wfsConf == 'object' && typeof wfsConf[d.get(i).wfs_conf] == 'object') {	
-						var featureCollection = new GeometryArray();
-						featureCollection.importGeoJSON(d.get(i).toString());
-						obsoleteFeatureArray.push({
-							geoJson : featureCollection.toString(),
-							wfsConfId : wfsConf[d.get(i).wfs_conf]['wfs_conf_id']    
-						});
-					}
-				}
-				var mergedFeatureId = d.get(-1).e.getElementValueByName("fid");
-
-				// remove the original lines
-				var len = d.count();
-				//for (var i = len-1 ; i >= 1; i--) {
-				for (var i = 0; i < len-1; i++) {
-					d.del(0);
-				}
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				
-				var res = true;	
-				res = parent.Mapbender.modules.digitize.events.mergeLines.trigger({
-					mergedFeatureId: mergedFeatureId,
-					obsoleteFeature: obsoleteFeatureArray
-					
-				}, "AND");
-				
-				if (res === false) {
-					return;	
-				}
-				
-				if(mergedFeatureId !== false) {
-					parent.Mapbender.modules.digitize.events.afterWfs.register(function (obj) {
-						for(var j = 0; j < obsoleteFeatureArray.length; j++) {
-							if(obj.type == 'update' && obj.feature.e.getElementValueByName("fid") == mergedFeatureId) {
-								parent.mb_ajax_post(
-									"../extensions/geom2wfst.php", 
-									{
-										'geoJson' : obsoleteFeatureArray[j].geoJson,
-										'method' : "delete",
-										'wfs_conf_id' : obsoleteFeatureArray[j].wfsConfId
-									}, 
-									function(json,status){
-										parent.zoom(mod_digitize_target, true, 0.999);				
-									}
-								);	
-							}
-						}	
-					});
-				}
-			});
-		}	
-	}
-	else {
-		alert("unknown type: " + obj.id);
-	}
-}
-
-function digitizeDisable(obj) {
-	mod_digitize_timeout();
-	executeDigitizeSubFunctions();
-	mod_digitizeEvent = false;
-}
-// --- button handling (end) ----------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-
-// -----------------------------------------------------------------------------------------------------------
-// --- display (begin) -----------------------------------------------------------------------------------------
-
-function updateExtent() {
-	var anInd = parent.getMapObjIndexByName(mod_digitize_target);
-	var change = false;
-	if (typeof(mod_digitize_width) == 'undefined' || mod_digitize_width != parent.mb_mapObj[anInd].width) {
-		mod_digitize_width = parent.mb_mapObj[anInd].width;
-		change = true;
-	}
-	if (typeof(mod_digitize_height) == 'undefined' || mod_digitize_height != parent.mb_mapObj[anInd].height) {
-		mod_digitize_height = parent.mb_mapObj[anInd].height;
-		change = true;
-	}
-	if (typeof(mod_digitize_epsg) == 'undefined' || mod_digitize_epsg != parent.mb_mapObj[anInd].epsg) {
-		mod_digitize_epsg = parent.mb_mapObj[anInd].epsg;
-		change = true;
-	}
-//	if (change) {
-//		drawDashedLine();
-//	}
-}
-
-function drawDashedLine(){
-	if (!nonTransactionalEditable) {
-		nonTransactionalHighlight.clean();
-	}
-	var smP = "";
-	smP += "<div class='t_img'>";
-	smP += "<img src='"+parent.mb_trans.src+"' width='"+mod_digitize_width+"' height='0'></div>";
-	smP += "<div class='t_img'>";
-	smP += "<img src='"+parent.mb_trans.src+"' width='0' height='"+mod_digitize_height+"'></div>";
-
-	if (!nonTransactionalEditable) {
-		nonTransactionalHighlight.clean();
-	}
-	var smPArray = [];
-	smPArray[smPArray.length] = "<div class='t_img'>"
-			+ "<img src='"+parent.mb_trans.src+"' width='"+mod_digitize_width+"' height='0'></div>"
-			+ "<div class='t_img'>"
-			+ "<img src='"+parent.mb_trans.src+"' width='0' height='"+mod_digitize_height+"'></div>";
-	
-	var mapObj = parent.mb_mapObj[parent.getMapObjIndexByName(mod_digitize_target)];
-	var width = mapObj.width;
-	var height = mapObj.height;
-	var arrayBBox = mapObj.extent.toString().split(",")
-	var minX = parseFloat(arrayBBox[0]);
-	var minY = parseFloat(arrayBBox[1]);
-	var maxX = parseFloat(arrayBBox[2]);
-	var maxY = parseFloat(arrayBBox[3]);
-	var cx = width/(maxX - minX);
-	var cy = height/(maxY - minY);
-	var isMoveOrInsertOrDelete = mod_digitizeEvent == button_move || mod_digitizeEvent == button_insert || mod_digitizeEvent == button_delete;
-	var minDist = 6;
-
-	for(var i=0, lenGeomArray = d.count(); i < lenGeomArray; i++){
-		var currentGeomArray = d.get(i);
-
-		if (!nonTransactionalEditable && !isTransactional(currentGeomArray)) {
-			nonTransactionalHighlight.add(currentGeomArray, nonTransactionalColor);
-		}
-		else {
-			for(var j=0, lenGeom = currentGeomArray.count(); j < lenGeom ; j++){
-				var currentGeometry = d.getGeometry(i,j);
-				var isPolygon = currentGeomArray.geomType == parent.geomType.polygon;
-				var isLine = currentGeomArray.geomType == parent.geomType.line;
-				var isComplete = currentGeometry.isComplete();
-				var lastPaintedPoint = false;
-
-				for(var k = 0, lenPoint = currentGeometry.count(); k < lenPoint; k++){
-					var currentPoint = currentGeometry.get(k);
-					var totalDistMeasureTag = "";
-					var currentPointMap = new Point(Math.round((currentPoint.x - minX)*cx), Math.round((maxY - currentPoint.y)*cy));
-//					var isTooCloseToPrevious = lastPaintedPoint && (k > 0) && Math.abs(currentPointMap.x-lastPaintedPoint.x) <= minDist && Math.abs(currentPointMap.y-lastPaintedPoint.y) <= minDist;
-//					if (!isTooCloseToPrevious) {
-						var currentPointIsVisible = currentPointMap.x > 0 && currentPointMap.x < width && currentPointMap.y > 0 && currentPointMap.y < height;
-						if (currentPointIsVisible) {
-							if (!isComplete && ((k == 0 && isPolygon) || (k == lenPoint-1 && isLine))) {
-								smPArray[smPArray.length] = "<div class='bp' style='top:"+
-									(currentPointMap.y-2)+"px;left:"+(currentPointMap.x-2)+"px;z-index:"+
-									parseInt(digitizeTransactionalZIndex+10, 10)+";background-color:"+linepointColor+"'";
-								if(measuring) {
-									if(isLine && k != 0) {
-										totalDistMeasureTag = "<p class='measure'>"+currentGeometry.getAggregatedDist(k-1, 2)+"</p>";
-									}
-								}	
-								
-							}
-							else {
-								smPArray[smPArray.length] = "<div class='bp' style='top:"+(currentPointMap.y-2)+"px;left:"+(currentPointMap.x-2)+"px;z-index:"+parseInt(digitizeTransactionalZIndex+10, 10)+";'";
-								if(measuring) {
-									if(isLine && k == 0) {
-										//nothing
-										totalDistMeasureTag = "";
-									}
-									else {
-										totalDistMeasureTag = "<p class='measure'>"+currentGeometry.getAggregatedDist(k-1, 2)+"</p>";
-									}
-								}
-								
-							}
-							if(k==0 && isPolygon && !isComplete){
-								smPArray[smPArray.length] = " title='"+msgObj.closePolygon_title+"' ";
-								
-							}
-							if(isMoveOrInsertOrDelete) {
-								smPArray[smPArray.length] = " onmouseover='window.frames[\""+mod_digitize_elName+"\"].handleBasepoint(this,"+i+","+j+","+k+")' ;";
-							}
-							smPArray[smPArray.length] = ">";
-							if (isPolygon || isLine) {
-								smPArray[smPArray.length] = totalDistMeasureTag;
-							}	
-							smPArray[smPArray.length] = "</div>";
-							lastPaintedPoint = currentPointMap;
-							
-						}
-						if (k > 0) {
-							points = parent.calculateVisibleDash(currentPointMap, previousPointMap, width, height);
-							if (points != false) {
-								smPArray[smPArray.length] = evaluateDashes(points[0], points[1], i, j, k);
-							}
-						}
-//					}
-					var previousPointMap = currentPointMap;
-				}
-				if (isPolygon && currentGeometry.innerRings.count() > 0) {
-					// draw inner rings
-
-					for (var l = 0, lenRings = currentGeometry.innerRings.count(); l < lenRings; l++) {
-						var currentRing = currentGeometry.innerRings.get(l);
-						var lastPaintedPoint = false;
-						
-						for (var m = 0, lenPoint = currentRing.count(); m < lenPoint; m++) {
-							var currentPoint = currentRing.get(m);
-							var currentPointMap = new Point(Math.round((currentPoint.x - minX) * cx), Math.round((maxY - currentPoint.y) * cy));
-							
-							//					var isTooCloseToPrevious = lastPaintedPoint && (k > 0) && Math.abs(currentPointMap.x-lastPaintedPoint.x) <= minDist && Math.abs(currentPointMap.y-lastPaintedPoint.y) <= minDist;
-							//					if (!isTooCloseToPrevious) {
-							var currentPointIsVisible = currentPointMap.x > 0 && currentPointMap.x < width && currentPointMap.y > 0 && currentPointMap.y < height;
-							if (currentPointIsVisible) {
-								if (!isComplete && ((k == 0 && isPolygon) || (k == lenPoint - 1 && isLine))) {
-									smPArray[smPArray.length] = "<div class='bp' style='top:" +
-									(currentPointMap.y - 2) +
-									"px;left:" +
-									(currentPointMap.x - 2) +
-									"px;z-index:" +
-									parseInt(digitizeTransactionalZIndex+10, 10) +
-									";background-color:" +
-									linepointColor +
-									"'";
-								}
-								else {
-									smPArray[smPArray.length] = "<div class='bp' style='top:" + (currentPointMap.y - 2) + "px;left:" + (currentPointMap.x - 2) + "px;z-index:" + parseInt(digitizeTransactionalZIndex+10, 10) + ";'";
-								}
-								if (m == 0 && isPolygon && !isComplete) {
-									smPArray[smPArray.length] = " title='" + msgObj.closePolygon_title + "' ";
-								}
-								if (isMoveOrInsertOrDelete) {
-									smPArray[smPArray.length] = " onmouseover='window.frames[\"" + mod_digitize_elName + "\"].handleBasepoint(this," + i + "," + j + "," + l + "," + m + ")' ;";
-								}
-								smPArray[smPArray.length] = "></div>";
-								lastPaintedPoint = currentPointMap;
-							}
-							if (m > 0) {
-								points = parent.calculateVisibleDash(currentPointMap, previousPointMap, width, height);
-								if (points != false) {
-									smPArray[smPArray.length] = evaluateDashes(points[0], points[1], i, j, l, m);
-								}
-							}
-							//					}
-							var previousPointMap = currentPointMap;
-						}
-					}
-				}
-			}
-		}
-	}
-	if (!nonTransactionalEditable) {
-		nonTransactionalHighlight.paint();
-	}
-
-	digitizeDivTag.write(smPArray.join(""));
-}
-
-function evaluateDashes(start, end, memberIndex, geomIndex, ringIndex, pointIndex){
-	if (pointIndex == undefined) {
-		pointIndex = ringIndex;
-		ringIndex = undefined;
-	}
-	
-	var strArray = [];
-	var delta = new parent.Point(end.x - start.x, end.y - start.y);
-	var lastGeomIsComplete = d.getGeometry(-1,-1).isComplete(); 
-	 
-	var vecLength = start.dist(end);
-	var n = Math.round(vecLength/dotDistance);
-	if (n > 0) {
-		var step = delta.dividedBy(n);
-	}
-	var lineCenter = Math.round(n/2);
-	
-	for(var i=1; i < n; i++){
-		var x = Math.round(start.x + i * step.x) - 2;
-		var y = Math.round(start.y + i * step.y) - 2;
-		if(x >= 0 && x <= mod_digitize_width && y >= 0 && y <= mod_digitize_height){
-			if (memberIndex == d.count()-1 && !lastGeomIsComplete) {
-				strArray[strArray.length] = "<div class='lp' style='top:"+y+"px;left:"+x+"px;z-index:"+digitizeTransactionalZIndex+";background-color:"+linepointColor+"' ";
-			}
-			else {
-				strArray[strArray.length] = "<div class='lp' style='top:"+y+"px;left:"+x+"px;z-index:"+digitizeTransactionalZIndex+";' onmousedown='return false;' ";
-			}
-			if(mod_digitizeEvent == button_insert) {
-				strArray[strArray.length] = "onmouseover='window.frames[\""+mod_digitize_elName+"\"].convertLinepointToBasepoint(this,"+memberIndex+","+geomIndex+","+ringIndex+","+pointIndex+")'";
-			}
-			strArray[strArray.length] = ">";
-			if(measuring) {
-				if(i == lineCenter) {
-					strArray[strArray.length] = "<p class='measure'>"+d.getGeometry(memberIndex, geomIndex).getDist(pointIndex-1, 2)+"</p>";
-				}
-			}
-			strArray[strArray.length] = "</div>";
-		}
-	}
-	return strArray.join("");
-}
-
-function isTransactional(geom) {
-//	alert(typeof(geom.wfs_conf) + " " + geom.wfs_conf + " " + wfsConf.length);
-	if (typeof(geom.wfs_conf) == 'number') {
-		if (geom.wfs_conf >= 0 && geom.wfs_conf < wfsConf.length) {			
-			var isTransactionalGeom = (wfsConf[geom.wfs_conf]['wfs_transaction'] != "" && wfsConf[geom.wfs_conf]['fkey_featuretype_id'] != "");
-			if (isTransactionalGeom) {
-				return true;
-			}
-			else{
-				return false;
-			}
-		}
-	}
-	else if (typeof(geom.wfs_conf) == 'undefined') {
-		return true;
-	}
-}
-
-function isValidWfsConfIndex (wfsConf, wfsConfIndex) {
-	return (typeof(wfsConfIndex) == "number" && wfsConfIndex >=0 && wfsConfIndex < wfsConf.length);
-}
-
-function getName (geom) {
-	wfsConfId = geom.wfs_conf;
-	wfsConf = parent.get_complete_wfs_conf();
-	if (isValidWfsConfIndex(wfsConf, wfsConfId)) {
-		var resultName = "";
-		for (var i = 0 ; i < wfsConf[wfsConfId]['element'].length ; i++) {
-			if (wfsConf[wfsConfId]['element'][i]['f_show'] == 1) {
-				var attrValue = geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']);
-				if(attrValue === false) {
-					resultName += "";
-				}
-				else{
-					resultName += geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']) + " ";					
-				}	
-			}
-		}
-		if (resultName == "") {
-			resultName = wfsConf[wfsConfId]['g_label'];
-		}
-		return resultName;
-	}
-	else if (geom.e.getElementValueByName("name")) {
-		return geom.e.getElementValueByName("name");
-	}
-	else {
-		return msgObj.digitizeDefaultGeometryName;
-	}
-}
-
-function updateListOfGeometries(){
-	var listOfGeom = "<ul>";
-	if (d.count() > 0) {
-		wfsConf = parent.get_complete_wfs_conf();
-		//for (var i = 0 ; i < d.count(); i ++) {
-		for (var i = d.count()-1 ; i >= 0; i--) {
-//			if (d.get(i).get(-1).isComplete() && (nonTransactionalEditable || isTransactional(d.get(i)))) {
-			if ((nonTransactionalEditable || isTransactional(d.get(i)))) {
-	
-				// for the geometries from a kml, there is another save dialogue
-				if (d.get(i).isFromKml()) {
-					// if the kml is in the db (id = id in database)
-					if (d.get(i).e.getElementValueByName("Mapbender:id")) {
-						// button: geometry information, update kml
-						listOfGeom += "<li>";
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_wfs_src+"' title='"+msgObj.buttonDig_wfs_title+"' onclick='showWfsKml("+i+")'>";
-					}
-				}
-				else {
-					// button: geometry information, save, update, delete
-					listOfGeom += "<li>";
-					if (d.get(i).get(-1).isComplete() && wfsExistsForGeom(d.get(i), wfsConf)) {
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_wfs_src+"' title='"+msgObj.buttonDig_wfs_title+"' onclick='showWfs("+i+")'>";
-					}
-
-					// button: remove this geometry
-					listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+msgObj.buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.del("+i+");executeDigitizeSubFunctions();'>";
-
-					// button clone this geometry
-					if (d.get(i).get(-1).isComplete() && addCloneGeometryButton === true) {
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_clone_src+"' title='"+msgObj.buttonDig_clone_title+"' onclick='d.addCopy(d.get("+i+"));d.get(-1).e.delElement(\"fid\");eventCloseGeometry.trigger({index: d.count() - 1, geometry: d.get(-1)});executeDigitizeSubFunctions();'>";
-					}
-				}
-					
-				// button: remove geometry from database
-				if (d.get(i).e.getElementValueByName('fid')) {
-					listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_removeDb_src + 
-						"' title='"+msgObj.buttonDig_removeDb_title + 
-						"' onclick=\"deleteFeature("+i+")\">";
-				}
-				
-				listOfGeom += "<div class='digitizeGeometryListItem' onmouseover='parent.mb_wfs_perform(\"over\",d.get("+i+"),\""+geomHighlightColour+"\");' ";
-				listOfGeom += " onmouseout='parent.mb_wfs_perform(\"clean\",d.get("+i+"),\""+geomHighlightColour+"\")' ";
-				listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.get("+i+"),\""+geomHighlightColour+"\");' ";
-				var geomName = getName(d.get(i)); 
-				var currentGeomType;
-				if (d.get(i).geomType == parent.geomType.polygon) {
-					currentGeomType = msgObj.messageDescriptionPolygon;
-				}
-				else if (d.get(i).geomType == parent.geomType.line) {
-					currentGeomType = msgObj.messageDescriptionLine;
-				}
-				else if (d.get(i).geomType == parent.geomType.point) {
-					currentGeomType = msgObj.messageDescriptionPoint;
-				}
-				var multi = "";
-				if (d.get(i).count() > 1) {
-					multi = "multi";
-				}
-				listOfGeom += ">" + htmlspecialchars(geomName) +" (" + multi + currentGeomType + ")</div>";
-				
-				// multigeometries
-				listOfGeom += "<ul>";
-				for (var j = 0; j < d.get(i).count(); j++) {
-					var currentGeom = d.get(i).get(j);
-					if (d.get(i).count() > 1 || (d.get(i).geomType == geomType.polygon && 
-						d.get(i).get(j).innerRings && 
-						d.get(i).get(j).innerRings.count() > 0)) {
-						listOfGeom += "<li>";
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+msgObj.buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.get("+i+").del(" + j + ");executeDigitizeSubFunctions();'>";
-						listOfGeom += "<div class='digitizeGeometryListItem' onmouseover='parent.mb_wfs_perform(\"over\",d.get("+i+").get("+j+"),\""+geomHighlightColour+"\");' ";
-						listOfGeom += " onmouseout='parent.mb_wfs_perform(\"clean\",d.get("+i+").get("+j+"),\""+geomHighlightColour+"\")' ";
-						listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.get("+i+").get("+j+"),\""+geomHighlightColour+"\");' ";
-						listOfGeom += ">" + currentGeomType + "#" + (j+1) +"</div></li>";
-					}
-					if (d.get(i).geomType == geomType.polygon && 
-						d.get(i).get(j).innerRings && 
-						d.get(i).get(j).innerRings.count() > 0) {
-						listOfGeom += "<ul>";
-						for (var k = 0; k < d.get(i).get(j).innerRings.count(); k++) {
-							var currentRing = d.get(i).get(j).innerRings.get(k);
-							listOfGeom += "<li>";
-							listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+msgObj.buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.get("+i+").get(" + j + ").innerRings.del(" + k + ");executeDigitizeSubFunctions();'>";
-							listOfGeom += "<div class='digitizeGeometryListItem' onmouseover='parent.mb_wfs_perform(\"over\",d.getGeometry("+i+","+j+").innerRings.get(" + k + "),\""+geomHighlightColour+"\");' ";
-							listOfGeom += " onmouseout='parent.mb_wfs_perform(\"clean\",d.getGeometry("+i+","+j+").innerRings.get(" + k + "),\""+geomHighlightColour+"\")' ";
-							listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.getGeometry("+i+","+j+").innerRings.get(" + k + "),\""+geomHighlightColour+"\");' ";
-							listOfGeom += ">inner ring #" + (k+1) +"</div></li>";
-							
-						}
-						listOfGeom += "</ul>";
-					}
-				}
-				listOfGeom += "</ul>";
-				listOfGeom += "</li>";
-			}
-		}
-	}
-	listOfGeom += "<ul>";
-	parent.writeTag(mod_digitize_elName,"listOfGeometries",listOfGeom);
-}
-// --- display (end) -----------------------------------------------------------------------------------------
-// -----------------------------------------------------------------------------------------------------------
-
-
-// -----------------------------------------------------------------------------------------------------------
-// --- wfs window (begin) -----------------------------------------------------------------------------------------
-
-// -----------------------------------------------------------------------------------------------------------
-// --- wfs window form check (begin) -----------------------------------------------------------------------------------------
-
-function formCorrect(doc, formId) {
-	var isCorrect = true;
-	var errorMessage = "";
-	var result;
-	var form = doc.getElementById(formId);
-	
-	result = mandatoryFieldsNotEmpty(doc, form);
-	isCorrect = isCorrect && result.isCorrect;
-	errorMessage += result.errorMessage;
-
-	//select box is now checked within function mandatoryFieldsNotEmpty
-	//result = validBoxEntrySelected(form);
-	//isCorrect = isCorrect && result.isCorrect;
-	//errorMessage += result.errorMessage;
-
-	result = dataTypeIsCorrect(doc, form);
-	isCorrect = isCorrect && result.isCorrect;
-	errorMessage += result.errorMessage;
-
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-
-function validBoxEntrySelected(form){
-	var isCorrect = true;
-	var errorMessage = "";
-	var name = "";
-	for (var i = 0; i < form.childNodes.length && isCorrect; i++) {
-		if (form.childNodes[i].nodeName.toUpperCase() == "SELECT") {
-			name += form.childNodes[i].name;
-			if (parseInt(form.childNodes[i].selectedIndex) == 0 && $(form.childNodes[i]).hasClass("mandatory")) {
-				var msg = name + ": " + msgObj.messageSelectAnOption + "\n"
-				var categ = form.childNodes[i].getAttribute("category");
-				if (typeof(categ) != "undefined") {
-					msg = categ + " => " + msg;
-				}
-				return {"isCorrect":false, "errorMessage":msg};
-			}
-		}
-		else if (form.childNodes[i].hasChildNodes()) {
-			var res = validBoxEntrySelected(form.childNodes[i]);
-			errorMessage = res.errorMessage + errorMessage;
-			isCorrect = res.isCorrect;
-			
-		}
-	}
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-
-function mandatoryFieldsNotEmpty(doc, node){
-	var isCorrect = true;
-	var errorMessage = "";
-	
-	var $nodeArray = $(".mandatory", doc);
-	for (var i = 0; i < $nodeArray.size() && isCorrect; i++) {
-		var $currentNode = $nodeArray.eq(i);
-		var tagName = $currentNode.get(0).nodeName.toUpperCase();
-		if (tagName == "INPUT" && $currentNode.val() == "") {
-			isCorrect = false;
-			errorMessage += "'"+ $currentNode.attr("name") +"': "+ msgObj.messageErrorFieldIsEmpty +"\n";
-		}
-		
-		if (tagName == "SELECT" && parseInt($currentNode.get(0).selectedIndex) == 0) {
-			isCorrect = false;
-			errorMessage += "'"+ $currentNode.attr("name") +"': "+ msgObj.messageErrorFieldIsEmpty +"\n";
-		}
-	}
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-
-function isInteger(str) {
-	if (str.match(/^[0-9]{0,8}$/) || str == "" ) { //will be better ;-)
-		return true;
-	}
-	return false;
-}
-
-function isFloat(str) {
-	if (isInteger(str)) {
-		return true;
-	}
-	if (str.match(/^\d+\.\d+$/)) {
-		return true;
-	}
-	return false;
-}
-
-function replaceCommaByDecimalPoint(str) {
-	var patternString = ",";
-	var pattern = new RegExp(patternString);
-	while (str.match(pattern)) {
-		str = str.replace(pattern, ".");
-	}
-	return str;
-}
-
-function dataTypeIsCorrect(doc, node){
-	var isCorrect = true;
-	var errorMessage = "";
-	
-	nodeArray = doc.getElementsByName("datatype");
-	for (var i = 0; i < nodeArray.length ; i++) {
-		if (nodeArray[i].nodeName.toUpperCase() == "INPUT" && nodeArray[i].type == "hidden" && nodeArray[i].id.substr(0,9) == "datatype_") {
-			var nodeId = nodeArray[i].id.substr(9);
-			var nodeValue = doc.getElementById(nodeId).value;
-			
-			if (nodeArray[i].value == "int") {
-				if (!isInteger(nodeValue)) {
-					isCorrect = false;
-					errorMessage += "'"+doc.getElementById(nodeId).name+"': "+ msgObj.messageErrorNotAnInteger + "\n";
-				}
-			}
-			else if (nodeArray[i].value == "double" || nodeArray[i].value == "float") {
-				nodeValue = replaceCommaByDecimalPoint(nodeValue);
-				if (!isFloat(nodeValue)) {
-					isCorrect = false;
-					errorMessage += "'"+doc.getElementById(nodeId).name+"': "+ msgObj.messageErrorNotAFloat + "\n";
-				}
-				else {
-					doc.getElementById(nodeId).value = nodeValue;
-				}
-			}
-		}
-	}
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-// --- wfs window form check (end) -----------------------------------------------------------------------------------------
-// -----------------------------------------------------------------------------------------------------------
-
-function getAvailableWfsForGeom(geom, wfsConf) {	
-	var wfsConfIndices = [];
-	
-	for (var attr in wfsConf) {
-		var isTrans = (wfsConf[attr]['wfs_transaction'] != "");
-		if (!isTrans) {
-			continue;
-		}
-		/*
-		if (isValidWfsConfIndex(wfsConf, parseInt(geom.wfs_conf))) {
-			if (parseInt(geom.wfs_conf) == parseInt(attr)) {
-				wfsConfIndices.push(attr);
-			}
-		}
-		else {
-		*/
-			for (var elementIndex = 0; elementIndex < wfsConf[attr]['element'].length ; elementIndex++) {
-				var isGeomColumn = (parseInt(wfsConf[attr]['element'][elementIndex]['f_geom']) == 1); 
-				if (isGeomColumn) {
-					var isMultiPolygon = (
-						geom.geomType == parent.geomType.polygon && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiPolygonPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiSurfacePropertyType'
-						)
-					);
-					var isPolygon = (
-						geom.geomType == parent.geomType.polygon && 
-						geom.count() == 1 && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'PolygonPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'SurfacePropertyType'
-						)
-					);
-					var isMultiLine = (
-						geom.geomType == parent.geomType.line && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiLineStringPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiCurvePropertyType'
-						)
-					);
-					var isLine = (
-						geom.geomType == parent.geomType.line && 
-						geom.count() == 1 && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'LineStringPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'CurvePropertyType'
-						)
-					);
-					var isPoint = (geom.geomType == parent.geomType.point && wfsConf[attr]['element'][elementIndex]['element_type'] == 'PointPropertyType');
-					var isMultiPoint = (geom.geomType == parent.geomType.point && wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiPointPropertyType');
-//					alert(isMultiPolygon + " " + isPolygon + " " + isMultiLine + " " + isLine + " " + isPoint);
-					if (isMultiPolygon || isPolygon || isMultiLine || isLine || isMultiPoint || isPoint || wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType') {
-						
-						wfsConfIndices.push(attr);
-					}
-				}
-			}
-		//}	
-	}
-	return wfsConfIndices;
-}
-function wfsExistsForGeom(geom, wfsConf) {
-	wfsConfIndices = getAvailableWfsForGeom(geom, wfsConf);
-//	alert(wfsConfIndices.join(","));
-	if (wfsConfIndices.length > 0) {
-		return true;
-	}
-	return false;
-}
-
-
-function showWfsKml (geometryIndex) {
-	wfsKmlWindow = open("", "wfsattributes", "width="+wfsWindowWidth+", height="+wfsWindowHeight+", resizable, dependent=yes, scrollbars=yes");
-	wfsKmlWindow.document.open("text/html");
-	wfsKmlWindow.document.writeln("<html><head><meta http-equiv='Content-Type' content='text/html; charset=<?php echo CHARSET;?>'></head><body><div id='linkToKml'></div><div id='elementForm'></div></body></html>");
-	wfsKmlWindow.document.close();
-	
-	str = "<form id = 'wmsKmlForm' onsubmit='return false;'><table>";
-
-	var properties = d.get(geometryIndex).e;
-	var propertyCount = properties.count();	
-	for (var i = 0; i < propertyCount; i++) {
-		var key = properties.getName(i);
-		var value = properties.getValue(i);
-		var expr = /Mapbender:/;
-		if (!key.match(expr)) {
-			str += "\t\t<tr>\n";
-			str += "\t\t\t<td>\n\t\t\t\t<div>" + key + "</div>\n\t\t\t</td>\n";
-			str += "\t\t\t<td>\n";
-			str += "\t\t\t\t<input id = 'wmskml_" + i + "' name='" + key + "' type='text' size=20 value = '" + value + "'>\n";
-			str += "\t\t\t</td>\n\t\t</tr>\n";
-		}
-	}	
-
-	var updateOnClickText = "this.disabled=true;window.opener.updateKmlInDb("+geometryIndex+", 'update');";
-	var deleteOnClickText = "var deltrans = confirm('This geometry will be removed from the KML.');";
-	deleteOnClickText += "if (deltrans){";
-	deleteOnClickText += "this.disabled=true;window.opener.updateKmlInDb("+geometryIndex+", 'delete')}";
-	
-	str += "\t\t\t<td><input type='button' name='updateButton' value='Update' onclick=\""+updateOnClickText+"\"/></td>\n";
-// delete button not yet implemented
-//	str += "\t\t\t<td><input type='button' name='deleteButton' value='Delete' onclick=\""+deleteOnClickText+"\"/></td>\n";
-	str += "\t\t\t<td><input type='button' name='abortButton' value='Abort' onclick=\"window.close();\" /></td>\n";
-
-	str += "\t\t</tr>\n";
-	str += "\t</table>\n";
-	str += "</form>\n";
-
-	wfsKmlWindow.document.getElementById("elementForm").innerHTML = str;
-}
-
-
-function stripslashes (str) {
-    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
-    // +   improved by: Ates Goral (http://magnetiq.com)
-    // +      fixed by: Mick at el
-    // +   improved by: marrtins    
-	// +   bugfixed by: Onno Marsman
-    // +   improved by: rezna
-    // +   input by: Rick Waldron
-    // +   reimplemented by: Brett Zamir (http://brett-zamir.me)
-    // +   input by: Brant Messenger (http://www.brantmessenger.com/)    
-	// +   bugfixed by: Brett Zamir (http://brett-zamir.me)
-    // *     example 1: stripslashes('Kevin\'s code');
-    // *     returns 1: "Kevin's code"
-    // *     example 2: stripslashes('Kevin\\\'s code');
-    // *     returns 2: "Kevin\'s code"    
-	return (str+'').replace(/\\(.?)/g, function (s, n1) {
-        switch (n1) {
-            case '\\':
-                return '\\';
-            case '0':                
-				return '\u0000';
-            case '':
-                return '';
-            default:
-                return n1;        
-		}
-    });
-}
-
-function deleteFeature (geometryIndex) {
-	var res = true;	
-	res = parent.Mapbender.modules[mod_digitize_elName].events.clickDelete.trigger({
-		geometryIndex: geometryIndex,
-		feature: d.get(geometryIndex)
-	});
-	if (res === false) {
-		return;	
-	}
-	var deltrans = confirm(msgObj.messageConfirmDeleteGeomFromDb);
-	if (deltrans) {
-		dbGeom('delete', geometryIndex);
-	};
-
-}
-
-//
-// this method opens a new window and displays the attributes in wfs_conf
-//
-function showWfs(geometryIndex) {
-	var res = true;	
-	res = parent.Mapbender.modules[mod_digitize_elName].events.openDialog.trigger({
-		geometryIndex: geometryIndex,
-		feature: d.get(geometryIndex)
-	}, "AND");
-	if (res === false) {
-		return;	
-	}
-
-	wfsConf = parent.get_complete_wfs_conf();
-
-	if(typeof wfsWindow != 'undefined') {
-		wfsWindow.close();
-	}
-	
-	wfsWindow = open("", "wfsattributes", "width="+wfsWindowWidth+", height="+wfsWindowHeight+", resizable, dependent=yes, scrollbars=yes");
-	wfsWindow.document.open("text/html");
-	setTimeout(function () {
-		wfsWindow.focus();
-	}, 100);
-	
-	var str = "";
-	var strStyle = "";
-	var defaultIndex = -1;
-
-	str += "<form id='wfs'>\n";
-
-	//
-	// 1. add select box 
-	//
-
-	var onChangeText = "document.getElementById('elementForm').innerHTML = ";
-	onChangeText += "window.opener.buildElementForm(this.value, " + geometryIndex + ");";
-	onChangeText += "window.opener.setWfsWindowStyle(this.value);";
-
-	var datePickerText = "$('.hasdatepicker').each(function () { " + 
-		"var data = $.parseJSON(window.opener.stripslashes($(this).attr('data'), true));" +
-		"var defaults = {};" +
-		"var settings = $.extend({}, defaults, data);" + 
-		/*"$.datepicker.regional['de'] = {
-		closeText: 'schließen',
-		prevText: '&#x3c;zurück',
-		nextText: 'Vor&#x3e;',
-		currentText: 'heute',
-		monthNames: ['Januar','Februar','März','April','Mai','Juni',
-		'Juli','August','September','Oktober','November','Dezember'],
-		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
-		'Jul','Aug','Sep','Okt','Nov','Dez'],
-		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
-		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
-		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
-		weekHeader: 'Wo',
-		dateFormat: 'dd.mm.yy',
-		firstDay: 1,
-		isRTL: false,
-		showMonthAfterYear: false,
-		yearSuffix: ''};
-*/
-		//"$(this).datepicker.setDefaults($.datepicker.regional['de']);" +
-		"$(this).datepicker({dateFormat: 'yy-mm-dd', changeYear: true, yearRange: '1950:2050',monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa']});" + 
-		"});";
-	
-	onChangeText += datePickerText;
-
-	
-	var uploaderText = 
-		"deleteUploadedFile = function (domNode) {" + 
-			"$(domNode).siblings('input').val('');" + 
-			"$(domNode).siblings('a').remove();" + 
-			"$(domNode).remove();" + 
-		"};" + 
-		"var linkAndDeleteButtonHtml = '<a target=\\\'_blank\\\' title=\\\'show uploaded file\\\' " + 
-			"href=\\\'#\\\'>Show file</a>" + 
-			"<img src=\\\'../img/button_digitize/geomRemove.png\\\' " + 
-			"title=\\\'Delete uploaded file\\\' alt=\\\'Delete uploaded file\\\' " +  
-			"onclick=\\\'deleteUploadedFile(this);\\\' " + 
-			"style=\\\'cursor:pointer\\\'/>';" + 
-		"$('.upload').each(function () { " + 
-		"var $this = $(this).upload({ "+
-			"callback: function(result,stat,msg){"+
-				"if(stat !== true){alert(msg);}"+
-				"else{" + 
-					"$this.prev().val(result.filename);" +
-					"if ($this.siblings('a').size() === 0) {" + 
-						"$this.parent().prepend(linkAndDeleteButtonHtml);" + 
-					"}\n" +
-					"$this.siblings('a').attr('href', result.filename);" + 
-				"}" + 
-			"}" + 
-		"});" + 
-	"});";
-	
-	onChangeText += uploaderText;
-	
-	str += "\t<select name='wfs' size='" + wfsConf.length + "'";
-	str += " onChange=\""+ onChangeText +"\"";
-	str += ">\n\t\t";
-
-	var wfsConfIndices = getAvailableWfsForGeom(d.get(geometryIndex), wfsConf);
-	var selected = false;
-	// set the current wfs_conf as the selected
-	// if wfs_conf is not yet set (for example when creating a new feature, just select the first one)
-	var selectedIndex = d.get(geometryIndex).wfs_conf || wfsConfIndices[0];
-	for (var i = 0; i < wfsConfIndices.length ; i++) {
-		for (var j in wfsConf[i].element){
-
-		}
-		str += "<option value='" + wfsConfIndices[i] + "'";
-		if (wfsConfIndices[i] == selectedIndex ) {
-			str += " selected";
-			selected = true;
-			defaultIndex = parseInt(wfsConfIndices[i]);
-		}
-		str += ">" + wfsConf[wfsConfIndices[i]]['wfs_conf_abstract'];
-		str += "</option>\n\t\t";
-	}
-
-	
-	str += "</select>\n\t\t</form>\n\t";
-	
-	var elForm = "";
-	if (defaultIndex != -1) {
-		elForm = buildElementForm(defaultIndex, geometryIndex);
-
-		var headStr = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=<?php echo CHARSET;?>'><style type='text/css'>" + wfsConf[defaultIndex]['g_style'] + "</style>";
-		headStr += '<link rel="stylesheet" type="text/css" href="../extensions/jquery-ui-1.7.2.custom/development-bundle/themes/base/ui.all.css" />';
-		headStr += '<style type="text/css">'
-		headStr += 'a.tabheader { margin: 0 3px 0 0;float:left;padding: 1px 5px;text-decoration: none;color: #999;background-color: #F5F5F5;border: 1px solid #999;border-bottom: 0; }';
-		headStr += 'a.tabheader.active { float:left;color: #666;background-color: transparent;border-color: #666;border-bottom: 0px solid #FFF;cursor: default; }';
-		headStr += 'div.tabcontent { visibility: hidden;display: none;clear:left;margin: 1px 0 5px 0;padding: 5px;border: 1px solid #666; }';
-		headStr += 'div.helptext { visibility: hidden;display: none;position: absolute;top: 5%;left: 5%;width: 85%;padding: 5px;color: #000;background-color: #EEEEEE;border: 1px solid #000;-moz-border-radius: 10px;-webkit-border-radius: 10px;}';
-		headStr += 'div.helptext p { margin: 0 ; }';
-		headStr += 'div.helptext p a.close { display: block;margin: 5px auto;text-align: center; }';
-		headStr += 'a img { vertical-align: middle;border: 0; }';
-		headStr += '.mandatory { border:1px solid red; }';
-		headStr += '</style>';
-		headStr += '</head><body onload="window.opener.toggleTabs(\''+initialTab+'\'); ' + datePickerText + uploaderText + '">';
-		wfsWindow.document.write(headStr);
-	}
-	else {
-		var headStr = "<html><head><style type='text/css'></style></head><body>";
-		wfsWindow.document.write(headStr);
-	}
-	str += "<div id='elementForm'>\n" + elForm + "</div>";
-	str += "<script type='text/javascript' src='../extensions/jquery-ui-1.7.2.custom/js/jquery-1.3.2.min.js'><\/script>";
-	str += "<script type='text/javascript' src='../extensions/jquery-ui-1.7.1.w.o.effects.min.js'><\/script>";
-	str += "<script type='text/javascript' src='../plugins/jq_upload.js'><\/script>";
-	str += "<script type='text/javascript' src='../extensions/jqjson.js'><\/script>";
-	str += "</body></html>";
-	wfsWindow.document.write(str);
-	wfsWindow.document.close();
-
-//	toggleTabs(initialTab);
-
-}
-
-function setWfsWindowStyle(wfsConfIndex) {
-	wfsWindow.document.getElementsByTagName("style")[0].innerHTML = wfsConf[wfsConfIndex]['g_style'];
-}
-
-function prepareSelectBox (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<select";
-	var pattern = new RegExp(patternString);
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	if (isMandatory) {
-		// set border if mandatory
-		classString += " mandatory";
-	}
-	classString = (classString !== "") ? " class='"+classString+"' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-
-	// set name of select box to elementlabel
-	patternString = "name\s*=\s*\\*'\w+\\*'";
-	pattern = new RegExp(patternString);
-	if (pattern.test(formElementHtml)) {
-		formElementHtml = formElementHtml.replace(pattern, "name='" + elementLabel + "'");
-	}
-	else {
-		patternString = "<select";
-		pattern = new RegExp(patternString);
-		formElementHtml = formElementHtml.replace(pattern, "<select name='" + elementLabel + "'");
-	}
-	
-	// preselect the correct entry of the box
-	patternString = "option( )+value( )*=( )*('|\")"+elementValue+"('|\")";
-	pattern = new RegExp(patternString);
-	var patternStringForReplace = "option value = '"+elementValue+"'";
-	formElementHtml = formElementHtml.replace(pattern, patternStringForReplace+" selected");
-	return formElementHtml;
-}
-
-function prepareDatepicker (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<input";
-	var pattern = new RegExp(patternString);
-		
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	if (isMandatory) {
-		// set border if mandatory
-		classString += " mandatory";
-	}
-	classString = (classString !== "") ? " class='"+classString+" hasdatepicker' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-
-	// set name of select box to elementlabel
-	patternString = "name\s*=\s*\\*('|\")\w+\\*('|\")";
-	pattern = new RegExp(patternString);
-	if (pattern.test(formElementHtml)) {
-		formElementHtml = formElementHtml.replace(pattern, "name='" + elementLabel + "'");
-	}
-	else {
-		patternString = "<input";
-		pattern = new RegExp(patternString);
-		formElementHtml = formElementHtml.replace(pattern, "<input name='" + elementLabel + "'");
-	}
-	
-	// preselect the correct entry of the box
-	patternString = "<input";
-	pattern = new RegExp(patternString);
-	formElementHtml = formElementHtml.replace(pattern, patternString + " value='"+elementValue+"'");
-
-	return formElementHtml;
-}
-
-function prepareTextArea (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<textarea";
-	var pattern = new RegExp(patternString);
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	if (isMandatory) {
-		// set border if mandatory
-		classString += " mandatory";
-	}
-	classString = (classString !== "") ? " class='"+classString+"' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-
-	// set name of select box to elementlabel
-	patternString = "name\s*=\s*\\*('|\")\w+\\*('|\")";
-	pattern = new RegExp(patternString);
-	if (pattern.test(formElementHtml)) {
-		formElementHtml = formElementHtml.replace(pattern, "name='" + elementLabel + "'");
-	}
-	else {
-		patternString = "<textarea";
-		pattern = new RegExp(patternString);
-		formElementHtml = formElementHtml.replace(pattern, "<textarea name='" + elementLabel + "'");
-	}
-	
-	// preselect the correct entry of the box
-	patternString = "<\/textarea>";
-	pattern = new RegExp(patternString);
-	formElementHtml = formElementHtml.replace(pattern, elementValue + patternString);
-
-	return formElementHtml;
-}
-
-function prepareUploadField (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	//var elementValue = "../tmp/1-14bbb3d6987e16.png";
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<div";
-	var pattern = new RegExp(patternString);
-		
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	classString = (classString !== "") ? " class='"+classString+"' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-	
-	// preselect the correct entry of the box
-	if(elementValue !== "") {
-		formElementHtml = "<a title='show uploaded file' target='_blank' href='" + 
-			elementValue + "'>Show file</a><img title='Delete uploaded file' " +
-			"alt='Delete uploaded file' style='cursor:pointer;' " +
-			"onclick='$(this).siblings(\"input\").val(\"\");" + 
-			"$(this).siblings(\"a\").remove();$(this).remove();' " + 
-			"src='../img/button_digitize/geomRemove.png'/>" + 
-			formElementHtml;
-	}
-	patternString = "class\s*=\s*['\"]hiddenUploadField['\"]";
-	pattern = new RegExp(patternString);
-	replaceString = "class='hiddenUploadField' " + " value='"+elementValue+"'";
-	formElementHtml = formElementHtml.replace(pattern, replaceString);
-	
-	return formElementHtml;
-}
-
-// Returns a form with the elements of a selected WFS grouped in tabs
-// (if the original WFS is the selected WFS, the values are set too)
-var initialTab = false;
-
-// returns a form with the elements of a selected wfs
-// (if the original wfs is the selected wfs, the values are set too)
-function buildElementForm(wfsConfIndex, memberIndex){
-	var featureTypeMismatch = false;
-	if (parseInt(d.get(memberIndex).wfs_conf) != parseInt(wfsConfIndex)) {featureTypeMismatch = true;}
-	var str = "";
-	var hasGeometryColumn = false;
-	var featureTypeArray = wfsConf[wfsConfIndex];
-	var memberElements;
-	var fid = false;
-
-	if (!featureTypeMismatch) {
-		memberElements = d.get(memberIndex).e;
-		fid = memberElements.getElementValueByName('fid');
-	}
-	
-	if (typeof(featureTypeArray["element"]) !== "undefined") {
-		featureTypeElementArray = featureTypeArray["element"];
-
-
-		// Check if there are categories given and
-		// build the form in tabs if necessary
-		var elementCategories = [];
-		for(var i = 0; i < featureTypeElementArray.length; i++){
-			var categoryName         = featureTypeElementArray[i].f_category_name;
-			var categoryNameIsUnique = true;
-			
-			if(categoryName.length === 0) { continue; }
-			
-			for(var j = 0; j < elementCategories.length; j++) {
-				if(elementCategories[j] == categoryName) {
-					categoryNameIsUnique = false;
-				}
-			}
-			
-			if(categoryNameIsUnique) {
-				elementCategories.push(categoryName);
-			}
-		}
-
-		str += "<form id='"+featureTypeElementFormId+"'>\n\t";
-		
-		var hasCategories = (elementCategories.length > 0);
-		if (hasCategories) {
-			elementCategories.sort();
-			
-			initialTab = elementCategories[0];
-			str +='<table><tr><td>';
-			for (var currentCategory = 0; currentCategory < elementCategories.length; currentCategory++) {
-				str += '<a href="#" id="tabheader_' + elementCategories[currentCategory] + '" class="tabheader" onclick="return window.opener.toggleTabs(\'' + elementCategories[currentCategory] + '\')">' + elementCategories[currentCategory] + '</a>';
-			}
-			str +='</td></tr></table>';
-		}
-			
-		for (var currentCategory = 0; currentCategory < elementCategories.length || !hasCategories; currentCategory++) {
-			if (hasCategories) {
-				str += '<div id="tab_' + elementCategories[currentCategory] + '" class="tabcontent">';
-			}
-			str += '<table>';
-
-			//
-			// 2. add rows to form 
-			//
-			for (var i = 0 ; i < featureTypeElementArray.length ; i++) {
-				var featureTypeElement = featureTypeElementArray[i];
-
-				var elementName = featureTypeElement['element_name'];
-				var elementType = featureTypeElement['element_type'];
-				var isEditable = (parseInt(featureTypeElement['f_edit']) == 1); 
-				var isMandatory = (parseInt(featureTypeElement['f_mandatory']) == 1); 
-				var isGeomColumn = (parseInt(featureTypeElement['f_geom']) == 1); 
-
-				if(hasCategories && featureTypeElement.f_category_name != elementCategories[currentCategory] && !isGeomColumn) {
-					continue;
-				}
-			
-
-				var elementLabelExists = (featureTypeElement['f_label'] != "");
-				var elementLabel = ""; 
-				if (elementLabelExists) {
-					elementLabel = featureTypeElement['f_label'];
-				}
-				var elementLabelStyle = featureTypeElement['f_label_id'];
-
-				if (!isGeomColumn) {
-					if (isEditable) {
-						str += "\t\t<tr>\n";
-						if(elementLabelExists) {
-							str += "\t\t\t<td>\n\t\t\t\t<div class = '"+elementLabelStyle+"'>" + elementLabel + "</div>\n\t\t\t</td>\n";
-							str += "\t\t\t<td>\n";
-						}
-						else {
-							str += '<td colspan="2">';
-						}
-
-						var elementValue = "";
-						if (!featureTypeMismatch) {
-							for (var j = 0 ; j < memberElements.count() ; j ++) {
-								if (memberElements.getName(j) == featureTypeElement['element_name']) {
-									elementValue = memberElements.getValue(j);
-								}
-							}
-						}
-						var formElementHtml = featureTypeElement['f_form_element_html']; 
-						if (!formElementHtml) {
-							var classString = (styleId == '0') ? "" : featureTypeElement['f_style_id'];
-							if (parseInt(featureTypeElement['f_mandatory']) == 1) {
-								classString += " mandatory";
-							}
-
-							classString = (classString !== "") ? " class='"+classString+"' " : " ";
-							
-							str += "\t\t\t\t<input id = 'datatype_mb_digitize_form_" + elementName + "' name='datatype' type='hidden' value = '" + elementType + "'>\n";
-							if (!hasCategories) {
-								str += "\t\t\t\t<input id = 'mb_digitize_form_" + elementName + "' name='" + elementLabel + "' type='text' "+classString+" size=20 value = '" + elementValue + "'>\n";
-							}
-							else {
-								str += "\t\t\t\t<input category='"+elementCategories[currentCategory]+"' id = 'mb_digitize_form_" + elementName + "' name='" + elementLabel + "' type='text' "+classString+" size=20 value = '" + elementValue + "'>\n";
-							}
-						}
-						else {
-							while (formElementHtml.match(/\\/)) {
-								formElementHtml = formElementHtml.replace(/\\/, "");
-							} 
-
-							var isMandatory = (parseInt(featureTypeElement['f_mandatory']) == 1);
-
-							var patternString = "<select";
-							pattern = new RegExp(patternString);
-							var styleId = featureTypeElement['f_style_id'];
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareSelectBox(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							var patternString = "hasdatepicker";
-							pattern = new RegExp(patternString);
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareDatepicker(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							var patternString = "<textarea";
-							pattern = new RegExp(patternString);
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareTextArea(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							var patternString = "upload";
-							pattern = new RegExp(patternString);
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareUploadField(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							str += formElementHtml;
-						}
-						
-						if(featureTypeElement.f_helptext.length > 0) {
-							str += ' <a href="#" onclick="return window.opener.showHelptext(' + i + ')"><img src="../img/help.png" width="16" height="16" alt="?" /></a> ';
-							str += '<div id="helptext' +i+ '" class="helptext">';
-							str += '<p>';
-							str += featureTypeElement.f_helptext.replace(/(http:\/\/\S*)/g,'<a href="$1" target="blank">$1<\/a>');
-							str += '<a href="#" class="close" onclick="return window.opener.hideHelptext(' + i + ')">close</a>';
-							str += '</p>';
-							str += '</div>';
-						}
-						
-						str += "\t\t\t</td>\n\t\t</tr>\n";
-					}
-				}
-				else {
-					hasGeometryColumn = true;
-				}
-			}
-
-			str += '</table>';
-			if (hasCategories) {
-				str += '</div>';
-			}
-
-			// if no categories exist, the for loop would be 
-			// infinite without this break
-			if (!hasCategories) {
-				break;
-			}
-		}
-
-		//
-		// 3. add buttons "save", "update", "delete"
-		//
-		str += "<table>";
-		var isTransactional = (featureTypeArray['wfs_transaction']); 
-		if (isTransactional) {
-			str += "\t\t<tr>\n";
-
-			var options = ["insert", "update", "delete", "abort"];
-			for (var i = 0 ; i < options.length ; i++) {
-				var onClickText = "this.disabled=true;var result = window.opener.formCorrect(document, '"+featureTypeElementFormId+"');";
-				onClickText += 	"if (result.isCorrect) {";
-				onClickText += 		"window.opener.dbGeom('"+options[i]+"', "+memberIndex+"); ";
-//				onClickText +=      "window.close();";
-				onClickText += 	"}";
-				onClickText += 	"else {";
-				onClickText += 		"alert(result.errorMessage);this.disabled=false;"
-				onClickText += 	"}";
-				
-				if (options[i] == "insert" && hasGeometryColumn && (!fid || showSaveButtonForExistingGeometries)) {
-					str += "\t\t\t<td><input type='button' name='saveButton' value='"+msgObj.buttonLabelSaveGeometry+"' onclick=\""+onClickText+"\" /></td>\n";
-				}
-				
-				if (!featureTypeMismatch && fid) {
-					if (options[i] == "update" && hasGeometryColumn) {
-						str += "\t\t\t<td><input type='button' name='updateButton' value='"+msgObj.buttonLabelUpdateGeometry+"' onclick=\""+onClickText+"\"/></td>\n";
-					}
-					if (options[i] == "delete"){ 
-						var deleteOnClickText = "var deltrans = confirm('"+msgObj.messageConfirmDeleteGeomFromDb+"');";
-						deleteOnClickText += "if (deltrans){";
-						deleteOnClickText += onClickText + "}";
-						str += "\t\t\t<td><input type='button' name='deleteButton' value='"+msgObj.buttonLabelDeleteGeometry+"' onclick=\""+deleteOnClickText+"\"/></td>\n";
-					}
-				}
-				if (options[i] == "abort") {
-					str += "\t\t\t<td><input type='button' name='abortButton' value='"+msgObj.buttonLabelAbort+"' onclick=\"window.close();\" /></td>\n";
-				}
-			}
-			str += "\t\t</tr>\n";
-		}
-		str += "\t</table>\n";
-		str += "<input type='hidden' id='fid' value='"+fid+"'>";
-//			str += "<input type='text' name='mb_wfs_conf'>";
-		str += "</form>\n";
-	}
-	return str;
-}
-
-function dbGeom(type, m, callback, dbWfsConfId) {
-	if (typeof dbWfsConfId !== "undefined") {
-		d.get(m).wfs_conf = getJsWfsConfIdByDbWfsConfId(wfsConf, dbWfsConfId);
-		d.get(m).e = new parent.Wfs_element();
-	}
-
-	var hasFid = d.get(m).e.getElementValueByName("fid") !== false;
-
-	if (!hasFid) {
-		if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
-			d.get(m).wfs_conf = parseInt(wfsWindow.document.forms[0].wfs.options[wfsWindow.document.forms[0].wfs.selectedIndex].value);
-			d.get(m).e = new parent.Wfs_element();
-		}
-	}
-	else {
-		wfsConf = parent.get_complete_wfs_conf();
-	}
-	var myconf = wfsConf[d.get(m).wfs_conf];
-	
-	var mapObjInd = parent.getMapObjIndexByName(mod_digitize_target);
-
-	var proceed = true;
-	var patternString = parent.mb_mapObj[mapObjInd].epsg.toUpperCase();
-	var pattern = new RegExp(patternString);
-
-//	if(!myconf['featuretype_srs'].match(pattern)){
-//		proceed = confirm(msgObj.errorMessageEpsgMismatch + parent.mb_mapObj[mapObjInd].epsg + " / "+ myconf['featuretype_srs'] + ". Proceed?");
-//	}
-//	if (proceed) {
-		var fid = false;
-		var errorMessage = "";
-		if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed && (type === "insert" || type === "update")) {
-			myform = wfsWindow.document.getElementById(featureTypeElementFormId);
-		
-			for (var i=0; i<myform.length; i++){
-				if (myform.elements[i].id == "fid") {
-					fid = myform.elements[i].value;
-					if (fid == "false") {
-						fid = false;
-					}
-					else {
-						d.get(m).e.setElement('fid', fid);
-					}
-				}
-				
-				//else if (myform.elements[i].type == 'text' { //merging geoportal.rlp
-				else if (myform.elements[i].type == "text" || 
-						myform.elements[i].tagName.toUpperCase() == "TEXTAREA" ||
-						myform.elements[i].className == "hiddenUploadField"){
-					if (myform.elements[i].id) {
-						var elementId = String(myform.elements[i].id).replace(/mb_digitize_form_/, "");
-						var $dataTypeNode =  $(myform.elements[i]).prev("input");
-						// if featuretype element is numeric, do not send empty fields
-						if ($dataTypeNode.size() === 1 && -1 !== $.inArray($dataTypeNode.attr("value"), ["int", "double", "float", "decimal"])) {
-							if (myform.elements[i].value !== "") {
-								d.get(m).e.setElement(elementId, myform.elements[i].value);
-							}
-						}
-						else {
-							d.get(m).e.setElement(elementId, myform.elements[i].value);
-						}					
-					}
-					else {
-						errorMessage = msgObj.messageErrorFormEvaluation;
-					}
-				}
-				// selectbox
-				else if (typeof(myform.elements[i].selectedIndex) == 'number') {
-					if (myform.elements[i].id) {
-						var elementId = String(myform.elements[i].id).replace(/mb_digitize_form_/, "");
-						d.get(m).e.setElement(elementId, myform.elements[i].options[myform.elements[i].selectedIndex].value);
-					}
-					else {
-						errorMessage = msgObj.messageErrorFormEvaluation;
-					}
-				}
-			}
-		}
-		else {
-			fid = d.get(m).e.getElementValueByName('fid');
-		}
-//		str = parent.get_wfs_str(myconf, d, m, type, fid);
-
-		if (type === "insert" || type === "update") {
-			var module = parent.Mapbender.modules[mod_digitize_elName]; 
-			module.events.beforeUpdateOrInsert.trigger({
-				wfsConf: myconf,
-				geometryIndex: m,
-				feature: d.get(m),
-				'method' : type
-			});
-			if (type === "insert") {
-				module.events.beforeInsert.trigger({
-					wfsConf: myconf,
-					geometryIndex: m,
-					feature: d.get(m)
-				});
-			}
-			if (type === "update") {
-				module.events.beforeUpdate.trigger({
-					geometryIndex: m,
-					feature: d.get(m)
-				});
-			}
-
-			// can be set to true from outside to stop save action
-			// default is false, so nothing happens here
-			if (module.dataCheck) {
-				return;
-			}
-			
-			if (module.cancelAjaxRequest) {
-				alert(module.cancelAjaxRequestMessage);
-				module.cancelAjaxRequest = false;
-				module.cancelAjaxRequestMessage = "An error occured.";
-				return;
-			}
-		}
-		
-		// Extract the current, possibly new WfsConf
-                var newWfsConfId = d.get(m).wfs_conf
-		if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
-                    newWfsConfId = parseInt(wfsWindow.document.getElementById('wfs').wfs.value, 10);
-		}
-		var newWfsConf = wfsConf[newWfsConfId];
-		newWfsConfId = newWfsConf['wfs_conf_id'];
-
-		// Check each feature attribute if it is part of the WfsConf element type. If not, delete.
-		var e = d.get(m).e;
-		var elementsToDelete = [];
-		for(var i in e.name) {
-			// Never delete fid attribute
-                        if(e.name[i] === "fid") {
-                            continue;
-                        }
-                        
-                        var validElement = false;
-			for(var j in newWfsConf.element) {
-				if(e.name[i] == newWfsConf.element[j]['element_name'] && newWfsConf.element[j]['f_edit'] === "1") {
-					validElement = true;
-					break;
-				}
-			}
-			if(!validElement) {
-				elementsToDelete.push(i);
-			}
-		}
-		
-		// Delete. As the arrays shrink, the indices into the arrays are shrunk, too
-		for(var i in elementsToDelete) {
-			e.name.splice(elementsToDelete[i] - i, 1);
-			e.value.splice(elementsToDelete[i] - i, 1);
-		}
-		
-		var geoJson = d.featureToString(m);
-
-		parent.mb_ajax_post(
-			"../extensions/geom2wfst.php", 
-			{
-				'geoJson' : geoJson,
-				'method' : type,
-				'wfs_conf_id' : newWfsConfId
-			}, 
-			function(json,status){
-				var result = typeof(json) == 'object' ? json :  eval('('+json+')');
-				var success = result.success;
-				var fid = result.fid;
-				wfsSubWrite(m, type, status, success, fid, callback);
-			}
-		);
-//	}
-}
-
-function getJsWfsConfIdByDbWfsConfId (wfsConf, id) {
-	for (var i = 0; i < wfsConf.length; i++) {
-		if (parseInt(wfsConf[i].wfs_conf_id, 10) === id) {
-			return i
-		}
-	}
-	return null;
-}
-
-function wfsSubWrite(m, type, status, success, fid, callback) {
-	if (status == "success" && success) {
-		if (type == 'insert' && fid) {
-			d.get(m).e.setElement("fid", fid);
-		}
-		if (type == 'delete') {
-			parent.mb_disableThisButton(mod_digitizeEvent);
-			d.del(m);
-		}
-
-		var wfsWriteMessage = msgObj.messageSuccessWfsWrite;
-	}
-	else {
-		var wfsWriteMessage = msgObj.messageErrorWfsWrite;
-	} 
-
-	parent.Mapbender.modules[mod_digitize_elName].events.afterWfs.trigger({
-		feature: (type === 'delete') ? null : d.get(m),
-		type: type
-	});
-	
-	parent.mb_execWfsWriteSubFunctions();
-
-	if (updatePointGeometriesInstantly && 
-		status == "success" && 
-		success && 
-		typeof callback === "function") {
-			callback();		
-	}
-
-	if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
-		if (status !== "success" || !success) {
-			wfsWindow.alert(wfsWriteMessage);
-		}
-		else {
-			parent.Mapbender.modules[mod_digitize_elName].events.geometryInserted.trigger({
-				fid: fid,
-				geometryIndex: m,
-				feature: d.get(m),
-				type: type
-			});
-			new parent.Mb_notice(wfsWriteMessage);
-		}
-		window.setTimeout("wfsWindow.close()",0);
-	}
-	else {
-		if (status !== "success" || !success) {
-			alert(wfsWriteMessage);
-		}
-		else {
-			parent.Mapbender.modules[mod_digitize_elName].events.geometryInserted.trigger({
-				fid: fid,
-				geometryIndex: m,
-				feature: d.get(m)
-			});
-			new parent.Mb_notice(wfsWriteMessage);
-		}
-	}
-	executeDigitizeSubFunctions();
-}
-
-function getMultiGeometryIdsByPlacemarkId (placemarkId) {
-	var multiGeometryIdArray = [];
-	for (var i = 0; i < d.count(); i++) {
-		var currentPlacemarkId = d.get(i).e.getElementValueByName("Mapbender:placemarkId");
-		if (currentPlacemarkId && currentPlacemarkId == placemarkId) {
-			multiGeometryIdArray.push(i);	
-		}
-	}	
-	return multiGeometryIdArray;
-}
-
-function updateKmlInDb (geometryIndex, command) {
-	var properties = d.get(geometryIndex).e;
-	var placemarkId = properties.getElementValueByName("Mapbender:placemarkId");
-	
-	var multiGeometryIdArray = getMultiGeometryIdsByPlacemarkId(placemarkId);
-
-	if (typeof(wfsKmlWindow) != 'undefined' && !wfsKmlWindow.closed) {
-
-		// update properties from form
-		myform = wfsKmlWindow.document.getElementById("wmsKmlForm");
-	
-		for (var i=0; i < myform.length; i++){
-			if (myform.elements[i].type == 'text' ){
-				if (myform.elements[i].id) {
-					var key = myform.elements[i].name;
-					var value = myform.elements[i].value;
-					
-					// update all geometries with the same placemark id
-					for (var j = 0; j < multiGeometryIdArray.length; j++) {
-						var currentProperties = d.get(j).e; 
-						currentProperties.setElement(key, value);
-					}
-				}
-			}
-		}
-		var kmlId = properties.getElementValueByName("Mapbender:id");
-	
-		parent.mb_ajax_post("../php/mod_updateKmlInDb.php", {command:command, kmlId:kmlId, placemarkId:placemarkId, geoJSON:d.placemarkToString(placemarkId)}, function(obj, status) {
-			if (obj === "1") {
-				wfsKmlWindow.alert("KML updated.");
-				var link = wfsKmlWindow.document.createElement("a");
-				link.href = "../php/mod_displayKML.php?kmlId=" + kmlId;
-				link.target = "_blank";
-				link.innerHTML = "KML";
-				wfsKmlWindow.document.getElementById('elementForm').innerHTML = "";
-				wfsKmlWindow.document.getElementById('linkToKml').appendChild(link);
-			}
-			else {
-				wfsKmlWindow.alert("Error, KML could not be updated. Check your error log.");
-			}
-		});
-	}
-}
-
-
-// --- wfs window (begin) -----------------------------------------------------------------------------------------
-// -----------------------------------------------------------------------------------------------------------
-
-function getMessages() {
-	parent.mb_ajax_json("../php/mod_digitize_messages.php", function(obj, status) {
-		msgObj = obj;
-		applyMessages();
-	});
-}
-
-function applyMessages() {
-	updateMeasureTag();
-	updateListOfGeometries();
-	updateButtons();
-}
-
-	</script>
-	</head>
-	<body onload="registerFunctions();displayButtons();">
-<!-- 		<img id="digitizeBack" style="position:absolute;top:28;left:84" src="../img/button_digitize/back_on.png" title="" onclick="digitizeHistory.back()" name="digitizeBack"/>
-		<img id="digitizeForward" style="position:absolute;top:28;left:112" src="../img/button_digitize/forward_on.png" title="" onclick="digitizeHistory.forward()" name="digitizeForward"/>
- -->
-		<div id='digButtons'></div>
-		<div style='position:absolute;top:60px;left:5px' id='listOfGeometries' class='digitizeGeometryList'></div>
-	</body>
-</html>

Deleted: trunk/mapbender/http/geoportal/mod_digitize_tab_komserv_orga.php
===================================================================
--- trunk/mapbender/http/geoportal/mod_digitize_tab_komserv_orga.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mod_digitize_tab_komserv_orga.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,3114 +0,0 @@
-<?php
-# License:
-# Copyright (c) 2009, Open Source Geospatial Foundation
-# This program is dual licensed under the GNU General Public License 
-# and Simplified BSD license.  
-# http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
-
-require_once(dirname(__FILE__) . "/../php/mb_validateSession.php");
-
-$e_target = $_GET["e_target"];
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="cache-control" content="no-cache">
-<meta http-equiv="pragma" content="no-cache">
-<meta http-equiv="expires" content="0">
-<?php
-echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';	
-?>
-<title>Digitize</title>
-<?php
-$digitize_conf_filename = "digitize_default.conf";
-include '../include/dyn_css.php';
-?>
-<script type='text/javascript' src='../extensions/jquery-ui-1.7.2.custom/js/jquery-1.3.2.min.js'></script>
-<script type='text/javascript'>
-/**
- * Package: digitize
- *
- * Description:
- * Allows the user to digitize polygons, lines and points.
- * 
- * Files:
- *  - http/javascripts/mod_digitize_tab.php
- *  - http/php/mod_digitize_messages.php
- *  - http/css/digitize.css
- *  - conf/digitize_default.conf
- *
- * SQL:
- * > INSERT INTO gui_element(fkey_gui_id, e_id, e_pos, e_public, e_comment, 
- * > e_title, e_element, e_src, e_attributes, e_left, e_top, e_width, 
- * > e_height, e_z_index, e_more_styles, e_content, e_closetag, e_js_file, 
- * > e_mb_mod, e_target, e_requires, e_url) VALUES ('<appId>','digitize',
- * > 2,1,'Digitize tool.','Digitize','iframe',
- * > '../javascripts/mod_digitize_tab.php?sessionID','frameborder = "0" ',
- * > 1,1,1,1,5,'','','iframe','','geometry.js','mapframe1','mapframe1',
- * > 'http://www.mapbender.org/Digitize');
- * >
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 'cssUrl', 
- * > '../css/digitize.css', 'url to the style sheet of the mapframe' ,
- * > 'var');
- * >
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 
- * > 'digitize_conf_filename', 'digitize_default.conf', '' ,'php_var');
- * >
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 
- * > 'text css', 
- * > 'digitizeGeometryList {position:absolute; top:50px; left:0px;} .digitizeGeometryListItem {color:#000000; font-size:10px;} body {font-family: Arial, Helvetica, sans-serif; font-size:12px; color:#ff00ff; background-color:#ffffff; margin-top: 0px; margin-left:0px;} .button {height:18px; width:32px;}', 
- * > 'text css' ,'text/css');
- * > 
- * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, 
- * > var_value, context, var_type) VALUES('<appId>', 'digitize', 
- * > 'wfsCssUrl', '../css/mapbender.css', 'var' ,'var');
- *
- * Help:
- * http://www.mapbender.org/Digitize
- *
- * Maintainer:
- * http://www.mapbender.org/User:Christoph_Baudson
- * 
- * Parameters:
- * cssUrl - path/filename of CSS which specifies the design of digitize 
- * 			objects in the map do not change the default file, create your 
- * 			own css file from the default file
- * text css - CSS text for the geometry list
- * wfsCssUrl - path/filename of CSS which specifies the design of the popup
- * 			which appears when a feature is saved or updated
- *
- * License:
- * Copyright (c) 2009, Open Source Geospatial Foundation
- * This program is dual licensed under the GNU General Public License 
- * and Simplified BSD license.  
- * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
- */
-
-//
-// Buttons
-//
-function addButtonDig(id, isOn, src, titleOff, titleOn, x, y) {
-	buttonDig_id.push(id);
-	buttonDig_on.push(isOn);
-	buttonDig_src.push(src);
-	buttonDig_title_off.push(titleOff);
-	buttonDig_title_on.push(titleOn);
-	buttonDig_x.push(x);
-	buttonDig_y.push(y);
-}
-
-function htmlspecialchars(p_string) {
-	p_string = p_string.replace(/&/g, '&');
-	p_string = p_string.replace(/</g, '<');
-	p_string = p_string.replace(/>/g, '>');
-	p_string = p_string.replace(/"/g, '"');
-	//	p_string = p_string.replace(/'/g, ''');
-	return p_string;
-};
-   
-//default definition of image directory for digitize buttons, might
-//be overwritten with digitize conf data
-var buttonDig_imgdir = "../img/button_digitize/";
-var buttonDig_id = [];
-var buttonDig_on = [];
-var buttonDig_src = [];
-var buttonDig_title_off = [];
-var buttonDig_title_on = [];
-var buttonDig_x = [];
-var buttonDig_y = [];	
-
-var mapWindow;
-var mapDomElement;
-var mapType = "";
-
-var DigitizeHistory = function () {
-	var historyItemArray = [];
-	var currentIndex = 0;
-	
-	this.addItem = function (obj) {
-		if (typeof obj == "object" 
-		&& obj.back && typeof obj.back === "function"
-		&& obj.forward && typeof obj.forward === "function"
-		) {
-			for (var i = currentIndex; i < historyItemArray.length; i++) {
-				delete historyItemArray[i];
-			}
-			historyItemArray.length = currentIndex;
-			historyItemArray.push({
-				back: obj.back,
-				forward: obj.forward
-			});
-			return true;
-		}
-		return false;
-	};
-	
-	this.back = function () {
-		if (currentIndex > 0) {
-			currentIndex --;
-			historyItemArray[currentIndex].back();
-			executeDigitizeSubFunctions();
-			return true;
-		}
-		return false;
-	};
-	
-	this.forward = function () {
-		if (currentIndex < historyItemArray.length) {
-			historyItemArray[currentIndex].forward();
-			currentIndex ++;
-			executeDigitizeSubFunctions();
-			return true;
-		}
-		return false;
-	};
-};
-
-var digitizeHistory = new DigitizeHistory();
-
-var registerAnotherFunction = function () {
-	var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-	mapDomElement = parent.mb_mapObj[mapIndex].getDomElement();
-	mapType = mapDomElement.tagName.toUpperCase();
-	if (mapType == "DIV") {
-		mapWindow = parent.window;
-	}
-	else if (mapType == "IFRAME") {
-		mapWindow = mapDomElement.window;
-	}
-	else {
-		new parent.Mb_warning("Could not set CSS for map in digitizing module.");
-	}
-
-	eventCloseGeometry = new parent.Mapbender.Event();
-	eventCloseGeometry.register(function (obj) {
-		d.close(obj.index);
-	});
-	if (openMetadataEditorAfterNewGeometryHasBeenCreated) {
-		eventCloseGeometry.register(function (obj) {
-			if (typeof obj !== "object") {
-				return;
-			}
-			if (typeof obj.index !== "number") {
-				return;
-			}
-			showWfs(obj.index);
-		});
-	}
-	
-	/**
-	 * Property: events
-	 * 
-	 * Description:
-	 * Your callback functions receive an object with the 
-	 * following attributes
-	 * - geometryIndex: index of feature in current feature collection
-	 * - feature: the <Mapbender.MultiGeometry>
-	 */
-	parent.Mapbender.modules[mod_digitize_elName].events = {
-		/**
-		 * Property: events.closeGeometry
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired after a new geometry has been 
-		 * digitized. 
-		 */
-		closeGeometry: eventCloseGeometry,
-		/**
-		 * Property: events.beforeUpdateOrInsert
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before a feature is updated
-		 * or inserted by WFS-T. 
-		 */
-		beforeUpdateOrInsert: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.beforeUpdate
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before a feature is updated
-		 * by WFS-T. 
-		 */
-		beforeUpdate: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.beforeInsert
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before a feature is inserted 
-		 * by WFS-T. 
-		 */
-		beforeInsert: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.openDialog
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired before the user opens the dialog
-		 * for inserting or updating. Returning false in your callback prevents
-		 * the default dialog from popping up.
-		 */
-		openDialog: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.clickDelete
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired when the user clicks the button to 
-		 * delete features by WFS-T
-		 */
-		clickDelete: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.geometryInserted
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired after a feature has been inserted 
-		 * by WFS-T
-		 */
-		geometryInserted: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.afterWfs
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired after a feature has been inserted,
-		 * updated or deleted by WFS-T
-		 */
-		afterWfs: new parent.Mapbender.Event(),
-		/**
-		 * Property: events.mergeLines
-		 * 
-		 * Description:
-		 * This <Mapbender.Event> is fired when 2 lines are merged to a single line,
-		 */
-		 mergeLines: new parent.Mapbender.Event()
-	};
-
-	eventCloseGeometry.register(function () {
-		_currentGeomIndex = -1;
-	});
-
-	parent.Mapbender.modules[mod_digitize_elName].cancelAjaxRequest = false;
-	parent.Mapbender.modules[mod_digitize_elName].cancelAjaxRequestMessage = "An error occured.";
-
-	parent.Mapbender.modules[mod_digitize_elName].dataCheck = false;
-};
-
-
-<?php
-echo "var mod_digitize_target = '".$e_target."';";
-$digitizeConfFilenameAndPath = dirname(__FILE__) . "/../../conf/" . $digitize_conf_filename;
-if ($digitize_conf_filename && file_exists($digitizeConfFilenameAndPath)) {
-	/*
-	 * @security_patch finc done
-	 */
-	include(secure($digitizeConfFilenameAndPath));
-}
-?>
-if (typeof snapping === "undefined") {
-	snapping = true;
-}
-
-var wfsWindow;	
-var wfsConf = [];
-var d;
-var mod_digitize_width;
-var mod_digitize_height;
-var mod_digitizeEvent = false;
-var nonTransactionalHighlight;
-
-var button_point;
-var button_line;
-var button_polygon;
-var button_line_continue = "lineContinue";
-var button_move = "dragBasePoint";
-var button_insert = "setBasePoint";
-var button_delete = "delBasePoint";
-var button_clear = "clear";
-var button_split = "digitizeSplit";
-var button_merge = "digitizeMerge";
-var button_difference = "digitizeDifference";
-var button_line_merge = "mergeLine";
-var _currentGeomIndex = -1;
-
-var digitizeDivTag;
-
-var GeometryArray;
-var MultiGeometry = parent.MultiGeometry;
-var Geometry;
-var Point;
-var geomType;
-
-var msgObj;
-var featureTypeElementFormId = "featureTypeElementForm";
-
-try {if(mod_digitize_elName){}}catch(e) {mod_digitize_elName = "digitize";}
-try {if(nonTransactionalEditable){}}catch(e) {nonTransactionalEditable = false;}
-try {if(updatePointGeometriesInstantly){}}catch(e) {updatePointGeometriesInstantly = false;}
-try {if(addCloneGeometryButton){}}catch(e) {addCloneGeometryButton = false;}
-
-if (typeof featuresMustHaveUniqueId === "undefined") {
-	var featuresMustHaveUniqueId = false;
-}
-
-if (typeof allowUndoPolygonBySnapping === "undefined") {
-	var allowUndoPolygonBySnapping = false;
-}
-
-if (typeof openMetadataEditorAfterNewGeometryHasBeenCreated === "undefined") {
-	var openMetadataEditorAfterNewGeometryHasBeenCreated = false;
-}
-
-
-var eventCloseGeometry;
-
-function toggleTabs(tabId) {
-	if(!initialTab) {
-		return;
-	}
-
-	var tabHeaders = wfsWindow.document.getElementsByTagName('a');
-	var tabs       = wfsWindow.document.getElementsByTagName('div');
-	
-	for(var i = 0; i < tabHeaders.length; i++) {
-		if(tabHeaders[i].id.indexOf('tabheader') != -1) {
-			tabHeaders[i].className = 'tabheader';
-		}
-	}
-	
-	for(var i = 0; i < tabs.length; i++) {
-		if(tabs[i].className === 'tabcontent') {
-			tabs[i].style.visibility = 'hidden';
-			tabs[i].style.display    = 'none';
-		}
-	}
-	
-	wfsWindow.document.getElementById('tabheader_' + tabId).className += ' active';
-	
-	wfsWindow.document.getElementById('tab_' + tabId).style.visibility = 'visible';
-	wfsWindow.document.getElementById('tab_' + tabId).style.display    = 'block';
-	
-	return false;
-}
-
-function showHelptext(helptextId) {
-	hideHelptext();
-	wfsWindow.document.getElementById('helptext' + helptextId).style.visibility = 'visible';
-	wfsWindow.document.getElementById('helptext' + helptextId).style.display    = 'block';
-
-	return false;
-}
-
-function hideHelptext(helptextId) {
-	if(helptextId) {
-		wfsWindow.document.getElementById('helptext' + helptextId).style.visibility = 'hidden';
-		wfsWindow.document.getElementById('helptext' + helptextId).style.display    = 'none';
-	}
-
-	var helptext = wfsWindow.document.getElementsByTagName('div');
-	
-	for(var i = 0; i < helptext.length; i++) {
-		if(helptext[i].className === 'helptext') {
-			helptext[i].style.visibility = 'hidden';
-			helptext[i].style.display    = 'none';
-		}
-	}
-
-	return false;
-}
-function getMousePosition(e) {
-	var map = parent.getMapObjByName(mod_digitize_target);
-
-	return map.getMousePosition(e);
-}
-
-
-function initializeDigitize () {
-	d = new parent.GeometryArray();
-	GeometryArray = parent.GeometryArray;
-	Geometry = parent.Geometry;
-	Point = parent.Point;
-	geomType = parent.geomType;
-	button_point = parent.geomType.point; //"Point";
-	button_line = parent.geomType.line; //"Line";
-	button_polygon = parent.geomType.polygon; //"Polygon";
-}
-
-/**
- * Append geometries from KML when KML has been loaded
- */
-function appendGeometryArrayFromKML () {
-	try {
-		parent.kmlHasLoaded.register(function(properties){
-			d = new parent.GeometryArray();
-			d.importGeoJSON(properties);		
-//			d = parent.geoJsonToGeometryArray(properties);
-			executeDigitizeSubFunctions();
-		});
-	}
-	catch (e) {
-		var exc = new parent.Mb_warning(e);
-	}
-}
-
-
-// ------------------------------------------------------------------------------------------------------------------------
-// --- polygon, line, point insertion (begin) ----------------------------------------------------------------------------------------------
-
-function appendGeometryArray(obj) {
-	executeDigitizePreFunctions();
-	d.union(obj, featuresMustHaveUniqueId);
-	executeDigitizeSubFunctions();
-}
-
-function mod_digitize_go(e){
-	// track mouse position
-	var currentPos = getMousePosition(e);
-	s.check(currentPos);
-}
-
-function mod_digitize_timeout(){
-	var el = mapDomElement;
-	$(el).unbind("mousedown")
-		.unbind("mouseup")
-		.unbind("mousemove");
-}
-
-var isLastLinePointSnapped = function (newPoint) {
-	return d.get(_currentGeomIndex).geomType === parent.geomType.line 
-		&& d.getGeometry(_currentGeomIndex,-1).count() > 1 
-		&& d.getGeometry(_currentGeomIndex,-1).get(-1).equals(newPoint);
-};
-
-var innerPointSnapped = function (newPoint) {
-	if (d.count() === 0) {
-		return null;
-	}
-	var start = 1;
-	if (d.getGeometry(_currentGeomIndex, -1).count() < 3) {
-		start = 0;
-	}
-	for (var i = start; i < d.getGeometry(_currentGeomIndex, -1).count(); i++) {
-		if (d.getGeometry(_currentGeomIndex,-1).get(i).equals(newPoint)) {
-			return i;
-		}
-	}
-	return null;
-};
-
-var isFirstPolygonPointSnapped = function (newPoint) {
-	return d.get(_currentGeomIndex).geomType == parent.geomType.polygon 
-		&& d.getGeometry(_currentGeomIndex,-1).count() >= 3 
-		&& d.getGeometry(_currentGeomIndex,-1).get(0).equals(newPoint);
-};
-
-var editingPolygonAndThreePointsHaveBeenInserted = function () {
-	return d.get(_currentGeomIndex).geomType == parent.geomType.polygon && d.getGeometry(_currentGeomIndex,-1).count() == 2;
-};
-
-var editingLineAndTwoPointsHaveBeenInserted = function () {
-	return d.get(_currentGeomIndex).geomType == parent.geomType.line && d.getGeometry(_currentGeomIndex,-1).count() >= 1;				
-};
-
-function mod_digitize_start(e){
-	if (mod_digitizeEvent !== button_point
-		&& mod_digitizeEvent !== button_line
-		&& mod_digitizeEvent !== button_line_continue
-		&& mod_digitizeEvent !== button_polygon) {
-
-		alert(msgObj.errorMessageNoGeometrySelected);
-		return false;
-	}
-	
-	(function () {
-		//
-		// get the last point the user digitized
-		//
-		var realWorldPos;
-		var isSnapped = s.isSnapped();
-		if (isSnapped) {
-			realWorldPos = s.getSnappedPoint(); 
-			s.clean();
-		}
-		else {
-			var currentPos = getMousePosition(e);
-			realWorldPos = parent.mapToReal(mod_digitize_target,currentPos);
-		}
-
-		var geometryType = mod_digitizeEvent;
-		var currentPoint = realWorldPos;
-		var currentEpsg = parent.mb_mapObj[parent.getMapObjIndexByName(mod_digitize_target)].epsg;
-		var currentGeomIndex = _currentGeomIndex;
-
-		if (mod_digitizeEvent === button_line_continue) {
-			if (isSnapped) {
-				// find corresponding line
-				for (var i = 0; i < d.count(); i++) {
-					var lastPointSnapped = false;
-					var firstPointSnapped = false;
-					if (d.get(i).geomType !== parent.geomType.line) {
-						continue;
-					}
-					if (d.getPoint(i, -1, -1) === realWorldPos) {
-						lastPointSnapped = true;
-					}
-					else if (d.getPoint(i, -1, 0) === realWorldPos) {
-						firstPointSnapped = true;
-					}
-					else {
-						continue;
-					}
-					if (firstPointSnapped) {
-						// reverse line!
-						// we can only add points to the end of the line, not insert them at the beginning
-						var oldLine = parent.Mapbender.cloneObject(d.getGeometry(i, -1));
-						var newLine = d.getGeometry(i, -1);
-						var len = oldLine.count();
-						for (var j = len-1; j >= 0; j--) {
-							newLine.updatePointAtIndex(oldLine.get(j), len-j-1);
-						}
-					}
-					// enable snapping to all points except 
-					// the ones from this line
-					s.resetPoints();
-					if (snapping) {
-						s.store(d);
-						for (var j = 0; j < d.get(i).count(); j++) {
-							var currentLine = d.getGeometry(i, j);
-							for (var k = 0; k < currentLine.count(); k++) {
-								s.removePoint(currentLine.get(k));
-							}
-						}
-					}
-
-
-					// delete last point, will be added again below, 
-					// as the event has changed to "button_line"
-					d.getGeometry(i, -1).del(-1);
-					d.getGeometry(i, -1).reopen();
-					currentGeomIndex = i;
-					_currentGeomIndex = i;
-					
-					parent.mb_enableButton(d.get(i).geomType);
-					break;
-				}
-			}
-			// check if event is still "line continue", 
-			// as it might have changed
-			if (mod_digitizeEvent === button_line_continue) {
-				return;
-			}
-		}
-		//
-		// A new geometry has to be created
-		//
-		if (d.count() === 0 || (d.get(currentGeomIndex).count()> 0 && d.getGeometry(currentGeomIndex, -1).isComplete())) {
-			digitizeHistory.addItem({
-				// remove the entire multigeometry
-				back: function () {
-					s.resetPoints();
-					d.del(currentGeomIndex);
-					if (snapping) {
-						s.store(d);
-					}
-				},
-				// add the multigeometry to the geometry array
-				forward: function () {
-					if (snapping) {
-						s.store(d);
-					}
-					parent.mb_enableButton(geometryType);
-					d.addMember(geometryType);
-					d.get(currentGeomIndex).addGeometry();
-					d.getGeometry(currentGeomIndex,-1).setEpsg(currentEpsg);
-					d.getGeometry(currentGeomIndex,-1).addPoint(realWorldPos);
-					if (geometryType == parent.geomType.point){
-						eventCloseGeometry.trigger({
-							index: currentGeomIndex,
-							geometry: d.get(currentGeomIndex)
-						});
-						parent.mb_disableThisButton(mod_digitizeEvent);
-					}
-				}
-			});
-		}
-		//
-		// a point is added to an existing multigeometry
-		//
-		else {
-			var innerPointIndex = innerPointSnapped(realWorldPos);
-			//
-			// editing polygon and first point is snapped -> close polygon
-			//
-			if (isFirstPolygonPointSnapped(realWorldPos)) {
-				digitizeHistory.addItem({
-					back: function () {
-						d.getGeometry(currentGeomIndex, -1).reopen();
-						parent.mb_enableButton(d.get(currentGeomIndex).geomType);
-						// activate button
-					},
-					forward: function () {
-						// close the polygon
-						eventCloseGeometry.trigger({
-							index: currentGeomIndex,
-							geometry: d.get(currentGeomIndex)
-						});
-						parent.mb_disableThisButton(mod_digitizeEvent);
-					}
-				});
-			}
-			//
-			// editing line and last point is snapped -> close line
-			//
-			else if (isLastLinePointSnapped(realWorldPos)) {
-				digitizeHistory.addItem({
-					back: function () {
-						d.getGeometry(currentGeomIndex, -1).reopen();
-						parent.mb_enableButton(d.get(currentGeomIndex).geomType);
-					},
-					forward: function () {
-						// close the polygon
-						eventCloseGeometry.trigger({
-							index: currentGeomIndex,
-							geometry: d.get(currentGeomIndex)
-						});
-						parent.mb_disableThisButton(mod_digitizeEvent);
-					}
-				});
-			}
-			//
-			// another point is snapped (undo for polygons!)
-			//
-			else if (innerPointIndex !== null && allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-				while (d.getGeometry(currentGeomIndex, -1).count() > innerPointIndex) {
-					digitizeHistory.back();
-				}
-				// avoids the history.forward()!
-				return;
-			}
-			//
-			// just add the point
-			//
-			else {
-				if (editingPolygonAndThreePointsHaveBeenInserted()) {
-					digitizeHistory.addItem({
-						back: function () {
-							s.removePoint(d.getPoint(currentGeomIndex, -1, 0));
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.removePoint(d.getPoint(currentGeomIndex, -1, -1));
-							}
-							d.getGeometry(currentGeomIndex, -1).del(-1);
-						},
-						forward: function () {
-							d.getGeometry(currentGeomIndex,-1).addPoint(realWorldPos);
-							s.add(d.getPoint(currentGeomIndex, -1, 0));
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.add(d.getPoint(currentGeomIndex, -1, -1));
-							}
-						}
-					});
-				}
-				else if (editingLineAndTwoPointsHaveBeenInserted()) {
-					digitizeHistory.addItem({
-						back: function () {
-							s.removePoint(d.getPoint(currentGeomIndex, -1, -1));
-							s.add(d.getPoint(currentGeomIndex, -1, -2));
-							d.getGeometry(currentGeomIndex, -1).del(-1);
-						},
-						forward: function () {
-							d.getGeometry(currentGeomIndex,-1).addPoint(realWorldPos);
-							s.removePoint(d.getPoint(currentGeomIndex, -1, -2));
-							s.add(d.getPoint(currentGeomIndex, -1, -1));
-						}
-					});
-				}
-				else {
-					digitizeHistory.addItem({
-						back: function () {
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.removePoint(d.getPoint(currentGeomIndex, -1, -1));
-							}
-							if (geometryType === parent.geomType.line) {
-								d.getGeometry(currentGeomIndex, -1).del(-1);
-							}
-							else {
-								d.getGeometry(currentGeomIndex, -1).del(-1);
-							}
-						},
-						forward: function () {
-							d.getGeometry(currentGeomIndex, -1).addPoint(realWorldPos);
-							if (allowUndoPolygonBySnapping && geometryType == parent.geomType.polygon) {
-								s.add(d.getPoint(currentGeomIndex, -1, -1));
-							}
-						}
-					});
-				}
-			}
-		}
-		digitizeHistory.forward();
-	})();
-
-	return true;
-}
-// --- polygon, line, point insertion (begin) ----------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-
-// ------------------------------------------------------------------------------------------------------------------------
-// --- basepoint handling (begin) -----------------------------------------------------------------------------------------
-
-var basepointObject = false;
-var basepointMemberIndex = null;
-var basepointGeometryIndex = null;
-var basepointRingIndex = null;
-var basepointPointIndex = null;
-var basepointDragActive = false;
-
-function handleBasepoint(obj,memberIndex, geometryIndex, ringIndex, pointIndex){
-	if (!(
-		mod_digitizeEvent == button_move || 
-		mod_digitizeEvent == button_insert || 
-		mod_digitizeEvent == button_delete)
-	) { 
-		return false; 
-	}
-	
-	basepointObject = obj;
-	basepointMemberIndex = memberIndex;
-	basepointGeometryIndex = geometryIndex;
-
-	if (pointIndex == undefined) {
-		pointIndex = ringIndex;
-		basepointRingIndex = undefined;
-	}
-	else {
-		basepointRingIndex = ringIndex;
-	}
-	basepointPointIndex = pointIndex;
-	
-	if(mod_digitizeEvent == button_move){
-		mod_digitize_timeout();
-		basepointObject.style.cursor = 'move';
-		parent.$(basepointObject).bind("mousedown", parent.frames[mod_digitize_elName].selectBasepoint);
-	}
-
-	if(mod_digitizeEvent == button_delete){
-		mod_digitize_timeout();
-		basepointObject.style.cursor = 'crosshair';
-		parent.$(basepointObject).bind("mousedown", parent.frames[mod_digitize_elName].deleteBasepoint);
-	}
-}
-
-function convertLinepointToBasepoint(obj, memberIndex, geomIndex, ringIndex, pointIndex){
-	if(!(mod_digitizeEvent == button_insert)){ return false; }
-	
-	if(mod_digitizeEvent == button_insert){
-		mod_digitize_timeout();
-		obj.style.cursor = 'crosshair';
-		$(obj).unbind("click").click(function (e){
-			insertBasepoint(e);
-			return false;
-		});
-
-		basepointObject = obj;
-		basepointMemberIndex = memberIndex;
-		basepointGeometryIndex = geomIndex;
-		basepointRingIndex = ringIndex;
-		basepointPointIndex = pointIndex;
-	}
-}
-
-function insertBasepoint(e){
-	var i = basepointMemberIndex;
-	var j = basepointGeometryIndex;
-	var k = basepointRingIndex;
-	var l = basepointPointIndex;
-	
-	var currentPos = getMousePosition(e);
-
-	var ind = parent.getMapObjIndexByName(mod_digitize_target);
-	var p = parent.mb_mapObj[ind].convertPixelToReal(new Point(currentPos.x, currentPos.y));
-
-	if (k == undefined) {
-		d.getGeometry(i,j).addPointAtIndex(p, l);
-	}
-	else {
-		d.getGeometry(i,j).innerRings.get(k).addPointAtIndex(p, l);
-	}
-
-	executeDigitizeSubFunctions();
-}
-
-function deleteBasepoint(){
-	var i = basepointMemberIndex;
-	var j = basepointGeometryIndex;
-	var k = basepointRingIndex;
-	var l = basepointPointIndex;
-
-	if (k != undefined) {
-		d.delAllPointsLike(d.getPoint(i, j, k, l));
-	}
-	else {
-		d.delAllPointsLike(d.getPoint(i, j, l));
-	}
-
-	executeDigitizeSubFunctions();
-}
-
-function selectBasepoint(e){
-	if(!basepointDragActive && mod_digitizeEvent == button_move){
-		basepointDragActive = true;
-		if (snapping) {
-			s.store(d, d.getPoint(basepointMemberIndex, basepointGeometryIndex, basepointPointIndex));
-		}
-		// replace basepoint by transparent blob
-		basepointObject.style.width = mod_digitize_width + "px";
-		basepointObject.style.height = mod_digitize_height + "px";
-		basepointObject.style.left = "0px";
-		basepointObject.style.top = "0px";
-			
-		if (parent.ie) {
-			// ie cannot handle backgroundColor = 'transparent'
-			basepointObject.style.background = "url(../img/transparent.gif)";
-		}
-		else{
-			basepointObject.style.backgroundColor = 'transparent';
-		}
-
-		parent.$(basepointObject).bind("mouseup", releaseBasepoint);
-		parent.$(basepointObject).bind("mousemove", dragBasepoint);
-	}
-}
-
-function dragBasepoint(e){
-	if(basepointDragActive){
-		var currentPos = getMousePosition(e);
-		var res = s.check(currentPos);
-
-	}
-}
-	
-function updateAllPointsOfNonTransactionalLike(oldP, newP){ 
-	for (var i = 0; i < d.count(); i++) {
-		if (isTransactional(d.get(i))) {
-			d.get(i).updateAllPointsLike(oldP, newP);
-		}
-	}
-}
-
-	
-function releaseBasepoint(e){
-	
-	var i = basepointMemberIndex;
-	var j = basepointGeometryIndex;
-	var k = basepointRingIndex;
-	var l = basepointPointIndex;
-	basepointDragActive = false;
-	
-	var currentPos = getMousePosition(e);
-	var basepointDragEnd = currentPos;
-	parent.$(basepointObject).unbind("mousedown");
-	var ind = parent.getMapObjIndexByName(mod_digitize_target);
-	var p = parent.mb_mapObj[ind].convertPixelToReal(new Point(basepointDragEnd.x, basepointDragEnd.y));
-
-	var oldPoint;
-	if (k == undefined) {
-		oldPoint = parent.Mapbender.cloneObject(d.getPoint(i,j,l));
-	} 
-	else {
-		oldPoint = parent.Mapbender.cloneObject(d.getPoint(i,j,k,l));
-	}
-	if (s.isSnapped()) {
-		var snappedPoint = parent.Mapbender.cloneObject(s.getSnappedPoint());
-		if (!nonTransactionalEditable) {
-			updateAllPointsOfNonTransactionalLike(oldPoint, snappedPoint);
-		}
-		else {
-			d.updateAllPointsLike(oldPoint, snappedPoint);
-		}
-		s.clean();
-	}
-	else {
-		if (!nonTransactionalEditable) {
-			updateAllPointsOfNonTransactionalLike(oldPoint, p);
-		}
-		else {
-			d.updateAllPointsLike(oldPoint, p);
-		}
-	}
-	basepointMemberIndex = null;
-	basepointGeometryIndex = null;
-	basepointPointIndex = null;	
-		
-	executeDigitizeSubFunctions();
-
-	var isPoint = d.get(i).geomType === parent.geomType.point;
-	var hasFid = d.get(i).e.getElementValueByName("fid") !== false;
-	if (mod_digitizeEvent == button_move && 
-		updatePointGeometriesInstantly && 
-		isPoint && 
-		hasFid) {
-
-		dbGeom("update", i, function () {
-			d.del(i);
-		});
-	}		
-}
-// --- basepoint handling (end) -----------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-	
-// ------------------------------------------------------------------------------------------------------------------------
-// --- registered functions (begin) ---------------------------------------------------------------------------------------
-
-function registerDigitizePreFunctions(stringFunction){
-	mod_digitizePreFunctions[mod_digitizePreFunctions.length] = stringFunction;
-}
-
-function registerDigitizeSubFunctions(stringFunction){
-	mod_digitizeSubFunctions[mod_digitizeSubFunctions.length] = stringFunction;
-}
-
-function executeDigitizeSubFunctions(){
-	for(var i=0; i<mod_digitizeSubFunctions.length; i++){
-		eval(mod_digitizeSubFunctions[i]);
-	}
-}
-
-function executeDigitizePreFunctions(){
-	for(var i=0; i<mod_digitizePreFunctions.length; i++){
-		eval(mod_digitizePreFunctions[i]);
-	}
-}
-
-function completeInitialization() {
-	registerAnotherFunction();
-	initializeDigitize();
-	setStyleForTargetFrame();
-	checkDigitizeTag();
-	initialiseSnapping();
-//		appendGeometryArrayFromKML();
-	if (!nonTransactionalEditable) {
-		initialiseHighlight();
-	}
-	initialiseMeasure();
-	getMessages();
-}
-
-function registerFunctions(){
-	
-	mod_digitizePreFunctions = [];
-	mod_digitizeSubFunctions = [];
-	registerDigitizePreFunctions("updateExtent()");
-	registerDigitizePreFunctions("drawDashedLine()");
-	registerDigitizeSubFunctions("updateListOfGeometries()");
-	registerDigitizeSubFunctions("drawDashedLine()");
-
-	if (parent.Mapbender.events.init.done) {
-		completeInitialization();
-	}
-	else {
-		parent.Mapbender.events.init.register(completeInitialization);
-	}
-	parent.eventLocalize.register(function() {
-		getMessages();
-	});
-
-	parent.eventAfterMapRequest.register(function () {
-		updateExtent();
-	});
-	parent.mb_registerWfsWriteSubFunctions(function(){parent.zoom(mod_digitize_target, true, 0.999);});
-}
-
-function checkDigitizeTag(){
-	var digitizeTagName = "digitizeDiv";
-	var digitizeTagStyle;
-	
-
-	if (mapType == "DIV") {
-		
-		digitizeTagStyle = {"z-index":digitizeTransactionalZIndex, "font-size":"10px"};
-		digitizeDivTag = new parent.DivTag(digitizeTagName, "", digitizeTagStyle, mapDomElement);
-	}	 
-	else {
-		digitizeTagStyle = {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeTransactionalZIndex, "font-size":"10px"};
-		digitizeDivTag = new parent.DivTag(digitizeTagName, mod_digitize_target, digitizeTagStyle);
-	}
-	parent.mb_registerPanSubElement(digitizeTagName);
-	parent.mb_registerSubFunctions("window.frames['"+ mod_digitize_elName + "'].drawDashedLine()");
-}
-
-
-function setStyleForTargetFrame(){
-	var cssLink = mapWindow.document.createElement("link");
-	var cssHead = mapWindow.document.getElementsByTagName("head")[0]; 
-	cssLink.setAttribute("href", cssUrl); 
-	cssLink.setAttribute("type", "text/css"); 
-	cssLink.setAttribute("rel", "stylesheet"); 
-	cssHead.appendChild(cssLink);
-}
-
-function initialiseSnapping(){
-	s = new parent.Snapping(mod_digitize_target, snappingTolerance, snappingColor, snappingHighlightZIndex);
-}
-function initialiseHighlight(){
-	nonTransactionalHighlight = new parent.Highlight([mod_digitize_target], "nonTransactional", {"position":"absolute", "top":"0px", "left":"0px", "z-index":digitizeNonTransactionalZIndex}, nonTransactionalLineWidth);
-}
-function initialiseMeasure(){
-	if (mapType == "DIV") {
-		measureDivTag = new parent.DivTag(measureTagName, "", measureTagStyle);
-	}
-	else {
-		measureDivTag = new parent.DivTag(measureTagName, measureTagTarget, measureTagStyle);
-	}
-	parent.mb_registerSubFunctions("window.frames['"+ mod_digitize_elName + "'].updateMeasureTag()");
-}
-// --- registered functions (end) -----------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-
-
-function updateMeasureTag () {
-	if (d.count() > 0 ) {
-		if (d.get(_currentGeomIndex).count() > 0) {
-			if (d.getGeometry(_currentGeomIndex, -1).count() > 0) {
-				if (mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon) {
-					var measureString = "";
-					measureString += msgObj.measureTagLabelCurrent + d.getGeometry(_currentGeomIndex, -1).getCurrentDist(measureNumberOfDigits) + "<br>";
-					measureString += msgObj.measureTagLabelTotal + d.getGeometry(_currentGeomIndex, -1).getTotalDist(measureNumberOfDigits);
-					measureDivTag.write(measureString);
-					return true;
-				}
-			}
-		}
-	}
-	measureDivTag.clean();
-}
-
-
-
-// ------------------------------------------------------------------------------------------------------------------------
-// --- button handling (begin) --------------------------------------------------------------------------------------------
-
-function displayButtons(){
-	for (var i = 0 ; i < buttonDig_id.length ; i ++) {
-		if (parseInt(buttonDig_on[i])==1) {
-			var divTag = document.createElement("div");
-			divTag.setAttribute("id", "div_" + buttonDig_id[i]);
-// FIREFOX 
-			document.getElementById("digButtons").appendChild(divTag);
-
-//IE WORKAROUND, WORKS ALSO FOR FIREFOX
-			var tagContent = "<div style='position:absolute; top:"+buttonDig_y[i]+"px; left:"+buttonDig_x[i]+"px;'><img name=\""+buttonDig_id[i]+"\" onmouseover=\"parent.mb_regButton_frame('initDigButton', mod_digitize_elName, "+i+");\" id=\""+buttonDig_id[i]+"\" title=\""+buttonDig_title_off[i]+"\" src=\""+buttonDig_imgdir+buttonDig_src[i]+"\"></div>";
-			parent.writeTag(mod_digitize_elName,"div_" + buttonDig_id[i],tagContent);
-		}
-	}
-}
-
-function updateButtons() {
-	for (var i = 0 ; i < buttonDig_id.length ; i ++) {
-		if (parseInt(buttonDig_on[i])==1) {
-			var currentButton = document.getElementById(buttonDig_id[i]);
-			var currentStatus = buttonDig_id[i].status;
-			var currentTitle = "";
-			switch (buttonDig_id[i]) {
-				case "point":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelPointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelPointOff;
-					}
-					break;
-				case "line":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelLineOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelLineOff;
-					}
-					break;
-				case "lineContinue":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelLineContinueOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelLineContinueOff;
-					}
-					break;
-				case "polygon":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelPolygonOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelPolygonOff;
-					}
-					break;
-				case "dragBasePoint":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelMoveBasepointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelMoveBasepointOff;
-					}
-					break;
-				case "setBasePoint":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelInsertBasepointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelInsertBasepointOff;
-					}
-					break;
-				case "delBasePoint":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelDeleteBasepointOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelDeleteBasepointOff;
-					}
-					break;
-				case "clear":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelClearListOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelClearListOff;
-					}
-					break;
-				case "digitizeSplit":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelSplitOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelSplitOff;
-					}
-					break;
-				case "digitizeMerge":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelMergeOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelMergeOff;
-					}
-					break;
-				case "digitizeDifference":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelDifferenceOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelDifferenceOff;
-					}
-					break;
-				case "mergeLine":
-					if (currentStatus == 1) {
-						currentTitle = msgObj.buttonLabelMergeLineOn;
-					}
-					else {
-						currentTitle = msgObj.buttonLabelMergeLineOff;
-					}
-					break;	
-			}
-			currentButton.title = currentTitle;
-		}
-	}
-}
-
-function initDigButton(ind, pos){
-	parent.mb_button[ind] = document.getElementById(buttonDig_id[pos]);
-	parent.mb_button[ind].img_over = buttonDig_imgdir + buttonDig_src[pos].replace(/_off/,"_over");
-	parent.mb_button[ind].img_on = buttonDig_imgdir + buttonDig_src[pos].replace(/_off/,"_on");
-	parent.mb_button[ind].img_off = buttonDig_imgdir + buttonDig_src[pos];
-	parent.mb_button[ind].title_on = buttonDig_title_on[pos];
-	parent.mb_button[ind].title_off = buttonDig_title_off[pos];
-	parent.mb_button[ind].status = 0;
-	parent.mb_button[ind].elName = buttonDig_id[pos];
-	parent.mb_button[ind].fName = "";
-	parent.mb_button[ind].go = new Function ("digitizeEnable(parent.mb_button["+ind+"])");
-	parent.mb_button[ind].stop = new Function ("digitizeDisable(parent.mb_button["+ind+"])");
-}	
-
-function digitizeEnable(obj) {
-	if (obj.id == button_move || obj.id == button_insert || obj.id == button_delete) {
-		mod_digitizeEvent = obj.id;
-		executeDigitizePreFunctions();
-	}
-	else if (obj.id == button_point || obj.id == button_line || 
-			obj.id == button_polygon || obj.id == button_clear || 
-			obj.id == button_split || obj.id == button_merge ||
-			obj.id == button_difference || obj.id == button_line_continue ||
-			obj.id == button_line_merge){
-					
-		var el = mapDomElement;
-		$(el).mousemove(function (e) {
-			mod_digitize_go(e);
-		}).mousedown(function (e) {
-			mod_digitize_start(e);
-		});
-
-
-		mod_digitizeEvent = obj.id;
-
-		//get a first snapping point for digitizing
-		if (mod_digitizeEvent == button_point || mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon || mod_digitizeEvent == button_insert ) {
-			s.resetPoints();
-			if (snapping) {
-				s.store(d);
-			}
-		}
-		
-		if (mod_digitizeEvent == button_point || mod_digitizeEvent == button_line || mod_digitizeEvent == button_polygon || mod_digitizeEvent == button_insert ) {
-			//
-			// complete a previously unfinished geometry
-			//
-			(function () {
-				var currentGeometryDoesNotCorrespondToTheCurrentButton = 
-					(d.count() > 0 && d.get(_currentGeomIndex).count() > 0 &&
-					!d.get(_currentGeomIndex).get(-1).isComplete() &&
-					mod_digitizeEvent !== d.get(_currentGeomIndex).geomType);
-				var currentGeometryType = mod_digitizeEvent;
-				
-				if (currentGeometryDoesNotCorrespondToTheCurrentButton) {
-					var currentEpsg = parent.mb_mapObj[parent.getMapObjIndexByName(mod_digitize_target)].epsg;
-					digitizeHistory.addItem({
-						back: function(){
-							s.resetPoints();
-							d.del(_currentGeomIndex);
-							if (snapping) {
-								s.store(d);
-							}
-							d.getGeometry(_currentGeomIndex, -1).reopen();
-						},
-						forward: function(){
-							d.close(-1);
-							if (snapping) {
-								s.store(d);
-							}
-							d.addMember(currentGeometryType);
-							d.get(_currentGeomIndex).addGeometry();
-							d.getGeometry(_currentGeomIndex,-1).setEpsg(currentEpsg);
-						}
-					});
-					digitizeHistory.forward();
-				}
-			})();
-	
-		}
-
-		executeDigitizePreFunctions();
-		if (obj.id == button_polygon) {
-			// close previous open polygons
-			if (d.count() > 0 && d.get(_currentGeomIndex).count() > 0 && !d.get(_currentGeomIndex).get(-1).isComplete()) {
-				if (d.get(_currentGeomIndex).geomType !== parent.geomType.polygon) {
-//					d.close();
-//					executeDigitizeSubFunctions();
-				}
-				else {
-					s.add(d.getPoint(-1, -1, 0));
-				}
-			}
-		}
-		else if (obj.id == button_line) {
-			if (d.count() > 0 && d.get(_currentGeomIndex).count() > 0 && !d.get(_currentGeomIndex).get(-1).isComplete()) {
-				if (d.get(_currentGeomIndex).geomType != parent.geomType.line) {
-//					d.close();
-//					executeDigitizeSubFunctions();
-				}
-				else {
-//					s.add(d.getPoint(-1, -1, -1));
-				}
-			}
-		}
-		else if (obj.id == button_line_continue) {
-			s.resetPoints();
-			for (var i = 0; i < d.count(); i++) {
-				if (d.get(i).geomType !== parent.geomType.line) {
-					continue;
-				}
-				s.add(d.getPoint(i, -1, 0));
-				s.add(d.getPoint(i, -1, -1));
-			}
-		}
-		else if (obj.id == button_clear) {
-			var clear = confirm(msgObj.messageConfirmDeleteAllGeomFromList);
-			if (clear) {
-				d = new parent.GeometryArray();
-				s.resetPoints();
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				digitizeHistory = new DigitizeHistory();
-			}
-		}
-		else if (obj.id == button_merge) {
-			var applicable = (d.count() > 1);
-
-			var polygonTextArray = [];
-			for (var i = 0; i < d.count(); i++) {
-				if (d.get(i).geomType != parent.geomType.polygon) {
-					applicable = false;
-					polygonTextArray = [];
-					break;
-				}
-				polygonTextArray.push(d.get(i).toText());
-			}
-
-			if (!applicable) {
-				alert(msgObj.messageErrorMergeNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-			
-			parent.mb_ajax_post("../php/mod_digitize_mergePolygon.php", {polygons: polygonTextArray.join(";")}, function(json, status) {
-				var response = json;
-				var polygon = response.polygon;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				d.importGeometryFromText(polygon, parent.mb_mapObj[mapIndex].epsg);
-
-				// remove the original polygons
-				var len = d.count();
-				for (var i = 0; i < len-1; i++) {
-					d.del(0);
-				}
-				parent.mb_disableThisButton(mod_digitizeEvent);
-			});
-		}
-		else if (obj.id == button_split) {
-			var applicable = (d.count() == 2) && 
-				(
-					d.get(0).geomType == parent.geomType.polygon ||
-					d.get(0).geomType == parent.geomType.line
-				) && (d.get(1).geomType == parent.geomType.line);
-			if (!applicable) {
-				alert(msgObj.messageErrorSplitNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-			
-			var splitCallback = function (json, status) {
-				var response = json;
-				var resultArray = response.geometries;
-				var wfsConfId = d.get(0).wfs_conf;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				for (var i in resultArray) {
-					d.importGeometryFromText(resultArray[i], parent.mb_mapObj[mapIndex].epsg);
-					d.get(-1).wfs_conf = wfsConfId;
-					var wfsProperties = d.get(0).e;
-
-					for (var j = 0; j < wfsProperties.count(); j++) {
-						if (i > 0 && wfsProperties.getName(j) === "fid") {
-							continue;
-						}
-						d.get(-1).e.setElement(
-							wfsProperties.getName(j), 
-							wfsProperties.getValue(j)
-						);
-					}
-				}
-				// remove the original geometry and the temporary line
-				d.del(0);
-				d.del(0);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-			};
-
-			if (d.get(0).geomType == parent.geomType.polygon) {
-				var polygonText = d.get(0).toText();
-				var lineText = d.get(1).toText();
-				
-				parent.mb_ajax_post("../php/mod_digitize_splitPolygon.php", {
-					polygon: polygonText, 
-					line: lineText
-				}, splitCallback);
-			}
-			else {
-				var line1text = d.get(0).toText();
-				var line2text = d.get(1).toText();
-				
-				parent.mb_ajax_post("../php/mod_digitize_splitLine.php", {
-					line1: line1text, 
-					line2: line2text
-				}, splitCallback);
-			}
-		}
-		else if (obj.id == button_difference) {
-			var applicable = (d.count() == 2) && 
-							(d.get(0).geomType == parent.geomType.polygon) &&
-							(d.get(1).geomType == parent.geomType.polygon);
-			if (!applicable) {
-				alert(msgObj.messageErrorDifferenceNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-			
-			var polygon1Text = d.get(0).toText();
-			var polygon2Text = d.get(1).toText();
-			
-			parent.mb_ajax_post("../php/mod_digitize_differencePolygon.php", {polygon1: polygon1Text, polygon2: polygon2Text}, function(json, status) {
-				var response = json;
-				var polygonArray = response.polygons;
-				var wfsConfId = d.get(0).wfs_conf;
-				var wfsProperties = d.get(0).e;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				for (var i in polygonArray) {
-					d.importGeometryFromText(polygonArray[i], parent.mb_mapObj[mapIndex].epsg);
-					d.get(-1).wfs_conf = wfsConfId;
-					for (var i = 0; i < wfsProperties.count(); i++) {
-						if (wfsProperties.getName(i) === "fid") {
-							continue;
-						}
-						d.get(-1).e.setElement(wfsProperties.getName(i), wfsProperties.getValue(i));
-					}
-				}
-				// remove the original and the temporary polygon
-				d.del(0);
-				d.del(0);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-			});
-		}
-		else if (obj.id == button_line_merge) {
-			//var applicable = (d.count() > 1);
-			
-/*			var lineTextArray = [];
-			for (var i = 0; i < d.count(); i++) {
-				if (d.get(i).geomType != parent.geomType.line) {
-					applicable = false;
-					lineTextArray = [];
-					break;
-				}
-				lineTextArray.push(d.get(i).toText());
-			}
-*/
-			var applicable = (d.count() == 2) && 
-							(d.get(0).geomType == parent.geomType.line) &&
-							(d.get(1).geomType == parent.geomType.line);
-
-			if (!applicable) {
-				alert(msgObj.messageErrorMergeLineNotApplicable);
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				return false;
-			}
-
-			var line1Text = d.get(0).toText();
-			var line2Text = d.get(1).toText();
-				
-			parent.mb_ajax_post("../php/mod_digitize_mergeLines.php", {line1: line1Text, line2: line2Text}, function(json, status) {
-				var response = json;
-				var line = response.line;
-				if(line == "") {
-					alert(msgObj.errorMessageInvalidLineGeometries);
-					parent.mb_disableThisButton(mod_digitizeEvent);
-					return false;
-				}
-				var wfsConfId = d.get(-1).wfs_conf;
-				var wfsProperties = d.get(-1).e;
-				var mapIndex = parent.getMapObjIndexByName(mod_digitize_target);
-				
-				d.importGeometryFromText(line, parent.mb_mapObj[mapIndex].epsg);
-				d.get(-1).wfs_conf = wfsConfId;
-				for (var i = 0; i < wfsProperties.count(); i++) {
-					d.get(-1).e.setElement(wfsProperties.getName(i), wfsProperties.getValue(i));
-				}
-
-				var len = d.count();
-				var obsoleteFeatureArray = [];
-				wfsConf = parent.get_complete_wfs_conf();
-				for (var i = 0; i < len-2; i++) {
-					if(typeof wfsConf == 'object' && typeof wfsConf[d.get(i).wfs_conf] == 'object') {	
-						var featureCollection = new GeometryArray();
-						featureCollection.importGeoJSON(d.get(i).toString());
-						obsoleteFeatureArray.push({
-							geoJson : featureCollection.toString(),
-							wfsConfId : wfsConf[d.get(i).wfs_conf]['wfs_conf_id']    
-						});
-					}
-				}
-				var mergedFeatureId = d.get(-1).e.getElementValueByName("fid");
-
-				// remove the original lines
-				var len = d.count();
-				//for (var i = len-1 ; i >= 1; i--) {
-				for (var i = 0; i < len-1; i++) {
-					d.del(0);
-				}
-				parent.mb_disableThisButton(mod_digitizeEvent);
-				
-				var res = true;	
-				res = parent.Mapbender.modules.digitize.events.mergeLines.trigger({
-					mergedFeatureId: mergedFeatureId,
-					obsoleteFeature: obsoleteFeatureArray
-					
-				}, "AND");
-				
-				if (res === false) {
-					return;	
-				}
-				
-				if(mergedFeatureId !== false) {
-					parent.Mapbender.modules.digitize.events.afterWfs.register(function (obj) {
-						for(var j = 0; j < obsoleteFeatureArray.length; j++) {
-							if(obj.type == 'update' && obj.feature.e.getElementValueByName("fid") == mergedFeatureId) {
-								parent.mb_ajax_post(
-									"../extensions/geom2wfst.php", 
-									{
-										'geoJson' : obsoleteFeatureArray[j].geoJson,
-										'method' : "delete",
-										'wfs_conf_id' : obsoleteFeatureArray[j].wfsConfId
-									}, 
-									function(json,status){
-										parent.zoom(mod_digitize_target, true, 0.999);				
-									}
-								);	
-							}
-						}	
-					});
-				}
-			});
-		}	
-	}
-	else {
-		alert("unknown type: " + obj.id);
-	}
-}
-
-function digitizeDisable(obj) {
-	mod_digitize_timeout();
-	executeDigitizeSubFunctions();
-	mod_digitizeEvent = false;
-}
-// --- button handling (end) ----------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------------------------------
-
-// -----------------------------------------------------------------------------------------------------------
-// --- display (begin) -----------------------------------------------------------------------------------------
-
-function updateExtent() {
-	var anInd = parent.getMapObjIndexByName(mod_digitize_target);
-	var change = false;
-	if (typeof(mod_digitize_width) == 'undefined' || mod_digitize_width != parent.mb_mapObj[anInd].width) {
-		mod_digitize_width = parent.mb_mapObj[anInd].width;
-		change = true;
-	}
-	if (typeof(mod_digitize_height) == 'undefined' || mod_digitize_height != parent.mb_mapObj[anInd].height) {
-		mod_digitize_height = parent.mb_mapObj[anInd].height;
-		change = true;
-	}
-	if (typeof(mod_digitize_epsg) == 'undefined' || mod_digitize_epsg != parent.mb_mapObj[anInd].epsg) {
-		mod_digitize_epsg = parent.mb_mapObj[anInd].epsg;
-		change = true;
-	}
-//	if (change) {
-//		drawDashedLine();
-//	}
-}
-
-function drawDashedLine(){
-	if (!nonTransactionalEditable) {
-		nonTransactionalHighlight.clean();
-	}
-	var smP = "";
-	smP += "<div class='t_img'>";
-	smP += "<img src='"+parent.mb_trans.src+"' width='"+mod_digitize_width+"' height='0'></div>";
-	smP += "<div class='t_img'>";
-	smP += "<img src='"+parent.mb_trans.src+"' width='0' height='"+mod_digitize_height+"'></div>";
-
-	if (!nonTransactionalEditable) {
-		nonTransactionalHighlight.clean();
-	}
-	var smPArray = [];
-	smPArray[smPArray.length] = "<div class='t_img'>"
-			+ "<img src='"+parent.mb_trans.src+"' width='"+mod_digitize_width+"' height='0'></div>"
-			+ "<div class='t_img'>"
-			+ "<img src='"+parent.mb_trans.src+"' width='0' height='"+mod_digitize_height+"'></div>";
-	
-	var mapObj = parent.mb_mapObj[parent.getMapObjIndexByName(mod_digitize_target)];
-	var width = mapObj.width;
-	var height = mapObj.height;
-	var arrayBBox = mapObj.extent.toString().split(",")
-	var minX = parseFloat(arrayBBox[0]);
-	var minY = parseFloat(arrayBBox[1]);
-	var maxX = parseFloat(arrayBBox[2]);
-	var maxY = parseFloat(arrayBBox[3]);
-	var cx = width/(maxX - minX);
-	var cy = height/(maxY - minY);
-	var isMoveOrInsertOrDelete = mod_digitizeEvent == button_move || mod_digitizeEvent == button_insert || mod_digitizeEvent == button_delete;
-	var minDist = 6;
-
-	for(var i=0, lenGeomArray = d.count(); i < lenGeomArray; i++){
-		var currentGeomArray = d.get(i);
-
-		if (!nonTransactionalEditable && !isTransactional(currentGeomArray)) {
-			nonTransactionalHighlight.add(currentGeomArray, nonTransactionalColor);
-		}
-		else {
-			for(var j=0, lenGeom = currentGeomArray.count(); j < lenGeom ; j++){
-				var currentGeometry = d.getGeometry(i,j);
-				var isPolygon = currentGeomArray.geomType == parent.geomType.polygon;
-				var isLine = currentGeomArray.geomType == parent.geomType.line;
-				var isComplete = currentGeometry.isComplete();
-				var lastPaintedPoint = false;
-
-				for(var k = 0, lenPoint = currentGeometry.count(); k < lenPoint; k++){
-					var currentPoint = currentGeometry.get(k);
-					var totalDistMeasureTag = "";
-					var currentPointMap = new Point(Math.round((currentPoint.x - minX)*cx), Math.round((maxY - currentPoint.y)*cy));
-//					var isTooCloseToPrevious = lastPaintedPoint && (k > 0) && Math.abs(currentPointMap.x-lastPaintedPoint.x) <= minDist && Math.abs(currentPointMap.y-lastPaintedPoint.y) <= minDist;
-//					if (!isTooCloseToPrevious) {
-						var currentPointIsVisible = currentPointMap.x > 0 && currentPointMap.x < width && currentPointMap.y > 0 && currentPointMap.y < height;
-						if (currentPointIsVisible) {
-							if (!isComplete && ((k == 0 && isPolygon) || (k == lenPoint-1 && isLine))) {
-								smPArray[smPArray.length] = "<div class='bp' style='top:"+
-									(currentPointMap.y-2)+"px;left:"+(currentPointMap.x-2)+"px;z-index:"+
-									parseInt(digitizeTransactionalZIndex+10, 10)+";background-color:"+linepointColor+"'";
-								if(measuring) {
-									if(isLine && k != 0) {
-										totalDistMeasureTag = "<p class='measure'>"+currentGeometry.getAggregatedDist(k-1, 2)+"</p>";
-									}
-								}	
-								
-							}
-							else {
-								smPArray[smPArray.length] = "<div class='bp' style='top:"+(currentPointMap.y-2)+"px;left:"+(currentPointMap.x-2)+"px;z-index:"+parseInt(digitizeTransactionalZIndex+10, 10)+";'";
-								if(measuring) {
-									if(isLine && k == 0) {
-										//nothing
-										totalDistMeasureTag = "";
-									}
-									else {
-										totalDistMeasureTag = "<p class='measure'>"+currentGeometry.getAggregatedDist(k-1, 2)+"</p>";
-									}
-								}
-								
-							}
-							if(k==0 && isPolygon && !isComplete){
-								smPArray[smPArray.length] = " title='"+msgObj.closePolygon_title+"' ";
-								
-							}
-							if(isMoveOrInsertOrDelete) {
-								smPArray[smPArray.length] = " onmouseover='window.frames[\""+mod_digitize_elName+"\"].handleBasepoint(this,"+i+","+j+","+k+")' ;";
-							}
-							smPArray[smPArray.length] = ">";
-							if (isPolygon || isLine) {
-								smPArray[smPArray.length] = totalDistMeasureTag;
-							}	
-							smPArray[smPArray.length] = "</div>";
-							lastPaintedPoint = currentPointMap;
-							
-						}
-						if (k > 0) {
-							points = parent.calculateVisibleDash(currentPointMap, previousPointMap, width, height);
-							if (points != false) {
-								smPArray[smPArray.length] = evaluateDashes(points[0], points[1], i, j, k);
-							}
-						}
-//					}
-					var previousPointMap = currentPointMap;
-				}
-				if (isPolygon && currentGeometry.innerRings.count() > 0) {
-					// draw inner rings
-
-					for (var l = 0, lenRings = currentGeometry.innerRings.count(); l < lenRings; l++) {
-						var currentRing = currentGeometry.innerRings.get(l);
-						var lastPaintedPoint = false;
-						
-						for (var m = 0, lenPoint = currentRing.count(); m < lenPoint; m++) {
-							var currentPoint = currentRing.get(m);
-							var currentPointMap = new Point(Math.round((currentPoint.x - minX) * cx), Math.round((maxY - currentPoint.y) * cy));
-							
-							//					var isTooCloseToPrevious = lastPaintedPoint && (k > 0) && Math.abs(currentPointMap.x-lastPaintedPoint.x) <= minDist && Math.abs(currentPointMap.y-lastPaintedPoint.y) <= minDist;
-							//					if (!isTooCloseToPrevious) {
-							var currentPointIsVisible = currentPointMap.x > 0 && currentPointMap.x < width && currentPointMap.y > 0 && currentPointMap.y < height;
-							if (currentPointIsVisible) {
-								if (!isComplete && ((k == 0 && isPolygon) || (k == lenPoint - 1 && isLine))) {
-									smPArray[smPArray.length] = "<div class='bp' style='top:" +
-									(currentPointMap.y - 2) +
-									"px;left:" +
-									(currentPointMap.x - 2) +
-									"px;z-index:" +
-									parseInt(digitizeTransactionalZIndex+10, 10) +
-									";background-color:" +
-									linepointColor +
-									"'";
-								}
-								else {
-									smPArray[smPArray.length] = "<div class='bp' style='top:" + (currentPointMap.y - 2) + "px;left:" + (currentPointMap.x - 2) + "px;z-index:" + parseInt(digitizeTransactionalZIndex+10, 10) + ";'";
-								}
-								if (m == 0 && isPolygon && !isComplete) {
-									smPArray[smPArray.length] = " title='" + msgObj.closePolygon_title + "' ";
-								}
-								if (isMoveOrInsertOrDelete) {
-									smPArray[smPArray.length] = " onmouseover='window.frames[\"" + mod_digitize_elName + "\"].handleBasepoint(this," + i + "," + j + "," + l + "," + m + ")' ;";
-								}
-								smPArray[smPArray.length] = "></div>";
-								lastPaintedPoint = currentPointMap;
-							}
-							if (m > 0) {
-								points = parent.calculateVisibleDash(currentPointMap, previousPointMap, width, height);
-								if (points != false) {
-									smPArray[smPArray.length] = evaluateDashes(points[0], points[1], i, j, l, m);
-								}
-							}
-							//					}
-							var previousPointMap = currentPointMap;
-						}
-					}
-				}
-			}
-		}
-	}
-	if (!nonTransactionalEditable) {
-		nonTransactionalHighlight.paint();
-	}
-
-	digitizeDivTag.write(smPArray.join(""));
-}
-
-function evaluateDashes(start, end, memberIndex, geomIndex, ringIndex, pointIndex){
-	if (pointIndex == undefined) {
-		pointIndex = ringIndex;
-		ringIndex = undefined;
-	}
-	
-	var strArray = [];
-	var delta = new parent.Point(end.x - start.x, end.y - start.y);
-	var lastGeomIsComplete = d.getGeometry(-1,-1).isComplete(); 
-	 
-	var vecLength = start.dist(end);
-	var n = Math.round(vecLength/dotDistance);
-	if (n > 0) {
-		var step = delta.dividedBy(n);
-	}
-	var lineCenter = Math.round(n/2);
-	
-	for(var i=1; i < n; i++){
-		var x = Math.round(start.x + i * step.x) - 2;
-		var y = Math.round(start.y + i * step.y) - 2;
-		if(x >= 0 && x <= mod_digitize_width && y >= 0 && y <= mod_digitize_height){
-			if (memberIndex == d.count()-1 && !lastGeomIsComplete) {
-				strArray[strArray.length] = "<div class='lp' style='top:"+y+"px;left:"+x+"px;z-index:"+digitizeTransactionalZIndex+";background-color:"+linepointColor+"' ";
-			}
-			else {
-				strArray[strArray.length] = "<div class='lp' style='top:"+y+"px;left:"+x+"px;z-index:"+digitizeTransactionalZIndex+";' onmousedown='return false;' ";
-			}
-			if(mod_digitizeEvent == button_insert) {
-				strArray[strArray.length] = "onmouseover='window.frames[\""+mod_digitize_elName+"\"].convertLinepointToBasepoint(this,"+memberIndex+","+geomIndex+","+ringIndex+","+pointIndex+")'";
-			}
-			strArray[strArray.length] = ">";
-			if(measuring) {
-				if(i == lineCenter) {
-					strArray[strArray.length] = "<p class='measure'>"+d.getGeometry(memberIndex, geomIndex).getDist(pointIndex-1, 2)+"</p>";
-				}
-			}
-			strArray[strArray.length] = "</div>";
-		}
-	}
-	return strArray.join("");
-}
-
-function isTransactional(geom) {
-//	alert(typeof(geom.wfs_conf) + " " + geom.wfs_conf + " " + wfsConf.length);
-	if (typeof(geom.wfs_conf) == 'number') {
-		if (geom.wfs_conf >= 0 && geom.wfs_conf < wfsConf.length) {			
-			var isTransactionalGeom = (wfsConf[geom.wfs_conf]['wfs_transaction'] != "" && wfsConf[geom.wfs_conf]['fkey_featuretype_id'] != "");
-			if (isTransactionalGeom) {
-				return true;
-			}
-			else{
-				return false;
-			}
-		}
-	}
-	else if (typeof(geom.wfs_conf) == 'undefined') {
-		return true;
-	}
-}
-
-function isValidWfsConfIndex (wfsConf, wfsConfIndex) {
-	return (typeof(wfsConfIndex) == "number" && wfsConfIndex >=0 && wfsConfIndex < wfsConf.length);
-}
-
-function getName (geom) {
-	wfsConfId = geom.wfs_conf;
-	wfsConf = parent.get_complete_wfs_conf();
-	if (isValidWfsConfIndex(wfsConf, wfsConfId)) {
-		var resultName = "";
-		for (var i = 0 ; i < wfsConf[wfsConfId]['element'].length ; i++) {
-			if (wfsConf[wfsConfId]['element'][i]['f_show'] == 1) {
-				var attrValue = geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']);
-				if(attrValue === false) {
-					resultName += "";
-				}
-				else{
-					resultName += geom.e.getElementValueByName(wfsConf[wfsConfId]['element'][i]['element_name']) + " ";					
-				}	
-			}
-		}
-		if (resultName == "") {
-			resultName = wfsConf[wfsConfId]['g_label'];
-		}
-		return resultName;
-	}
-	else if (geom.e.getElementValueByName("name")) {
-		return geom.e.getElementValueByName("name");
-	}
-	else {
-		return msgObj.digitizeDefaultGeometryName;
-	}
-}
-
-function updateListOfGeometries(){
-	var listOfGeom = "<ul>";
-	if (d.count() > 0) {
-		wfsConf = parent.get_complete_wfs_conf();
-		//for (var i = 0 ; i < d.count(); i ++) {
-		for (var i = d.count()-1 ; i >= 0; i--) {
-//			if (d.get(i).get(-1).isComplete() && (nonTransactionalEditable || isTransactional(d.get(i)))) {
-			if ((nonTransactionalEditable || isTransactional(d.get(i)))) {
-	
-				// for the geometries from a kml, there is another save dialogue
-				if (d.get(i).isFromKml()) {
-					// if the kml is in the db (id = id in database)
-					if (d.get(i).e.getElementValueByName("Mapbender:id")) {
-						// button: geometry information, update kml
-						listOfGeom += "<li>";
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_wfs_src+"' title='"+msgObj.buttonDig_wfs_title+"' onclick='showWfsKml("+i+")'>";
-					}
-				}
-				else {
-					// button: geometry information, save, update, delete
-					listOfGeom += "<li>";
-					if (d.get(i).get(-1).isComplete() && wfsExistsForGeom(d.get(i), wfsConf)) {
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_wfs_src+"' title='"+msgObj.buttonDig_wfs_title+"' onclick='showWfs("+i+")'>";
-					}
-
-					// button: remove this geometry
-					listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+msgObj.buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.del("+i+");executeDigitizeSubFunctions();'>";
-
-					// button clone this geometry
-					if (d.get(i).get(-1).isComplete() && addCloneGeometryButton === true) {
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_clone_src+"' title='"+msgObj.buttonDig_clone_title+"' onclick='d.addCopy(d.get("+i+"));d.get(-1).e.delElement(\"fid\");eventCloseGeometry.trigger({index: d.count() - 1, geometry: d.get(-1)});executeDigitizeSubFunctions();'>";
-					}
-				}
-					
-			/*	// button: remove geometry from database
-				if (d.get(i).e.getElementValueByName('fid')) {
-					listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_removeDb_src + 
-						"' title='"+msgObj.buttonDig_removeDb_title + 
-						"' onclick=\"deleteFeature("+i+")\">";
-				}
-				*/
-				listOfGeom += "<div class='digitizeGeometryListItem' onmouseover='parent.mb_wfs_perform(\"over\",d.get("+i+"),\""+geomHighlightColour+"\");' ";
-				listOfGeom += " onmouseout='parent.mb_wfs_perform(\"clean\",d.get("+i+"),\""+geomHighlightColour+"\")' ";
-				listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.get("+i+"),\""+geomHighlightColour+"\");' ";
-				var geomName = getName(d.get(i)); 
-				var currentGeomType;
-				if (d.get(i).geomType == parent.geomType.polygon) {
-					currentGeomType = msgObj.messageDescriptionPolygon;
-				}
-				else if (d.get(i).geomType == parent.geomType.line) {
-					currentGeomType = msgObj.messageDescriptionLine;
-				}
-				else if (d.get(i).geomType == parent.geomType.point) {
-					currentGeomType = msgObj.messageDescriptionPoint;
-				}
-				var multi = "";
-				if (d.get(i).count() > 1) {
-					multi = "multi";
-				}
-				listOfGeom += ">" + htmlspecialchars(geomName) +" (" + multi + currentGeomType + ")</div>";
-				
-				// multigeometries
-				listOfGeom += "<ul>";
-				for (var j = 0; j < d.get(i).count(); j++) {
-					var currentGeom = d.get(i).get(j);
-					if (d.get(i).count() > 1 || (d.get(i).geomType == geomType.polygon && 
-						d.get(i).get(j).innerRings && 
-						d.get(i).get(j).innerRings.count() > 0)) {
-						listOfGeom += "<li>";
-						listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+msgObj.buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.get("+i+").del(" + j + ");executeDigitizeSubFunctions();'>";
-						listOfGeom += "<div class='digitizeGeometryListItem' onmouseover='parent.mb_wfs_perform(\"over\",d.get("+i+").get("+j+"),\""+geomHighlightColour+"\");' ";
-						listOfGeom += " onmouseout='parent.mb_wfs_perform(\"clean\",d.get("+i+").get("+j+"),\""+geomHighlightColour+"\")' ";
-						listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.get("+i+").get("+j+"),\""+geomHighlightColour+"\");' ";
-						listOfGeom += ">" + currentGeomType + "#" + (j+1) +"</div></li>";
-					}
-					if (d.get(i).geomType == geomType.polygon && 
-						d.get(i).get(j).innerRings && 
-						d.get(i).get(j).innerRings.count() > 0) {
-						listOfGeom += "<ul>";
-						for (var k = 0; k < d.get(i).get(j).innerRings.count(); k++) {
-							var currentRing = d.get(i).get(j).innerRings.get(k);
-							listOfGeom += "<li>";
-							listOfGeom += "<img src = '"+buttonDig_imgdir+buttonDig_remove_src+"' title='"+msgObj.buttonDig_remove_title+"' onclick='parent.mb_disableThisButton(mod_digitizeEvent);d.get("+i+").get(" + j + ").innerRings.del(" + k + ");executeDigitizeSubFunctions();'>";
-							listOfGeom += "<div class='digitizeGeometryListItem' onmouseover='parent.mb_wfs_perform(\"over\",d.getGeometry("+i+","+j+").innerRings.get(" + k + "),\""+geomHighlightColour+"\");' ";
-							listOfGeom += " onmouseout='parent.mb_wfs_perform(\"clean\",d.getGeometry("+i+","+j+").innerRings.get(" + k + "),\""+geomHighlightColour+"\")' ";
-							listOfGeom += " onclick='parent.mb_wfs_perform(\"click\",d.getGeometry("+i+","+j+").innerRings.get(" + k + "),\""+geomHighlightColour+"\");' ";
-							listOfGeom += ">inner ring #" + (k+1) +"</div></li>";
-							
-						}
-						listOfGeom += "</ul>";
-					}
-				}
-				listOfGeom += "</ul>";
-				listOfGeom += "</li>";
-			}
-		}
-	}
-	listOfGeom += "<ul>";
-	parent.writeTag(mod_digitize_elName,"listOfGeometries",listOfGeom);
-}
-// --- display (end) -----------------------------------------------------------------------------------------
-// -----------------------------------------------------------------------------------------------------------
-
-
-// -----------------------------------------------------------------------------------------------------------
-// --- wfs window (begin) -----------------------------------------------------------------------------------------
-
-// -----------------------------------------------------------------------------------------------------------
-// --- wfs window form check (begin) -----------------------------------------------------------------------------------------
-
-function formCorrect(doc, formId) {
-	var isCorrect = true;
-	var errorMessage = "";
-	var result;
-	var form = doc.getElementById(formId);
-	
-	result = mandatoryFieldsNotEmpty(doc, form);
-	isCorrect = isCorrect && result.isCorrect;
-	errorMessage += result.errorMessage;
-
-	//select box is now checked within function mandatoryFieldsNotEmpty
-	//result = validBoxEntrySelected(form);
-	//isCorrect = isCorrect && result.isCorrect;
-	//errorMessage += result.errorMessage;
-
-	result = dataTypeIsCorrect(doc, form);
-	isCorrect = isCorrect && result.isCorrect;
-	errorMessage += result.errorMessage;
-
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-
-function validBoxEntrySelected(form){
-	var isCorrect = true;
-	var errorMessage = "";
-	var name = "";
-	for (var i = 0; i < form.childNodes.length && isCorrect; i++) {
-		if (form.childNodes[i].nodeName.toUpperCase() == "SELECT") {
-			name += form.childNodes[i].name;
-			if (parseInt(form.childNodes[i].selectedIndex) == 0 && $(form.childNodes[i]).hasClass("mandatory")) {
-				var msg = name + ": " + msgObj.messageSelectAnOption + "\n"
-				var categ = form.childNodes[i].getAttribute("category");
-				if (typeof(categ) != "undefined") {
-					msg = categ + " => " + msg;
-				}
-				return {"isCorrect":false, "errorMessage":msg};
-			}
-		}
-		else if (form.childNodes[i].hasChildNodes()) {
-			var res = validBoxEntrySelected(form.childNodes[i]);
-			errorMessage = res.errorMessage + errorMessage;
-			isCorrect = res.isCorrect;
-			
-		}
-	}
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-
-function mandatoryFieldsNotEmpty(doc, node){
-	var isCorrect = true;
-	var errorMessage = "";
-	
-	var $nodeArray = $(".mandatory", doc);
-	for (var i = 0; i < $nodeArray.size() && isCorrect; i++) {
-		var $currentNode = $nodeArray.eq(i);
-		var tagName = $currentNode.get(0).nodeName.toUpperCase();
-		if (tagName == "INPUT" && $currentNode.val() == "") {
-			isCorrect = false;
-			errorMessage += "'"+ $currentNode.attr("name") +"': "+ msgObj.messageErrorFieldIsEmpty +"\n";
-		}
-		
-		if (tagName == "SELECT" && parseInt($currentNode.get(0).selectedIndex) == 0) {
-			isCorrect = false;
-			errorMessage += "'"+ $currentNode.attr("name") +"': "+ msgObj.messageErrorFieldIsEmpty +"\n";
-		}
-	}
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-
-function isInteger(str) {
-	if (str.match(/^[0-9]{0,8}$/) || str == "" ) { //will be better ;-)
-		return true;
-	}
-	return false;
-}
-
-function isFloat(str) {
-	if (isInteger(str)) {
-		return true;
-	}
-	if (str.match(/^\d+\.\d+$/)) {
-		return true;
-	}
-	return false;
-}
-
-function replaceCommaByDecimalPoint(str) {
-	var patternString = ",";
-	var pattern = new RegExp(patternString);
-	while (str.match(pattern)) {
-		str = str.replace(pattern, ".");
-	}
-	return str;
-}
-
-function dataTypeIsCorrect(doc, node){
-	var isCorrect = true;
-	var errorMessage = "";
-	
-	nodeArray = doc.getElementsByName("datatype");
-	for (var i = 0; i < nodeArray.length ; i++) {
-		if (nodeArray[i].nodeName.toUpperCase() == "INPUT" && nodeArray[i].type == "hidden" && nodeArray[i].id.substr(0,9) == "datatype_") {
-			var nodeId = nodeArray[i].id.substr(9);
-			var nodeValue = doc.getElementById(nodeId).value;
-			
-			if (nodeArray[i].value == "int") {
-				if (!isInteger(nodeValue)) {
-					isCorrect = false;
-					errorMessage += "'"+doc.getElementById(nodeId).name+"': "+ msgObj.messageErrorNotAnInteger + "\n";
-				}
-			}
-			else if (nodeArray[i].value == "double" || nodeArray[i].value == "float") {
-				nodeValue = replaceCommaByDecimalPoint(nodeValue);
-				if (!isFloat(nodeValue)) {
-					isCorrect = false;
-					errorMessage += "'"+doc.getElementById(nodeId).name+"': "+ msgObj.messageErrorNotAFloat + "\n";
-				}
-				else {
-					doc.getElementById(nodeId).value = nodeValue;
-				}
-			}
-		}
-	}
-	return {"isCorrect":isCorrect, "errorMessage":errorMessage};
-}
-// --- wfs window form check (end) -----------------------------------------------------------------------------------------
-// -----------------------------------------------------------------------------------------------------------
-
-function getAvailableWfsForGeom(geom, wfsConf) {	
-	var wfsConfIndices = [];
-	
-	for (var attr in wfsConf) {
-		var isTrans = (wfsConf[attr]['wfs_transaction'] != "");
-		if (!isTrans) {
-			continue;
-		}
-		/*
-		if (isValidWfsConfIndex(wfsConf, parseInt(geom.wfs_conf))) {
-			if (parseInt(geom.wfs_conf) == parseInt(attr)) {
-				wfsConfIndices.push(attr);
-			}
-		}
-		else {
-		*/
-			for (var elementIndex = 0; elementIndex < wfsConf[attr]['element'].length ; elementIndex++) {
-				var isGeomColumn = (parseInt(wfsConf[attr]['element'][elementIndex]['f_geom']) == 1); 
-				if (isGeomColumn) {
-					var isMultiPolygon = (
-						geom.geomType == parent.geomType.polygon && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiPolygonPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiSurfacePropertyType'
-						)
-					);
-					var isPolygon = (
-						geom.geomType == parent.geomType.polygon && 
-						geom.count() == 1 && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'PolygonPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'SurfacePropertyType'
-						)
-					);
-					var isMultiLine = (
-						geom.geomType == parent.geomType.line && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiLineStringPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiCurvePropertyType'
-						)
-					);
-					var isLine = (
-						geom.geomType == parent.geomType.line && 
-						geom.count() == 1 && 
-						(
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'LineStringPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType' ||
-						wfsConf[attr]['element'][elementIndex]['element_type'] == 'CurvePropertyType'
-						)
-					);
-					var isPoint = (geom.geomType == parent.geomType.point && wfsConf[attr]['element'][elementIndex]['element_type'] == 'PointPropertyType');
-					var isMultiPoint = (geom.geomType == parent.geomType.point && wfsConf[attr]['element'][elementIndex]['element_type'] == 'MultiPointPropertyType');
-//					alert(isMultiPolygon + " " + isPolygon + " " + isMultiLine + " " + isLine + " " + isPoint);
-					if (isMultiPolygon || isPolygon || isMultiLine || isLine || isMultiPoint || isPoint || wfsConf[attr]['element'][elementIndex]['element_type'] == 'GeometryPropertyType') {
-						
-						wfsConfIndices.push(attr);
-					}
-				}
-			}
-		//}	
-	}
-	return wfsConfIndices;
-}
-function wfsExistsForGeom(geom, wfsConf) {
-	wfsConfIndices = getAvailableWfsForGeom(geom, wfsConf);
-//	alert(wfsConfIndices.join(","));
-	if (wfsConfIndices.length > 0) {
-		return true;
-	}
-	return false;
-}
-
-
-function showWfsKml (geometryIndex) {
-	wfsKmlWindow = open("", "wfsattributes", "width="+wfsWindowWidth+", height="+wfsWindowHeight+", resizable, dependent=yes, scrollbars=yes");
-	wfsKmlWindow.document.open("text/html");
-	wfsKmlWindow.document.writeln("<html><head><meta http-equiv='Content-Type' content='text/html; charset=<?php echo CHARSET;?>'></head><body><div id='linkToKml'></div><div id='elementForm'></div></body></html>");
-	wfsKmlWindow.document.close();
-	
-	str = "<form id = 'wmsKmlForm' onsubmit='return false;'><table>";
-
-	var properties = d.get(geometryIndex).e;
-	var propertyCount = properties.count();	
-	for (var i = 0; i < propertyCount; i++) {
-		var key = properties.getName(i);
-		var value = properties.getValue(i);
-		var expr = /Mapbender:/;
-		if (!key.match(expr)) {
-			str += "\t\t<tr>\n";
-			str += "\t\t\t<td>\n\t\t\t\t<div>" + key + "</div>\n\t\t\t</td>\n";
-			str += "\t\t\t<td>\n";
-			str += "\t\t\t\t<input id = 'wmskml_" + i + "' name='" + key + "' type='text' size=20 value = '" + value + "'>\n";
-			str += "\t\t\t</td>\n\t\t</tr>\n";
-		}
-	}	
-
-	var updateOnClickText = "this.disabled=true;window.opener.updateKmlInDb("+geometryIndex+", 'update');";
-	var deleteOnClickText = "var deltrans = confirm('This geometry will be removed from the KML.');";
-	deleteOnClickText += "if (deltrans){";
-	deleteOnClickText += "this.disabled=true;window.opener.updateKmlInDb("+geometryIndex+", 'delete')}";
-	
-	str += "\t\t\t<td><input type='button' name='updateButton' value='Update' onclick=\""+updateOnClickText+"\"/></td>\n";
-// delete button not yet implemented
-//	str += "\t\t\t<td><input type='button' name='deleteButton' value='Delete' onclick=\""+deleteOnClickText+"\"/></td>\n";
-	str += "\t\t\t<td><input type='button' name='abortButton' value='Abort' onclick=\"window.close();\" /></td>\n";
-
-	str += "\t\t</tr>\n";
-	str += "\t</table>\n";
-	str += "</form>\n";
-
-	wfsKmlWindow.document.getElementById("elementForm").innerHTML = str;
-}
-
-
-function stripslashes (str) {
-    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
-    // +   improved by: Ates Goral (http://magnetiq.com)
-    // +      fixed by: Mick at el
-    // +   improved by: marrtins    
-	// +   bugfixed by: Onno Marsman
-    // +   improved by: rezna
-    // +   input by: Rick Waldron
-    // +   reimplemented by: Brett Zamir (http://brett-zamir.me)
-    // +   input by: Brant Messenger (http://www.brantmessenger.com/)    
-	// +   bugfixed by: Brett Zamir (http://brett-zamir.me)
-    // *     example 1: stripslashes('Kevin\'s code');
-    // *     returns 1: "Kevin's code"
-    // *     example 2: stripslashes('Kevin\\\'s code');
-    // *     returns 2: "Kevin\'s code"    
-	return (str+'').replace(/\\(.?)/g, function (s, n1) {
-        switch (n1) {
-            case '\\':
-                return '\\';
-            case '0':                
-				return '\u0000';
-            case '':
-                return '';
-            default:
-                return n1;        
-		}
-    });
-}
-
-function deleteFeature (geometryIndex) {
-	var res = true;	
-	res = parent.Mapbender.modules[mod_digitize_elName].events.clickDelete.trigger({
-		geometryIndex: geometryIndex,
-		feature: d.get(geometryIndex)
-	});
-	if (res === false) {
-		return;	
-	}
-	var deltrans = confirm(msgObj.messageConfirmDeleteGeomFromDb);
-	if (deltrans) {
-		dbGeom('delete', geometryIndex);
-	};
-
-}
-
-//
-// this method opens a new window and displays the attributes in wfs_conf
-//
-function showWfs(geometryIndex) {
-	var res = true;	
-	res = parent.Mapbender.modules[mod_digitize_elName].events.openDialog.trigger({
-		geometryIndex: geometryIndex,
-		feature: d.get(geometryIndex)
-	}, "AND");
-	if (res === false) {
-		return;	
-	}
-
-	wfsConf = parent.get_complete_wfs_conf();
-
-	if(typeof wfsWindow != 'undefined') {
-		wfsWindow.close();
-	}
-	
-	wfsWindow = open("", "wfsattributes", "width="+wfsWindowWidth+", height="+wfsWindowHeight+", resizable, dependent=yes, scrollbars=yes");
-	wfsWindow.document.open("text/html");
-	setTimeout(function () {
-		wfsWindow.focus();
-	}, 100);
-	
-	var str = "";
-	var strStyle = "";
-	var defaultIndex = -1;
-
-	str += "<form id='wfs'>\n";
-
-	//
-	// 1. add select box 
-	//
-
-	var onChangeText = "document.getElementById('elementForm').innerHTML = ";
-	onChangeText += "window.opener.buildElementForm(this.value, " + geometryIndex + ");";
-	onChangeText += "window.opener.setWfsWindowStyle(this.value);";
-
-	var datePickerText = "$('.hasdatepicker').each(function () { " + 
-		"var data = $.parseJSON(window.opener.stripslashes($(this).attr('data'), true));" +
-		"var defaults = {};" +
-		"var settings = $.extend({}, defaults, data);" + 
-		/*"$.datepicker.regional['de'] = {
-		closeText: 'schließen',
-		prevText: '&#x3c;zurück',
-		nextText: 'Vor&#x3e;',
-		currentText: 'heute',
-		monthNames: ['Januar','Februar','März','April','Mai','Juni',
-		'Juli','August','September','Oktober','November','Dezember'],
-		monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
-		'Jul','Aug','Sep','Okt','Nov','Dez'],
-		dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
-		dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
-		dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
-		weekHeader: 'Wo',
-		dateFormat: 'dd.mm.yy',
-		firstDay: 1,
-		isRTL: false,
-		showMonthAfterYear: false,
-		yearSuffix: ''};
-*/
-		//"$(this).datepicker.setDefaults($.datepicker.regional['de']);" +
-		"$(this).datepicker({dateFormat: 'yy-mm-dd', changeYear: true, yearRange: '1950:2050',monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa']});" + 
-		"});";
-	
-	onChangeText += datePickerText;
-
-	
-	var uploaderText = 
-		"deleteUploadedFile = function (domNode) {" + 
-			"$(domNode).siblings('input').val('');" + 
-			"$(domNode).siblings('a').remove();" + 
-			"$(domNode).remove();" + 
-		"};" + 
-		"var linkAndDeleteButtonHtml = '<a target=\\\'_blank\\\' title=\\\'show uploaded file\\\' " + 
-			"href=\\\'#\\\'>Show file</a>" + 
-			"<img src=\\\'../img/button_digitize/geomRemove.png\\\' " + 
-			"title=\\\'Delete uploaded file\\\' alt=\\\'Delete uploaded file\\\' " +  
-			"onclick=\\\'deleteUploadedFile(this);\\\' " + 
-			"style=\\\'cursor:pointer\\\'/>';" + 
-		"$('.upload').each(function () { " + 
-		"var $this = $(this).upload({ "+
-			"callback: function(result,stat,msg){"+
-				"if(stat !== true){alert(msg);}"+
-				"else{" + 
-					"$this.prev().val(result.filename);" +
-					"if ($this.siblings('a').size() === 0) {" + 
-						"$this.parent().prepend(linkAndDeleteButtonHtml);" + 
-					"}\n" +
-					"$this.siblings('a').attr('href', result.filename);" + 
-				"}" + 
-			"}" + 
-		"});" + 
-	"});";
-	
-	onChangeText += uploaderText;
-	
-	str += "\t<select name='wfs' size='" + wfsConf.length + "'";
-	str += " onChange=\""+ onChangeText +"\"";
-	str += ">\n\t\t";
-
-	var wfsConfIndices = getAvailableWfsForGeom(d.get(geometryIndex), wfsConf);
-	var selected = false;
-	// set the current wfs_conf as the selected
-	// if wfs_conf is not yet set (for example when creating a new feature, just select the first one)
-	var selectedIndex = d.get(geometryIndex).wfs_conf || wfsConfIndices[0];
-	for (var i = 0; i < wfsConfIndices.length ; i++) {
-		for (var j in wfsConf[i].element){
-
-		}
-		str += "<option value='" + wfsConfIndices[i] + "'";
-		if (wfsConfIndices[i] == selectedIndex ) {
-			str += " selected";
-			selected = true;
-			defaultIndex = parseInt(wfsConfIndices[i]);
-		}
-		str += ">" + wfsConf[wfsConfIndices[i]]['wfs_conf_abstract'];
-		str += "</option>\n\t\t";
-	}
-
-	
-	str += "</select>\n\t\t</form>\n\t";
-	
-	var elForm = "";
-	if (defaultIndex != -1) {
-		elForm = buildElementForm(defaultIndex, geometryIndex);
-
-		var headStr = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=<?php echo CHARSET;?>'><style type='text/css'>" + wfsConf[defaultIndex]['g_style'] + "</style>";
-		headStr += '<link rel="stylesheet" type="text/css" href="../extensions/jquery-ui-1.7.2.custom/development-bundle/themes/base/ui.all.css" />';
-		headStr += '<style type="text/css">'
-		headStr += 'a.tabheader { margin: 0 3px 0 0;float:left;padding: 1px 5px;text-decoration: none;color: #999;background-color: #F5F5F5;border: 1px solid #999;border-bottom: 0; }';
-		headStr += 'a.tabheader.active { float:left;color: #666;background-color: transparent;border-color: #666;border-bottom: 0px solid #FFF;cursor: default; }';
-		headStr += 'div.tabcontent { visibility: hidden;display: none;clear:left;margin: 1px 0 5px 0;padding: 5px;border: 1px solid #666; }';
-		headStr += 'div.helptext { visibility: hidden;display: none;position: absolute;top: 5%;left: 5%;width: 85%;padding: 5px;color: #000;background-color: #EEEEEE;border: 1px solid #000;-moz-border-radius: 10px;-webkit-border-radius: 10px;}';
-		headStr += 'div.helptext p { margin: 0 ; }';
-		headStr += 'div.helptext p a.close { display: block;margin: 5px auto;text-align: center; }';
-		headStr += 'a img { vertical-align: middle;border: 0; }';
-		headStr += '.mandatory { border:1px solid red; }';
-		headStr += '</style>';
-		headStr += '</head><body onload="window.opener.toggleTabs(\''+initialTab+'\'); ' + datePickerText + uploaderText + '">';
-		wfsWindow.document.write(headStr);
-	}
-	else {
-		var headStr = "<html><head><style type='text/css'></style></head><body>";
-		wfsWindow.document.write(headStr);
-	}
-	str += "<div id='elementForm'>\n" + elForm + "</div>";
-	str += "<script type='text/javascript' src='../extensions/jquery-ui-1.7.2.custom/js/jquery-1.3.2.min.js'><\/script>";
-	str += "<script type='text/javascript' src='../extensions/jquery-ui-1.7.1.w.o.effects.min.js'><\/script>";
-	str += "<script type='text/javascript' src='../plugins/jq_upload.js'><\/script>";
-	str += "<script type='text/javascript' src='../extensions/jqjson.js'><\/script>";
-	str += "</body></html>";
-	wfsWindow.document.write(str);
-	wfsWindow.document.close();
-
-//	toggleTabs(initialTab);
-
-}
-
-function setWfsWindowStyle(wfsConfIndex) {
-	wfsWindow.document.getElementsByTagName("style")[0].innerHTML = wfsConf[wfsConfIndex]['g_style'];
-}
-
-function prepareSelectBox (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<select";
-	var pattern = new RegExp(patternString);
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	if (isMandatory) {
-		// set border if mandatory
-		classString += " mandatory";
-	}
-	classString = (classString !== "") ? " class='"+classString+"' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-
-	// set name of select box to elementlabel
-	patternString = "name\s*=\s*\\*'\w+\\*'";
-	pattern = new RegExp(patternString);
-	if (pattern.test(formElementHtml)) {
-		formElementHtml = formElementHtml.replace(pattern, "name='" + elementLabel + "'");
-	}
-	else {
-		patternString = "<select";
-		pattern = new RegExp(patternString);
-		formElementHtml = formElementHtml.replace(pattern, "<select name='" + elementLabel + "'");
-	}
-	
-	// preselect the correct entry of the box
-	patternString = "option( )+value( )*=( )*('|\")"+elementValue+"('|\")";
-	pattern = new RegExp(patternString);
-	var patternStringForReplace = "option value = '"+elementValue+"'";
-	formElementHtml = formElementHtml.replace(pattern, patternStringForReplace+" selected");
-	return formElementHtml;
-}
-
-function prepareDatepicker (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<input";
-	var pattern = new RegExp(patternString);
-		
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	if (isMandatory) {
-		// set border if mandatory
-		classString += " mandatory";
-	}
-	classString = (classString !== "") ? " class='"+classString+" hasdatepicker' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-
-	// set name of select box to elementlabel
-	patternString = "name\s*=\s*\\*('|\")\w+\\*('|\")";
-	pattern = new RegExp(patternString);
-	if (pattern.test(formElementHtml)) {
-		formElementHtml = formElementHtml.replace(pattern, "name='" + elementLabel + "'");
-	}
-	else {
-		patternString = "<input";
-		pattern = new RegExp(patternString);
-		formElementHtml = formElementHtml.replace(pattern, "<input name='" + elementLabel + "'");
-	}
-	
-	// preselect the correct entry of the box
-	patternString = "<input";
-	pattern = new RegExp(patternString);
-	formElementHtml = formElementHtml.replace(pattern, patternString + " value='"+elementValue+"'");
-
-	return formElementHtml;
-}
-
-function prepareTextArea (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<textarea";
-	var pattern = new RegExp(patternString);
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	if (isMandatory) {
-		// set border if mandatory
-		classString += " mandatory";
-	}
-	classString = (classString !== "") ? " class='"+classString+"' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-
-	// set name of select box to elementlabel
-	patternString = "name\s*=\s*\\*('|\")\w+\\*('|\")";
-	pattern = new RegExp(patternString);
-	if (pattern.test(formElementHtml)) {
-		formElementHtml = formElementHtml.replace(pattern, "name='" + elementLabel + "'");
-	}
-	else {
-		patternString = "<textarea";
-		pattern = new RegExp(patternString);
-		formElementHtml = formElementHtml.replace(pattern, "<textarea name='" + elementLabel + "'");
-	}
-	
-	// preselect the correct entry of the box
-	patternString = "<\/textarea>";
-	pattern = new RegExp(patternString);
-	formElementHtml = formElementHtml.replace(pattern, elementValue + patternString);
-
-	return formElementHtml;
-}
-
-function prepareUploadField (formElementHtml, categoryName, isMandatory, elementLabel, elementValue, styleId) {
-	//var elementValue = "../tmp/1-14bbb3d6987e16.png";
-	var classString = (styleId == '0') ? "" : styleId;
-	var patternString = "<div";
-	var pattern = new RegExp(patternString);
-		
-	// set category
-	if (categoryName) {
-		formElementHtml = formElementHtml.replace(pattern, patternString + " category='" + categoryName + "' ");
-	}
-
-	classString = (classString !== "") ? " class='"+classString+"' " : " ";
-	formElementHtml = formElementHtml.replace(pattern, patternString + classString);
-	
-	// preselect the correct entry of the box
-	if(elementValue !== "") {
-		formElementHtml = "<a title='show uploaded file' target='_blank' href='" + 
-			elementValue + "'>Show file</a><img title='Delete uploaded file' " +
-			"alt='Delete uploaded file' style='cursor:pointer;' " +
-			"onclick='$(this).siblings(\"input\").val(\"\");" + 
-			"$(this).siblings(\"a\").remove();$(this).remove();' " + 
-			"src='../img/button_digitize/geomRemove.png'/>" + 
-			formElementHtml;
-	}
-	patternString = "class\s*=\s*['\"]hiddenUploadField['\"]";
-	pattern = new RegExp(patternString);
-	replaceString = "class='hiddenUploadField' " + " value='"+elementValue+"'";
-	formElementHtml = formElementHtml.replace(pattern, replaceString);
-	
-	return formElementHtml;
-}
-
-// Returns a form with the elements of a selected WFS grouped in tabs
-// (if the original WFS is the selected WFS, the values are set too)
-var initialTab = false;
-
-// returns a form with the elements of a selected wfs
-// (if the original wfs is the selected wfs, the values are set too)
-function buildElementForm(wfsConfIndex, memberIndex){
-	var featureTypeMismatch = false;
-	if (parseInt(d.get(memberIndex).wfs_conf) != parseInt(wfsConfIndex)) {featureTypeMismatch = true;}
-	var str = "";
-	var hasGeometryColumn = false;
-	var featureTypeArray = wfsConf[wfsConfIndex];
-	var memberElements;
-	var fid = false;
-
-	if (!featureTypeMismatch) {
-		memberElements = d.get(memberIndex).e;
-		fid = memberElements.getElementValueByName('fid');
-	}
-	
-	if (typeof(featureTypeArray["element"]) !== "undefined") {
-		featureTypeElementArray = featureTypeArray["element"];
-
-
-		// Check if there are categories given and
-		// build the form in tabs if necessary
-		var elementCategories = [];
-		for(var i = 0; i < featureTypeElementArray.length; i++){
-			var categoryName         = featureTypeElementArray[i].f_category_name;
-			var categoryNameIsUnique = true;
-			
-			if(categoryName.length === 0) { continue; }
-			
-			for(var j = 0; j < elementCategories.length; j++) {
-				if(elementCategories[j] == categoryName) {
-					categoryNameIsUnique = false;
-				}
-			}
-			
-			if(categoryNameIsUnique) {
-				elementCategories.push(categoryName);
-			}
-		}
-
-		str += "<form id='"+featureTypeElementFormId+"'>\n\t";
-		
-		var hasCategories = (elementCategories.length > 0);
-		if (hasCategories) {
-			elementCategories.sort();
-			
-			initialTab = elementCategories[0];
-			str +='<table><tr><td>';
-			for (var currentCategory = 0; currentCategory < elementCategories.length; currentCategory++) {
-				str += '<a href="#" id="tabheader_' + elementCategories[currentCategory] + '" class="tabheader" onclick="return window.opener.toggleTabs(\'' + elementCategories[currentCategory] + '\')">' + elementCategories[currentCategory] + '</a>';
-			}
-			str +='</td></tr></table>';
-		}
-			
-		for (var currentCategory = 0; currentCategory < elementCategories.length || !hasCategories; currentCategory++) {
-			if (hasCategories) {
-				str += '<div id="tab_' + elementCategories[currentCategory] + '" class="tabcontent">';
-			}
-			str += '<table>';
-
-			//
-			// 2. add rows to form 
-			//
-			for (var i = 0 ; i < featureTypeElementArray.length ; i++) {
-				var featureTypeElement = featureTypeElementArray[i];
-
-				var elementName = featureTypeElement['element_name'];
-				var elementType = featureTypeElement['element_type'];
-				var isEditable = (parseInt(featureTypeElement['f_edit']) == 1); 
-				var isMandatory = (parseInt(featureTypeElement['f_mandatory']) == 1); 
-				var isGeomColumn = (parseInt(featureTypeElement['f_geom']) == 1); 
-
-				if(hasCategories && featureTypeElement.f_category_name != elementCategories[currentCategory] && !isGeomColumn) {
-					continue;
-				}
-			
-
-				var elementLabelExists = (featureTypeElement['f_label'] != "");
-				var elementLabel = ""; 
-				if (elementLabelExists) {
-					elementLabel = featureTypeElement['f_label'];
-				}
-				var elementLabelStyle = featureTypeElement['f_label_id'];
-
-				if (!isGeomColumn) {
-					if (isEditable) {
-						str += "\t\t<tr>\n";
-						if(elementLabelExists) {
-							str += "\t\t\t<td>\n\t\t\t\t<div class = '"+elementLabelStyle+"'>" + elementLabel + "</div>\n\t\t\t</td>\n";
-							str += "\t\t\t<td>\n";
-						}
-						else {
-							str += '<td colspan="2">';
-						}
-
-						var elementValue = "";
-						if (!featureTypeMismatch) {
-							for (var j = 0 ; j < memberElements.count() ; j ++) {
-								if (memberElements.getName(j) == featureTypeElement['element_name']) {
-									elementValue = memberElements.getValue(j);
-								}
-							}
-						}
-						var formElementHtml = featureTypeElement['f_form_element_html']; 
-						if (!formElementHtml) {
-							var classString = (styleId == '0') ? "" : featureTypeElement['f_style_id'];
-							if (parseInt(featureTypeElement['f_mandatory']) == 1) {
-								classString += " mandatory";
-							}
-
-							classString = (classString !== "") ? " class='"+classString+"' " : " ";
-							
-							str += "\t\t\t\t<input id = 'datatype_mb_digitize_form_" + elementName + "' name='datatype' type='hidden' value = '" + elementType + "'>\n";
-							if (!hasCategories) {
-								str += "\t\t\t\t<input id = 'mb_digitize_form_" + elementName + "' name='" + elementLabel + "' type='text' "+classString+" size=20 value = '" + elementValue + "'>\n";
-							}
-							else {
-								str += "\t\t\t\t<input category='"+elementCategories[currentCategory]+"' id = 'mb_digitize_form_" + elementName + "' name='" + elementLabel + "' type='text' "+classString+" size=20 value = '" + elementValue + "'>\n";
-							}
-						}
-						else {
-							while (formElementHtml.match(/\\/)) {
-								formElementHtml = formElementHtml.replace(/\\/, "");
-							} 
-
-							var isMandatory = (parseInt(featureTypeElement['f_mandatory']) == 1);
-
-							var patternString = "<select";
-							pattern = new RegExp(patternString);
-							var styleId = featureTypeElement['f_style_id'];
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareSelectBox(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							var patternString = "hasdatepicker";
-							pattern = new RegExp(patternString);
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareDatepicker(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							var patternString = "<textarea";
-							pattern = new RegExp(patternString);
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareTextArea(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							var patternString = "upload";
-							pattern = new RegExp(patternString);
-							if (pattern.test(formElementHtml)) {
-								formElementHtml = prepareUploadField(formElementHtml, "", isMandatory, elementLabel, elementValue, styleId);
-							}
-							str += formElementHtml;
-						}
-						
-						if(featureTypeElement.f_helptext.length > 0) {
-							str += ' <a href="#" onclick="return window.opener.showHelptext(' + i + ')"><img src="../img/help.png" width="16" height="16" alt="?" /></a> ';
-							str += '<div id="helptext' +i+ '" class="helptext">';
-							str += '<p>';
-							str += featureTypeElement.f_helptext.replace(/(http:\/\/\S*)/g,'<a href="$1" target="blank">$1<\/a>');
-							str += '<a href="#" class="close" onclick="return window.opener.hideHelptext(' + i + ')">close</a>';
-							str += '</p>';
-							str += '</div>';
-						}
-						
-						str += "\t\t\t</td>\n\t\t</tr>\n";
-					}
-				}
-				else {
-					hasGeometryColumn = true;
-				}
-			}
-
-			str += '</table>';
-			if (hasCategories) {
-				str += '</div>';
-			}
-
-			// if no categories exist, the for loop would be 
-			// infinite without this break
-			if (!hasCategories) {
-				break;
-			}
-		}
-
-		//
-		// 3. add buttons "save", "update", "delete"
-		//
-		str += "<table>";
-		var isTransactional = (featureTypeArray['wfs_transaction']); 
-		if (isTransactional) {
-			str += "\t\t<tr>\n";
-
-			var options = ["insert", "update", "delete", "abort"];
-			for (var i = 0 ; i < options.length ; i++) {
-				var onClickText = "this.disabled=true;var result = window.opener.formCorrect(document, '"+featureTypeElementFormId+"');";
-				onClickText += 	"if (result.isCorrect) {";
-				onClickText += 		"window.opener.dbGeom('"+options[i]+"', "+memberIndex+"); ";
-//				onClickText +=      "window.close();";
-				onClickText += 	"}";
-				onClickText += 	"else {";
-				onClickText += 		"alert(result.errorMessage);this.disabled=false;"
-				onClickText += 	"}";
-				
-			//	if (options[i] == "insert" && hasGeometryColumn && (!fid || showSaveButtonForExistingGeometries)) {
-			//		str += "\t\t\t<td><input type='button' name='saveButton' value='"+msgObj.buttonLabelSaveGeometry+"' onclick=\""+onClickText+"\" /></td>\n";
-			//	}
-				
-				if (!featureTypeMismatch && fid) {
-					if (options[i] == "update" && hasGeometryColumn) {
-						str += "\t\t\t<td><input type='button' name='updateButton' value='"+msgObj.buttonLabelUpdateGeometry+"' onclick=\""+onClickText+"\"/></td>\n";
-					}
-				//	if (options[i] == "delete"){ 
-				//		var deleteOnClickText = "var deltrans = confirm('"+msgObj.messageConfirmDeleteGeomFromDb+"');";
-				//		deleteOnClickText += "if (deltrans){";
-				//		deleteOnClickText += onClickText + "}";
-				//		str += "\t\t\t<td><input type='button' name='deleteButton' value='"+msgObj.buttonLabelDeleteGeometry+"' onclick=\""+deleteOnClickText+"\"/></td>\n";
-				//	}
-				}
-				if (options[i] == "abort") {
-					str += "\t\t\t<td><input type='button' name='abortButton' value='"+msgObj.buttonLabelAbort+"' onclick=\"window.close();\" /></td>\n";
-				}
-			}
-			str += "\t\t</tr>\n";
-		}
-		str += "\t</table>\n";
-		str += "<input type='hidden' id='fid' value='"+fid+"'>";
-//			str += "<input type='text' name='mb_wfs_conf'>";
-		str += "</form>\n";
-	}
-	return str;
-}
-
-function dbGeom(type, m, callback, dbWfsConfId) {
-	if (typeof dbWfsConfId !== "undefined") {
-		d.get(m).wfs_conf = getJsWfsConfIdByDbWfsConfId(wfsConf, dbWfsConfId);
-		d.get(m).e = new parent.Wfs_element();
-	}
-
-	var hasFid = d.get(m).e.getElementValueByName("fid") !== false;
-
-	if (!hasFid) {
-		if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
-			d.get(m).wfs_conf = parseInt(wfsWindow.document.forms[0].wfs.options[wfsWindow.document.forms[0].wfs.selectedIndex].value);
-			d.get(m).e = new parent.Wfs_element();
-		}
-	}
-	else {
-		wfsConf = parent.get_complete_wfs_conf();
-	}
-	var myconf = wfsConf[d.get(m).wfs_conf];
-	
-	var mapObjInd = parent.getMapObjIndexByName(mod_digitize_target);
-
-	var proceed = true;
-	var patternString = parent.mb_mapObj[mapObjInd].epsg.toUpperCase();
-	var pattern = new RegExp(patternString);
-
-//	if(!myconf['featuretype_srs'].match(pattern)){
-//		proceed = confirm(msgObj.errorMessageEpsgMismatch + parent.mb_mapObj[mapObjInd].epsg + " / "+ myconf['featuretype_srs'] + ". Proceed?");
-//	}
-//	if (proceed) {
-		var fid = false;
-		var errorMessage = "";
-		if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed && (type === "insert" || type === "update")) {
-			myform = wfsWindow.document.getElementById(featureTypeElementFormId);
-		
-			for (var i=0; i<myform.length; i++){
-				if (myform.elements[i].id == "fid") {
-					fid = myform.elements[i].value;
-					if (fid == "false") {
-						fid = false;
-					}
-					else {
-						d.get(m).e.setElement('fid', fid);
-					}
-				}
-				
-				//else if (myform.elements[i].type == 'text' { //merging geoportal.rlp
-				else if (myform.elements[i].type == "text" || 
-						myform.elements[i].tagName.toUpperCase() == "TEXTAREA" ||
-						myform.elements[i].className == "hiddenUploadField"){
-					if (myform.elements[i].id) {
-						var elementId = String(myform.elements[i].id).replace(/mb_digitize_form_/, "");
-						var $dataTypeNode =  $(myform.elements[i]).prev("input");
-						// if featuretype element is numeric, do not send empty fields
-						if ($dataTypeNode.size() === 1 && -1 !== $.inArray($dataTypeNode.attr("value"), ["int", "double", "float", "decimal"])) {
-							if (myform.elements[i].value !== "") {
-								d.get(m).e.setElement(elementId, myform.elements[i].value);
-							}
-						}
-						else {
-							d.get(m).e.setElement(elementId, myform.elements[i].value);
-						}					
-					}
-					else {
-						errorMessage = msgObj.messageErrorFormEvaluation;
-					}
-				}
-				// selectbox
-				else if (typeof(myform.elements[i].selectedIndex) == 'number') {
-					if (myform.elements[i].id) {
-						var elementId = String(myform.elements[i].id).replace(/mb_digitize_form_/, "");
-						d.get(m).e.setElement(elementId, myform.elements[i].options[myform.elements[i].selectedIndex].value);
-					}
-					else {
-						errorMessage = msgObj.messageErrorFormEvaluation;
-					}
-				}
-			}
-		}
-		else {
-			fid = d.get(m).e.getElementValueByName('fid');
-		}
-//		str = parent.get_wfs_str(myconf, d, m, type, fid);
-
-		if (type === "insert" || type === "update") {
-			var module = parent.Mapbender.modules[mod_digitize_elName]; 
-			module.events.beforeUpdateOrInsert.trigger({
-				wfsConf: myconf,
-				geometryIndex: m,
-				feature: d.get(m),
-				'method' : type
-			});
-			if (type === "insert") {
-				module.events.beforeInsert.trigger({
-					wfsConf: myconf,
-					geometryIndex: m,
-					feature: d.get(m)
-				});
-			}
-			if (type === "update") {
-				module.events.beforeUpdate.trigger({
-					geometryIndex: m,
-					feature: d.get(m)
-				});
-			}
-
-			// can be set to true from outside to stop save action
-			// default is false, so nothing happens here
-			if (module.dataCheck) {
-				return;
-			}
-			
-			if (module.cancelAjaxRequest) {
-				alert(module.cancelAjaxRequestMessage);
-				module.cancelAjaxRequest = false;
-				module.cancelAjaxRequestMessage = "An error occured.";
-				return;
-			}
-		}
-		
-		// Extract the current, possibly new WfsConf
-                var newWfsConfId = d.get(m).wfs_conf
-		if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
-                    newWfsConfId = parseInt(wfsWindow.document.getElementById('wfs').wfs.value, 10);
-		}
-		var newWfsConf = wfsConf[newWfsConfId];
-		newWfsConfId = newWfsConf['wfs_conf_id'];
-
-		// Check each feature attribute if it is part of the WfsConf element type. If not, delete.
-		var e = d.get(m).e;
-		var elementsToDelete = [];
-		for(var i in e.name) {
-			// Never delete fid attribute
-                        if(e.name[i] === "fid") {
-                            continue;
-                        }
-                        
-                        var validElement = false;
-			for(var j in newWfsConf.element) {
-				if(e.name[i] == newWfsConf.element[j]['element_name'] && newWfsConf.element[j]['f_edit'] === "1") {
-					validElement = true;
-					break;
-				}
-			}
-			if(!validElement) {
-				elementsToDelete.push(i);
-			}
-		}
-		
-		// Delete. As the arrays shrink, the indices into the arrays are shrunk, too
-		for(var i in elementsToDelete) {
-			e.name.splice(elementsToDelete[i] - i, 1);
-			e.value.splice(elementsToDelete[i] - i, 1);
-		}
-		
-		var geoJson = d.featureToString(m);
-
-		parent.mb_ajax_post(
-			"../extensions/geom2wfst.php", 
-			{
-				'geoJson' : geoJson,
-				'method' : type,
-				'wfs_conf_id' : newWfsConfId
-			}, 
-			function(json,status){
-				var result = typeof(json) == 'object' ? json :  eval('('+json+')');
-				var success = result.success;
-				var fid = result.fid;
-				wfsSubWrite(m, type, status, success, fid, callback);
-			}
-		);
-//	}
-}
-
-function getJsWfsConfIdByDbWfsConfId (wfsConf, id) {
-	for (var i = 0; i < wfsConf.length; i++) {
-		if (parseInt(wfsConf[i].wfs_conf_id, 10) === id) {
-			return i
-		}
-	}
-	return null;
-}
-
-function wfsSubWrite(m, type, status, success, fid, callback) {
-	if (status == "success" && success) {
-		if (type == 'insert' && fid) {
-			d.get(m).e.setElement("fid", fid);
-		}
-		if (type == 'delete') {
-			parent.mb_disableThisButton(mod_digitizeEvent);
-			d.del(m);
-		}
-
-		var wfsWriteMessage = msgObj.messageSuccessWfsWrite;
-	}
-	else {
-		var wfsWriteMessage = msgObj.messageErrorWfsWrite;
-	} 
-
-	parent.Mapbender.modules[mod_digitize_elName].events.afterWfs.trigger({
-		feature: (type === 'delete') ? null : d.get(m),
-		type: type
-	});
-	
-	parent.mb_execWfsWriteSubFunctions();
-
-	if (updatePointGeometriesInstantly && 
-		status == "success" && 
-		success && 
-		typeof callback === "function") {
-			callback();		
-	}
-
-	if (typeof(wfsWindow) != 'undefined' && !wfsWindow.closed) {
-		if (status !== "success" || !success) {
-			wfsWindow.alert(wfsWriteMessage);
-		}
-		else {
-			parent.Mapbender.modules[mod_digitize_elName].events.geometryInserted.trigger({
-				fid: fid,
-				geometryIndex: m,
-				feature: d.get(m),
-				type: type
-			});
-			new parent.Mb_notice(wfsWriteMessage);
-		}
-		window.setTimeout("wfsWindow.close()",0);
-	}
-	else {
-		if (status !== "success" || !success) {
-			alert(wfsWriteMessage);
-		}
-		else {
-			parent.Mapbender.modules[mod_digitize_elName].events.geometryInserted.trigger({
-				fid: fid,
-				geometryIndex: m,
-				feature: d.get(m)
-			});
-			new parent.Mb_notice(wfsWriteMessage);
-		}
-	}
-	executeDigitizeSubFunctions();
-}
-
-function getMultiGeometryIdsByPlacemarkId (placemarkId) {
-	var multiGeometryIdArray = [];
-	for (var i = 0; i < d.count(); i++) {
-		var currentPlacemarkId = d.get(i).e.getElementValueByName("Mapbender:placemarkId");
-		if (currentPlacemarkId && currentPlacemarkId == placemarkId) {
-			multiGeometryIdArray.push(i);	
-		}
-	}	
-	return multiGeometryIdArray;
-}
-
-function updateKmlInDb (geometryIndex, command) {
-	var properties = d.get(geometryIndex).e;
-	var placemarkId = properties.getElementValueByName("Mapbender:placemarkId");
-	
-	var multiGeometryIdArray = getMultiGeometryIdsByPlacemarkId(placemarkId);
-
-	if (typeof(wfsKmlWindow) != 'undefined' && !wfsKmlWindow.closed) {
-
-		// update properties from form
-		myform = wfsKmlWindow.document.getElementById("wmsKmlForm");
-	
-		for (var i=0; i < myform.length; i++){
-			if (myform.elements[i].type == 'text' ){
-				if (myform.elements[i].id) {
-					var key = myform.elements[i].name;
-					var value = myform.elements[i].value;
-					
-					// update all geometries with the same placemark id
-					for (var j = 0; j < multiGeometryIdArray.length; j++) {
-						var currentProperties = d.get(j).e; 
-						currentProperties.setElement(key, value);
-					}
-				}
-			}
-		}
-		var kmlId = properties.getElementValueByName("Mapbender:id");
-	
-		parent.mb_ajax_post("../php/mod_updateKmlInDb.php", {command:command, kmlId:kmlId, placemarkId:placemarkId, geoJSON:d.placemarkToString(placemarkId)}, function(obj, status) {
-			if (obj === "1") {
-				wfsKmlWindow.alert("KML updated.");
-				var link = wfsKmlWindow.document.createElement("a");
-				link.href = "../php/mod_displayKML.php?kmlId=" + kmlId;
-				link.target = "_blank";
-				link.innerHTML = "KML";
-				wfsKmlWindow.document.getElementById('elementForm').innerHTML = "";
-				wfsKmlWindow.document.getElementById('linkToKml').appendChild(link);
-			}
-			else {
-				wfsKmlWindow.alert("Error, KML could not be updated. Check your error log.");
-			}
-		});
-	}
-}
-
-
-// --- wfs window (begin) -----------------------------------------------------------------------------------------
-// -----------------------------------------------------------------------------------------------------------
-
-function getMessages() {
-	parent.mb_ajax_json("../php/mod_digitize_messages.php", function(obj, status) {
-		msgObj = obj;
-		applyMessages();
-	});
-}
-
-function applyMessages() {
-	updateMeasureTag();
-	updateListOfGeometries();
-	updateButtons();
-}
-
-	</script>
-	</head>
-	<body onload="registerFunctions();displayButtons();">
-<!-- 		<img id="digitizeBack" style="position:absolute;top:28;left:84" src="../img/button_digitize/back_on.png" title="" onclick="digitizeHistory.back()" name="digitizeBack"/>
-		<img id="digitizeForward" style="position:absolute;top:28;left:112" src="../img/button_digitize/forward_on.png" title="" onclick="digitizeHistory.forward()" name="digitizeForward"/>
- -->
-		<div id='digButtons'></div>
-		<div style='position:absolute;top:60px;left:5px' id='listOfGeometries' class='digitizeGeometryList'></div>
-	</body>
-</html>

Deleted: trunk/mapbender/http/geoportal/mod_fplanid.php
===================================================================
--- trunk/mapbender/http/geoportal/mod_fplanid.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mod_fplanid.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,111 +0,0 @@
-<html>
-
-<head>
-
-<?php
-echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
-#require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
-#require_once(dirname(__FILE__)."/../classes/class_administration.php");
-#require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../classes/class_administration.php");
-require_once dirname(__FILE__) . "/../classes/class_Uuid.php";
-require_once dirname(__FILE__) . "/../classes/class_user.php";
-?>
-
-<title>FPlanID</title>
-
-<style type="text/css">
-body
-{
-font-family: Arial, Helvetica, sans-serif;	
-}
-h1
-{
-color: #A52A2A;
-font-family: arial, verdana, sans serif;
-font-style: italic;
-font-weight: bold;
-font-size: 175%;
-}
-</style>
-
-<script language="JavaScript" type="text/javascript">
-</script>
-
-</head>
-
-<body>
-
-<table>
-
-<?php
-
-$user = new User();
-$userId = $user->id;
-
-if (isset($_REQUEST["id"])) {
-	#---------------------------
-	$uuid = new Uuid();
-	$sql = "SELECT mb_user_name, mb_user_email FROM mapbender.mb_user WHERE mb_user_id=$1";
-	$v = array($userId);
-	$t = array('i');
-	$res = db_prep_query($sql, $v, $t);
-	while($row = db_fetch_array($res)) {
-		$mb_user_name=$row['mb_user_name'];
-		$mb_user_email=$row['mb_user_email'];
-	}
-
-	#-----------------------------
- 	$sql = "INSERT INTO fplan_id (fkey_mb_user_id, uuid, fkey_mb_user_name, fkey_mb_user_email) VALUES ($1, $2, $3, $4)";
-	//$sql = "INSERT INTO public.fplan_id (fkey_mb_user_id, uuid, fkey_mb_user_name, fkey_mb_user_email) VALUES (".$userId.", '".$uuid."', '".$mb_user_name."','".$mb_user_email."')";
-	#$e = new mb_exception("user_id: ".$_SESSION["mb_user_id"]);
-	#$e = new mb_exception("uuid: ".$uuid);
-	#$e = new mb_exception("mb_user_name: ".$mb_user_name);
-	#$e = new mb_exception("mb_user_email: ".$mb_user_email);
-	
-	$v = array($userId, $uuid, $mb_user_name, $mb_user_email);
-	$t = array('i','s','s','s');
-	$res = db_prep_query($sql, $v, $t);
-	#---------------------------------------------
-	$sql = "SELECT id FROM fplan_id WHERE uuid = $1";
-	$v = array($uuid);
-	$t = array('s');
-	$res = db_prep_query($sql, $v, $t);
-	while($row=db_fetch_array($res)) {
-		$id = $row['id'];
-	}
-}
-
-echo "<form  method=\"POST\" action=".$_SERVER['PHP_SELF'].">";
-echo " <h1>ID für einen Flächennutzungsplan</h1>";
-echo "<table border='0'>";
-
-echo "<tr height=50>";
-echo "<td>";
-echo "<font size=\"3\">Sie sind momentan eingeloggt als:    </font>";
-echo "<font size=\"3\"><b>".$_SESSION["mb_user_name"]."</b></font>";
-echo "</td>";
-echo "</tr>";
-
-echo "<tr height=50>";
-echo "<td>";
-echo "<font size=\"4\">Eine ID für einen Flächennutzungsplan anfordern   </font>";
-echo "<input type=\"submit\" name=\"id\" value=\"Anfordern\" onclick=\"return confirm('Wollen Sie wirklich eine ID für einen Flächennutzungsplan anfordern?');\">";
-echo "</td>";
-echo "</tr>";
-if (isset($_REQUEST["id"])) {
-	echo "<tr height=50>";
-	echo "<td>";
-	echo "<font size=\"4\">Die nächstfreie ID für einen Flächennutzungsplan lautet:   </font>";
-	echo "<font color=#A52A2A size=\"5\"><b>".$id."</b></font>";
-	echo "</td>";
-	echo "</tr>";
-}
-echo "</form>";	
-?>
-</table>
-</body>
-</html>
-
-

Deleted: trunk/mapbender/http/geoportal/mod_initialStartWmc_new.php
===================================================================
--- trunk/mapbender/http/geoportal/mod_initialStartWmc_new.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mod_initialStartWmc_new.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,146 +0,0 @@
-<?php
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../classes/class_json.php");
-$con = db_connect(DBSERVER,OWNER,PW);
-db_select_db(DB,$con);
-$languageCode = 'de';
-$maxObjects = 10;
-$maxAge = 7;
-$outputFormat = 'json';
-$hostName = $_SERVER['HTTP_HOST'];
-$pathToLoadScript = '/portal/karten.html?WMC=';
-$pathToMetadata = '/mapbender/php/mod_showMetadata.php?';
-$pathToPreview = '/mapbender/geoportal/mod_showPreview.php?';
-if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
-	$testMatch = $_REQUEST["outputFormat"];	
- 	if (!($testMatch == 'html' or $testMatch == 'json')){ 
-		echo 'outputFormat: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-		die(); 		
- 	}
-	$outputFormat = $testMatch;
-	$testMatch = NULL;
-}
-if (isset($_REQUEST["maxObjects"]) & $_REQUEST["maxObjects"] != "") {
-	$testMatch = $_REQUEST["maxObjects"];	
- 	$pattern = '/^[0-9]*$/';  
-        if (!preg_match($pattern,$testMatch)){
-                echo 'maxObjects: <b>'.$testMatch.'</b> is not valid.<br/>';
-                die();
-        }	
-	$maxObjects = (integer)$testMatch;
-	if ($maxObjects > 15){
-                echo '<b>'.$maxObjects.'</b> objects are too much, at maximum 15 ojects are allowed.<br/>';
-                die();
-        }	
-	$testMatch = NULL;
-}
-if (isset($_REQUEST["maxAge"]) & $_REQUEST["maxAge"] != "") {
-	$testMatch = $_REQUEST["maxAge"];	
- 	$pattern = '/^[0-9]*$/';  
-        if (!preg_match($pattern,$testMatch)){
-                echo 'maxAge: <b>'.$testMatch.'</b> is not valid.<br/>';
-                die();
-        }	
-	$maxAge = (integer)$testMatch;
-	$testMatch = NULL;
-}
-if (isset($_REQUEST["languageCode"]) & $_REQUEST["languageCode"] != "") {
-	//validate to wms, wfs
-	$testMatch = $_REQUEST["languageCode"];	
- 	if (!($testMatch == 'de' or $testMatch == 'en'  or $testMatch == 'fr')){ 
-		echo 'languageCode: <b>'.$testMatch.'</b> is not valid.<br/>'; 
-		die(); 		
- 	}
-	$languageCode = $testMatch;
-	$testMatch = NULL;
-}
-if (isset($_REQUEST["hostName"]) & $_REQUEST["hostName"] != "") {
-	//validate to some hosts
-	$testMatch = $_REQUEST["hostName"];	
-	//look for whitelist in mapbender.conf
-	$HOSTNAME_WHITELIST_array = explode(",",HOSTNAME_WHITELIST);
-	if (!in_array($testMatch,$HOSTNAME_WHITELIST_array)) {
-		echo "Requested hostname <b>".$testMatch."</b> not whitelist! Please control your mapbender.conf.";
-		$e = new mb_notice("Whitelist: ".HOSTNAME_WHITELIST);
-		$e = new mb_notice($testMatch." not found in whitelist!");
-		die(); 	
-	}
-	$hostName = $testMatch;
-	$testMatch = NULL;
-}
-if ($outputFormat == 'json'){
-	$classJSON = new Mapbender_JSON;
-}
-if ($languageCode == 'en'){
-	$pathToLoadScript = '/portal/en/maps.html?WMC=';
-}
-if ($languageCode == 'fr'){
-	$pathToLoadScript = '/portal/fr/cartes.html?WMC=';
-}
-
-/*
-//define sql for selecting informations from database:
-$sql = "";
-$sql .= "SELECT search_wmc_view.wmc_serial_id,search_wmc_view.wmc_title,search_wmc_view.wmc_abstract, custom_category.custom_category_code_".$languageCode. ", search_wmc_view.load_count ";
-$sql .= "FROM search_wmc_view INNER JOIN wmc_custom_category ON "; 
-$sql .= "(wmc_custom_category.fkey_wmc_serial_id=search_wmc_view.wmc_serial_id) INNER JOIN custom_category ON ";
-$sql .= "(custom_category.custom_category_id=wmc_custom_category.fkey_custom_category_id) WHERE ";
-$sql .= "custom_category.custom_category_key = 'mbc1' ORDER BY search_wmc_view.load_count DESC LIMIT $1 ";
-*/
-//define sql for selecting informations from database:
-//$sql = "";
-//$sql .= "SELECT search_wmc_view.wmc_serial_id,search_wmc_view.wmc_title,search_wmc_view.wmc_abstract, search_wmc_view.load_count ";
-//$sql .= "FROM search_wmc_view ORDER BY search_wmc_view.load_count DESC LIMIT $1 ";
-
-$sql = "";
-//select wmc_serial_id,wmc_title,wmc_abstract,CASE WHEN (wmc_timestamp  > (extract(epoch from now())- ((86400)*5))) THEN wmc_timestamp ELSE 0 END as timestamp, load_count from search_wmc_view  order by timestamp desc, load_count desc LIMIT 
-
-$sql .= "SELECT search_wmc_view.wmc_serial_id,search_wmc_view.wmc_title,search_wmc_view.wmc_abstract,";
-$sql .= " CASE WHEN (wmc_timestamp  > (extract(epoch from now())- ((86400) * $2))) THEN wmc_timestamp ELSE 0 END as timestamp,search_wmc_view.load_count";
-$sql .= " from search_wmc_view  order by timestamp desc, load_count desc LIMIT $1";
-//echo "maxAge:".$maxAge."<br>";
-//echo "sql: ".$sql."<br>";
-//echo "maxObjects: ".$maxObjects."<br>";
-$v = array($maxObjects,$maxAge);
-$t = array('i','i');
-$res = db_prep_query($sql,$v,$t);
-$initialWmc = array();
-$i = 0;
-while($row = db_fetch_array($res)){
-	$initialWmc[$i] = array('id'  =>$row['wmc_serial_id'], 'title' =>$row['wmc_title'], 'abstract' =>$row['wmc_abstract'],'loadUrl'=>'http://'.$hostName.$pathToLoadScript.$row['wmc_serial_id'],'metadataUrl'=>'http://'.$hostName.$pathToMetadata."languageCode=".$languageCode."&resource=wmc&id=".$row['wmc_serial_id'], 'previewUrl'=>'http://'.$hostName.$pathToPreview."resource=wmc&id=".$row['wmc_serial_id'],'timestamp' => $row['timestamp'],'loadCount' => $row['load_count'] );
-	$i++;
-}
-if ($outputFormat == 'html'){
-	echo "<html>";
-	echo "<title>Mapbender Initial WMC</title>";
-	echo "<body>";
-		for($i=0; $i<count($initialWmc);$i++){
-			echo "<b>ID: </b>".$initialWmc[$i]['id']."<br>";
-				echo "<b>Titel: </b>".$initialWmc[$i]['title']."<br>";
-				echo "<b>Zusammenfassung: </b>".$initialWmc[$i]['abstract']."<br>";
-				echo "<b>Metadaten: </b><a href='".$initialWmc[$i]['metadataUrl']."'>".$initialWmc[$i]['metadataUrl']."</a>"."<br>";
-				echo "<b>Öffnen: </b><a href='".$initialWmc[$i]['loadUrl']."'>".$initialWmc[$i]['loadUrl']."</a>"."<br>";
-				echo "<b>Preview Link: </b><a href='".$initialWmc[$i]['previewUrl']."'>".$initialWmc[$i]['previewUrl']."</a>"."<br>";
-				echo "<b>Preview: </b><img src='".$initialWmc[$i]['previewUrl']."'/>"."<br>";
-				echo "<hr>";
-			}
-	echo "</body>";
-	echo "</html>";
-}
-if ($outputFormat == 'json'){
-	$wmcJSON = new stdClass;
-	$wmcJSON->initialWmcDocs = array();
-	for($i=0; $i<count($initialWmc);$i++){
-    		$wmcJSON->initialWmcDocs[$i]->id = $initialWmc[$i]['id'];
-		$wmcJSON->initialWmcDocs[$i]->title = $initialWmc[$i]['title'];
-		$wmcJSON->initialWmcDocs[$i]->abstract = $initialWmc[$i]['abstract'];
-		$wmcJSON->initialWmcDocs[$i]->metadataUrl = $initialWmc[$i]['metadataUrl'];
-		$wmcJSON->initialWmcDocs[$i]->loadUrl = $initialWmc[$i]['loadUrl'];
-		$wmcJSON->initialWmcDocs[$i]->previewUrl = $initialWmc[$i]['previewUrl'];
-		$wmcJSON->initialWmcDocs[$i]->loadCount = $initialWmc[$i]['loadCount'];
-		$wmcJSON->initialWmcDocs[$i]->timestamp = $initialWmc[$i]['timestamp'];
-   	 }
-	$wmcJSON = $classJSON->encode($wmcJSON);
-	echo $wmcJSON;
-}
-?>

Deleted: trunk/mapbender/http/geoportal/mod_statistik.php
===================================================================
--- trunk/mapbender/http/geoportal/mod_statistik.php	2016-05-27 06:55:01 UTC (rev 9483)
+++ trunk/mapbender/http/geoportal/mod_statistik.php	2016-05-27 07:01:49 UTC (rev 9484)
@@ -1,134 +0,0 @@
-<html>
-
-<head>
-
-<?php
-echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';
-#require_once(dirname(__FILE__)."/../../conf/mapbender.conf");
-#require_once(dirname(__FILE__)."/../classes/class_administration.php");
-#require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-require_once(dirname(__FILE__)."/../classes/class_administration.php");
-require_once dirname(__FILE__) . "/../classes/class_Uuid.php";
-require_once dirname(__FILE__) . "/../classes/class_user.php";
-?>
-
-<title>Statistik Geoportal</title>
-
-<style type="text/css">
-body
-{
-font-family: Arial, Helvetica, sans-serif;	
-}
-h1
-{
-color: #A52A2A;
-font-family: arial, verdana, sans serif;
-font-style: italic;
-font-weight: bold;
-font-size: 175%;
-}
-</style>
-
-<script language="JavaScript" type="text/javascript">
-</script>
-
-</head>
-
-<body>
-
-<table>
-
-<?php
-
-
-
-    $sql = "SELECT users,total_authorities,substitute_authorities,publishing_authorities,wms,wms_layer,wfs,wfs_modul,wmc FROM statistik;";
-    $v = array();
-    $t = array();
-    $res = db_prep_query($sql, $v, $t);
-	while($row = db_fetch_array($res)) {
-		$users=$row['users'];
-		$total_authorities=$row['total_authorities'];
-		$substitute_authorities=$row['substitute_authorities'];
-		$publishing_authorities=$row['publishing_authorities'];
-		$wms=$row['wms'];
-		$wms_layer=$row['wms_layer'];
-		$wfs=$row['wfs'];
-		$wfs_modul=$row['wfs_modul'];
-		$wmc=$row['wmc'];
-	}
-
-echo "<form  method=\"POST\" action=".$_SERVER['PHP_SELF'].">";
-echo " <h1>Statistik GeoPortal.rlp</h1>";
-echo "<table border='1'>";
-
-echo "<tr align=left height=50>";
-echo "<td>";
-echo "<font size=\"4\"><b>users</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>total_authorities</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>substitute_authorities</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>publishing_authorities</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>wms</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>wms_layers</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>wfs</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>wfs_module</b></font>";
-echo "</td>";
-echo "<td>";
-echo "<font size=\"4\"><b>wmc</b></font>";
-echo "</td>";
-echo "</tr>";
-echo "<tr align=left height=50>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$users."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$total_authorities."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$substitute_authorities."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$publishing_authorities."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$wms."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$wms_layer."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$wfs."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$wfs_modul."</font>";
-echo "</td>";
-echo "<td>";
-echo "<font color=#000000 size=\"3\">".$wmc."</font>";
-echo "</td>";
-echo "</tr>";
-
-
-
-
-echo "</form>";	
-?>
-</table>
-</body>
-</html>
-
-



More information about the Mapbender_commits mailing list